Skip to content

Commit 1630a9a

Browse files
authored
feat: show login modal if login is required for creating assistants & tools (#1640)
1 parent 36e2dd4 commit 1630a9a

File tree

6 files changed

+54
-25
lines changed

6 files changed

+54
-25
lines changed

chart/env/prod.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ envVars:
417417
PUBLIC_APP_COLOR: "yellow"
418418
PUBLIC_APP_DESCRIPTION: "Making the community's best AI chat models available to everyone."
419419
PUBLIC_APP_DISCLAIMER_MESSAGE: "Disclaimer: AI is an area of active research with known problems such as biased generation and misinformation. Do not use this application for high-stakes decisions or advice."
420-
PUBLIC_APP_GUEST_MESSAGE: "You have reached the guest message limit, Sign In with a free Hugging Face account to continue using HuggingChat."
420+
PUBLIC_APP_GUEST_MESSAGE: "Sign in with a free Hugging Face account to continue using HuggingChat."
421421
PUBLIC_APP_DATA_SHARING: 0
422422
PUBLIC_APP_DISCLAIMER: 1
423423
PUBLIC_PLAUSIBLE_SCRIPT_URL: "/js/script.js"

src/lib/components/chat/ChatWindow.svelte

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import ChatInput from "./ChatInput.svelte";
1313
import StopGeneratingBtn from "../StopGeneratingBtn.svelte";
1414
import type { Model } from "$lib/types/Model";
15-
import LoginModal from "../LoginModal.svelte";
1615
import { page } from "$app/stores";
1716
import FileDropzone from "./FileDropzone.svelte";
1817
import RetryBtn from "../RetryBtn.svelte";
@@ -36,6 +35,7 @@
3635
import { fly } from "svelte/transition";
3736
import { cubicInOut } from "svelte/easing";
3837
import type { ToolFront } from "$lib/types/Tool";
38+
import { loginModalOpen } from "$lib/stores/loginModal";
3939
4040
export let messages: Message[] = [];
4141
export let loading = false;
@@ -50,7 +50,6 @@
5050
5151
$: isReadOnly = !models.some((model) => model.id === currentModel.id);
5252
53-
let loginModalOpen = false;
5453
let message: string;
5554
let timeout: ReturnType<typeof setTimeout>;
5655
let isSharedRecently = false;
@@ -250,13 +249,6 @@
250249
/>
251250

252251
<div class="relative min-h-0 min-w-0">
253-
{#if loginModalOpen}
254-
<LoginModal
255-
on:close={() => {
256-
loginModalOpen = false;
257-
}}
258-
/>
259-
{/if}
260252
<div
261253
class="scrollbar-custom h-full overflow-y-auto"
262254
use:snapScrollToBottom={messages.length ? [...messages] : false}
@@ -330,7 +322,7 @@
330322
on:message={(ev) => {
331323
if ($page.data.loginRequired) {
332324
ev.preventDefault();
333-
loginModalOpen = true;
325+
$loginModalOpen = true;
334326
} else {
335327
dispatch("message", ev.detail);
336328
}
@@ -343,7 +335,7 @@
343335
on:message={(ev) => {
344336
if ($page.data.loginRequired) {
345337
ev.preventDefault();
346-
loginModalOpen = true;
338+
$loginModalOpen = true;
347339
} else {
348340
dispatch("message", ev.detail);
349341
}
@@ -442,7 +434,7 @@
442434
on:beforeinput={(ev) => {
443435
if ($page.data.loginRequired) {
444436
ev.preventDefault();
445-
loginModalOpen = true;
437+
$loginModalOpen = true;
446438
}
447439
}}
448440
on:paste={onPaste}

src/lib/stores/loginModal.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { writable } from "svelte/store";
2+
3+
export const loginModalOpen = writable(false);

src/routes/+layout.svelte

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import titleUpdate from "$lib/stores/titleUpdate";
2020
import DisclaimerModal from "$lib/components/DisclaimerModal.svelte";
2121
import ExpandNavigation from "$lib/components/ExpandNavigation.svelte";
22+
import { loginModalOpen } from "$lib/stores/loginModal";
23+
import LoginModal from "$lib/components/LoginModal.svelte";
2224
2325
export let data;
2426
@@ -215,6 +217,14 @@
215217
<DisclaimerModal on:close={() => ($settings.ethicsModalAccepted = true)} />
216218
{/if}
217219

220+
{#if $loginModalOpen}
221+
<LoginModal
222+
on:close={() => {
223+
$loginModalOpen = false;
224+
}}
225+
/>
226+
{/if}
227+
218228
<ExpandNavigation
219229
isCollapsed={isNavCollapsed}
220230
on:click={() => (isNavCollapsed = !isNavCollapsed)}

src/routes/assistants/+page.svelte

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import { isDesktop } from "$lib/utils/isDesktop";
2727
import { SortKey } from "$lib/types/Assistant";
2828
import { ReviewStatus } from "$lib/types/Review";
29+
import { loginModalOpen } from "$lib/stores/loginModal";
2930
3031
export let data: PageData;
3132
@@ -152,12 +153,23 @@
152153
Show unfeatured assistants
153154
</label>
154155
{/if}
155-
<a
156-
href={`${base}/settings/assistants/new`}
157-
class="flex items-center gap-1 whitespace-nowrap rounded-lg border bg-white py-1 pl-1.5 pr-2.5 shadow-sm hover:bg-gray-50 hover:shadow-none dark:border-gray-600 dark:bg-gray-700 dark:hover:bg-gray-700"
158-
>
159-
<CarbonAdd />Create new assistant
160-
</a>
156+
{#if $page.data.loginRequired && !data.user}
157+
<button
158+
on:click={() => {
159+
$loginModalOpen = true;
160+
}}
161+
class="flex items-center gap-1 whitespace-nowrap rounded-lg border bg-white py-1 pl-1.5 pr-2.5 shadow-sm hover:bg-gray-50 hover:shadow-none dark:border-gray-600 dark:bg-gray-700 dark:hover:bg-gray-700"
162+
>
163+
<CarbonAdd />Create new assistant
164+
</button>
165+
{:else}
166+
<a
167+
href={`${base}/settings/assistants/new`}
168+
class="flex items-center gap-1 whitespace-nowrap rounded-lg border bg-white py-1 pl-1.5 pr-2.5 shadow-sm hover:bg-gray-50 hover:shadow-none dark:border-gray-600 dark:bg-gray-700 dark:hover:bg-gray-700"
169+
>
170+
<CarbonAdd />Create new assistant
171+
</a>
172+
{/if}
161173
</div>
162174

163175
<div class="mt-7 flex flex-wrap items-center gap-x-2 gap-y-3 text-sm">

src/routes/tools/+page.svelte

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import ToolLogo from "$lib/components/ToolLogo.svelte";
2222
import { ReviewStatus } from "$lib/types/Review";
2323
import { useSettingsStore } from "$lib/stores/settings";
24+
import { loginModalOpen } from "$lib/stores/loginModal";
2425
2526
export let data: PageData;
2627
@@ -142,12 +143,23 @@
142143
Show unfeatured tools
143144
</label>
144145
{/if}
145-
<a
146-
href={`${base}/tools/new`}
147-
class="flex items-center gap-1 whitespace-nowrap rounded-lg border bg-white py-1 pl-1.5 pr-2.5 shadow-sm hover:bg-gray-50 hover:shadow-none dark:border-gray-600 dark:bg-gray-700 dark:hover:bg-gray-700"
148-
>
149-
<CarbonAdd />Create new tool
150-
</a>
146+
{#if $page.data.loginRequired && !data.user}
147+
<button
148+
on:click={() => {
149+
$loginModalOpen = true;
150+
}}
151+
class="flex items-center gap-1 whitespace-nowrap rounded-lg border bg-white py-1 pl-1.5 pr-2.5 shadow-sm hover:bg-gray-50 hover:shadow-none dark:border-gray-600 dark:bg-gray-700 dark:hover:bg-gray-700"
152+
>
153+
<CarbonAdd />Create new tool
154+
</button>
155+
{:else}
156+
<a
157+
href={`${base}/tools/new`}
158+
class="flex items-center gap-1 whitespace-nowrap rounded-lg border bg-white py-1 pl-1.5 pr-2.5 shadow-sm hover:bg-gray-50 hover:shadow-none dark:border-gray-600 dark:bg-gray-700 dark:hover:bg-gray-700"
159+
>
160+
<CarbonAdd />Create new tool
161+
</a>
162+
{/if}
151163
</div>
152164

153165
<div class="mb-4 mt-7 flex flex-wrap items-center gap-x-2 gap-y-3 text-sm">

0 commit comments

Comments
 (0)