Login button sends you directly to login page (#501)
Browse files* Login button sends you directly to login page.
* use _parent for target
src/lib/components/LoginModal.svelte
CHANGED
|
@@ -1,5 +1,4 @@
|
|
| 1 |
<script lang="ts">
|
| 2 |
-
import { browser } from "$app/environment";
|
| 3 |
import { base } from "$app/paths";
|
| 4 |
import { page } from "$app/stores";
|
| 5 |
import { PUBLIC_APP_DATA_SHARING, PUBLIC_APP_NAME, PUBLIC_VERSION } from "$env/static/public";
|
|
@@ -8,8 +7,6 @@
|
|
| 8 |
import type { LayoutData } from "../../routes/$types";
|
| 9 |
import Logo from "./icons/Logo.svelte";
|
| 10 |
export let settings: LayoutData["settings"];
|
| 11 |
-
|
| 12 |
-
const isIframe = browser && window.self !== window.parent;
|
| 13 |
</script>
|
| 14 |
|
| 15 |
<Modal>
|
|
@@ -45,7 +42,7 @@
|
|
| 45 |
{/if}
|
| 46 |
<form
|
| 47 |
action="{base}/{$page.data.requiresLogin ? 'login' : 'settings'}"
|
| 48 |
-
target=
|
| 49 |
method="POST"
|
| 50 |
class="flex w-full flex-col items-center gap-2"
|
| 51 |
>
|
|
|
|
| 1 |
<script lang="ts">
|
|
|
|
| 2 |
import { base } from "$app/paths";
|
| 3 |
import { page } from "$app/stores";
|
| 4 |
import { PUBLIC_APP_DATA_SHARING, PUBLIC_APP_NAME, PUBLIC_VERSION } from "$env/static/public";
|
|
|
|
| 7 |
import type { LayoutData } from "../../routes/$types";
|
| 8 |
import Logo from "./icons/Logo.svelte";
|
| 9 |
export let settings: LayoutData["settings"];
|
|
|
|
|
|
|
| 10 |
</script>
|
| 11 |
|
| 12 |
<Modal>
|
|
|
|
| 42 |
{/if}
|
| 43 |
<form
|
| 44 |
action="{base}/{$page.data.requiresLogin ? 'login' : 'settings'}"
|
| 45 |
+
target="_parent"
|
| 46 |
method="POST"
|
| 47 |
class="flex w-full flex-col items-center gap-2"
|
| 48 |
>
|
src/lib/components/NavMenu.svelte
CHANGED
|
@@ -21,8 +21,6 @@
|
|
| 21 |
|
| 22 |
export let canLogin: boolean;
|
| 23 |
export let user: LayoutData["user"];
|
| 24 |
-
|
| 25 |
-
export let loginModalVisible;
|
| 26 |
</script>
|
| 27 |
|
| 28 |
<div class="sticky top-0 flex flex-none items-center justify-between px-3 py-3.5 max-sm:pt-0">
|
|
@@ -66,13 +64,14 @@
|
|
| 66 |
</form>
|
| 67 |
{/if}
|
| 68 |
{#if canLogin}
|
| 69 |
-
<
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
|
|
|
| 76 |
{/if}
|
| 77 |
<button
|
| 78 |
on:click={switchTheme}
|
|
|
|
| 21 |
|
| 22 |
export let canLogin: boolean;
|
| 23 |
export let user: LayoutData["user"];
|
|
|
|
|
|
|
| 24 |
</script>
|
| 25 |
|
| 26 |
<div class="sticky top-0 flex flex-none items-center justify-between px-3 py-3.5 max-sm:pt-0">
|
|
|
|
| 64 |
</form>
|
| 65 |
{/if}
|
| 66 |
{#if canLogin}
|
| 67 |
+
<form action="{base}/login" method="POST" target="_parent">
|
| 68 |
+
<button
|
| 69 |
+
type="submit"
|
| 70 |
+
class="flex h-9 flex-none items-center gap-1.5 rounded-lg pl-3 pr-2 text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-700"
|
| 71 |
+
>
|
| 72 |
+
Login
|
| 73 |
+
</button>
|
| 74 |
+
</form>
|
| 75 |
{/if}
|
| 76 |
<button
|
| 77 |
on:click={switchTheme}
|
src/routes/+layout.svelte
CHANGED
|
@@ -99,8 +99,6 @@
|
|
| 99 |
(data.requiresLogin
|
| 100 |
? !data.user
|
| 101 |
: !data.settings.ethicsModalAcceptedAt && !!PUBLIC_APP_DISCLAIMER);
|
| 102 |
-
|
| 103 |
-
let loginModalVisible = false;
|
| 104 |
</script>
|
| 105 |
|
| 106 |
<svelte:head>
|
|
@@ -163,7 +161,6 @@
|
|
| 163 |
conversations={data.conversations}
|
| 164 |
user={data.user}
|
| 165 |
canLogin={data.user === undefined && data.requiresLogin}
|
| 166 |
-
bind:loginModalVisible
|
| 167 |
on:shareConversation={(ev) => shareConversation(ev.detail.id, ev.detail.title)}
|
| 168 |
on:deleteConversation={(ev) => deleteConversation(ev.detail)}
|
| 169 |
on:clickSettings={() => (isSettingsOpen = true)}
|
|
@@ -175,7 +172,6 @@
|
|
| 175 |
conversations={data.conversations}
|
| 176 |
user={data.user}
|
| 177 |
canLogin={data.user === undefined && data.requiresLogin}
|
| 178 |
-
bind:loginModalVisible
|
| 179 |
on:shareConversation={(ev) => shareConversation(ev.detail.id, ev.detail.title)}
|
| 180 |
on:deleteConversation={(ev) => deleteConversation(ev.detail)}
|
| 181 |
on:clickSettings={() => (isSettingsOpen = true)}
|
|
@@ -192,7 +188,7 @@
|
|
| 192 |
models={data.models}
|
| 193 |
/>
|
| 194 |
{/if}
|
| 195 |
-
{#if
|
| 196 |
<LoginModal settings={data.settings} />
|
| 197 |
{/if}
|
| 198 |
<slot />
|
|
|
|
| 99 |
(data.requiresLogin
|
| 100 |
? !data.user
|
| 101 |
: !data.settings.ethicsModalAcceptedAt && !!PUBLIC_APP_DISCLAIMER);
|
|
|
|
|
|
|
| 102 |
</script>
|
| 103 |
|
| 104 |
<svelte:head>
|
|
|
|
| 161 |
conversations={data.conversations}
|
| 162 |
user={data.user}
|
| 163 |
canLogin={data.user === undefined && data.requiresLogin}
|
|
|
|
| 164 |
on:shareConversation={(ev) => shareConversation(ev.detail.id, ev.detail.title)}
|
| 165 |
on:deleteConversation={(ev) => deleteConversation(ev.detail)}
|
| 166 |
on:clickSettings={() => (isSettingsOpen = true)}
|
|
|
|
| 172 |
conversations={data.conversations}
|
| 173 |
user={data.user}
|
| 174 |
canLogin={data.user === undefined && data.requiresLogin}
|
|
|
|
| 175 |
on:shareConversation={(ev) => shareConversation(ev.detail.id, ev.detail.title)}
|
| 176 |
on:deleteConversation={(ev) => deleteConversation(ev.detail)}
|
| 177 |
on:clickSettings={() => (isSettingsOpen = true)}
|
|
|
|
| 188 |
models={data.models}
|
| 189 |
/>
|
| 190 |
{/if}
|
| 191 |
+
{#if requiresLogin && data.messagesBeforeLogin === 0}
|
| 192 |
<LoginModal settings={data.settings} />
|
| 193 |
{/if}
|
| 194 |
<slot />
|