Warn the user on an outdated app or an incompatible api.

- Warn the user if is using an old app version.
- Some code cleanup.
- Fix typos.
- Refactor provider utilities.
- Warn the user on incompatible api error.
- Add a proper signal for the incompatible api error instead of using a generic problem.