Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enhance(frontend): 季節に応じた画面の演出を南半球に対応させる #12838

Merged
merged 8 commits into from
Jan 21, 2024
Merged
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
- Enhance: 絵文字ピッカー・オートコンプリートで、完全一致した絵文字を優先的に表示するように
- Enhance: Playの説明欄にMFMを使えるように
- Enhance: チャンネルノートの場合は詳細ページからその前後のノートを見れるように
- Enhance: 季節に応じた画面の演出を南半球でも利用できるように
- Enhance: タイムラインフィルターの設定をすべて保持できるように
- 今までの「TLに他の人への返信を含める」設定は一旦リセットされます
- Enhance: タイムラインフィルターに「センシティブなファイルを含むノートを表示」を追加
Expand Down
6 changes: 6 additions & 0 deletions locales/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4824,6 +4824,7 @@ export interface Locale extends ILocale {
* タイトルへ
*/
"backToTitle": string;
"hemisphere": string;
/**
* センシティブなファイルを含むノートを表示
*/
Expand Down Expand Up @@ -9420,6 +9421,11 @@ export interface Locale extends ILocale {
"description": string;
};
};
"_hemisphere": {
"N": string;
"S": string;
"caption": string;
};
"_reversi": {
/**
* リバーシ
Expand Down
7 changes: 7 additions & 0 deletions locales/ja-JP.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1202,6 +1202,7 @@ replaying: "リプレイ中"
ranking: "ランキング"
lastNDays: "直近{n}日"
backToTitle: "タイトルへ"
hemisphere: "お住まいの地域"
withSensitive: "センシティブなファイルを含むノートを表示"
userSaysSomethingSensitive: "{name}のセンシティブなファイルを含む投稿"
enableHorizontalSwipe: "スワイプしてタブを切り替える"
Expand Down Expand Up @@ -2510,6 +2511,11 @@ _dataSaver:
title: "コードハイライト"
description: "MFMなどでコードハイライト記法が使われている場合、タップするまで読み込まれなくなります。コードハイライトではハイライトする言語ごとにその定義ファイルを読み込む必要がありますが、それらが自動で読み込まれなくなるため、通信量の削減が見込めます。"

_hemisphere:
N: "北半球"
S: "南半球"
caption: "一部のクライアント設定で、季節を判定するために使用します。"

_reversi:
reversi: "リバーシ"
gameSettings: "対局の設定"
Expand Down Expand Up @@ -2551,3 +2557,4 @@ _reversi:
_offlineScreen:
title: "オフライン - サーバーに接続できません"
header: "サーバーに接続できません"

15 changes: 12 additions & 3 deletions packages/frontend/src/boot/main-boot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,18 @@ export async function mainBoot() {

if (defaultStore.state.enableSeasonalScreenEffect) {
const month = new Date().getMonth() + 1;
if (month === 12 || month === 1) {
const SnowfallEffect = (await import('@/scripts/snowfall-effect.js')).SnowfallEffect;
new SnowfallEffect().render();
if (defaultStore.state.hemisphere === 'S') {
// ▼南半球
if (month === 7 || month === 8) {
const SnowfallEffect = (await import('@/scripts/snowfall-effect.js')).SnowfallEffect;
new SnowfallEffect().render();
}
} else {
// ▼北半球
if (month === 12 || month === 1) {
const SnowfallEffect = (await import('@/scripts/snowfall-effect.js')).SnowfallEffect;
new SnowfallEffect().render();
}
}
}

Expand Down
9 changes: 9 additions & 0 deletions packages/frontend/src/pages/settings/general.vue
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</MkSelect>

<MkRadios v-model="hemisphere">
<template #label>{{ i18n.ts.hemisphere }}</template>
<option value="N">{{ i18n.ts._hemisphere.N }}</option>
<option value="S">{{ i18n.ts._hemisphere.S }}</option>
<template #caption>{{ i18n.ts._hemisphere.caption }}</template>
</MkRadios>

<MkRadios v-model="overridedDeviceKind">
<template #label>{{ i18n.ts.overridedDeviceKind }}</template>
<option :value="null">{{ i18n.ts.auto }}</option>
Expand Down Expand Up @@ -260,6 +267,7 @@ async function reloadAsk() {
unisonReload();
}

const hemisphere = computed(defaultStore.makeGetterSetter('hemisphere'));
const overridedDeviceKind = computed(defaultStore.makeGetterSetter('overridedDeviceKind'));
const serverDisconnectedBehavior = computed(defaultStore.makeGetterSetter('serverDisconnectedBehavior'));
const showNoteActionsOnlyHover = computed(defaultStore.makeGetterSetter('showNoteActionsOnlyHover'));
Expand Down Expand Up @@ -322,6 +330,7 @@ watch(useSystemFont, () => {
});

watch([
hemisphere,
lang,
fontSize,
useSystemFont,
Expand Down
4 changes: 4 additions & 0 deletions packages/frontend/src/scripts/intl-const.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ try {
}
export const dateTimeFormat = _dateTimeFormat;

export const timeZone = dateTimeFormat.resolvedOptions().timeZone;

export const hemisphere = /^(australia|pacific|antarctica|indian)\//i.test(timeZone) ? 'S' : 'N';

let _numberFormat: Intl.NumberFormat;
try {
_numberFormat = new Intl.NumberFormat(versatileLang);
Expand Down
5 changes: 5 additions & 0 deletions packages/frontend/src/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import * as Misskey from 'misskey-js';
import { miLocalStorage } from './local-storage.js';
import type { SoundType } from '@/scripts/sound.js';
import { Storage } from '@/pizzax.js';
import { hemisphere } from '@/scripts/intl-const.js';

interface PostFormAction {
title: string,
Expand Down Expand Up @@ -429,6 +430,10 @@ export const defaultStore = markRaw(new Storage('base', {
sfxVolume: 1,
},
},
hemisphere: {
where: 'device',
default: hemisphere as 'N' | 'S',
},
enableHorizontalSwipe: {
where: 'device',
default: true,
Expand Down
Loading