From 1b106d92e034cdb0f73997b83cc1b67c016906f7 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Thu, 10 Oct 2024 09:50:59 -0400 Subject: [PATCH 1/7] fix HTML semantics of relational info-badges --- packages/frontend/src/pages/user/home.vue | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index 2ec47889d6..c1bfde09ea 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -30,12 +30,12 @@ SPDX-License-Identifier: AGPL-3.0-only -
- {{ i18n.ts.followsYou }} - {{ i18n.ts.muted }} - {{ i18n.ts.renoteMuted }} - {{ i18n.ts.blocked }} -
+
@@ -469,12 +469,17 @@ onUnmounted(() => { display: flex; flex-direction: row; + padding: 0; + margin: 0; + > * { padding: 4px 8px; color: #fff; background: rgba(0, 0, 0, 0.7); font-size: 0.7em; border-radius: var(--radius-sm); + list-style-type: none; + margin-left: 0; } > :not(:first-child) { From 523ad3d60c55ede9949a1163b4467308753d36e2 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Thu, 10 Oct 2024 09:53:07 -0400 Subject: [PATCH 2/7] add "following" and "mutuals" relation badges --- packages/frontend/src/pages/user/home.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index c1bfde09ea..8401ebc610 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -31,7 +31,9 @@ SPDX-License-Identifier: AGPL-3.0-only
From 87a12c020f6b1c17bf90af91cc2afd18aec8b714 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Thu, 10 Oct 2024 19:03:46 -0400 Subject: [PATCH 4/7] convert "suspend deliver" button into a toggle --- packages/frontend/src/pages/instance-info.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue index 3dc2b2878c..9b73df557a 100644 --- a/packages/frontend/src/pages/instance-info.vue +++ b/packages/frontend/src/pages/instance-info.vue @@ -46,9 +46,8 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.deleteAllFiles }} {{ i18n.ts.severAllFollowRelations }} - {{ i18n.ts._delivery.stop }} - {{ i18n.ts._delivery.resume }}
+ {{ i18n.ts._delivery.stop }} {{ i18n.ts.blockedByBase }} {{ i18n.ts.blockThisInstance }} {{ i18n.ts.silencedByBase }} @@ -214,6 +213,11 @@ const isMediaSilenced = ref(false); const faviconUrl = ref(null); const moderationNote = ref(''); +const isSuspended = computed({ + get: () => suspensionState.value !== 'none', + set: value => value ? stopDelivery() : resumeDelivery(), +}); + const baseDomains = computed(() => { const domains: string[] = []; From 5a499550643ff8af5150614eab7a2ed74f0e01ae Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Thu, 10 Oct 2024 19:09:19 -0400 Subject: [PATCH 5/7] fix typo in "Server is suspended due to no responding" --- locales/en-US.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index e50a78e414..70c06ab326 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1359,7 +1359,7 @@ _delivery: none: "Publishing" manuallySuspended: "Manually suspended" goneSuspended: "Server is suspended due to server deletion" - autoSuspendedForNotResponding: "Server is suspended due to no responding" + autoSuspendedForNotResponding: "Server is suspended due to not responding" _bubbleGame: howToPlay: "How to play" hold: "Hold" From f496d4b88b7818fd8bd03909f952da7cd9e139c4 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Fri, 11 Oct 2024 10:16:57 -0400 Subject: [PATCH 6/7] re-implement suspension toggle to match other controls --- packages/frontend/src/pages/instance-info.vue | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue index 9b73df557a..e1a30a21b5 100644 --- a/packages/frontend/src/pages/instance-info.vue +++ b/packages/frontend/src/pages/instance-info.vue @@ -47,7 +47,7 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts.deleteAllFiles }} {{ i18n.ts.severAllFollowRelations }}
- {{ i18n.ts._delivery.stop }} + {{ i18n.ts._delivery.stop }} {{ i18n.ts.blockedByBase }} {{ i18n.ts.blockThisInstance }} {{ i18n.ts.silencedByBase }} @@ -205,6 +205,7 @@ const chartSrc = ref('instance-requests'); const meta = ref(null); const instance = ref(null); const suspensionState = ref<'none' | 'manuallySuspended' | 'goneSuspended' | 'autoSuspendedForNotResponding'>('none'); +const isSuspended = ref(false); const isBlocked = ref(false); const isSilenced = ref(false); const isNSFW = ref(false); @@ -213,11 +214,6 @@ const isMediaSilenced = ref(false); const faviconUrl = ref(null); const moderationNote = ref(''); -const isSuspended = computed({ - get: () => suspensionState.value !== 'none', - set: value => value ? stopDelivery() : resumeDelivery(), -}); - const baseDomains = computed(() => { const domains: string[] = []; @@ -276,6 +272,7 @@ async function fetch(): Promise { host: props.host, }); suspensionState.value = instance.value?.suspensionState ?? 'none'; + isSuspended.value = instance.value?.suspensionState !== 'none'; isBlocked.value = instance.value?.isBlocked ?? false; isSilenced.value = instance.value?.isSilenced ?? false; isNSFW.value = instance.value?.isNSFW ?? false; @@ -314,21 +311,12 @@ async function toggleMediaSilenced(): Promise { }); } -async function stopDelivery(): Promise { +async function toggleSuspended(): Promise { if (!instance.value) throw new Error('No instance?'); - suspensionState.value = 'manuallySuspended'; + suspensionState.value = isSuspended.value ? 'manuallySuspended' : 'none'; await misskeyApi('admin/federation/update-instance', { host: instance.value.host, - isSuspended: true, - }); -} - -async function resumeDelivery(): Promise { - if (!instance.value) throw new Error('No instance?'); - suspensionState.value = 'none'; - await misskeyApi('admin/federation/update-instance', { - host: instance.value.host, - isSuspended: false, + isSuspended: isSuspended.value, }); } From 69483bb55b5679f7885f2811b3567c4dbc90406a Mon Sep 17 00:00:00 2001 From: Ruben Date: Fri, 11 Oct 2024 11:32:35 -0500 Subject: [PATCH 7/7] new logo --- packages/frontend/assets/sharkey.svg | Bin 20464 -> 15687 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/frontend/assets/sharkey.svg b/packages/frontend/assets/sharkey.svg index 82f8c8cfa82e27105e89ffbe9b5c32a93a6edd5f..ae49863e5b3946517316ac2650eb71b83a30aad9 100644 GIT binary patch literal 15687 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 S{0FY6e@aU~e&gRq|L{L#SiNij literal 20464 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