64 lines
1.1 KiB
TypeScript
64 lines
1.1 KiB
TypeScript
import {makeAutoObservable} from 'mobx'
|
|
import {ProfileViewModel} from './profile-view'
|
|
|
|
export class LinkActionsModel {
|
|
name = 'link-actions'
|
|
|
|
constructor(public href: string, public title: string) {
|
|
makeAutoObservable(this)
|
|
}
|
|
}
|
|
|
|
export class SharePostModel {
|
|
name = 'share-post'
|
|
|
|
constructor(public href: string) {
|
|
makeAutoObservable(this)
|
|
}
|
|
}
|
|
|
|
export class ComposePostModel {
|
|
name = 'compose-post'
|
|
|
|
constructor(public replyTo?: string) {
|
|
makeAutoObservable(this)
|
|
}
|
|
}
|
|
|
|
export class EditProfileModel {
|
|
name = 'edit-profile'
|
|
|
|
constructor(public profileView: ProfileViewModel) {
|
|
makeAutoObservable(this)
|
|
}
|
|
}
|
|
|
|
export class ShellModel {
|
|
isModalActive = false
|
|
activeModal:
|
|
| LinkActionsModel
|
|
| SharePostModel
|
|
| ComposePostModel
|
|
| EditProfileModel
|
|
| undefined
|
|
|
|
constructor() {
|
|
makeAutoObservable(this)
|
|
}
|
|
|
|
openModal(
|
|
modal:
|
|
| LinkActionsModel
|
|
| SharePostModel
|
|
| ComposePostModel
|
|
| EditProfileModel,
|
|
) {
|
|
this.isModalActive = true
|
|
this.activeModal = modal
|
|
}
|
|
|
|
closeModal() {
|
|
this.isModalActive = false
|
|
this.activeModal = undefined
|
|
}
|
|
}
|