@@ -65,28 +65,23 @@ export const push = async (
65
65
| [ PinChange ] ,
66
66
options ?: PushOptions ,
67
67
) : Promise < Result < string , RetryError > > => {
68
- const [
69
- page_ ,
70
- projectId ,
71
- userId ,
72
- ] = await Promise . all ( [
73
- pull ( project , title ) ,
74
- getProjectId ( project ) ,
75
- getUserId ( ) ,
76
- ] ) ;
77
-
78
- let page : PushMetadata = { ...page_ , projectId, userId } ;
79
-
80
68
const injectedSocket = options ?. socket ;
81
69
const socket = injectedSocket ?? await socketIO ( ) ;
82
70
await connect ( socket ) ;
83
71
84
72
try {
73
+ let page : PushMetadata = await Promise . all ( [
74
+ pull ( project , title ) ,
75
+ getProjectId ( project ) ,
76
+ getUserId ( ) ,
77
+ ] ) . then ( ( [ page_ , projectId , userId ] ) => ( { ...page_ , projectId, userId } ) ) ;
78
+
85
79
const { request } = wrap ( socket ) ;
86
- // loop for create Diff
87
80
let attempts = 0 ;
88
81
let changes : Change [ ] | [ DeletePageChange ] | [ PinChange ] = [ ] ;
89
82
let reason : "NotFastForwardError" | "DuplicateTitleError" | undefined ;
83
+
84
+ // loop for create Diff
90
85
while (
91
86
options ?. maxAttempts === undefined || attempts < options . maxAttempts
92
87
) {
@@ -99,10 +94,10 @@ export const push = async (
99
94
100
95
const data : PageCommit = {
101
96
kind : "page" ,
102
- projectId,
97
+ projectId : page . projectId ,
103
98
pageId : page . id ,
104
99
parentId : page . commitId ,
105
- userId,
100
+ userId : page . userId ,
106
101
changes,
107
102
cursor : null ,
108
103
freeze : true ,
@@ -132,14 +127,20 @@ export const push = async (
132
127
}
133
128
if ( name === "TimeoutError" || name === "SocketIOError" ) {
134
129
await sleep ( 3000 ) ;
135
- // go back to the diff loop
136
- break ;
130
+ // go back to the push loop
131
+ continue ;
137
132
}
138
133
if ( name === "NotFastForwardError" ) {
139
- page = { ...await pull ( project , title ) , projectId, userId } ;
134
+ await sleep ( 1000 ) ;
135
+ page = {
136
+ ...await pull ( project , title ) ,
137
+ projectId : page . projectId ,
138
+ userId : page . userId ,
139
+ } ;
140
140
}
141
141
reason = name ;
142
- // go back to the push loop
142
+ // go back to the diff loop
143
+ break ;
143
144
}
144
145
}
145
146
return {
0 commit comments