feat: integrate platform room entry, UI migration and erqiwang documentation

This commit is contained in:
2026-09-07 21:01:08 +08:00
parent 9c4510697c
commit 30a1b4114c
259 changed files with 84995 additions and 30201 deletions
@@ -0,0 +1,17 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import {RequestLoading} from '../../YouleNexus/assets/framework/presentation/request-loading.ts';
test('request loading closes on matching success or failure independent of payload',()=>{
const shown:boolean[]=[];const loading=new RequestLoading(v=>shown.push(v));
for(const rpc of ['get_player_task','get_task_award','getVipRankList'] as const){
for(const data of [{state:0},{state:1,error:'失败'},null]){loading.begin(rpc);loading.received({route:'agent',rpc,data});assert.deepEqual(shown.splice(0),[true,false]);}
}
loading.begin('get_player_task');loading.received({route:'agent',rpc:'getVipRankList'});assert.deepEqual(shown,[true]);
loading.received({route:'agent',rpc:'show_message'});assert.deepEqual(shown,[true,false]);
});
test('overlapping requests, cancellation, and duplicate replies do not flicker',()=>{
const shown:boolean[]=[];const loading=new RequestLoading(v=>shown.push(v));
loading.begin('get_player_task');loading.begin('getVipRankList');loading.received({route:'agent',rpc:'get_player_task'});
assert.deepEqual(shown,[true]);loading.cancel('getVipRankList');loading.cancel('getVipRankList');
assert.deepEqual(shown,[true,false]);loading.begin('get_task_award');loading.clear();assert.deepEqual(shown,[true,false,true,false]);
});