Spaces:
Runtime error
Runtime error
add content warning
Browse files
frontend/package.json
CHANGED
|
@@ -47,6 +47,7 @@
|
|
| 47 |
"d3-drag": "^3.0.0",
|
| 48 |
"d3-selection": "^3.0.0",
|
| 49 |
"d3-zoom": "^3.0.0",
|
|
|
|
| 50 |
"nanoid": "^4.0.0"
|
| 51 |
}
|
| 52 |
}
|
|
|
|
| 47 |
"d3-drag": "^3.0.0",
|
| 48 |
"d3-selection": "^3.0.0",
|
| 49 |
"d3-zoom": "^3.0.0",
|
| 50 |
+
"js-cookie": "^3.0.1",
|
| 51 |
"nanoid": "^4.0.0"
|
| 52 |
}
|
| 53 |
}
|
frontend/src/lib/ContentWarningModal.svelte
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<script lang="ts">
|
| 2 |
+
import { createEventDispatcher, onMount } from 'svelte';
|
| 3 |
+
|
| 4 |
+
const dispatch = createEventDispatcher();
|
| 5 |
+
|
| 6 |
+
let okButton: HTMLButtonElement;
|
| 7 |
+
|
| 8 |
+
onMount(() => {
|
| 9 |
+
okButton.focus();
|
| 10 |
+
});
|
| 11 |
+
</script>
|
| 12 |
+
|
| 13 |
+
<form
|
| 14 |
+
class="fixed w-screen top-0 left-0 bottom-0 right-0 h-screen z-50 flex items-center justify-center bg-black bg-opacity-80"
|
| 15 |
+
>
|
| 16 |
+
<div
|
| 17 |
+
class="text-center p-3 m-3 bg-white overflow-hidden rounded-2xl w-full max-w-lg 2xl:max-w-xl"
|
| 18 |
+
>
|
| 19 |
+
<h3
|
| 20 |
+
class="font-semibold text-black text-base 2xl:text-2xl spacing tracking-wide hover:saturate-150 mb-3"
|
| 21 |
+
>
|
| 22 |
+
Since the project is an open interactive art canvas, you may encounter some disturbing and
|
| 23 |
+
potentially NSFW content in the rooms.
|
| 24 |
+
</h3>
|
| 25 |
+
|
| 26 |
+
<button
|
| 27 |
+
bind:this={okButton}
|
| 28 |
+
on:click={() => dispatch('contentModal')}
|
| 29 |
+
class="font-semibold bg-blue-700 text-white rounded-lg px-5 text-xl 2xl:text-2xl spacing tracking-wide hover:saturate-150"
|
| 30 |
+
title="Input prompt to generate image and negative prompt inside brackets <NEGATIVE PROMPT>"
|
| 31 |
+
>OK
|
| 32 |
+
</button>
|
| 33 |
+
</div>
|
| 34 |
+
</form>
|
frontend/src/routes/+page.svelte
CHANGED
|
@@ -4,6 +4,7 @@
|
|
| 4 |
import type { Client } from '@liveblocks/client';
|
| 5 |
import LiveblocksProvider from '$lib/liveblocks/LiveblocksProvider.svelte';
|
| 6 |
import RoomProvider from '$lib/liveblocks/RoomProvider.svelte';
|
|
|
|
| 7 |
import App from '$lib/App.svelte';
|
| 8 |
import About from '$lib/About.svelte';
|
| 9 |
import { PUBLIC_API_BASE } from '$env/static/public';
|
|
@@ -11,9 +12,11 @@
|
|
| 11 |
import type { RoomResponse } from '$lib/types';
|
| 12 |
import { MAX_CAPACITY, FRAME_SIZE } from '$lib/constants';
|
| 13 |
import { Status } from '$lib/types';
|
|
|
|
| 14 |
|
| 15 |
let loading = true;
|
| 16 |
let client: Client;
|
|
|
|
| 17 |
|
| 18 |
$: roomId = $selectedRoomID;
|
| 19 |
|
|
@@ -33,8 +36,19 @@
|
|
| 33 |
});
|
| 34 |
|
| 35 |
updateRooms();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
});
|
| 37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
async function updateRooms() {
|
| 39 |
loading = true;
|
| 40 |
const roomidParam = new URLSearchParams(window.location.search).get('roomid');
|
|
@@ -79,6 +93,9 @@
|
|
| 79 |
};
|
| 80 |
</script>
|
| 81 |
|
|
|
|
|
|
|
|
|
|
| 82 |
<About classList={$toggleAbout ? 'flex' : 'hidden'} on:click={() => ($toggleAbout = false)} />
|
| 83 |
|
| 84 |
{#if loading}
|
|
|
|
| 4 |
import type { Client } from '@liveblocks/client';
|
| 5 |
import LiveblocksProvider from '$lib/liveblocks/LiveblocksProvider.svelte';
|
| 6 |
import RoomProvider from '$lib/liveblocks/RoomProvider.svelte';
|
| 7 |
+
import ContentWarningModal from '$lib/ContentWarningModal.svelte';
|
| 8 |
import App from '$lib/App.svelte';
|
| 9 |
import About from '$lib/About.svelte';
|
| 10 |
import { PUBLIC_API_BASE } from '$env/static/public';
|
|
|
|
| 12 |
import type { RoomResponse } from '$lib/types';
|
| 13 |
import { MAX_CAPACITY, FRAME_SIZE } from '$lib/constants';
|
| 14 |
import { Status } from '$lib/types';
|
| 15 |
+
import Cookies from 'js-cookie';
|
| 16 |
|
| 17 |
let loading = true;
|
| 18 |
let client: Client;
|
| 19 |
+
let hideContentModal = true;
|
| 20 |
|
| 21 |
$: roomId = $selectedRoomID;
|
| 22 |
|
|
|
|
| 36 |
});
|
| 37 |
|
| 38 |
updateRooms();
|
| 39 |
+
|
| 40 |
+
const accepted = Cookies.get('acceptedContentWarning');
|
| 41 |
+
hideContentModal = false;
|
| 42 |
+
if (accepted) {
|
| 43 |
+
hideContentModal = true;
|
| 44 |
+
}
|
| 45 |
});
|
| 46 |
|
| 47 |
+
function contentModal() {
|
| 48 |
+
hideContentModal = true;
|
| 49 |
+
Cookies.set('acceptedContentWarning', 'true', { expires: 10 });
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
async function updateRooms() {
|
| 53 |
loading = true;
|
| 54 |
const roomidParam = new URLSearchParams(window.location.search).get('roomid');
|
|
|
|
| 93 |
};
|
| 94 |
</script>
|
| 95 |
|
| 96 |
+
{#if !hideContentModal}
|
| 97 |
+
<ContentWarningModal on:contentModal={() => contentModal()} />
|
| 98 |
+
{/if}
|
| 99 |
<About classList={$toggleAbout ? 'flex' : 'hidden'} on:click={() => ($toggleAbout = false)} />
|
| 100 |
|
| 101 |
{#if loading}
|