test
This commit is contained in:
parent
fed783773c
commit
fde05bfbf5
|
@ -139,11 +139,11 @@ export class PreferencesManager {
|
||||||
// TODO: 定期的にクラウドの値をフェッチ
|
// TODO: 定期的にクラウドの値をフェッチ
|
||||||
}
|
}
|
||||||
|
|
||||||
private isAccountDependentKey<K extends keyof PREF>(key: K): boolean {
|
private static isAccountDependentKey<K extends keyof PREF>(key: K): boolean {
|
||||||
return (PREF_DEF as PreferencesDefinition)[key].accountDependent === true;
|
return (PREF_DEF as PreferencesDefinition)[key].accountDependent === true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private isServerDependentKey<K extends keyof PREF>(key: K): boolean {
|
private static isServerDependentKey<K extends keyof PREF>(key: K): boolean {
|
||||||
return (PREF_DEF as PreferencesDefinition)[key].serverDependent === true;
|
return (PREF_DEF as PreferencesDefinition)[key].serverDependent === true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ export class PreferencesManager {
|
||||||
|
|
||||||
const record = this.getMatchedRecordOf(key);
|
const record = this.getMatchedRecordOf(key);
|
||||||
|
|
||||||
if (parseScope(record[0]).account == null && this.isAccountDependentKey(key)) {
|
if (parseScope(record[0]).account == null && PreferencesManager.isAccountDependentKey(key)) {
|
||||||
this.profile.preferences[key].push([makeScope({
|
this.profile.preferences[key].push([makeScope({
|
||||||
server: host,
|
server: host,
|
||||||
account: $i!.id,
|
account: $i!.id,
|
||||||
|
@ -175,7 +175,7 @@ export class PreferencesManager {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parseScope(record[0]).server == null && this.isServerDependentKey(key)) {
|
if (parseScope(record[0]).server == null && PreferencesManager.isServerDependentKey(key)) {
|
||||||
this.profile.preferences[key].push([makeScope({
|
this.profile.preferences[key].push([makeScope({
|
||||||
server: host,
|
server: host,
|
||||||
}), v, {}]);
|
}), v, {}]);
|
||||||
|
@ -276,7 +276,19 @@ export class PreferencesManager {
|
||||||
public static newProfile(): PreferencesProfile {
|
public static newProfile(): PreferencesProfile {
|
||||||
const data = {} as PreferencesProfile['preferences'];
|
const data = {} as PreferencesProfile['preferences'];
|
||||||
for (const key in PREF_DEF) {
|
for (const key in PREF_DEF) {
|
||||||
data[key] = [[makeScope({}), getInitialPrefValue(key as keyof typeof PREF_DEF), {}]];
|
const v = getInitialPrefValue(key as keyof typeof PREF_DEF);
|
||||||
|
if (PreferencesManager.isAccountDependentKey(key as keyof typeof PREF_DEF)) {
|
||||||
|
data[key] = $i ? [[makeScope({
|
||||||
|
server: host,
|
||||||
|
account: $i.id,
|
||||||
|
}), v, {}]] : [[makeScope({}), v, {}]];
|
||||||
|
} else if (PreferencesManager.isServerDependentKey(key as keyof typeof PREF_DEF)) {
|
||||||
|
data[key] = [[makeScope({
|
||||||
|
server: host,
|
||||||
|
}), v, {}]];
|
||||||
|
} else {
|
||||||
|
data[key] = [[makeScope({}), v, {}]];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
id: uuid(),
|
id: uuid(),
|
||||||
|
@ -293,18 +305,36 @@ export class PreferencesManager {
|
||||||
for (const key in PREF_DEF) {
|
for (const key in PREF_DEF) {
|
||||||
const records = profileLike.preferences[key];
|
const records = profileLike.preferences[key];
|
||||||
if (records == null || records.length === 0) {
|
if (records == null || records.length === 0) {
|
||||||
data[key] = [[makeScope({}), getInitialPrefValue(key as keyof typeof PREF_DEF), {}]];
|
const v = getInitialPrefValue(key as keyof typeof PREF_DEF);
|
||||||
|
if (PreferencesManager.isAccountDependentKey(key as keyof typeof PREF_DEF)) {
|
||||||
|
data[key] = $i ? [[makeScope({
|
||||||
|
server: host,
|
||||||
|
account: $i.id,
|
||||||
|
}), v, {}]] : [[makeScope({}), v, {}]];
|
||||||
|
} else if (PreferencesManager.isServerDependentKey(key as keyof typeof PREF_DEF)) {
|
||||||
|
data[key] = [[makeScope({
|
||||||
|
server: host,
|
||||||
|
}), v, {}]];
|
||||||
|
} else {
|
||||||
|
data[key] = [[makeScope({}), v, {}]];
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
data[key] = records;
|
if ($i && PreferencesManager.isAccountDependentKey(key as keyof typeof PREF_DEF) && !records.some(([scope]) => parseScope(scope).server === host && parseScope(scope).account === $i!.id)) {
|
||||||
|
data[key] = records.concat([[makeScope({
|
||||||
// alpha段階ではmetaが無かったのでマイグレート
|
server: host,
|
||||||
// TODO: そのうち消す
|
account: $i.id,
|
||||||
for (const record of data[key] as any[][]) {
|
}), getInitialPrefValue(key as keyof typeof PREF_DEF), {}]]);
|
||||||
if (record.length === 2) {
|
continue;
|
||||||
record.push({});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if ($i && PreferencesManager.isServerDependentKey(key as keyof typeof PREF_DEF) && !records.some(([scope]) => parseScope(scope).server === host)) {
|
||||||
|
data[key] = records.concat([[makeScope({
|
||||||
|
server: host,
|
||||||
|
}), getInitialPrefValue(key as keyof typeof PREF_DEF), {}]]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
data[key] = records;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -342,7 +372,7 @@ export class PreferencesManager {
|
||||||
|
|
||||||
public setAccountOverride<K extends keyof PREF>(key: K) {
|
public setAccountOverride<K extends keyof PREF>(key: K) {
|
||||||
if ($i == null) return;
|
if ($i == null) return;
|
||||||
if (this.isAccountDependentKey(key)) throw new Error('already account-dependent');
|
if (PreferencesManager.isAccountDependentKey(key)) throw new Error('already account-dependent');
|
||||||
if (this.isAccountOverrided(key)) return;
|
if (this.isAccountOverrided(key)) return;
|
||||||
|
|
||||||
const records = this.profile.preferences[key];
|
const records = this.profile.preferences[key];
|
||||||
|
@ -356,7 +386,7 @@ export class PreferencesManager {
|
||||||
|
|
||||||
public clearAccountOverride<K extends keyof PREF>(key: K) {
|
public clearAccountOverride<K extends keyof PREF>(key: K) {
|
||||||
if ($i == null) return;
|
if ($i == null) return;
|
||||||
if (this.isAccountDependentKey(key)) throw new Error('cannot clear override for this account-dependent property');
|
if (PreferencesManager.isAccountDependentKey(key)) throw new Error('cannot clear override for this account-dependent property');
|
||||||
|
|
||||||
const records = this.profile.preferences[key];
|
const records = this.profile.preferences[key];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue