|
@@ -35,7 +35,10 @@
|
|
|
let landingPageMode = '';
|
|
|
let chatBubble = true;
|
|
|
let chatDirection: 'LTR' | 'RTL' = 'LTR';
|
|
|
+
|
|
|
+ // Admin - Show Update Available Toast
|
|
|
let showUpdateToast = true;
|
|
|
+ let showChangelog = true;
|
|
|
|
|
|
let showEmojiInCall = false;
|
|
|
let voiceInterruption = false;
|
|
@@ -71,6 +74,11 @@
|
|
|
saveSettings({ showUpdateToast: showUpdateToast });
|
|
|
};
|
|
|
|
|
|
+ const toggleShowChangelog = async () => {
|
|
|
+ showChangelog = !showChangelog;
|
|
|
+ saveSettings({ showChangelog: showChangelog });
|
|
|
+ };
|
|
|
+
|
|
|
const toggleShowUsername = async () => {
|
|
|
showUsername = !showUsername;
|
|
|
saveSettings({ showUsername: showUsername });
|
|
@@ -174,6 +182,7 @@
|
|
|
|
|
|
showUsername = $settings.showUsername ?? false;
|
|
|
showUpdateToast = $settings.showUpdateToast ?? true;
|
|
|
+ showChangelog = $settings.showChangelog ?? true;
|
|
|
|
|
|
showEmojiInCall = $settings.showEmojiInCall ?? false;
|
|
|
voiceInterruption = $settings.voiceInterruption ?? false;
|
|
@@ -383,22 +392,64 @@
|
|
|
</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <div>
|
|
|
+ <div class=" py-0.5 flex w-full justify-between">
|
|
|
+ <div class=" self-center text-xs">
|
|
|
+ {$i18n.t(`Show "What's New" modal on login`)}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <button
|
|
|
+ class="p-1 px-3 text-xs flex rounded transition"
|
|
|
+ on:click={() => {
|
|
|
+ toggleShowChangelog();
|
|
|
+ }}
|
|
|
+ type="button"
|
|
|
+ >
|
|
|
+ {#if showChangelog === true}
|
|
|
+ <span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
+ {:else}
|
|
|
+ <span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
|
+ {/if}
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
{/if}
|
|
|
|
|
|
+ <div class=" my-1.5 text-sm font-medium">{$i18n.t('Chat')}</div>
|
|
|
+
|
|
|
<div>
|
|
|
<div class=" py-0.5 flex w-full justify-between">
|
|
|
- <div class=" self-center text-xs">
|
|
|
- {$i18n.t('Fluidly stream large external response chunks')}
|
|
|
- </div>
|
|
|
+ <div class=" self-center text-xs">{$i18n.t('Title Auto-Generation')}</div>
|
|
|
|
|
|
<button
|
|
|
class="p-1 px-3 text-xs flex rounded transition"
|
|
|
on:click={() => {
|
|
|
- toggleSplitLargeChunks();
|
|
|
+ toggleTitleAutoGenerate();
|
|
|
}}
|
|
|
type="button"
|
|
|
>
|
|
|
- {#if splitLargeChunks === true}
|
|
|
+ {#if titleAutoGenerate === true}
|
|
|
+ <span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
+ {:else}
|
|
|
+ <span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
|
+ {/if}
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div>
|
|
|
+ <div class=" py-0.5 flex w-full justify-between">
|
|
|
+ <div class=" self-center text-xs">{$i18n.t('Chat Tags Auto-Generation')}</div>
|
|
|
+
|
|
|
+ <button
|
|
|
+ class="p-1 px-3 text-xs flex rounded transition"
|
|
|
+ on:click={() => {
|
|
|
+ toggleAutoTags();
|
|
|
+ }}
|
|
|
+ type="button"
|
|
|
+ >
|
|
|
+ {#if autoTags === true}
|
|
|
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
{:else}
|
|
|
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
@@ -410,17 +461,17 @@
|
|
|
<div>
|
|
|
<div class=" py-0.5 flex w-full justify-between">
|
|
|
<div class=" self-center text-xs">
|
|
|
- {$i18n.t('Scroll to bottom when switching between branches')}
|
|
|
+ {$i18n.t('Response AutoCopy to Clipboard')}
|
|
|
</div>
|
|
|
|
|
|
<button
|
|
|
class="p-1 px-3 text-xs flex rounded transition"
|
|
|
on:click={() => {
|
|
|
- togglesScrollOnBranchChange();
|
|
|
+ toggleResponseAutoCopy();
|
|
|
}}
|
|
|
type="button"
|
|
|
>
|
|
|
- {#if scrollOnBranchChange === true}
|
|
|
+ {#if responseAutoCopy === true}
|
|
|
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
{:else}
|
|
|
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
@@ -478,20 +529,18 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <div class=" my-1.5 text-sm font-medium">{$i18n.t('Chat')}</div>
|
|
|
-
|
|
|
<div>
|
|
|
<div class=" py-0.5 flex w-full justify-between">
|
|
|
- <div class=" self-center text-xs">{$i18n.t('Title Auto-Generation')}</div>
|
|
|
+ <div class=" self-center text-xs">{$i18n.t('Allow User Location')}</div>
|
|
|
|
|
|
<button
|
|
|
class="p-1 px-3 text-xs flex rounded transition"
|
|
|
on:click={() => {
|
|
|
- toggleTitleAutoGenerate();
|
|
|
+ toggleUserLocation();
|
|
|
}}
|
|
|
type="button"
|
|
|
>
|
|
|
- {#if titleAutoGenerate === true}
|
|
|
+ {#if userLocation === true}
|
|
|
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
{:else}
|
|
|
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
@@ -502,16 +551,16 @@
|
|
|
|
|
|
<div>
|
|
|
<div class=" py-0.5 flex w-full justify-between">
|
|
|
- <div class=" self-center text-xs">{$i18n.t('Chat Tags Auto-Generation')}</div>
|
|
|
+ <div class=" self-center text-xs">{$i18n.t('Haptic Feedback')}</div>
|
|
|
|
|
|
<button
|
|
|
class="p-1 px-3 text-xs flex rounded transition"
|
|
|
on:click={() => {
|
|
|
- toggleAutoTags();
|
|
|
+ toggleHapticFeedback();
|
|
|
}}
|
|
|
type="button"
|
|
|
>
|
|
|
- {#if autoTags === true}
|
|
|
+ {#if hapticFeedback === true}
|
|
|
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
{:else}
|
|
|
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
@@ -523,37 +572,17 @@
|
|
|
<div>
|
|
|
<div class=" py-0.5 flex w-full justify-between">
|
|
|
<div class=" self-center text-xs">
|
|
|
- {$i18n.t('Response AutoCopy to Clipboard')}
|
|
|
+ {$i18n.t('Fluidly stream large external response chunks')}
|
|
|
</div>
|
|
|
|
|
|
<button
|
|
|
class="p-1 px-3 text-xs flex rounded transition"
|
|
|
on:click={() => {
|
|
|
- toggleResponseAutoCopy();
|
|
|
- }}
|
|
|
- type="button"
|
|
|
- >
|
|
|
- {#if responseAutoCopy === true}
|
|
|
- <span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
- {:else}
|
|
|
- <span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
|
- {/if}
|
|
|
- </button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div>
|
|
|
- <div class=" py-0.5 flex w-full justify-between">
|
|
|
- <div class=" self-center text-xs">{$i18n.t('Allow User Location')}</div>
|
|
|
-
|
|
|
- <button
|
|
|
- class="p-1 px-3 text-xs flex rounded transition"
|
|
|
- on:click={() => {
|
|
|
- toggleUserLocation();
|
|
|
+ toggleSplitLargeChunks();
|
|
|
}}
|
|
|
type="button"
|
|
|
>
|
|
|
- {#if userLocation === true}
|
|
|
+ {#if splitLargeChunks === true}
|
|
|
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
{:else}
|
|
|
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
@@ -564,16 +593,18 @@
|
|
|
|
|
|
<div>
|
|
|
<div class=" py-0.5 flex w-full justify-between">
|
|
|
- <div class=" self-center text-xs">{$i18n.t('Haptic Feedback')}</div>
|
|
|
+ <div class=" self-center text-xs">
|
|
|
+ {$i18n.t('Scroll to bottom when switching between branches')}
|
|
|
+ </div>
|
|
|
|
|
|
<button
|
|
|
class="p-1 px-3 text-xs flex rounded transition"
|
|
|
on:click={() => {
|
|
|
- toggleHapticFeedback();
|
|
|
+ togglesScrollOnBranchChange();
|
|
|
}}
|
|
|
type="button"
|
|
|
>
|
|
|
- {#if hapticFeedback === true}
|
|
|
+ {#if scrollOnBranchChange === true}
|
|
|
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
|
{:else}
|
|
|
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|