mirror of
https://github.com/kmvan/x-prober.git
synced 2026-04-22 01:08:59 +08:00
rewrite project
This commit is contained in:
49
src/Components/TemperatureSensor/components/store.ts
Normal file
49
src/Components/TemperatureSensor/components/store.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import { configure, makeAutoObservable } from 'mobx';
|
||||
import { CardStore } from '@/Components/Card/components/store.ts';
|
||||
import { serverFetch } from '@/Components/Fetch/server-fetch.ts';
|
||||
import { OK } from '@/Components/Rest/http-status.ts';
|
||||
import { TemperatureSensorConstants } from './constants.ts';
|
||||
import type { TemperatureSensorItemProps } from './typings.ts';
|
||||
|
||||
configure({
|
||||
enforceActions: 'observed',
|
||||
});
|
||||
const { id } = TemperatureSensorConstants;
|
||||
class Main {
|
||||
items: TemperatureSensorItemProps[] = [];
|
||||
constructor() {
|
||||
makeAutoObservable(this);
|
||||
}
|
||||
setItems = (items: TemperatureSensorItemProps[]) => {
|
||||
this.items = items;
|
||||
};
|
||||
private setEnabledCard = (): void => {
|
||||
const { setCard, cards } = CardStore;
|
||||
const item = cards.find((n) => n.id === id);
|
||||
if (!item) {
|
||||
return;
|
||||
}
|
||||
if (item.enabled) {
|
||||
return;
|
||||
}
|
||||
setCard({
|
||||
id,
|
||||
enabled: true,
|
||||
});
|
||||
};
|
||||
fetch = async () => {
|
||||
const { data: items, status } =
|
||||
await serverFetch<TemperatureSensorItemProps[]>('temperature-sensor');
|
||||
if (items?.length && status === OK) {
|
||||
this.setItems(items);
|
||||
this.setEnabledCard();
|
||||
setTimeout(() => {
|
||||
this.fetch();
|
||||
}, 1000);
|
||||
}
|
||||
};
|
||||
get itemsCount() {
|
||||
return this.items.length;
|
||||
}
|
||||
}
|
||||
export const TemperatureSensorStore = new Main();
|
||||
Reference in New Issue
Block a user