summaryrefslogtreecommitdiffhomepage
path: root/gui/src/shared
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-02-26 16:06:59 +0100
committerOskar Nyberg <oskar@mullvad.net>2020-04-06 17:44:45 +0200
commitdab4202bea4b5cfe9121cee513b61a3fb45bbb19 (patch)
tree567b38a65a41a48c0f0262e4605502a9446d5de1 /gui/src/shared
parent6157a809ad6eb5cdb06b7fcaea9549b3f100f07a (diff)
downloadmullvadvpn-dab4202bea4b5cfe9121cee513b61a3fb45bbb19.tar.xz
mullvadvpn-dab4202bea4b5cfe9121cee513b61a3fb45bbb19.zip
Add submitVoucher call
Diffstat (limited to 'gui/src/shared')
-rw-r--r--gui/src/shared/daemon-rpc-types.ts9
-rw-r--r--gui/src/shared/ipc-event-channel.ts6
2 files changed, 15 insertions, 0 deletions
diff --git a/gui/src/shared/daemon-rpc-types.ts b/gui/src/shared/daemon-rpc-types.ts
index ac1e7584f6..661250c5f5 100644
--- a/gui/src/shared/daemon-rpc-types.ts
+++ b/gui/src/shared/daemon-rpc-types.ts
@@ -320,6 +320,15 @@ export interface ISocketAddress {
port: number;
}
+export type VoucherResponse =
+ | { type: 'success'; new_expiry: string }
+ | { type: 'invalid' | 'already_used' | 'error' };
+
+export enum VoucherErrorCode {
+ Invalid = -400,
+ AlreadyUsed = -401,
+}
+
export function parseSocketAddress(socketAddrStr: string): ISocketAddress {
const re = new RegExp(/(.+):(\d+)$/);
const matches = socketAddrStr.match(re);
diff --git a/gui/src/shared/ipc-event-channel.ts b/gui/src/shared/ipc-event-channel.ts
index 48f7b71bdc..b6e788e72e 100644
--- a/gui/src/shared/ipc-event-channel.ts
+++ b/gui/src/shared/ipc-event-channel.ts
@@ -18,6 +18,7 @@ import {
KeygenEvent,
RelaySettingsUpdate,
TunnelState,
+ VoucherResponse,
} from './daemon-rpc-types';
export interface IAppStateSnapshot {
@@ -110,6 +111,7 @@ interface IAccountHandlers extends ISender<IAccountData | undefined> {
handleLogin(fn: (token: AccountToken) => Promise<void>): void;
handleLogout(fn: () => Promise<void>): void;
handleWwwAuthToken(fn: () => Promise<string>): void;
+ handleSubmitVoucher(fn: (voucherCode: string) => Promise<VoucherResponse>): void;
}
interface IAccountMethods extends IReceiver<IAccountData | undefined> {
@@ -117,6 +119,7 @@ interface IAccountMethods extends IReceiver<IAccountData | undefined> {
login(token: AccountToken): Promise<void>;
logout(): Promise<void>;
getWwwAuthToken(): Promise<string>;
+ submitVoucher(voucherCode: string): Promise<VoucherResponse>;
}
interface IAccountHistoryHandlers extends ISender<AccountToken[]> {
@@ -193,6 +196,7 @@ const DO_LOGIN = 'do-login';
const DO_LOGOUT = 'do-logout';
const DO_GET_WWW_AUTH_TOKEN = 'do-get-www-auth-token';
const ACCOUNT_DATA_CHANGED = 'account-data-changed';
+const REDEEM_VOUCHER = 'redeem-voucher';
const AUTO_START_CHANGED = 'auto-start-changed';
const SET_AUTO_START = 'set-auto-start';
@@ -287,6 +291,7 @@ export class IpcRendererEventChannel {
login: requestSender(DO_LOGIN),
logout: requestSender(DO_LOGOUT),
getWwwAuthToken: requestSender(DO_GET_WWW_AUTH_TOKEN),
+ submitVoucher: requestSender(REDEEM_VOUCHER),
};
public static accountHistory: IAccountHistoryMethods = {
@@ -383,6 +388,7 @@ export class IpcMainEventChannel {
handleLogin: requestHandler(DO_LOGIN),
handleLogout: requestHandler(DO_LOGOUT),
handleWwwAuthToken: requestHandler(DO_GET_WWW_AUTH_TOKEN),
+ handleSubmitVoucher: requestHandler<VoucherResponse>(REDEEM_VOUCHER),
};
public static accountHistory: IAccountHistoryHandlers = {