From b87e210941cc4129202dbaf29e039bc0f3b322be Mon Sep 17 00:00:00 2001 From: jaina heartles Date: Sat, 23 Mar 2024 13:55:23 -0700 Subject: [PATCH] Add boobdog friend --- packages/frontend/assets/boobdog.gif | Bin 0 -> 4400 bytes packages/frontend/src/components/SkOneko.vue | 10 +++++++++- packages/frontend/src/pages/settings/general.vue | 2 ++ .../src/pages/settings/preferences-backups.vue | 1 + packages/frontend/src/store.ts | 4 ++++ packages/frontend/src/ui/_common_/common.vue | 3 ++- 6 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 packages/frontend/assets/boobdog.gif diff --git a/packages/frontend/assets/boobdog.gif b/packages/frontend/assets/boobdog.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d7281da91bf6fd21b06fa8181576a95c9783922 GIT binary patch literal 4400 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 literal 0 HcmV?d00001 diff --git a/packages/frontend/src/components/SkOneko.vue b/packages/frontend/src/components/SkOneko.vue index fbf50067a..5408d7456 100644 --- a/packages/frontend/src/components/SkOneko.vue +++ b/packages/frontend/src/components/SkOneko.vue @@ -8,6 +8,13 @@ import { shallowRef, onMounted } from 'vue'; +const props = defineProps({ + spritesheet: { + type: String, + default: '/client-assets/oneko.gif', + }, +}); + const nekoEl = shallowRef(); let nekoPosX = 32; @@ -89,6 +96,8 @@ const spriteSets = { function init() { if (!nekoEl.value) return; + nekoEl.value.style.backgroundImage = `url(${props.spritesheet})`; + nekoEl.value.style.left = `${nekoPosX - 16}px`; nekoEl.value.style.top = `${nekoPosY - 16}px`; @@ -235,6 +244,5 @@ onMounted(init); pointer-events: none; image-rendering: pixelated; z-index: 2147483647; - background-image: url(/client-assets/oneko.gif); } diff --git a/packages/frontend/src/pages/settings/general.vue b/packages/frontend/src/pages/settings/general.vue index 1e4e815d5..b743cc543 100644 --- a/packages/frontend/src/pages/settings/general.vue +++ b/packages/frontend/src/pages/settings/general.vue @@ -146,6 +146,7 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts.disableDrawer }} {{ i18n.ts.forceShowAds }} {{ i18n.ts.oneko }} + Boobdog friend {{ i18n.ts.seasonalScreenEffect }}
@@ -334,6 +335,7 @@ const disableDrawer = computed(defaultStore.makeGetterSetter('disableDrawer')); const disableShowingAnimatedImages = computed(defaultStore.makeGetterSetter('disableShowingAnimatedImages')); const forceShowAds = computed(defaultStore.makeGetterSetter('forceShowAds')); const oneko = computed(defaultStore.makeGetterSetter('oneko')); +const boobdog = computed(defaultStore.makeGetterSetter('boobdog')); const loadRawImages = computed(defaultStore.makeGetterSetter('loadRawImages')); const highlightSensitiveMedia = computed(defaultStore.makeGetterSetter('highlightSensitiveMedia')); const imageNewTab = computed(defaultStore.makeGetterSetter('imageNewTab')); diff --git a/packages/frontend/src/pages/settings/preferences-backups.vue b/packages/frontend/src/pages/settings/preferences-backups.vue index f180e0b72..a5d5715c4 100644 --- a/packages/frontend/src/pages/settings/preferences-backups.vue +++ b/packages/frontend/src/pages/settings/preferences-backups.vue @@ -100,6 +100,7 @@ const defaultStoreSaveKeys: (keyof typeof defaultStore['state'])[] = [ 'reactionsDisplaySize', 'forceShowAds', 'oneko', + 'boobdog', 'numberOfReplies', 'aiChanMode', 'devMode', diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index 2cf17b27c..b8df0cb63 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -416,6 +416,10 @@ export const defaultStore = markRaw(new Storage('base', { where: 'device', default: false, }, + boobdog: { + where: 'device', + default: false, + }, clickToOpen: { where: 'device', default: true, diff --git a/packages/frontend/src/ui/_common_/common.vue b/packages/frontend/src/ui/_common_/common.vue index 4fe53ae6a..8319b2545 100644 --- a/packages/frontend/src/ui/_common_/common.vue +++ b/packages/frontend/src/ui/_common_/common.vue @@ -43,7 +43,8 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.loggedInAsBot }}
- + +