Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	Shared convos can be opened without being logged in (#266, #270) (#271)
Browse files* Shared convos can be opened without being logged in
* Fix creating conversation from shared conv
Closes #270
    	
        src/lib/components/chat/ChatInput.svelte
    CHANGED
    
    | 
         @@ -50,6 +50,7 @@ 
     | 
|
| 50 | 
         
             
            		bind:this={textareaElement}
         
     | 
| 51 | 
         
             
            		{disabled}
         
     | 
| 52 | 
         
             
            		on:keydown={handleKeydown}
         
     | 
| 
         | 
|
| 53 | 
         
             
            		{placeholder}
         
     | 
| 54 | 
         
             
            	/>
         
     | 
| 55 | 
         
             
            </div>
         
     | 
| 
         | 
|
| 50 | 
         
             
            		bind:this={textareaElement}
         
     | 
| 51 | 
         
             
            		{disabled}
         
     | 
| 52 | 
         
             
            		on:keydown={handleKeydown}
         
     | 
| 53 | 
         
            +
            		on:keypress
         
     | 
| 54 | 
         
             
            		{placeholder}
         
     | 
| 55 | 
         
             
            	/>
         
     | 
| 56 | 
         
             
            </div>
         
     | 
    	
        src/lib/components/chat/ChatWindow.svelte
    CHANGED
    
    | 
         @@ -12,6 +12,7 @@ 
     | 
|
| 12 | 
         
             
            	import StopGeneratingBtn from "../StopGeneratingBtn.svelte";
         
     | 
| 13 | 
         
             
            	import type { Model } from "$lib/types/Model";
         
     | 
| 14 | 
         
             
            	import type { LayoutData } from "../../../routes/$types";
         
     | 
| 
         | 
|
| 15 | 
         | 
| 16 | 
         
             
            	export let messages: Message[] = [];
         
     | 
| 17 | 
         
             
            	export let loading = false;
         
     | 
| 
         @@ -21,8 +22,10 @@ 
     | 
|
| 21 | 
         
             
            	export let models: Model[];
         
     | 
| 22 | 
         
             
            	export let settings: LayoutData["settings"];
         
     | 
| 23 | 
         | 
| 
         | 
|
| 24 | 
         
             
            	$: isReadOnly = !models.some((model) => model.id === currentModel.id);
         
     | 
| 25 | 
         | 
| 
         | 
|
| 26 | 
         
             
            	let message: string;
         
     | 
| 27 | 
         | 
| 28 | 
         
             
            	const dispatch = createEventDispatcher<{
         
     | 
| 
         @@ -40,6 +43,9 @@ 
     | 
|
| 40 | 
         
             
            </script>
         
     | 
| 41 | 
         | 
| 42 | 
         
             
            <div class="relative min-h-0 min-w-0">
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 43 | 
         
             
            	<ChatMessages
         
     | 
| 44 | 
         
             
            		{loading}
         
     | 
| 45 | 
         
             
            		{pending}
         
     | 
| 
         @@ -71,6 +77,9 @@ 
     | 
|
| 71 | 
         
             
            					placeholder="Ask anything"
         
     | 
| 72 | 
         
             
            					bind:value={message}
         
     | 
| 73 | 
         
             
            					on:submit={handleSubmit}
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 74 | 
         
             
            					maxRows={4}
         
     | 
| 75 | 
         
             
            					disabled={isReadOnly}
         
     | 
| 76 | 
         
             
            				/>
         
     | 
| 
         | 
|
| 12 | 
         
             
            	import StopGeneratingBtn from "../StopGeneratingBtn.svelte";
         
     | 
| 13 | 
         
             
            	import type { Model } from "$lib/types/Model";
         
     | 
| 14 | 
         
             
            	import type { LayoutData } from "../../../routes/$types";
         
     | 
| 15 | 
         
            +
            	import LoginModal from "../LoginModal.svelte";
         
     | 
| 16 | 
         | 
| 17 | 
         
             
            	export let messages: Message[] = [];
         
     | 
| 18 | 
         
             
            	export let loading = false;
         
     | 
| 
         | 
|
| 22 | 
         
             
            	export let models: Model[];
         
     | 
| 23 | 
         
             
            	export let settings: LayoutData["settings"];
         
     | 
| 24 | 
         | 
| 25 | 
         
            +
            	export let loginRequired = false;
         
     | 
| 26 | 
         
             
            	$: isReadOnly = !models.some((model) => model.id === currentModel.id);
         
     | 
| 27 | 
         | 
| 28 | 
         
            +
            	let loginModalOpen = false;
         
     | 
| 29 | 
         
             
            	let message: string;
         
     | 
| 30 | 
         | 
| 31 | 
         
             
            	const dispatch = createEventDispatcher<{
         
     | 
| 
         | 
|
| 43 | 
         
             
            </script>
         
     | 
| 44 | 
         | 
| 45 | 
         
             
            <div class="relative min-h-0 min-w-0">
         
     | 
| 46 | 
         
            +
            	{#if loginModalOpen}
         
     | 
| 47 | 
         
            +
            		<LoginModal {settings} on:close={() => (loginModalOpen = false)} />
         
     | 
| 48 | 
         
            +
            	{/if}
         
     | 
| 49 | 
         
             
            	<ChatMessages
         
     | 
| 50 | 
         
             
            		{loading}
         
     | 
| 51 | 
         
             
            		{pending}
         
     | 
| 
         | 
|
| 77 | 
         
             
            					placeholder="Ask anything"
         
     | 
| 78 | 
         
             
            					bind:value={message}
         
     | 
| 79 | 
         
             
            					on:submit={handleSubmit}
         
     | 
| 80 | 
         
            +
            					on:keypress={() => {
         
     | 
| 81 | 
         
            +
            						if (loginRequired) loginModalOpen = true;
         
     | 
| 82 | 
         
            +
            					}}
         
     | 
| 83 | 
         
             
            					maxRows={4}
         
     | 
| 84 | 
         
             
            					disabled={isReadOnly}
         
     | 
| 85 | 
         
             
            				/>
         
     | 
    	
        src/routes/+layout.svelte
    CHANGED
    
    | 
         @@ -91,6 +91,11 @@ 
     | 
|
| 91 | 
         
             
            	});
         
     | 
| 92 | 
         | 
| 93 | 
         
             
            	$: if ($error) onError();
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 94 | 
         
             
            </script>
         
     | 
| 95 | 
         | 
| 96 | 
         
             
            <svelte:head>
         
     | 
| 
         @@ -136,7 +141,7 @@ 
     | 
|
| 136 | 
         
             
            	{#if isSettingsOpen}
         
     | 
| 137 | 
         
             
            		<SettingsModal on:close={() => (isSettingsOpen = false)} settings={data.settings} />
         
     | 
| 138 | 
         
             
            	{/if}
         
     | 
| 139 | 
         
            -
            	{#if  
     | 
| 140 | 
         
             
            		<LoginModal settings={data.settings} />
         
     | 
| 141 | 
         
             
            	{/if}
         
     | 
| 142 | 
         
             
            	<slot />
         
     | 
| 
         | 
|
| 91 | 
         
             
            	});
         
     | 
| 92 | 
         | 
| 93 | 
         
             
            	$: if ($error) onError();
         
     | 
| 94 | 
         
            +
             
     | 
| 95 | 
         
            +
            	const requiresLogin =
         
     | 
| 96 | 
         
            +
            		!$page.error &&
         
     | 
| 97 | 
         
            +
            		(data.requiresLogin ? !data.user : !data.settings.ethicsModalAcceptedAt) &&
         
     | 
| 98 | 
         
            +
            		!$page.route.id?.startsWith("/r/");
         
     | 
| 99 | 
         
             
            </script>
         
     | 
| 100 | 
         | 
| 101 | 
         
             
            <svelte:head>
         
     | 
| 
         | 
|
| 141 | 
         
             
            	{#if isSettingsOpen}
         
     | 
| 142 | 
         
             
            		<SettingsModal on:close={() => (isSettingsOpen = false)} settings={data.settings} />
         
     | 
| 143 | 
         
             
            	{/if}
         
     | 
| 144 | 
         
            +
            	{#if requiresLogin}
         
     | 
| 145 | 
         
             
            		<LoginModal settings={data.settings} />
         
     | 
| 146 | 
         
             
            	{/if}
         
     | 
| 147 | 
         
             
            	<slot />
         
     | 
    	
        src/routes/r/[id]/+page.svelte
    CHANGED
    
    | 
         @@ -24,6 +24,7 @@ 
     | 
|
| 24 | 
         
             
            				},
         
     | 
| 25 | 
         
             
            				body: JSON.stringify({
         
     | 
| 26 | 
         
             
            					fromShare: $page.params.id,
         
     | 
| 
         | 
|
| 27 | 
         
             
            				}),
         
     | 
| 28 | 
         
             
            			});
         
     | 
| 29 | 
         | 
| 
         @@ -77,4 +78,6 @@ 
     | 
|
| 77 | 
         
             
            	models={data.models}
         
     | 
| 78 | 
         
             
            	currentModel={findCurrentModel(data.models, data.model)}
         
     | 
| 79 | 
         
             
            	settings={data.settings}
         
     | 
| 
         | 
|
| 
         | 
|
| 80 | 
         
             
            />
         
     | 
| 
         | 
|
| 24 | 
         
             
            				},
         
     | 
| 25 | 
         
             
            				body: JSON.stringify({
         
     | 
| 26 | 
         
             
            					fromShare: $page.params.id,
         
     | 
| 27 | 
         
            +
            					model: data.model,
         
     | 
| 28 | 
         
             
            				}),
         
     | 
| 29 | 
         
             
            			});
         
     | 
| 30 | 
         | 
| 
         | 
|
| 78 | 
         
             
            	models={data.models}
         
     | 
| 79 | 
         
             
            	currentModel={findCurrentModel(data.models, data.model)}
         
     | 
| 80 | 
         
             
            	settings={data.settings}
         
     | 
| 81 | 
         
            +
            	loginRequired={!$page.error &&
         
     | 
| 82 | 
         
            +
            		(data.requiresLogin ? !data.user : !data.settings.ethicsModalAcceptedAt)}
         
     | 
| 83 | 
         
             
            />
         
     |