feat: integrate login flow, lobby UI and bitmap font resources

This commit is contained in:
2026-09-06 13:46:57 +08:00
parent e1bcfd91ec
commit 842c68ef55
141 changed files with 11279 additions and 1717 deletions
@@ -10,10 +10,10 @@ const remote = (values: Record<string, unknown>) => ({raw:values,getValue:(key:s
test('source defaults and channel overrides retain legacy button order', () => {
const policy = resolveLoginPolicy(remote({}));
assert.deepEqual(loginButtons(policy, 0, false), {wechat:true,visitor:false,phone:false,quick:false,qq:false,account:false});
assert.deepEqual(loginButtons(policy, 1, false), {wechat:true,visitor:true,phone:false,quick:false,qq:false,account:false});
assert.deepEqual(loginButtons(policy, 1, false), {wechat:false,visitor:true,phone:false,quick:false,qq:false,account:false});
const configured = resolveLoginPolicy(remote({deviceLogin:1,hall_config:{showVisitor:1,qqLogin:1}}));
assert.deepEqual(loginButtons(configured, 0, false), {wechat:false,visitor:true,phone:true,quick:false,qq:true,account:false});
assert.deepEqual(loginButtons(configured, 0, true), {wechat:false,visitor:true,phone:false,quick:false,qq:true,account:true});
assert.deepEqual(loginButtons(configured, 0, false), {wechat:false,visitor:true,phone:false,quick:false,qq:false,account:false});
assert.deepEqual(loginButtons(configured, 0, true), {wechat:false,visitor:true,phone:false,quick:false,qq:false,account:true});
});
test('invalid upstream login options fail at the config source', () => {
assert.throws(()=>resolveLoginPolicy(remote({deviceLogin:'yes'})), /deviceLogin/);
@@ -34,7 +34,7 @@ test('build identity selects its own remote agent showVisitor through to login b
assert.equal(resolved.identity.channelid,'aouv0LotK0pYyQ0Pdrx0CsdcaezfzrcG');
const buttons=loginButtons(resolveLoginPolicy(resolved.remoteConfig),0,false);
assert.equal(buttons.visitor,true);assert.equal(buttons.wechat,false);
assert.equal(buttons.phone,true,'market deviceLogin and agent showVisitor both take effect');
assert.equal(buttons.phone,false,'visitor visibility takes precedence over deviceLogin');
const other=await resolveRuntimeConfig({...options,search:'?agentid=veRa0qrBf0df2K1G4de2tgfmVxB2jxpv'});
assert.equal(resolveLoginPolicy(other.remoteConfig).showVisitor,false,'must not read another agent configuration');
});