sora-xor / sora-card

Designing a Better World Through Decentralized Technologies
4 stars 1 forks source link

Enforce Application Version Update #109

Closed bgodlin closed 1 year ago

bgodlin commented 1 year ago

Problem

Currently, our applications do not check for the latest version, which can lead to compatibility issues with the middleware. It is essential to ensure that applications always fetch the latest version from the middleware to maintain compatibility and provide a seamless user experience

Solution

To address this issue, we need to enforce the SORA Card version update process.

Sub-tasks & Requirements

This involves making changes to both the backend and client applications to ensure they always fetch and use the latest version from the middleware

Backend

Client Applications

Web

Mobile

Alexey-N-Chernyshov commented 1 year ago

Now we have /version endpoint which returns mw API version:

{
  "semver":"0.9.4",
  "build_timestamp":"2023-10-04T08:33:16.228670675Z",
  "git_pretty":"fe21ef5"
}

I suggest to add all client supported versions for mw, respectively: web, ios, android, so response will be:

{
  "web_client_version": "1.2.3",
  "android_client_version": "3.4.5",
  "ios_client_version": "4.5.6",
  "api_version":"0.9.4",
  "build_timestamp":"2023-10-04T08:33:16.228670675Z",
  "git_pretty":"fe21ef5"
}

The client will check corresponding version and decide should it proceed or force update. Also we should decide do the client must update on patch change. Patch change usually means bug fixing. Another possible solution is to update client minor version on bug fixing. We should come up to some agreement on this example.

bgodlin commented 1 year ago

The client will check corresponding version and decide should it proceed or force update. Also we should decide do the client must update on patch change. Patch change usually means bug fixing. Another possible solution is to update client minor version on bug fixing. We should come up to some agreement on this example.

Should the application solely verify its object or should it also manage the api_version object in some way?

Alexey-N-Chernyshov commented 1 year ago

The client should check xxx_client_version only. There is no need to check both api and client version since the client will support the most recent mw api.

Alexey-N-Chernyshov commented 1 year ago

Final version, ios_client_version is set by env:

{
  "ios_client_version": "4.5.6",
  "api_version":"0.9.4",
  "build_timestamp":"2023-10-04T08:33:16.228670675Z",
  "git_pretty":"fe21ef5"
}