- Rework org and store UI state modules (rename/move store/getter files, add runtime and bridge wiring) - Update store UI components and page structure (navbar/cart split, new StoreView flow) - Apply broad markdown/YAML/HTML/CSS/JS formatting cleanup across docs, templates, and workflows
86 lines
2.1 KiB
Markdown
86 lines
2.1 KiB
Markdown
# forge_client_org
|
|
|
|
Player organization UI and client integration.
|
|
|
|
## UI Login Contract
|
|
|
|
The web UI sends the following request through `A3API.SendAlert`:
|
|
|
|
```json
|
|
{
|
|
"event": "org::login::request",
|
|
"data": {
|
|
"email": "admin@spearnet.mil",
|
|
"password": "secret"
|
|
}
|
|
}
|
|
```
|
|
|
|
On success, SQF should call the browser bridge with:
|
|
|
|
```sqf
|
|
private _payload = createHashMapFromArray [
|
|
["session", createHashMapFromArray [
|
|
["actorName", name player],
|
|
["role", "Leader"]
|
|
]],
|
|
["portalData", createHashMapFromArray [
|
|
["org", createHashMapFromArray [
|
|
["name", "Black Rifle Company"],
|
|
["tag", "BRC-0160566824"],
|
|
["type", "Private Military Company"],
|
|
["status", "Operational"],
|
|
["headquarters", "Georgetown Command Annex"],
|
|
["owner", "Jacob Schmidt"]
|
|
]],
|
|
["funds", 482750],
|
|
["reputation", 72],
|
|
["members", [
|
|
createHashMapFromArray [["name", "Jacob Schmidt"]],
|
|
createHashMapFromArray [["name", "Mara Velez"]]
|
|
]],
|
|
["fleet", [
|
|
createHashMapFromArray [
|
|
["name", "UH-80 Ghost Hawk"],
|
|
["type", "helicopter"],
|
|
["status", "Ready"],
|
|
["damage", "16%"]
|
|
]
|
|
]],
|
|
["assets", [
|
|
createHashMapFromArray [
|
|
["name", "First Aid Kits"],
|
|
["type", "items"],
|
|
["quantity", "36"]
|
|
]
|
|
]],
|
|
["activity", []],
|
|
["roadmap", []]
|
|
]]
|
|
];
|
|
|
|
_control ctrlWebBrowserAction [
|
|
"ExecJS",
|
|
format ["OrgUIBridge.receiveLoginSuccess(%1)", toJSON _payload]
|
|
];
|
|
```
|
|
|
|
On failure:
|
|
|
|
```sqf
|
|
private _payload = createHashMapFromArray [
|
|
["message", "Invalid credentials."]
|
|
];
|
|
|
|
_control ctrlWebBrowserAction [
|
|
"ExecJS",
|
|
format ["OrgUIBridge.receiveLoginFailure(%1)", toJSON _payload]
|
|
];
|
|
```
|
|
|
|
Current implementation:
|
|
|
|
- `fnc_handleUIEvents.sqf` now handles `org::login::request`
|
|
- success hydrates the portal with `session` + `portalData`
|
|
- failure returns a single `message` string for inline UI feedback
|