From 27608449e544766dfb82a8d85ecb15dbb8008bdc Mon Sep 17 00:00:00 2001 From: sheodox Date: Mon, 20 Jan 2025 10:42:29 -0600 Subject: [PATCH 01/14] Update lemmy client --- package-lock.json | 115 ++-------------------------------------------- package.json | 2 +- 2 files changed, 6 insertions(+), 111 deletions(-) diff --git a/package-lock.json b/package-lock.json index e148170..8eae031 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "^6.4.2", "date-fns": "^2.30.0", - "lemmy-js-client": "^0.19.0-rc.19", + "lemmy-js-client": "^0.19.6", "markdown-it": "^13.0.2", "markdown-it-container": "^3.0.0", "markdown-it-footnote": "^3.0.3", @@ -1428,11 +1428,6 @@ "node": "*" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -1636,17 +1631,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -1668,14 +1652,6 @@ "node": ">= 0.6" } }, - "node_modules/cross-fetch": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", - "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", - "dependencies": { - "node-fetch": "^2.6.11" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1781,14 +1757,6 @@ "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -2230,19 +2198,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2603,13 +2558,10 @@ "dev": true }, "node_modules/lemmy-js-client": { - "version": "0.19.0-rc.19", - "resolved": "https://registry.npmjs.org/lemmy-js-client/-/lemmy-js-client-0.19.0-rc.19.tgz", - "integrity": "sha512-kae8V33QixbyYIA+pn7+sCeOOWL3eRgnFaNkZU8Y8vxhwZExIhkZus9jzVt/BoyPddVlafyBHxgAUsWXLA4tRA==", - "dependencies": { - "cross-fetch": "^3.1.5", - "form-data": "^4.0.0" - } + "version": "0.19.6", + "resolved": "https://registry.npmjs.org/lemmy-js-client/-/lemmy-js-client-0.19.6.tgz", + "integrity": "sha512-5bs9NfjKcXVFJE3goHvu0Uo3u6+CMyQsccT2XCJyp0JExtNZM3F9oBl3t1/wiOMMGyNKiDJ+mCC9Y9gXwa1/iw==", + "license": "AGPL-3.0" }, "node_modules/levn": { "version": "0.4.1", @@ -2796,25 +2748,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -2928,25 +2861,6 @@ "tslib": "^2.0.3" } }, - "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3964,11 +3878,6 @@ "node": ">=6" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/ts-api-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", @@ -4242,20 +4151,6 @@ } } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 8189bd2..529793d 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "^6.4.2", "date-fns": "^2.30.0", - "lemmy-js-client": "^0.19.0-rc.19", + "lemmy-js-client": "^0.19.6", "markdown-it": "^13.0.2", "markdown-it-container": "^3.0.0", "markdown-it-footnote": "^3.0.3", From 8f4743d903e3212b4319fa7ff4f01db8fa2c3bd1 Mon Sep 17 00:00:00 2001 From: sheodox Date: Mon, 20 Jan 2025 10:45:34 -0600 Subject: [PATCH 02/14] REDIRECT feed layout redirect happens to clicks in all the same places as would trigger opening the overlay/column. --- src/lib/feeds/posts/PostsPage.svelte | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/feeds/posts/PostsPage.svelte b/src/lib/feeds/posts/PostsPage.svelte index fc69cc8..d5846f7 100644 --- a/src/lib/feeds/posts/PostsPage.svelte +++ b/src/lib/feeds/posts/PostsPage.svelte @@ -103,7 +103,7 @@ {/if} diff --git a/src/routes/(app)/[instance]/instances/+page.ts b/src/routes/(app)/[instance]/instances/+page.ts new file mode 100644 index 0000000..96533c2 --- /dev/null +++ b/src/routes/(app)/[instance]/instances/+page.ts @@ -0,0 +1,11 @@ +import { get } from 'svelte/store'; +import type { PageLoad } from './$types'; +import { profile } from '$lib/profiles/profiles'; + +export const load = (async () => { + const { client } = get(profile); + + return { + federatedInstances: client.getFederatedInstances() + }; +}) satisfies PageLoad; diff --git a/src/routes/(app)/[instance]/legal/+page.svelte b/src/routes/(app)/[instance]/legal/+page.svelte new file mode 100644 index 0000000..4550055 --- /dev/null +++ b/src/routes/(app)/[instance]/legal/+page.svelte @@ -0,0 +1,14 @@ + +

{$profile.instance} Legal

