summaryrefslogtreecommitdiffhomepage
path: root/gui
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2018-08-14 10:42:02 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2018-08-20 12:46:59 -0300
commit94789842f27ae66c94866ceb8c40ecc7f195e450 (patch)
treecadf6d1d38338de62e5f0013643fa6da5c72325e /gui
parent9cf83be2a3cba3a21bb925262900c5152a7f0d6a (diff)
downloadmullvadvpn-94789842f27ae66c94866ceb8c40ecc7f195e450.tar.xz
mullvadvpn-94789842f27ae66c94866ceb8c40ecc7f195e450.zip
Add GUI RPC call to get app version info
Diffstat (limited to 'gui')
-rw-r--r--gui/packages/desktop/src/renderer/lib/daemon-rpc.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/gui/packages/desktop/src/renderer/lib/daemon-rpc.js b/gui/packages/desktop/src/renderer/lib/daemon-rpc.js
index d2fdce72ac..3f3d3af9c1 100644
--- a/gui/packages/desktop/src/renderer/lib/daemon-rpc.js
+++ b/gui/packages/desktop/src/renderer/lib/daemon-rpc.js
@@ -205,6 +205,22 @@ const BackendStateSchema = object({
target_state: enumeration(...allSecurityStates),
});
+export type AppVersionInfo = {
+ currentIsSupported: boolean,
+ latest: {
+ latestStable: string,
+ latest: string,
+ },
+};
+
+const AppVersionInfoSchema = object({
+ current_is_supported: boolean,
+ latest: object({
+ latest_stable: string,
+ latest: string,
+ }),
+});
+
export interface DaemonRpcProtocol {
connect(string): void;
disconnect(): void;
@@ -231,6 +247,7 @@ export interface DaemonRpcProtocol {
getAccountHistory(): Promise<Array<AccountToken>>;
removeAccountFromHistory(accountToken: AccountToken): Promise<void>;
getCurrentVersion(): Promise<string>;
+ getVersionInfo(): Promise<AppVersionInfo>;
}
export class ResponseParseError extends Error {
@@ -465,4 +482,20 @@ export class DaemonRpc implements DaemonRpcProtocol {
throw new ResponseParseError('Invalid response from get_current_version', null);
}
}
+
+ async getVersionInfo(): Promise<AppVersionInfo> {
+ const response = await this._transport.send('get_version_info');
+ try {
+ const versionInfo = validate(AppVersionInfoSchema, response);
+ return {
+ currentIsSupported: versionInfo.current_is_supported,
+ latest: {
+ latestStable: versionInfo.latest.latest_stable,
+ latest: versionInfo.latest.latest,
+ },
+ };
+ } catch (error) {
+ throw new ResponseParseError('Invalid response from get_version_info', null);
+ }
+ }
}