Add org invite workflow and portal invite controls #3

Closed
J.Schmidt92 wants to merge 0 commits from development into master
Owner

Summary

Implements organization invites end to end and updates the org portal members card to use top-right invite controls.

What changed

  • Added org invite state and workflows to the org hot-state backend
  • Added extension commands for:
    • org:hot:member_invites
    • org:hot:invite_member
    • org:hot:accept_invite
    • org:hot:decline_invite
  • Added server SQF bridge/event handling for:
    • sending invites
    • accepting invites
    • declining invites
    • syncing affected org portals and actor org changes
  • Extended org portal hydrate payload with:
    • pendingInvites
    • inviteablePlayers
  • Updated the org portal members card UI:
    • bell icon button in the top right opens a dropdown of pending invites
    • plus icon button opens the invite-player modal
  • Kept accept/decline in the org portal instead of raw notifications
  • Rebuilt the org web UI bundle

User-facing behavior

  • Org leaders/CEOs can invite eligible online players by name
  • Invited players see pending invites in the org portal
  • Invites can be accepted or declined from the bell dropdown
  • Accepting an invite updates actor org membership and syncs the affected org views
  • The plus button opens the invite modal for inviting a new player

Validation

  • cargo fmt
  • cargo test -p forge-services org --quiet
  • cargo test -p forge-server --quiet
  • npm run build:webui
  • .\build-arma.ps1 -target server

In-game checks

  • Send invite from org leader account
  • Confirm target sees invite in the bell dropdown
  • Accept invite and verify roster/org membership updates immediately
  • Decline invite and verify it disappears cleanly
## Summary Implements organization invites end to end and updates the org portal members card to use top-right invite controls. ## What changed - Added org invite state and workflows to the org hot-state backend - Added extension commands for: - `org:hot:member_invites` - `org:hot:invite_member` - `org:hot:accept_invite` - `org:hot:decline_invite` - Added server SQF bridge/event handling for: - sending invites - accepting invites - declining invites - syncing affected org portals and actor org changes - Extended org portal hydrate payload with: - `pendingInvites` - `inviteablePlayers` - Updated the org portal members card UI: - bell icon button in the top right opens a dropdown of pending invites - plus icon button opens the invite-player modal - Kept accept/decline in the org portal instead of raw notifications - Rebuilt the org web UI bundle ## User-facing behavior - Org leaders/CEOs can invite eligible online players by name - Invited players see pending invites in the org portal - Invites can be accepted or declined from the bell dropdown - Accepting an invite updates actor org membership and syncs the affected org views - The plus button opens the invite modal for inviting a new player ## Validation - `cargo fmt` - `cargo test -p forge-services org --quiet` - `cargo test -p forge-server --quiet` - `npm run build:webui` - `.\build-arma.ps1 -target server` ## In-game checks - Send invite from org leader account - Confirm target sees invite in the bell dropdown - Accept invite and verify roster/org membership updates immediately - Decline invite and verify it disappears cleanly
J.Schmidt92 added 19 commits 2026-04-06 06:08:02 -05:00
- Split BankBaseStore into SessionManager, Messenger, Model, Store, Validator
- Extract validation logic into BankValidator with try/catch and per-action methods
- Remove duplicate notifications from transaction actions
- Update event handlers to call validator first, forward context to store/session
- Fix locker grantItems: add missing 'attachment' category mapping to 'item'
- Fix locker grantItems: replace exitWith with if/else to prevent skipping remaining items

Co-Authored-By: Oz <oz-agent@warp.dev>
- add the imported server task addon to the current framework with task ownership, task catalog, mission-manager attack generation, org-owned reward routing, participant notifications, and reputation syncing
- restructure org persistence so core org data, assets, fleet, and members are handled through the current Redis/extension model with matching Rust repository and service updates
- wire the client CAD addon into the framework, actor device action, shared web UI bridge pattern, and task listing/acceptance flow
- add a source-driven CAD web UI layout with ui.config.mjs and extend the shared web UI builder to support custom HTML template pages for multi-surface UIs
- Replace task-only refresh flow with hydrate/assignment/group events
- Add contracts, groups, and activity tabs to the client sidepanel
- Introduce server-side CAD store and request handlers
- Add a dispatcher web view and layout switching
- Route group role updates and dispatcher hydration through the UI bridge
- Refresh top bar and hide map/side panel outside operations mode
- Add dispatchView state to the CAD repository and hydrate payloads
- Toggle the dispatcher between board and map layouts in the UI bridge
- Update side panel logic to hide contract tabs in dispatch map mode
- Update CAD client UI and generated site assets
- Keep dispatcher and sidepanel status lists aligned with server defaults
- Refresh task, assignment, and group repository initialization
- Add request hydration, submission, closing, and response handling
- Wire UI events for dispatch orders, support requests, and map focus
- Expand dispatcher layout for alerts, requests, and detail views
- Route bank sync payloads through the client bridge
- Refresh account state without rebuilding the full session
- Split CAD dispatcher UI into modular source files
- Replace bank payment flow with a checkout mutation using explicit source context
- Return backend errors to players instead of silently falling back to local state
- Queue hot state persistence for actors, garages, lockers, orgs, and owned assets
- Add shared store payload handling in server and extension code
- Remove obsolete org member and treasury service split
- Update client repositories and portal UI/store hydration
- Thread request data through UI bridge and dispatcher events
- Add task models, repositories, services, and extension wiring
- Include submitted request fields in converted order notes
- Wire bank client and server for credit line repayment requests
- Show credit line balance and repay action in the banking view
- Extend org/bank payloads and models with credit line fields
- Remove in-SQF registry mirroring for actor, bank, CAD, org, and task state
- Add validation harness and persistence warnings for hot-state flows
- Treat CAD and task operational state as restart-scoped
- Require actor records to exist in storage before hot load
- Fall back to player snapshots to fill missing actor fields and org defaults
- Refresh org member names when a better value is available
- Keep bootstrap extension calls on the direct path by default
- Clarify client loading status text
- Document server-side actor hydration and snapshot recovery
- Stop hot reads from forcing repository initialization
- Wire invite request, accept, and decline events through the UI bridge
- Add client and server handlers for invite success and failure responses
- Extend portal state and UI to support member invite actions
- Hydrate portal/session data from login and sync payloads
- Add treasury notices for credit, invite, leave, and disband actions
- Improve portal cards and modal UI for members, fleet, and treasury
J.Schmidt92 closed this pull request 2026-04-06 06:08:35 -05:00
J.Schmidt92 reopened this pull request 2026-04-06 06:08:47 -05:00
J.Schmidt92 closed this pull request 2026-04-06 06:14:28 -05:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: IDSolutions/forge#3
No description provided.