+
+ +
+ + From 18368b87ce3c16207586e704d24ce6046b175c10 Mon Sep 17 00:00:00 2001 From: sheodox Date: Mon, 20 Jan 2025 13:48:58 -0600 Subject: [PATCH 04/14] Update sheodox-ui for .sx-list styles --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8eae031..6283bcf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "prettier": "^3.0.3", "prettier-plugin-svelte": "^3.0.3", "sass": "^1.69.4", - "sheodox-ui": "^0.20.4", + "sheodox-ui": "^0.20.6", "svelte": "^4.2.2", "svelte-check": "^3.5.2", "tslib": "^2.6.2", @@ -3462,9 +3462,9 @@ } }, "node_modules/sheodox-ui": { - "version": "0.20.4", - "resolved": "https://registry.npmjs.org/sheodox-ui/-/sheodox-ui-0.20.4.tgz", - "integrity": "sha512-By2eY60HCitxfDZQvEJznZ65GNBdDsMrfDuLKi4Xa3SXa/FuQaKJs+0Wp13/+fYB6/kljJzRiNdPqyToLAeY4Q==", + "version": "0.20.6", + "resolved": "https://registry.npmjs.org/sheodox-ui/-/sheodox-ui-0.20.6.tgz", + "integrity": "sha512-lAiyYT8R/zdd/QUo+1bbAN+L1Zs4AaXnC8Q8NZhoQpXelHu3IfEpHb8BIYpdnsD+BY0ehKv9dXTmoxhc3+rEnQ==", "dev": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 529793d..efcab20 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier": "^3.0.3", "prettier-plugin-svelte": "^3.0.3", "sass": "^1.69.4", - "sheodox-ui": "^0.20.4", + "sheodox-ui": "^0.20.6", "svelte": "^4.2.2", "svelte-check": "^3.5.2", "tslib": "^2.6.2", From fc2eff35421da612ec8626cbd80954b00eb5273d Mon Sep 17 00:00:00 2001 From: sheodox Date: Mon, 20 Jan 2025 13:49:26 -0600 Subject: [PATCH 05/14] Add instance stats, admin list, and various links to the bottom of the instance sidebar --- src/lib/instance/InstanceSidebar.svelte | 135 +++++++++++++++++++++++- 1 file changed, 133 insertions(+), 2 deletions(-) diff --git a/src/lib/instance/InstanceSidebar.svelte b/src/lib/instance/InstanceSidebar.svelte index da1f812..e9dec46 100644 --- a/src/lib/instance/InstanceSidebar.svelte +++ b/src/lib/instance/InstanceSidebar.svelte @@ -1,3 +1,11 @@ + +
- +
+

Instance Details

+
+
    + {#each serverStats as stat} +
  • + {stat.label} + {stat.value.toLocaleString()} +
  • + {/each} +
  • + +
  • +
  • + Legal +
  • +
  • + Instances +
  • +
  • + {$profile.instance} +
  • +
+ {#if $siteMeta.admins.length} + + Admins ({$siteMeta.admins.length}) +
    + {#each $siteMeta.admins as admin} +
  • + +
  • + {/each} +
+
+ {/if} +
+
+ +
+

External Links

+
    + {#each externalLinks as link} +
  • + {link.label} +
  • + {/each} +
+
diff --git a/src/lib/instance/InstanceSidebar.svelte b/src/lib/instance/InstanceSidebar.svelte index 2cd633d..b175682 100644 --- a/src/lib/instance/InstanceSidebar.svelte +++ b/src/lib/instance/InstanceSidebar.svelte @@ -11,6 +11,7 @@ description={siteView.site.description ?? ''} sidebar={siteView.site.sidebar} context="Your Instance" + bind:descriptionOpen={$descriptionOpen} > @@ -20,10 +21,10 @@ {/if} -
- @@ -88,9 +89,14 @@ import { getSettingsContext } from '$lib/settings-context'; import { profile } from '../profiles/profiles'; import UserLink from '$lib/UserLink.svelte'; + import { localStorageBackedStore } from '$lib/utils'; const { siteMeta } = getAppContext(); const { showModlogWarning } = getSettingsContext(); + const descriptionOpen = localStorageBackedStore('instance-sidebar-description-open', true); + const instanceDetailsOpen = localStorageBackedStore('instance-sidebar-instance-details-open', true); + const externalLinksOpen = localStorageBackedStore('instance-sidebar-external-links-open', true); + $: siteView = $siteMeta.site_view; $: isAdmin = $siteMeta.admins.some( (admin) => admin.person.actor_id === $siteMeta.my_user?.local_user_view.person.actor_id From d0e6636a90a76c9abb9d898860052df85ee805c6 Mon Sep 17 00:00:00 2001 From: sheodox Date: Mon, 20 Jan 2025 17:04:37 -0600 Subject: [PATCH 12/14] Move all user page sidebar sections to accordions that remember their state like the instance/community sidebars have now. --- .../[instance]/u/[username]/+page.svelte | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/src/routes/(app)/[instance]/u/[username]/+page.svelte b/src/routes/(app)/[instance]/u/[username]/+page.svelte index 0ef7272..0999c1d 100644 --- a/src/routes/(app)/[instance]/u/[username]/+page.svelte +++ b/src/routes/(app)/[instance]/u/[username]/+page.svelte @@ -39,16 +39,18 @@ {/if}
{#if data.personView.person.bio} -
-

Bio

-
- + + Bio +
+
+ +
-
+ {/if} -
-

Stats

+ + Stats
    @@ -70,19 +72,21 @@ {/if}
-
+
{#if data.moderates && data.moderates.length}
-

Moderates

-
    - {#each data.moderates as mod} -
  • - -
  • - {/each} -
+ + Moderates +
    + {#each data.moderates as mod} +
  • + +
  • + {/each} +
+
{/if} @@ -94,7 +98,7 @@ {/key}