Skip to content

Commit 4072aab

Browse files
authored
Merge pull request #34 from session-foundation/aerilym/feat-app-pro-backend-fns
feat: add pro backend constants
2 parents 1b8b269 + 70a4cc3 commit 4072aab

File tree

5 files changed

+101
-1
lines changed

5 files changed

+101
-1
lines changed

include/utilities.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "oxenc/hex.h"
1414
#include "session/config/namespaces.hpp"
1515
#include "session/config/profile_pic.hpp"
16+
#include "session/types.h"
1617
#include "session/types.hpp"
1718
#include "utilities.hpp"
1819

@@ -130,6 +131,13 @@ struct toJs_impl<T, std::enable_if_t<std::is_convertible_v<T, std::string_view>>
130131
}
131132
};
132133

134+
template <>
135+
struct toJs_impl<string8> {
136+
auto operator()(const Napi::Env& env, string8 s) const {
137+
return Napi::String::New(env, s.data, s.size);
138+
}
139+
};
140+
133141
template <typename T>
134142
struct toJs_impl<
135143
T,

src/constants.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
#include "constants.hpp"
22

3+
#include "js_native_api_types.h"
34
#include "session/config/contacts.hpp"
45
#include "session/config/groups/info.hpp"
56
#include "session/config/user_groups.hpp"
7+
#include "session/pro_backend.h"
68
#include "session/version.h"
9+
#include "utilities.hpp"
710
#include "version.h"
811

912
namespace session::nodeapi {
@@ -13,6 +16,51 @@ ConstantsWrapper::ConstantsWrapper(const Napi::CallbackInfo& info) :
1316
Napi::Object ConstantsWrapper::Init(Napi::Env env, Napi::Object exports) {
1417
const char* class_name = "CONSTANTS";
1518

19+
auto pro_urls = Napi::Object::New(env);
20+
pro_urls["roadmap"] = toJs(env, SESSION_PRO_URLS.roadmap);
21+
pro_urls["privacy_policy"] = toJs(env, SESSION_PRO_URLS.privacy_policy);
22+
pro_urls["terms_of_service"] = toJs(env, SESSION_PRO_URLS.terms_of_service);
23+
pro_urls["pro_access_not_found"] = toJs(env, SESSION_PRO_URLS.pro_access_not_found);
24+
pro_urls["support_url"] = toJs(env, SESSION_PRO_URLS.support_url);
25+
26+
auto pro_provider_nil = Napi::Object::New(env);
27+
pro_provider_nil["device"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].device);
28+
pro_provider_nil["store"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].store);
29+
pro_provider_nil["platform"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].platform);
30+
pro_provider_nil["platform_account"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].platform_account);
31+
pro_provider_nil["refund_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].refund_url);
32+
pro_provider_nil["refund_after_platform_deadline_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].refund_after_platform_deadline_url);
33+
pro_provider_nil["update_subscription_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].update_subscription_url);
34+
pro_provider_nil["cancel_subscription_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].cancel_subscription_url);
35+
pro_provider_nil["store_other"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].store);
36+
37+
auto pro_provider_google = Napi::Object::New(env);
38+
pro_provider_google["device"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].device);
39+
pro_provider_google["store"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].store);
40+
pro_provider_google["platform"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].platform);
41+
pro_provider_google["platform_account"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].platform_account);
42+
pro_provider_google["refund_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].refund_url);
43+
pro_provider_google["refund_after_platform_deadline_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].refund_after_platform_deadline_url);
44+
pro_provider_google["update_subscription_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].update_subscription_url);
45+
pro_provider_google["cancel_subscription_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].cancel_subscription_url);
46+
pro_provider_google["store_other"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].store);
47+
48+
auto pro_provider_ios = Napi::Object::New(env);
49+
pro_provider_ios["device"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].device);
50+
pro_provider_ios["store"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].store);
51+
pro_provider_ios["platform"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].platform);
52+
pro_provider_ios["platform_account"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].platform_account);
53+
pro_provider_ios["refund_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].refund_url);
54+
pro_provider_ios["refund_after_platform_deadline_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].refund_after_platform_deadline_url);
55+
pro_provider_ios["update_subscription_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].update_subscription_url);
56+
pro_provider_ios["cancel_subscription_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].cancel_subscription_url);
57+
pro_provider_ios["store_other"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].store);
58+
59+
auto pro_providers = Napi::Object::New(env);
60+
pro_providers["Nil"] = toJs(env, pro_provider_nil);
61+
pro_providers["Google"] = toJs(env, pro_provider_google);
62+
pro_providers["iOS"] = toJs(env, pro_provider_ios);
63+
1664
// construct javascript constants object
1765
Napi::Function cls = DefineClass(
1866
env,
@@ -37,6 +85,14 @@ Napi::Object ConstantsWrapper::Init(Napi::Env env, Napi::Object exports) {
3785
"COMMUNITY_FULL_URL_MAX_LENGTH",
3886
Napi::Number::New(env, session::config::community::FULL_URL_MAX_LENGTH),
3987
napi_enumerable),
88+
ObjectWrap::StaticValue(
89+
"LIBSESSION_PRO_URLS",
90+
pro_urls,
91+
napi_enumerable),
92+
ObjectWrap::StaticValue(
93+
"LIBSESSION_PRO_PROVIDERS",
94+
pro_providers,
95+
napi_enumerable),
4096
ObjectWrap::StaticValue(
4197
"LIBSESSION_UTIL_VERSION",
4298
Napi::String::New(env, LIBSESSION_UTIL_VERSION_FULL),

types/pro/pro.d.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
declare module 'libsession_util_nodejs' {
2+
// Must match session-desktop
3+
export enum ProOriginatingPlatform {
4+
Nil = "Nil",
5+
GooglePlayStore = "Google",
6+
iOSAppStore = "iOS",
7+
}
8+
9+
export type ProBackendProviderConstantType = {
10+
device: string;
11+
store: string;
12+
store_other: string;
13+
platform: string;
14+
platform_account: string;
15+
refund_url: string;
16+
refund_after_platform_deadline_url: string;
17+
update_subscription_url: string;
18+
cancel_subscription_url: string;
19+
}
20+
21+
export type ProBackendProviderConstantsType = Record<ProOriginatingPlatform, ProBackendProviderConstantType>
22+
23+
export type ProBackendUrlsType = {
24+
roadmap: string;
25+
privacy_policy: string;
26+
terms_of_service: string;
27+
pro_access_not_found: string;
28+
support_url: string;
29+
}
30+
}

types/shared.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/// <reference path="./pro/pro.d.ts" />
2+
13
declare module 'libsession_util_nodejs' {
24
type Uint8ArrayFixedLength<T extends number> = {
35
buffer: Uint8Array;
@@ -174,6 +176,10 @@ declare module 'libsession_util_nodejs' {
174176
* A string corresponding to the full hash of the commit
175177
*/
176178
LIBSESSION_NODEJS_COMMIT: string;
179+
/** Object containing pro urls **/
180+
LIBSESSION_PRO_URLS: ProBackendUrlsType;
181+
/** Object containing mapped provder constants */
182+
LIBSESSION_PRO_PROVIDERS: ProBackendProviderConstantsType;
177183
};
178184

179185
export const CONSTANTS: ConstantsType;

0 commit comments

Comments
 (0)