Repository navigation
feat: add instance domain model and static config - #511
Conversation
Introduces Instance and InstancesConfig: what one Open edX platform is and how it is parsed from the INSTANCES block of the bundled config. Nothing reads it yet. Required fields are NAME, API_HOST_URL and OAUTH_CLIENT_ID; a malformed entry is dropped. KEY falls back to a slug of NAME, INSTANCE_NAME is localized with an English fallback, and PLATFORM_NAME defaults to the display name. The schema matches iOS (#672).
|
Thanks for the pull request, @IvanStepanok! 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. |
|
@openedx/openedx-mobile-maintainers this one and #512 are approved and ready to merge. I only have triage access here, so could one of you merge them? Please merge #511 first, then #512. #512 stays conflict-free after #511 is squashed. The rest of the stack waits: #513 is back in review after a fix, and #514–#517 build on it. |
Description
Android port of openedx-app-ios#672, the first PR of the multi-instance stack. It adds the
Instancemodel and parses it from theINSTANCESblock of the bundled config. Nothing reads it yet: no selection, no networking, no UI.What's in this PR
Core model (
core/instance/Instance.kt,InstancesConfig.kt)Instance: identity (stableKEY,NAME, localizedINSTANCE_NAME), auth (API_HOST_URL,OAUTH_CLIENT_ID, SSO URLs), theming (accent color, light/dark palette overrides, logo, header image, corner style),PLATFORM_NAME, and the entry as configured, so later PRs can read its overrides of app-level keys.InstancesConfig: the parsed catalog, looked up by key.NAME,API_HOST_URL(must be an absolute URL) andOAUTH_CLIENT_ID; a malformed entry is dropped.KEYfalls back to a slug ofNAME, the display name falls back to English and thenNAME,PLATFORM_NAMEdefaults to the display name, and blank strings count as unset.Schema
UPPER_SNAKE_CASE. Palette field names insideTHEME.LIGHT/THEME.DARK(accent_color, ...) are left lowercase: they are the theme engine's contract.SSO_FINISHED_URLandSSO_URL_SUCCESSFUL_LOGINare accepted for the SSO completion URL. The iOS model reads the first while its remote mapping produces the second; reading both keeps either config working.Static config
default_config/dev/config.yamlgets a complete exampleINSTANCESentry, matching the existing app-level localhost values so the dev build behaves the same.Tests
InstancesConfigTest(11 cases) on a shared fixture (bundled_instances.json, the iOS dev catalog plus a malformed entry): every field, required-field enforcement, slug fallback, localized names, defaults, fallback merging, blank values, and identity by key rather than catalog position.Out of scope
Testing
./gradlew detektAll testProdDebugUnitTest :app:assembleProdDebugNote
This is the 1st pull request of the multi-instance stack (11 PRs, one per iOS PR). Please review and merge in order.