mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-07-27 17:24:37 +02:00
wip
This commit is contained in:
@@ -1,6 +1,45 @@
|
||||
# Preferences system
|
||||
|
||||
## ユースケース
|
||||
ユーザーの環境設定を管理するシステム。
|
||||
|
||||
## 指針
|
||||
|
||||
実装上のミスで、**設定値が意図せず失われる(古い値で上書きされる)ことが絶対にあってはならない。**
|
||||
|
||||
設定値が失われる、考えられるシナリオの例:
|
||||
|
||||
- 複数のタブでMisskeyを開いていて、タブAで設定を編集した後、タブBを開いたところ、タブBの古い状態の内容で設定が保存され、タブAで行った編集が巻き戻ってしまった。
|
||||
- プロファイルの同期機能をオンにしたところ、サーバーに保存されていた古い設定でローカルが上書きされてしまった。
|
||||
|
||||
上記のシナリオが絶対に発生しない設計・実装にしなければならない。
|
||||
|
||||
上記以外にも考えられるシナリオがあれば、必ず適切な対処を行う設計・実装にしなければならない。
|
||||
|
||||
## 仕様
|
||||
|
||||
### タブ間同期
|
||||
|
||||
ブラウザで複数タブを開いているとき、あるタブで変更した設定が他のタブでも反映されるようにし、UXを向上させ、古い設定情報が上書き保存されることを防ぐ。
|
||||
|
||||
### 自動バックアップ(cloudBackup)
|
||||
|
||||
定期的、または特定のタイミングなどで、プロファイルをサーバーに自動的にアップロードする。
|
||||
|
||||
### 自動同期(cloudSync)
|
||||
|
||||
定期的、または特定のタイミングなどで、サーバーにアップロードされたプロファイルをダウンロードし、ローカルに適用する。
|
||||
|
||||
### 設定項目: デバイス間で同期(syncBetweenDevices, ValueMeta.sync)
|
||||
|
||||
デバイス間・プロファイル横断でその設定項目の設定値を同期する。
|
||||
|
||||
当オプションを有効にするかどうかは設定項目ごとに設定可能。
|
||||
|
||||
## ユーザーストーリー(ユースケース)
|
||||
|
||||
### 同じプロファイルを複数のデバイスで使いたい(同期したい)
|
||||
|
||||
自動バックアップと自動同期をオンにする。
|
||||
|
||||
### (新しいデバイスなどで)既存のプロファイルを継承した新しいプロファイルを作りたい
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ export type PreferencesProfile = {
|
||||
id: string;
|
||||
version: string;
|
||||
type: 'main';
|
||||
modifiedAt: number; // 仕様が若干直感的ではない(syncされた値が降ってきたときは更新されないなど)ため、一応残してはいるが積極的な利用はしない方が無難
|
||||
modifiedAt: number; // 仕様が若干直感的ではない(syncされた値が降ってきたときは更新されないなど)ため、一応残してはいるが積極的な利用はしない方が無難。設定値の新旧比較が必要なら項目ごとのmodifiedAtを使うべし
|
||||
name: string;
|
||||
preferences: {
|
||||
[K in keyof PREF]: PrefRecord<K>[];
|
||||
|
||||
Reference in New Issue
Block a user