Add scene creator
This commit is contained in:
parent
93b64cf474
commit
e7536289cb
18 changed files with 281 additions and 23 deletions
91
src/state/models/shell-ui.ts
Normal file
91
src/state/models/shell-ui.ts
Normal file
|
@ -0,0 +1,91 @@
|
|||
import {makeAutoObservable} from 'mobx'
|
||||
import {ProfileViewModel} from './profile-view'
|
||||
import * as Post from '../../third-party/api/src/client/types/app/bsky/feed/post'
|
||||
|
||||
export interface LinkActionsModelOpts {
|
||||
newTab?: boolean
|
||||
}
|
||||
export class LinkActionsModel {
|
||||
name = 'link-actions'
|
||||
newTab: boolean
|
||||
|
||||
constructor(
|
||||
public href: string,
|
||||
public title: string,
|
||||
opts?: LinkActionsModelOpts,
|
||||
) {
|
||||
makeAutoObservable(this)
|
||||
this.newTab = typeof opts?.newTab === 'boolean' ? opts.newTab : true
|
||||
}
|
||||
}
|
||||
|
||||
export class SharePostModel {
|
||||
name = 'share-post'
|
||||
|
||||
constructor(public href: string) {
|
||||
makeAutoObservable(this)
|
||||
}
|
||||
}
|
||||
|
||||
export class EditProfileModel {
|
||||
name = 'edit-profile'
|
||||
|
||||
constructor(public profileView: ProfileViewModel) {
|
||||
makeAutoObservable(this)
|
||||
}
|
||||
}
|
||||
|
||||
export class CreateSceneModel {
|
||||
name = 'create-scene'
|
||||
|
||||
constructor() {
|
||||
makeAutoObservable(this)
|
||||
}
|
||||
}
|
||||
|
||||
export interface ComposerOpts {
|
||||
replyTo?: Post.PostRef
|
||||
onPost?: () => void
|
||||
}
|
||||
|
||||
export class ShellUiModel {
|
||||
isModalActive = false
|
||||
activeModal:
|
||||
| LinkActionsModel
|
||||
| SharePostModel
|
||||
| EditProfileModel
|
||||
| CreateSceneModel
|
||||
| undefined
|
||||
isComposerActive = false
|
||||
composerOpts: ComposerOpts | undefined
|
||||
|
||||
constructor() {
|
||||
makeAutoObservable(this)
|
||||
}
|
||||
|
||||
openModal(
|
||||
modal:
|
||||
| LinkActionsModel
|
||||
| SharePostModel
|
||||
| EditProfileModel
|
||||
| CreateSceneModel,
|
||||
) {
|
||||
this.isModalActive = true
|
||||
this.activeModal = modal
|
||||
}
|
||||
|
||||
closeModal() {
|
||||
this.isModalActive = false
|
||||
this.activeModal = undefined
|
||||
}
|
||||
|
||||
openComposer(opts: ComposerOpts) {
|
||||
this.isComposerActive = true
|
||||
this.composerOpts = opts
|
||||
}
|
||||
|
||||
closeComposer() {
|
||||
this.isComposerActive = false
|
||||
this.composerOpts = undefined
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue