Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit81fb928

Browse files
committed
invoke newOrContinue
1 parenteda3451 commit81fb928

File tree

7 files changed

+49
-16
lines changed

7 files changed

+49
-16
lines changed

‎typings/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ export interface MachineContext {
123123
exportinterfaceMachineEvent{
124124
type:string
125125
payload?:any
126+
data?:any
126127
}
127128

128129
exportinterfaceMachineStateSchema{
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1-
exportdefault{
1+
import*asCRfrom'typings'
22

3+
exportdefault{
4+
userTutorialComplete(context:CR.MachineContext){
5+
console.log('should update user tutorial as complete')
6+
}
37
}

‎web-app/src/services/state/actions/context.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import{assign,send}from'xstate'
22
import*asGfrom'typings/graphql'
33
import*asCRfrom'typings'
4-
import*asstoragefrom'./storage'
4+
import*asstoragefrom'../storage'
55

66
exportdefault{
77
setTutorial:assign({
@@ -11,6 +11,11 @@ export default {
1111
returntutorial
1212
},
1313
}),
14+
continueTutorial:assign({
15+
tutorial:(context:CR.MachineContext,event:CR.MachineEvent)=>event.data.payload.tutorial,
16+
progress:(context:CR.MachineContext,event:CR.MachineEvent)=>event.data.payload.progress,
17+
position:(context:CR.MachineContext,event:CR.MachineEvent)=>event.data.payload.position,
18+
}),
1419
//@ts-ignore
1520
initPosition:assign({
1621
position:(context:CR.MachineContext,event:CR.MachineEvent):CR.Position=>{

‎web-app/src/services/state/actions/editor.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
1-
import{send}from'xstate'
21
import*asCRfrom'typings'
32
importchannelfrom'../../channel'
43

54
exportdefault{
6-
newOrContinue:send((context:CR.MachineContext):'NEW'|'CONTINUE'=>{
7-
console.log('new or continue')
8-
// TODO: verify that the user has an existing tutorial to continue
9-
consthasExistingTutorial:boolean=false
10-
returnhasExistingTutorial ?'CONTINUE' :'NEW'
11-
}),
125
tutorialStart(){
136
console.log('EDITOR: TUTORIAL_START')
147
channel.editorSend({
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import*asstoragefrom'../storage'
2+
import*asCRfrom'typings'
3+
4+
exportconstnewOrContinue=async(context:CR.MachineContext)=>{
5+
const[tutorial,position,progress]=awaitPromise.all([
6+
storage.tutorial.get(),
7+
storage.position.get(),
8+
storage.progress.get()
9+
])
10+
11+
consthasExistingTutorial=(tutorial&&tutorial.id&&progress&&!progress.complete)
12+
if(hasExistingTutorial){
13+
// TODO: calculate position based on progress
14+
return{
15+
type:'CONTINUE',
16+
payload:{
17+
tutorial,
18+
position,
19+
progress
20+
}
21+
}
22+
}
23+
// New tutorial
24+
returnPromise.reject()
25+
}

‎web-app/src/services/state/machine.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import{Machine}from'xstate'
22
import*asCRfrom'typings'
3+
import*asinvokefrom'./actions/invoke'
34

45
exportconstmachine=Machine<CR.MachineContext,CR.MachineStateSchema,CR.MachineEvent>(
56
{
@@ -20,10 +21,14 @@ export const machine = Machine<CR.MachineContext, CR.MachineStateSchema, CR.Mach
2021
initial:'Startup',
2122
states:{
2223
Startup:{
23-
onEntry:['newOrContinue'],
24-
on:{
25-
CONTINUE:'ContinueTutorial',
26-
NEW:'NewTutorial',
24+
invoke:{
25+
id:'newOrContinue',
26+
src:invoke.newOrContinue,
27+
onDone:{
28+
target:'ContinueTutorial',
29+
actions:['continueTutorial']
30+
},
31+
onError:'NewTutorial'
2732
},
2833
},
2934
NewTutorial:{
@@ -158,7 +163,7 @@ export const machine = Machine<CR.MachineContext, CR.MachineStateSchema, CR.Mach
158163
},
159164
Completed:{
160165
id:'completed-tutorial',
161-
onEntry:['syncCompleted'],
166+
onEntry:['userTutorialComplete'],
162167
on:{
163168
SELECT_TUTORIAL:{
164169
target:'#start-new-tutorial',

‎web-app/src/services/state/actions/storage.tsrenamed to‎web-app/src/services/state/storage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ class Storage<T> {
99
constructor(key:string){
1010
this.key=key
1111
}
12-
publicget=(key:string):T|null=>{
13-
constvalue=this.storage.getItem(this.key)
12+
publicget=async():Promise<T|null>=>{
13+
constvalue=awaitthis.storage.getItem(this.key)
1414
if(value){
1515
returnJSON.parse(value)
1616
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp