1
0

feat: add 'use star favorite icon' preference (#2067)

This commit is contained in:
TAKAHASHI Shuuji 2023-05-07 00:52:33 +09:00 committed by GitHub
parent 126cd4d535
commit 582a9847a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 37 additions and 10 deletions

View File

@ -16,6 +16,7 @@ const isSelf = $(useSelfAccount(() => account))
const { t } = useI18n()
const { client } = $(useMasto())
const useStarFavoriteIcon = usePreferences('useStarFavoriteIcon')
async function toggleMute() {
if (!relationship!.muting && await openConfirmDialog({
@ -198,7 +199,7 @@ async function removeUserNote() {
<CommonDropdownItem :text="$t('account.pinned')" icon="i-ri:pushpin-line" :command="command" />
</NuxtLink>
<NuxtLink to="/favourites">
<CommonDropdownItem :text="$t('account.favourites')" icon="i-ri:heart-3-line" :command="command" />
<CommonDropdownItem :text="$t('account.favourites')" :icon="useStarFavoriteIcon ? 'i-ri:star-line' : 'i-ri:heart-3-line'" :command="command" />
</NuxtLink>
<NuxtLink to="/mutes">
<CommonDropdownItem :text="$t('account.muted_users')" icon="i-ri:volume-mute-line" :command="command" />

View File

@ -3,6 +3,7 @@ const { command } = defineProps<{
command?: boolean
}>()
const { notifications } = useNotifications()
const useStarFavoriteIcon = usePreferences('useStarFavoriteIcon')
</script>
<template>
@ -22,7 +23,7 @@ const { notifications } = useNotifications()
</template>
</NavSideItem>
<NavSideItem :text="$t('nav.conversations')" to="/conversations" icon="i-ri:at-line" user-only :command="command" />
<NavSideItem :text="$t('nav.favourites')" to="/favourites" icon="i-ri:heart-3-line" user-only :command="command" />
<NavSideItem :text="$t('nav.favourites')" to="/favourites" :icon="useStarFavoriteIcon ? 'i-ri:star-line' : 'i-ri:heart-3-line'" user-only :command="command" />
<NavSideItem :text="$t('nav.bookmarks')" to="/bookmarks" icon="i-ri:bookmark-line" user-only :command="command" />
<NavSideItem :text="$t('action.compose')" to="/compose" icon="i-ri:quill-pen-line" user-only :command="command" />

View File

@ -12,6 +12,7 @@ const focusEditor = inject<typeof noop>('focus-editor', noop)
const { details, command } = $(props)
const userSettings = useUserSettings()
const useStarFavoriteIcon = usePreferences('useStarFavoriteIcon')
const {
status,
@ -77,9 +78,11 @@ function reply() {
<StatusActionButton
:content="$t('action.favourite')"
:text="!getPreferences(userSettings, 'hideFavoriteCount') && status.favouritesCount ? status.favouritesCount : ''"
color="text-rose" hover="text-rose" elk-group-hover="bg-rose/10"
icon="i-ri:heart-3-line"
active-icon="i-ri:heart-3-fill"
:color="useStarFavoriteIcon ? 'text-yellow' : 'text-rose'"
:hover="useStarFavoriteIcon ? 'text-yellow' : 'text-rose'"
:elk-group-hover="useStarFavoriteIcon ? 'bg-yellow/10' : 'bg-rose/10'"
:icon="useStarFavoriteIcon ? 'i-ri:star-line' : 'i-ri:heart-3-line'"
:active-icon="useStarFavoriteIcon ? 'i-ri:star-fill' : 'i-ri:heart-3-fill'"
:active="!!status.favourited"
:disabled="isLoading.favourited"
:command="command"
@ -97,7 +100,9 @@ function reply() {
<div flex-none>
<StatusActionButton
:content="$t('action.bookmark')"
color="text-yellow" hover="text-yellow" elk-group-hover="bg-yellow/10"
:color="useStarFavoriteIcon ? 'text-rose' : 'text-yellow'"
:hover="useStarFavoriteIcon ? 'text-rose' : 'text-yellow'"
:elk-group-hover="useStarFavoriteIcon ? 'bg-rose/10' : 'bg-yellow/10' "
icon="i-ri:bookmark-line"
active-icon="i-ri:bookmark-fill"
:active="!!status.bookmarked"

View File

@ -28,6 +28,7 @@ const router = useRouter()
const route = useRoute()
const { t } = useI18n()
const userSettings = useUserSettings()
const useStarFavoriteIcon = usePreferences('useStarFavoriteIcon')
const isAuthor = $computed(() => status.account.id === currentUser.value?.account.id)
@ -149,8 +150,13 @@ function showFavoritedAndBoostedBy() {
<CommonDropdownItem
:text="status.favourited ? $t('action.favourited') : $t('action.favourite')"
:icon="status.favourited ? 'i-ri:heart-3-fill' : 'i-ri:heart-3-line'"
:class="status.favourited ? 'text-rose' : ''"
:icon="useStarFavoriteIcon
? status.favourited ? 'i-ri:star-fill' : 'i-ri:star-line'
: status.favourited ? 'i-ri:heart-3-fill' : 'i-ri:heart-3-line'"
:class="status.favourited
? useStarFavoriteIcon ? 'text-yellow' : 'text-rose'
: ''
"
:command="command"
:disabled="isLoading.favourited"
@click="toggleFavourite()"
@ -159,7 +165,10 @@ function showFavoritedAndBoostedBy() {
<CommonDropdownItem
:text="status.bookmarked ? $t('action.bookmarked') : $t('action.bookmark')"
:icon="status.bookmarked ? 'i-ri:bookmark-fill' : 'i-ri:bookmark-line'"
:class="status.bookmarked ? 'text-yellow' : ''"
:class="status.bookmarked
? useStarFavoriteIcon ? 'text-rose' : 'text-yellow'
: ''
"
:command="command"
:disabled="isLoading.bookmarked"
@click="toggleBookmark()"

View File

@ -21,6 +21,7 @@ export interface PreferencesSettings {
enableAutoplay: boolean
enableDataSaving: boolean
enablePinchToZoom: boolean
useStarFavoriteIcon: boolean
zenMode: boolean
experimentalVirtualScroller: boolean
experimentalGitHubCards: boolean
@ -72,6 +73,7 @@ export const DEFAULT__PREFERENCES_SETTINGS: PreferencesSettings = {
enableAutoplay: true,
enableDataSaving: false,
enablePinchToZoom: false,
useStarFavoriteIcon: false,
zenMode: false,
experimentalVirtualScroller: true,
experimentalGitHubCards: true,

View File

@ -454,6 +454,7 @@
"hide_username_emojis_description": "Hides emojis from usernames in timelines. Emojis will still be visible in their profiles.",
"label": "Preferences",
"title": "Experimental Features",
"use_star_favorite_icon": "Use star favorite icon",
"user_picker": "User Picker",
"virtual_scroll": "Virtual Scrolling",
"wellbeing": "Wellbeing",

View File

@ -454,6 +454,7 @@
"hide_username_emojis_description": "タイムライン上でユーザー名に含まれる絵文字を隠します。プロフィールでは絵文字は引き続き表示されます。",
"label": "環境設定",
"title": "実験的機能",
"use_star_favorite_icon": "星のお気に入りアイコンを使用する",
"user_picker": "ユーザーピッカー",
"virtual_scroll": "仮想スクロール",
"wellbeing": "ウェルビーイング",

View File

@ -4,6 +4,7 @@ definePageMeta({
})
const { t } = useI18n()
const useStarFavoriteIcon = usePreferences('useStarFavoriteIcon')
useHydratedHead({
title: () => t('nav.favourites'),
@ -14,7 +15,7 @@ useHydratedHead({
<MainContent>
<template #title>
<NuxtLink to="/favourites" timeline-title-style flex items-center gap-2 @click="$scrollToTop">
<div i-ri:heart-3-line />
<div :class="useStarFavoriteIcon ? 'i-ri:star-line' : 'i-ri:heart-3-line'" />
<span>{{ t('nav.favourites') }}</span>
</NuxtLink>
</template>

View File

@ -49,6 +49,12 @@ const userSettings = useUserSettings()
>
{{ $t('settings.preferences.enable_pinch_to_zoom') }}
</SettingsToggleItem>
<SettingsToggleItem
:checked="getPreferences(userSettings, 'useStarFavoriteIcon')"
@click="togglePreferences('useStarFavoriteIcon')"
>
{{ $t('settings.preferences.use_star_favorite_icon') }}
</SettingsToggleItem>
<h2 px6 py4 mt2 font-bold text-xl flex="~ gap-1" items-center>
<div i-ri-hearts-line />
{{ $t('settings.preferences.wellbeing') }}