Skip to content

Move logic for "displayed state" from frontend to backend.

MR: Pending

Description

The following discussion from !163093 (merged) should be addressed:

  • @cwoolley-gitlab started a discussion: (+4 comments)

    suggestion (non-blocking): Early in the feature development for workspaces, there was some server-side logic that had a concept of calculating the displayed_state based on the combination of actual_state and desired_state.

    But we ended up removing that for some reason, I think because we thought it wasn't necessary anymore, and we could always just display the actual_state in the UI. Maybe @vtak remembers more, or we could dig into the commig/MR history.

    But based on all this logic here, it appears that hasn't turned out to be the case, and now we have all this domain logic living on the frontend.

    I would instead prefer that this logic be moved back to the backend, and just expose a new displayed_state field on the workspace via the GraphQL API.

    Not only to have the logic live on the backend instead of frontent, but also so it's available to any other API consumers other than the Vue client - e.g. reports, third party integrations, etc.

    If there's agreement on this, lets make a follow-up issue to do that. WDYT?

Acceptance Criteria

  • Introduce concept of displayed_state on the backend Workspace model, and move all related calculations from frontend to backend.

Technical Requirements

TODO: Fill out or delete (optional) [If applicable, please list out any technical requirements for this feature/enhancement.]

Design Requirements

TODO: Fill out or delete (optional) [If applicable, please provide a link to the design specifications for this feature/enhancement.]

Impact Assessment

TODO: Fill out or delete (optional) [Please describe the impact this feature/enhancement will have on the user experience and/or the product as a whole.]

User Story

TODO: Fill out or delete (optional) [Provide a user story to illustrate the use case for this feature/enhancement. Include examples to help communicate the intended functionality.]