diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2020-02-26 16:06:59 +0100 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2020-04-06 17:44:45 +0200 |
| commit | dab4202bea4b5cfe9121cee513b61a3fb45bbb19 (patch) | |
| tree | 567b38a65a41a48c0f0262e4605502a9446d5de1 /gui/src/shared | |
| parent | 6157a809ad6eb5cdb06b7fcaea9549b3f100f07a (diff) | |
| download | mullvadvpn-dab4202bea4b5cfe9121cee513b61a3fb45bbb19.tar.xz mullvadvpn-dab4202bea4b5cfe9121cee513b61a3fb45bbb19.zip | |
Add submitVoucher call
Diffstat (limited to 'gui/src/shared')
| -rw-r--r-- | gui/src/shared/daemon-rpc-types.ts | 9 | ||||
| -rw-r--r-- | gui/src/shared/ipc-event-channel.ts | 6 |
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 = { |
