Spaces:
Paused
Paused
Mishig
commited on
[Assistants] update page & visiblity logic (#802)
Browse files* Always show community tab
* Change assistants visiblity logic
* ui hint
* comment out
* unused icon for now
* re-use variable
src/routes/assistants/+page.server.ts
CHANGED
|
@@ -7,7 +7,7 @@ import type { Filter } from "mongodb";
|
|
| 7 |
|
| 8 |
const NUM_PER_PAGE = 24;
|
| 9 |
|
| 10 |
-
export const load = async ({ url }) => {
|
| 11 |
if (!ENABLE_ASSISTANTS) {
|
| 12 |
throw redirect(302, `${base}/`);
|
| 13 |
}
|
|
@@ -15,6 +15,7 @@ export const load = async ({ url }) => {
|
|
| 15 |
const modelId = url.searchParams.get("modelId");
|
| 16 |
const pageIndex = parseInt(url.searchParams.get("p") ?? "0");
|
| 17 |
const createdByName = url.searchParams.get("user");
|
|
|
|
| 18 |
|
| 19 |
if (createdByName) {
|
| 20 |
const existingUser = await collections.users.findOne({ username: createdByName });
|
|
@@ -25,10 +26,9 @@ export const load = async ({ url }) => {
|
|
| 25 |
|
| 26 |
// fetch the top assistants sorted by user count from biggest to smallest, filter out all assistants with only 1 users. filter by model too if modelId is provided
|
| 27 |
const filter: Filter<Assistant> = {
|
| 28 |
-
userCount: { $gt: 1 },
|
| 29 |
modelId: modelId ?? { $exists: true },
|
| 30 |
-
|
| 31 |
-
...(createdByName
|
| 32 |
};
|
| 33 |
const assistants = await collections.assistants
|
| 34 |
.find(filter)
|
|
|
|
| 7 |
|
| 8 |
const NUM_PER_PAGE = 24;
|
| 9 |
|
| 10 |
+
export const load = async ({ url, locals }) => {
|
| 11 |
if (!ENABLE_ASSISTANTS) {
|
| 12 |
throw redirect(302, `${base}/`);
|
| 13 |
}
|
|
|
|
| 15 |
const modelId = url.searchParams.get("modelId");
|
| 16 |
const pageIndex = parseInt(url.searchParams.get("p") ?? "0");
|
| 17 |
const createdByName = url.searchParams.get("user");
|
| 18 |
+
const createdByCurrentUser = locals.user?.username && locals.user.username === createdByName;
|
| 19 |
|
| 20 |
if (createdByName) {
|
| 21 |
const existingUser = await collections.users.findOne({ username: createdByName });
|
|
|
|
| 26 |
|
| 27 |
// fetch the top assistants sorted by user count from biggest to smallest, filter out all assistants with only 1 users. filter by model too if modelId is provided
|
| 28 |
const filter: Filter<Assistant> = {
|
|
|
|
| 29 |
modelId: modelId ?? { $exists: true },
|
| 30 |
+
...(!createdByCurrentUser && { userCount: { $gt: 1 } }),
|
| 31 |
+
...(createdByName ? { createdByName } : { featured: true }),
|
| 32 |
};
|
| 33 |
const assistants = await collections.assistants
|
| 34 |
.find(filter)
|
src/routes/assistants/+page.svelte
CHANGED
|
@@ -13,6 +13,7 @@
|
|
| 13 |
import CarbonClose from "~icons/carbon/close";
|
| 14 |
import CarbonArrowUpRight from "~icons/carbon/arrow-up-right";
|
| 15 |
import CarbonEarthAmerica from "~icons/carbon/earth-americas-filled";
|
|
|
|
| 16 |
import Pagination from "$lib/components/Pagination.svelte";
|
| 17 |
import { getHref } from "$lib/utils/getHref";
|
| 18 |
|
|
@@ -111,7 +112,7 @@
|
|
| 111 |
on HF</a
|
| 112 |
>
|
| 113 |
{/if}
|
| 114 |
-
{:else
|
| 115 |
<a
|
| 116 |
href={getHref($page.url, {
|
| 117 |
existingKeys: { behaviour: "delete", keys: ["user", "modelId", "p"] },
|
|
@@ -123,17 +124,19 @@
|
|
| 123 |
<CarbonEarthAmerica class="text-xs" />
|
| 124 |
Community
|
| 125 |
</a>
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
|
|
|
|
|
|
| 137 |
{/if}
|
| 138 |
</div>
|
| 139 |
|
|
@@ -141,8 +144,13 @@
|
|
| 141 |
{#each data.assistants as assistant (assistant._id)}
|
| 142 |
<a
|
| 143 |
href="{base}/assistant/{assistant._id}"
|
| 144 |
-
class="flex flex-col items-center justify-center overflow-hidden text-balance rounded-xl border bg-gray-50/50 px-4 py-6 text-center shadow hover:bg-gray-50 hover:shadow-inner max-sm:px-4 sm:h-64 sm:pb-4 dark:border-gray-800/70 dark:bg-gray-950/20 dark:hover:bg-gray-950/40"
|
| 145 |
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 146 |
{#if assistant.avatar}
|
| 147 |
<img
|
| 148 |
src="{base}/settings/assistants/{assistant._id}/avatar.jpg"
|
|
|
|
| 13 |
import CarbonClose from "~icons/carbon/close";
|
| 14 |
import CarbonArrowUpRight from "~icons/carbon/arrow-up-right";
|
| 15 |
import CarbonEarthAmerica from "~icons/carbon/earth-americas-filled";
|
| 16 |
+
// import CarbonViewOff from "~icons/carbon/view-off-filled";
|
| 17 |
import Pagination from "$lib/components/Pagination.svelte";
|
| 18 |
import { getHref } from "$lib/utils/getHref";
|
| 19 |
|
|
|
|
| 112 |
on HF</a
|
| 113 |
>
|
| 114 |
{/if}
|
| 115 |
+
{:else}
|
| 116 |
<a
|
| 117 |
href={getHref($page.url, {
|
| 118 |
existingKeys: { behaviour: "delete", keys: ["user", "modelId", "p"] },
|
|
|
|
| 124 |
<CarbonEarthAmerica class="text-xs" />
|
| 125 |
Community
|
| 126 |
</a>
|
| 127 |
+
{#if data.user?.username}
|
| 128 |
+
<a
|
| 129 |
+
href={getHref($page.url, {
|
| 130 |
+
newKeys: { user: data.user.username },
|
| 131 |
+
existingKeys: { behaviour: "delete", keys: ["modelId", "p"] },
|
| 132 |
+
})}
|
| 133 |
+
class="flex items-center gap-1.5 rounded-full border px-3 py-1 {assistantsCreator &&
|
| 134 |
+
createdByMe
|
| 135 |
+
? 'border-gray-300 bg-gray-50 dark:border-gray-600 dark:bg-gray-700 dark:text-white'
|
| 136 |
+
: 'border-transparent text-gray-400 hover:text-gray-800 dark:hover:text-gray-300'}"
|
| 137 |
+
>{data.user.username}
|
| 138 |
+
</a>
|
| 139 |
+
{/if}
|
| 140 |
{/if}
|
| 141 |
</div>
|
| 142 |
|
|
|
|
| 144 |
{#each data.assistants as assistant (assistant._id)}
|
| 145 |
<a
|
| 146 |
href="{base}/assistant/{assistant._id}"
|
| 147 |
+
class="relative flex flex-col items-center justify-center overflow-hidden text-balance rounded-xl border bg-gray-50/50 px-4 py-6 text-center shadow hover:bg-gray-50 hover:shadow-inner max-sm:px-4 sm:h-64 sm:pb-4 dark:border-gray-800/70 dark:bg-gray-950/20 dark:hover:bg-gray-950/40"
|
| 148 |
>
|
| 149 |
+
<!-- {#if assistant.userCount && assistant.userCount > 1}
|
| 150 |
+
<div class="absolute right-2 top-2" title="share with others to make it public">
|
| 151 |
+
<CarbonViewOff class="opacity-70" />
|
| 152 |
+
</div>
|
| 153 |
+
{/if} -->
|
| 154 |
{#if assistant.avatar}
|
| 155 |
<img
|
| 156 |
src="{base}/settings/assistants/{assistant._id}/avatar.jpg"
|