This commit is contained in:
nelle 2024-06-26 13:41:23 -06:00
parent 262c7a1556
commit 1c16b749c3
3 changed files with 123 additions and 1 deletions

View file

@ -165,7 +165,7 @@ cacheRemoteFiles: "Cache remote files"
cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded
directly from the remote server. Disabling this will decrease storage usage, but
increase traffic, as thumbnails will not be generated."
flagAsBot: "Mark this account as a bot 🤖"
flagAsBot: "Mark this account as a bot"
flagAsBotDescription: "Enable this option if this account is controlled by a program.
If enabled, it will act as a flag for other developers to prevent endless interaction
chains with other bots and adjust Iceshrimp's internal systems to treat this account
@ -174,6 +174,10 @@ flagAsCat: "Are you a cat? 😺"
flagAsCatDescription: "You'll get cat ears and speak like a cat!"
flagSpeakAsCat: "Speak as a cat"
flagSpeakAsCatDescription: "Your beeps will get nyanified when in cat mode"
flagAsRobo: "Are you a robot? 🤖"
flagAsRoboDescription: "You'll get an antenna and speak like a robot!"
flagSpeakAsRobo: "Speak as a robot"
flagSpeakAsRoboDescription: "Your beeps will get robofied when in robot mode"
flagShowTimelineReplies: "Show replies in timeline"
flagShowTimelineRepliesDescription: "Shows replies of users to beeps of other users
in the timeline if turned on."

View file

@ -35,6 +35,43 @@
</MkA>
</template>
<template>
<span
v-if="disableLink"
v-user-preview="disablePreview ? undefined : user.id"
class="robomode _noSelect"
:class="{ cat: user.isRobo, square: $store.state.squareAvatars }"
:style="{ color }"
:title="acct(user)"
@click="onClick"
>
<img class="inner" :src="url" loading="lazy" decoding="async" />
<MkUserOnlineIndicator
v-if="showIndicator && user.instance == null"
class="indicator"
:user="user"
/>
</span>
<MkA
v-else
v-user-preview="disablePreview ? undefined : user.id"
class="robomode _noSelect"
:class="{ cat: user.isRobo, square: $store.state.squareAvatars }"
:style="{ color }"
:to="userPage(user)"
:title="acct(user)"
:target="target"
@click.stop
>
<img class="inner" :src="url" loading="lazy" decoding="async" />
<MkUserOnlineIndicator
v-if="showIndicator && user.instance == null"
class="indicator"
:user="user"
/>
</MkA>
</template>
<script lang="ts" setup>
import { onMounted, watch } from "vue";
import type * as misskey from "iceshrimp-js";
@ -196,4 +233,77 @@ watch(
}
}
}
.robomode {
position: relative;
display: inline-block;
vertical-align: bottom;
flex-shrink: 0;
border-radius: 100%;
line-height: 30px;
> .inner {
position: absolute;
bottom: 0;
left: 0;
right: 0;
top: 0;
border-radius: 100%;
z-index: 1;
overflow: hidden;
object-fit: cover;
width: 100%;
height: 100%;
}
> .indicator {
position: absolute;
z-index: 1;
bottom: 0;
left: 0;
width: 18%;
height: 18%;
}
&.square {
border-radius: 20%;
> .inner {
border-radius: 20%;
}
}
&.cat {
&:before,
&:after {
background: #ebbcba;
border: solid 4px currentColor;
box-sizing: border-box;
content: "";
display: inline-block;
height: 100%;
width: 100%;
}
&:before {
border-radius: 0 75% 75%;
transform: rotate(37.5deg) skew(30deg);
}
&:after {
border-radius: 75% 0 75% 75%;
transform: rotate(-37.5deg) skew(-30deg);
}
&:hover {
&:before {
animation: earwiggleleft 1s infinite;
}
&:after {
animation: earwiggleright 1s infinite;
}
}
}
}
</style>

View file

@ -149,6 +149,12 @@
i18n.ts.flagSpeakAsCatDescription
}}</template></FormSwitch
>
<FormSwitch v-model="profile.isRobo" class="_formBlock"
>{{ i18n.ts.flagAsRobo
}}<template #caption>{{
i18n.ts.flagAsRoboDescription
}}</template></FormSwitch
>
<FormSwitch v-model="profile.isBot" class="_formBlock"
>{{ i18n.ts.flagAsBot
}}<template #caption>{{
@ -186,6 +192,7 @@ const profile = reactive({
birthday: $i?.birthday,
lang: $i?.lang,
isBot: $i?.isBot,
isRobo: $i?.isRobo,
isCat: $i?.isCat,
speakAsCat: $i?.speakAsCat,
});
@ -240,6 +247,7 @@ function save() {
birthday: profile.birthday || null,
lang: profile.lang || null,
isBot: !!profile.isBot,
isRobo: !!profile.isRobo,
isCat: !!profile.isCat,
speakAsCat: !!profile.speakAsCat,
});