chore: Move to Typescript (#2783)
This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously. closes #1282
This commit is contained in:
85
app/stores/DialogsStore.ts
Normal file
85
app/stores/DialogsStore.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import { observable, action } from "mobx";
|
||||
import * as React from "react";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
|
||||
export default class DialogsStore {
|
||||
@observable
|
||||
guide: {
|
||||
title: string;
|
||||
content: React.ReactNode;
|
||||
isOpen: boolean;
|
||||
};
|
||||
|
||||
@observable
|
||||
modalStack = new Map<
|
||||
string,
|
||||
{
|
||||
title: string;
|
||||
content: React.ReactNode;
|
||||
isOpen: boolean;
|
||||
}
|
||||
>();
|
||||
|
||||
openGuide = ({
|
||||
title,
|
||||
content,
|
||||
}: {
|
||||
title: string;
|
||||
content: React.ReactNode;
|
||||
}) => {
|
||||
setTimeout(
|
||||
action(() => {
|
||||
this.guide = {
|
||||
title,
|
||||
content,
|
||||
isOpen: true,
|
||||
};
|
||||
}),
|
||||
0
|
||||
);
|
||||
};
|
||||
|
||||
@action
|
||||
closeGuide = () => {
|
||||
if (this.guide) {
|
||||
this.guide.isOpen = false;
|
||||
}
|
||||
};
|
||||
|
||||
openModal = ({
|
||||
title,
|
||||
content,
|
||||
replace,
|
||||
}: {
|
||||
title: string;
|
||||
content: React.ReactNode;
|
||||
replace?: boolean;
|
||||
}) => {
|
||||
setTimeout(
|
||||
action(() => {
|
||||
const id = uuidv4();
|
||||
|
||||
if (replace) {
|
||||
this.modalStack.clear();
|
||||
}
|
||||
|
||||
this.modalStack.set(id, {
|
||||
title,
|
||||
content,
|
||||
isOpen: true,
|
||||
});
|
||||
}),
|
||||
0
|
||||
);
|
||||
};
|
||||
|
||||
@action
|
||||
closeModal = (id: string) => {
|
||||
this.modalStack.delete(id);
|
||||
};
|
||||
|
||||
@action
|
||||
closeAllModals = () => {
|
||||
this.modalStack.clear();
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user