Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions include/utilities.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "oxenc/hex.h"
#include "session/config/namespaces.hpp"
#include "session/config/profile_pic.hpp"
#include "session/types.h"
#include "session/types.hpp"
#include "utilities.hpp"

Expand Down Expand Up @@ -130,6 +131,13 @@ struct toJs_impl<T, std::enable_if_t<std::is_convertible_v<T, std::string_view>>
}
};

template <>
struct toJs_impl<string8> {
auto operator()(const Napi::Env& env, string8 s) const {
return Napi::String::New(env, s.data, s.size);
}
};

template <typename T>
struct toJs_impl<
T,
Expand Down
56 changes: 56 additions & 0 deletions src/constants.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
#include "constants.hpp"

#include "js_native_api_types.h"
#include "session/config/contacts.hpp"
#include "session/config/groups/info.hpp"
#include "session/config/user_groups.hpp"
#include "session/pro_backend.h"
#include "session/version.h"
#include "utilities.hpp"
#include "version.h"

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

auto pro_urls = Napi::Object::New(env);
pro_urls["roadmap"] = toJs(env, SESSION_PRO_URLS.roadmap);
pro_urls["privacy_policy"] = toJs(env, SESSION_PRO_URLS.privacy_policy);
pro_urls["terms_of_service"] = toJs(env, SESSION_PRO_URLS.terms_of_service);
pro_urls["pro_access_not_found"] = toJs(env, SESSION_PRO_URLS.pro_access_not_found);
pro_urls["support_url"] = toJs(env, SESSION_PRO_URLS.support_url);

auto pro_provider_nil = Napi::Object::New(env);
pro_provider_nil["device"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].device);
pro_provider_nil["store"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].store);
pro_provider_nil["platform"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].platform);
pro_provider_nil["platform_account"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].platform_account);
pro_provider_nil["refund_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].refund_url);
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);
pro_provider_nil["update_subscription_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].update_subscription_url);
pro_provider_nil["cancel_subscription_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].cancel_subscription_url);
pro_provider_nil["store_other"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL].store);

auto pro_provider_google = Napi::Object::New(env);
pro_provider_google["device"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].device);
pro_provider_google["store"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].store);
pro_provider_google["platform"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].platform);
pro_provider_google["platform_account"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].platform_account);
pro_provider_google["refund_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].refund_url);
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);
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);
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);
pro_provider_google["store_other"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].store);

auto pro_provider_ios = Napi::Object::New(env);
pro_provider_ios["device"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].device);
pro_provider_ios["store"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].store);
pro_provider_ios["platform"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].platform);
pro_provider_ios["platform_account"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].platform_account);
pro_provider_ios["refund_url"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_IOS_APP_STORE].refund_url);
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);
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);
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);
pro_provider_ios["store_other"] = toJs(env, SESSION_PRO_BACKEND_PAYMENT_PROVIDER_METADATA[SESSION_PRO_BACKEND_PAYMENT_PROVIDER_GOOGLE_PLAY_STORE].store);

auto pro_providers = Napi::Object::New(env);
pro_providers["Nil"] = toJs(env, pro_provider_nil);
pro_providers["Google"] = toJs(env, pro_provider_google);
pro_providers["iOS"] = toJs(env, pro_provider_ios);

// construct javascript constants object
Napi::Function cls = DefineClass(
env,
Expand All @@ -37,6 +85,14 @@ Napi::Object ConstantsWrapper::Init(Napi::Env env, Napi::Object exports) {
"COMMUNITY_FULL_URL_MAX_LENGTH",
Napi::Number::New(env, session::config::community::FULL_URL_MAX_LENGTH),
napi_enumerable),
ObjectWrap::StaticValue(
"LIBSESSION_PRO_URLS",
pro_urls,
napi_enumerable),
ObjectWrap::StaticValue(
"LIBSESSION_PRO_PROVIDERS",
pro_providers,
napi_enumerable),
ObjectWrap::StaticValue(
"LIBSESSION_UTIL_VERSION",
Napi::String::New(env, LIBSESSION_UTIL_VERSION_FULL),
Expand Down
30 changes: 30 additions & 0 deletions types/pro/pro.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
declare module 'libsession_util_nodejs' {
// Must match session-desktop
export enum ProOriginatingPlatform {
Nil = "Nil",
GooglePlayStore = "Google",
iOSAppStore = "iOS",
}

export type ProBackendProviderConstantType = {
device: string;
store: string;
store_other: string;
platform: string;
platform_account: string;
refund_url: string;
refund_after_platform_deadline_url: string;
update_subscription_url: string;
cancel_subscription_url: string;
}

export type ProBackendProviderConstantsType = Record<ProOriginatingPlatform, ProBackendProviderConstantType>

export type ProBackendUrlsType = {
roadmap: string;
privacy_policy: string;
terms_of_service: string;
pro_access_not_found: string;
support_url: string;
}
}
6 changes: 6 additions & 0 deletions types/shared.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/// <reference path="./pro/pro.d.ts" />

declare module 'libsession_util_nodejs' {
type Uint8ArrayFixedLength<T extends number> = {
buffer: Uint8Array;
Expand Down Expand Up @@ -174,6 +176,10 @@ declare module 'libsession_util_nodejs' {
* A string corresponding to the full hash of the commit
*/
LIBSESSION_NODEJS_COMMIT: string;
/** Object containing pro urls **/
LIBSESSION_PRO_URLS: ProBackendUrlsType;
/** Object containing mapped provder constants */
LIBSESSION_PRO_PROVIDERS: ProBackendProviderConstantsType;
};

export const CONSTANTS: ConstantsType;
Expand Down