Skip to content

Commit 06ff1b3

Browse files
save file
1 parent d1bb1a1 commit 06ff1b3

File tree

1 file changed

+97
-89
lines changed

1 file changed

+97
-89
lines changed

html/chat-room/chat-room.html

Lines changed: 97 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
var input;
5454

5555
var server = '';
56-
var room = 'main';
56+
var room_id = 'main';
5757

5858
var poll = {
5959
abort : false,
@@ -113,7 +113,9 @@
113113
var str = target.getAttribute('poll-time');
114114
if(int(str)){
115115
var num = Number(str);
116-
if(num<poll.min)num = poll.min;
116+
if(num<poll.min){
117+
num = poll.min;
118+
}
117119
polltime = num;
118120
}
119121

@@ -133,87 +135,127 @@
133135
//:
134136

135137

138+
post.list = [];
139+
140+
136141
async function post(path,json){
137142

138-
post.promise = new Promise(fn);
139-
return post.promise;
143+
clearTimeout(post.timer);
144+
var resolve,promise=new Promise(res=>resolve=res);
140145

146+
if(post.pending){
147+
post.list.push([arguments,resolve]);
148+
}else{
149+
post.send(arguments,resolve);
150+
}
141151

142-
async function fn(resolve){
152+
return promise;
143153

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});
150168

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;
155173

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);
174204

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);
179208
return;
180209
}
181-
exit(result);
182210

211+
post.update.initial();
183212

184-
function exit(result){
185-
//console.log(4);
186-
post.promise = null;
187-
resolve(result);
188-
189-
}//exit
190-
191-
}//fn
213+
}//exit
192214

193-
}//post
215+
}//send
194216

195217

196218
post.start = async function(){
197219

198-
var result = await post('start',{room});
220+
var result = await post('start',{room_id});
199221
if(!result)return;
200222

201-
var list = result.list;
202-
display.list(list);
223+
display.result(result);
203224

204225
post.update.initial();
205226

206227
}//start
207228

208229

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+
209252
post.update = async function(){
210253

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});
213256
if(!result)return;
214257

215-
var list = result.list;
216-
display.list(list);
258+
display.result(result);
217259

218260
if(poll.abort)return;
219261

@@ -230,44 +272,10 @@
230272
}//initial
231273

232274

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
251275

252276

253-
post.del = async function({id,password}){
254277

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+
271279

272280

273281

0 commit comments

Comments
 (0)