Files
CT/src/ViewModel/settingsViewModel.ts
T

44 lines
1.2 KiB
TypeScript
Raw Normal View History

import * as React from "bloatless-react";
import SettingsModel from "../Model/settingsModel";
export default class SettingsViewModel {
settingsModel: SettingsModel;
// state
2024-07-20 21:04:41 +02:00
username: React.State<string> = new React.State("");
usernameInput: React.State<string> = new React.State("");
firstDayOfWeekInput: React.State<number> = new React.State(0);
// guards
2024-07-20 02:18:15 +02:00
cannotSetName: React.State<boolean> = React.createProxyState(
2024-07-20 21:04:41 +02:00
[this.usernameInput],
() =>
2024-07-20 21:04:41 +02:00
this.usernameInput.value == "" ||
this.usernameInput.value == this.settingsModel.username
);
// set
setName = (): void => {
2024-07-20 21:04:41 +02:00
this.settingsModel.setName(this.usernameInput.value);
this.username.value = this.settingsModel.username;
this.usernameInput.callSubscriptions();
};
setFirstDayofWeek = (): void => {
this.settingsModel.setFirstDayOfWeek(this.firstDayOfWeekInput.value);
};
// init
2024-07-20 20:42:43 +02:00
constructor(settingsModel: SettingsModel) {
this.settingsModel = settingsModel;
2024-07-20 21:04:41 +02:00
this.username.value = settingsModel.username;
this.usernameInput.value = settingsModel.username;
this.firstDayOfWeekInput.value = settingsModel.firstDayOfWeek;
// subscriptions
this.firstDayOfWeekInput.subscribe(this.setFirstDayofWeek);
}
}