feat: add tenant selection store (TenantStore) - #673
Conversation
fix: typo in translation.py inline comments
Adds the Sendable Tenant value type and TenantsConfig container that later multi-tenant layers build on: per-tenant API/SSO/OAuth config, UI feature flags (UIComponentsConfig, now @unchecked Sendable), and raw branding fields for a later theming layer to render. Tenant(dictionary:) parses config.yaml's new TENANTS block. Not included here: remote catalog fetching, tenant selection/session state, and anything reading TenantProvider — those land as separate PRs. TENANTS data in config.yaml is illustrative, not real tenants.
Adds TenantStore: the single source of truth for the selected tenant and the tenant catalog, persisted to UserDefaults and posting .tenantDidChange for observers. Auto-selects the sole tenant on a single-tenant catalog, since there's no picker to choose it through. Registered in NetworkAssembly (TenantStore/TenantProvider). Not consumed by anything yet — RequestInterceptor and the rest of the storage/session layers read it starting in later PRs. Also fixes a real gap found while extracting this: the original TenantStoreTests.swift was never added to Core.xcodeproj, so it silently never ran as part of CoreTests.
|
Thanks for the pull request, @RawanMatar89! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #673 +/- ##
==============================
==============================
☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Summary
Adds
TenantStore: single source of truth for the selected tenant and the tenant catalog, persisted toUserDefaults, posting.tenantDidChangefor observers. Still foundation — nothing in the app resolves or calls it yet.Included
TenantStore(Core): selection state + catalog, auto-selects the sole tenant on a single-tenant catalog (no picker to choose it through otherwise)NetworkAssembly(TenantStore/TenantProvider)TenantStoreTests.swift— 8 unit testsNot included
RequestInterceptor, storage, session lifecycle) — starts in later PRsTenantConfigLoader) — separate PRFixed in passing
The original
TenantStoreTests.swiftwas never added toCore.xcodeproj, so it silently never ran as part ofCoreTests. Registered it correctly since this PR is what introduces the file.Testing
Built and ran successfully on device.
Note
This is the 2nd pull-request of the multi-tenant infrastructure extraction.