|
53 | 53 | var input; |
54 | 54 |
|
55 | 55 | var server = ''; |
56 | | - var room = 'main'; |
| 56 | + var room_id = 'main'; |
57 | 57 |
|
58 | 58 | var poll = { |
59 | 59 | abort : false, |
|
113 | 113 | var str = target.getAttribute('poll-time'); |
114 | 114 | if(int(str)){ |
115 | 115 | var num = Number(str); |
116 | | - if(num<poll.min)num = poll.min; |
| 116 | + if(num<poll.min){ |
| 117 | + num = poll.min; |
| 118 | + } |
117 | 119 | polltime = num; |
118 | 120 | } |
119 | 121 |
|
|
133 | 135 | //: |
134 | 136 |
|
135 | 137 |
|
| 138 | + post.list = []; |
| 139 | + |
| 140 | + |
136 | 141 | async function post(path,json){ |
137 | 142 |
|
138 | | - post.promise = new Promise(fn); |
139 | | - return post.promise; |
| 143 | + clearTimeout(post.timer); |
| 144 | + var resolve,promise=new Promise(res=>resolve=res); |
140 | 145 |
|
| 146 | + if(post.pending){ |
| 147 | + post.list.push([arguments,resolve]); |
| 148 | + }else{ |
| 149 | + post.send(arguments,resolve); |
| 150 | + } |
141 | 151 |
|
142 | | - async function fn(resolve){ |
| 152 | + return promise; |
143 | 153 |
|
144 | | - var url = server+path; |
145 | | - var body = JSON.stringify(json); |
146 | | - var headers = {}; |
147 | | - debug(url,body); |
148 | | - var err; |
149 | | - try{ |
| 154 | + }//post |
| 155 | + |
| 156 | + |
| 157 | + post.send = async function([path,json],resolve){ |
| 158 | + |
| 159 | + post.pending = true; |
| 160 | + var url = server+path; |
| 161 | + var body = JSON.stringify(json); |
| 162 | + var headers = {}; |
| 163 | + debug(url,body); |
| 164 | + var err; |
| 165 | + try{ |
| 166 | + |
| 167 | + var res = await fetch(url,{headers,method:'post',body}); |
150 | 168 |
|
151 | | - var res = await fetch(url,{headers,method:'post',body}); |
152 | | - |
153 | | - }//try |
154 | | - catch(err2){ |
| 169 | + }//try |
| 170 | + catch(err2){ |
| 171 | + |
| 172 | + err = err2; |
155 | 173 |
|
156 | | - err = err2; |
157 | | - |
158 | | - }//catch |
159 | | - if(err){ |
160 | | - var error = err.toString(); |
161 | | - log.red(error); |
162 | | - exit(); |
163 | | - return; |
164 | | - } |
165 | | - if(!res.ok){ |
166 | | - var txt = await res.text(); |
167 | | - var error = `${res.status} ${res.statusText||txt}`; |
168 | | - console.log(error); |
169 | | - console.log(txt); |
170 | | - log.red(error); |
171 | | - exit(); |
172 | | - return; |
173 | | - } |
| 174 | + }//catch |
| 175 | + if(err){ |
| 176 | + var error = err.toString(); |
| 177 | + log.red(error); |
| 178 | + exit(); |
| 179 | + return; |
| 180 | + } |
| 181 | + if(!res.ok){ |
| 182 | + var txt = await res.text(); |
| 183 | + var error = `${res.status} ${res.statusText||txt}`; |
| 184 | + console.log(error); |
| 185 | + console.log(txt); |
| 186 | + log.red(error); |
| 187 | + exit(); |
| 188 | + return; |
| 189 | + } |
| 190 | + |
| 191 | + var result = await res.json(); |
| 192 | + if(result.error){ |
| 193 | + log.red(result.error); |
| 194 | + exit(); |
| 195 | + return; |
| 196 | + } |
| 197 | + exit(result); |
| 198 | + |
| 199 | + |
| 200 | + function exit(result){ |
| 201 | + //console.log(4); |
| 202 | + post.pending = false; |
| 203 | + resolve(result); |
174 | 204 |
|
175 | | - var result = await res.json(); |
176 | | - if(result.error){ |
177 | | - log.red(result.error); |
178 | | - exit(); |
| 205 | + if(post.list.length){ |
| 206 | + var [args,resolve] = post.list.shift(); |
| 207 | + post.send.call(null,args,resolve); |
179 | 208 | return; |
180 | 209 | } |
181 | | - exit(result); |
182 | 210 |
|
| 211 | + post.update.initial(); |
183 | 212 |
|
184 | | - function exit(result){ |
185 | | - //console.log(4); |
186 | | - post.promise = null; |
187 | | - resolve(result); |
188 | | - |
189 | | - }//exit |
190 | | - |
191 | | - }//fn |
| 213 | + }//exit |
192 | 214 |
|
193 | | - }//post |
| 215 | + }//send |
194 | 216 |
|
195 | 217 |
|
196 | 218 | post.start = async function(){ |
197 | 219 |
|
198 | | - var result = await post('start',{room}); |
| 220 | + var result = await post('start',{room_id}); |
199 | 221 | if(!result)return; |
200 | 222 |
|
201 | | - var list = result.list; |
202 | | - display.list(list); |
| 223 | + display.result(result); |
203 | 224 |
|
204 | 225 | post.update.initial(); |
205 | 226 |
|
206 | 227 | }//start |
207 | 228 |
|
208 | 229 |
|
| 230 | + post.msg = async function({user,password,txt}){ |
| 231 | + //console.log('post.msg'); |
| 232 | + var ts = display.last; |
| 233 | + var result = await post('msg',{room_id,user,password,txt,ts}); |
| 234 | + if(!result)return; |
| 235 | + |
| 236 | + display.result(result); |
| 237 | + |
| 238 | + }//msg |
| 239 | + |
| 240 | + |
| 241 | + post.del = async function({msg_id,password}){ |
| 242 | + |
| 243 | + var ts = display.last; |
| 244 | + var result = await post('del',{room_id,msg_id,password,ts}); |
| 245 | + if(!result)return; |
| 246 | + |
| 247 | + display.result(result); |
| 248 | + |
| 249 | + }//del |
| 250 | + |
| 251 | + |
209 | 252 | post.update = async function(){ |
210 | 253 |
|
211 | | - var ts = display.msgs.at(-1).ts; |
212 | | - var result = await post('update',{room,ts}); |
| 254 | + var ts = display.last; |
| 255 | + var result = await post('update',{room_id,ts}); |
213 | 256 | if(!result)return; |
214 | 257 |
|
215 | | - var list = result.list; |
216 | | - display.list(list); |
| 258 | + display.result(result); |
217 | 259 |
|
218 | 260 | if(poll.abort)return; |
219 | 261 |
|
|
230 | 272 | }//initial |
231 | 273 |
|
232 | 274 |
|
233 | | - post.msg = async function({user,password,txt}){ |
234 | | - //console.log('post.msg'); |
235 | | - clearTimeout(post.timer); |
236 | | - if(post.promise){ |
237 | | - //console.log('post.promise'); |
238 | | - await post.promise; |
239 | | - } |
240 | | - |
241 | | - var ts = display.msgs.at(-1).ts; |
242 | | - var result = await post('msg',{room,user,password,txt,ts}); |
243 | | - if(!result)return; |
244 | | - |
245 | | - var list = result.list; |
246 | | - display.list(list); |
247 | | - |
248 | | - post.update.initial(); |
249 | | - |
250 | | - }//msg |
251 | 275 |
|
252 | 276 |
|
253 | | - post.del = async function({id,password}){ |
254 | 277 |
|
255 | | - clearTimeout(post.timer); |
256 | | - if(post.promise){ |
257 | | - await post.promise; |
258 | | - } |
259 | | - |
260 | | - var ts = display.msgs.at(-1).ts; |
261 | | - var result = await post('del',{room,id,password,ts}); |
262 | | - if(!result)return; |
263 | | - |
264 | | - var list = result.list; |
265 | | - display.list(list); |
266 | | - |
267 | | - post.update.initial(); |
268 | | - return true; |
269 | | - |
270 | | - }//del |
| 278 | + |
271 | 279 |
|
272 | 280 |
|
273 | 281 |
|
|
0 commit comments