From 9e9f2bde09add215a8ad5fea0b1bed9f841a97ac Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Fri, 2 Dec 2022 16:52:00 +0800 Subject: [PATCH] refactor: group composables --- composables/client.ts | 7 ---- composables/command.ts | 1 - composables/{time.ts => i18n.ts} | 44 ++++++++++++++++++++++ composables/masto.ts | 8 +++- composables/numbers.ts | 44 ---------------------- composables/os.ts | 3 -- composables/utils.ts | 3 ++ composables/{useHead.ts => workarounds.ts} | 0 8 files changed, 54 insertions(+), 56 deletions(-) delete mode 100644 composables/client.ts rename composables/{time.ts => i18n.ts} (57%) delete mode 100644 composables/numbers.ts delete mode 100644 composables/os.ts rename composables/{useHead.ts => workarounds.ts} (100%) diff --git a/composables/client.ts b/composables/client.ts deleted file mode 100644 index 2dbac907..00000000 --- a/composables/client.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { MastoClient } from 'masto' - -export const useMasto = () => useNuxtApp().$masto.api as MastoClient - -export const setMasto = (masto: MastoClient) => { - useNuxtApp().$masto?.replace(masto) -} diff --git a/composables/command.ts b/composables/command.ts index e8025f87..b4397eac 100644 --- a/composables/command.ts +++ b/composables/command.ts @@ -12,7 +12,6 @@ const scopes = [ 'Navigation', 'Preferences', 'Account', - 'Languages', 'Switch account', ] as const diff --git a/composables/time.ts b/composables/i18n.ts similarity index 57% rename from composables/time.ts rename to composables/i18n.ts index 89bcc891..2e636acc 100644 --- a/composables/time.ts +++ b/composables/i18n.ts @@ -1,5 +1,49 @@ +import type { MaybeRef } from '@vueuse/shared' import type { MaybeComputedRef, UseTimeAgoOptions } from '@vueuse/core' +const formatter = Intl.NumberFormat() + +export const humanReadableNumber = ( + num: number, + { k, m }: { k: string; m: string } = { k: 'K', m: 'M' }, + useFormatter: Intl.NumberFormat = formatter, +) => { + if (num < 10000) + return useFormatter.format(num) + + if (num < 1000000) + return `${Math.floor(num / 1000)}${k}` + + return `${Math.floor(num / 1000000)}${m}` +} + +export const formattedNumber = (num: number, useFormatter: Intl.NumberFormat = formatter) => { + return useFormatter.format(num) +} + +export const useHumanReadableNumber = () => { + const i18n = useI18n() + const numberFormatter = $computed(() => Intl.NumberFormat(i18n.locale.value)) + return { + formatHumanReadableNumber: (num: MaybeRef) => { + return humanReadableNumber( + unref(num), + { k: i18n.t('common.kiloSuffix'), m: i18n.t('common.megaSuffix') }, + numberFormatter, + ) + }, + formatNumber: (num: MaybeRef) => { + return formattedNumber( + unref(num), + numberFormatter, + ) + }, + forSR: (num: MaybeRef) => { + return unref(num) > 10000 + }, + } +} + export const useFormattedDateTime = ( value: MaybeComputedRef, options: Intl.DateTimeFormatOptions = { dateStyle: 'long', timeStyle: 'medium' }, diff --git a/composables/masto.ts b/composables/masto.ts index 251d9823..a4a1fb77 100644 --- a/composables/masto.ts +++ b/composables/masto.ts @@ -1,7 +1,13 @@ import type { Ref } from 'vue' -import type { Account, Relationship, Status } from 'masto' +import type { Account, MastoClient, Relationship, Status } from 'masto' import { withoutProtocol } from 'ufo' +export const useMasto = () => useNuxtApp().$masto.api as MastoClient + +export const setMasto = (masto: MastoClient) => { + useNuxtApp().$masto?.replace(masto) +} + // @unocss-include export const STATUS_VISIBILITIES = [ { diff --git a/composables/numbers.ts b/composables/numbers.ts deleted file mode 100644 index a5340f54..00000000 --- a/composables/numbers.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { MaybeRef } from '@vueuse/shared' - -const formatter = Intl.NumberFormat() - -export const humanReadableNumber = ( - num: number, - { k, m }: { k: string; m: string } = { k: 'K', m: 'M' }, - useFormatter: Intl.NumberFormat = formatter, -) => { - if (num < 10000) - return useFormatter.format(num) - - if (num < 1000000) - return `${Math.floor(num / 1000)}${k}` - - return `${Math.floor(num / 1000000)}${m}` -} - -export const formattedNumber = (num: number, useFormatter: Intl.NumberFormat = formatter) => { - return useFormatter.format(num) -} - -export const useHumanReadableNumber = () => { - const i18n = useI18n() - const numberFormatter = $computed(() => Intl.NumberFormat(i18n.locale.value)) - return { - formatHumanReadableNumber: (num: MaybeRef) => { - return humanReadableNumber( - unref(num), - { k: i18n.t('common.kiloSuffix'), m: i18n.t('common.megaSuffix') }, - numberFormatter, - ) - }, - formatNumber: (num: MaybeRef) => { - return formattedNumber( - unref(num), - numberFormatter, - ) - }, - forSR: (num: MaybeRef) => { - return unref(num) > 10000 - }, - } -} diff --git a/composables/os.ts b/composables/os.ts deleted file mode 100644 index 69d8f6bd..00000000 --- a/composables/os.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const useIsMac = () => computed(() => - useRequestHeaders(['user-agent'])['user-agent']?.includes('Macintosh') - ?? navigator?.platform?.includes('Mac') ?? false) diff --git a/composables/utils.ts b/composables/utils.ts index 06649c1f..e422a4d2 100644 --- a/composables/utils.ts +++ b/composables/utils.ts @@ -26,3 +26,6 @@ export function emojisArrayToObject(emojis: Emoji[]) { export function noop() {} +export const useIsMac = () => computed(() => + useRequestHeaders(['user-agent'])['user-agent']?.includes('Macintosh') + ?? navigator?.platform?.includes('Mac') ?? false) diff --git a/composables/useHead.ts b/composables/workarounds.ts similarity index 100% rename from composables/useHead.ts rename to composables/workarounds.ts