(buf)
| 1457 | * ModelOrAlias { Model model = 1; ModelAlias alias = 2; } (oneof in practice) |
| 1458 | */ |
| 1459 | export function parseGetUserStatusResponse(buf) { |
| 1460 | const out = { |
| 1461 | pro: false, |
| 1462 | teamsTier: 0, |
| 1463 | tierName: '', |
| 1464 | email: '', |
| 1465 | displayName: '', |
| 1466 | teamId: '', |
| 1467 | userUsedPromptCredits: 0, |
| 1468 | userUsedFlowCredits: 0, |
| 1469 | trialEndMs: 0, |
| 1470 | maxPremiumChatMessages: 0, |
| 1471 | planName: '', |
| 1472 | monthlyPromptCredits: 0, |
| 1473 | monthlyFlowCredits: 0, |
| 1474 | hasPaidFeatures: false, |
| 1475 | isTeams: false, |
| 1476 | isEnterprise: false, |
| 1477 | allowedModels: [], // [{ modelEnum, alias, multiplier }] |
| 1478 | }; |
| 1479 | |
| 1480 | if (!buf || buf.length === 0) { |
| 1481 | out.tierName = mapTeamsTier(out.teamsTier); |
| 1482 | return out; |
| 1483 | } |
| 1484 | const top = parseFields(buf); |
| 1485 | const usBuf = getField(top, 1, 2)?.value; |
| 1486 | const piBuf = getField(top, 2, 2)?.value; |
| 1487 | |
| 1488 | if (usBuf && usBuf.length) { |
| 1489 | const us = parseFields(usBuf); |
| 1490 | out.pro = (getField(us, 1, 0)?.value ?? 0) === 1; |
| 1491 | out.displayName = getField(us, 3, 2)?.value?.toString('utf8') || ''; |
| 1492 | out.teamId = getField(us, 5, 2)?.value?.toString('utf8') || ''; |
| 1493 | out.email = getField(us, 7, 2)?.value?.toString('utf8') || ''; |
| 1494 | out.teamsTier = getField(us, 10, 0)?.value ?? 0; |
| 1495 | out.userUsedPromptCredits = Number(getField(us, 28, 0)?.value ?? 0); |
| 1496 | out.userUsedFlowCredits = Number(getField(us, 29, 0)?.value ?? 0); |
| 1497 | out.maxPremiumChatMessages = Number(getField(us, 35, 0)?.value ?? 0); |
| 1498 | const tsBuf = getField(us, 34, 2)?.value; |
| 1499 | if (tsBuf && tsBuf.length) { |
| 1500 | const tsFields = parseFields(tsBuf); |
| 1501 | const secs = Number(getField(tsFields, 1, 0)?.value ?? 0); |
| 1502 | out.trialEndMs = secs * 1000; |
| 1503 | } |
| 1504 | } |
| 1505 | |
| 1506 | if (piBuf && piBuf.length) { |
| 1507 | const pi = parseFields(piBuf); |
| 1508 | if (!out.teamsTier) out.teamsTier = getField(pi, 1, 0)?.value ?? 0; |
| 1509 | out.planName = getField(pi, 2, 2)?.value?.toString('utf8') || ''; |
| 1510 | out.monthlyPromptCredits = Number(getField(pi, 12, 0)?.value ?? 0); |
| 1511 | out.monthlyFlowCredits = Number(getField(pi, 13, 0)?.value ?? 0); |
| 1512 | out.isEnterprise = (getField(pi, 16, 0)?.value ?? 0) === 1; |
| 1513 | out.isTeams = (getField(pi, 17, 0)?.value ?? 0) === 1; |
| 1514 | out.hasPaidFeatures = (getField(pi, 32, 0)?.value ?? 0) === 1; |
| 1515 | |
| 1516 | // cascade_allowed_models_config — repeated AllowedModelConfig (field 21) |
no test coverage detected