2024-07-20 02:00:00 +02:00
|
|
|
import * as React from "bloatless-react";
|
|
|
|
|
|
2024-07-22 02:05:27 +02:00
|
|
|
import SettingsModel from "../Model/Global/settingsModel";
|
2024-07-20 02:00:00 +02:00
|
|
|
|
|
|
|
|
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("");
|
2024-07-22 01:13:20 +02:00
|
|
|
firstDayOfWeekInput: React.State<string> = new React.State("0");
|
2024-07-20 02:00:00 +02:00
|
|
|
|
2024-07-20 04:15:14 +02:00
|
|
|
// 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 02:00:00 +02:00
|
|
|
() =>
|
2024-07-20 21:04:41 +02:00
|
|
|
this.usernameInput.value == "" ||
|
|
|
|
|
this.usernameInput.value == this.settingsModel.username
|
2024-07-20 02:00:00 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// 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();
|
2024-07-20 02:00:00 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
setFirstDayofWeek = (): void => {
|
|
|
|
|
this.settingsModel.setFirstDayOfWeek(this.firstDayOfWeekInput.value);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// init
|
2024-07-20 20:42:43 +02:00
|
|
|
constructor(settingsModel: SettingsModel) {
|
2024-07-20 02:00:00 +02:00
|
|
|
this.settingsModel = settingsModel;
|
|
|
|
|
|
2024-07-20 21:04:41 +02:00
|
|
|
this.username.value = settingsModel.username;
|
|
|
|
|
this.usernameInput.value = settingsModel.username;
|
2024-07-20 02:00:00 +02:00
|
|
|
this.firstDayOfWeekInput.value = settingsModel.firstDayOfWeek;
|
|
|
|
|
|
|
|
|
|
// subscriptions
|
|
|
|
|
this.firstDayOfWeekInput.subscribe(this.setFirstDayofWeek);
|
|
|
|
|
}
|
|
|
|
|
}
|