@unvired/react-native-wrapper-sdk 0.0.22 → 0.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/UnviredWrapper.d.ts +25 -22
  2. package/dist/UnviredWrapper.d.ts.map +1 -1
  3. package/dist/UnviredWrapper.js +32 -48
  4. package/dist/lib/auth/AuthBuilder.d.ts.map +1 -0
  5. package/dist/lib/auth/AuthService.d.ts +27 -0
  6. package/dist/lib/auth/AuthService.d.ts.map +1 -0
  7. package/dist/lib/auth/AuthService.js +46 -0
  8. package/dist/lib/database/DatabaseService.d.ts +43 -0
  9. package/dist/lib/database/DatabaseService.d.ts.map +1 -0
  10. package/dist/lib/database/DatabaseService.js +34 -0
  11. package/dist/lib/file/FileService.d.ts +48 -0
  12. package/dist/lib/file/FileService.d.ts.map +1 -0
  13. package/dist/lib/file/FileService.js +156 -0
  14. package/dist/lib/logger/LoggerService.d.ts +45 -0
  15. package/dist/lib/logger/LoggerService.d.ts.map +1 -0
  16. package/dist/lib/logger/LoggerService.js +65 -0
  17. package/dist/lib/notification/NotificationService.d.ts +28 -0
  18. package/dist/lib/notification/NotificationService.d.ts.map +1 -0
  19. package/dist/lib/notification/NotificationService.js +47 -0
  20. package/dist/lib/settings/SettingsService.d.ts +44 -0
  21. package/dist/lib/settings/SettingsService.d.ts.map +1 -0
  22. package/dist/lib/settings/SettingsService.js +120 -0
  23. package/dist/lib/storage/StorageService.d.ts +13 -0
  24. package/dist/lib/storage/StorageService.d.ts.map +1 -0
  25. package/dist/lib/storage/StorageService.js +19 -0
  26. package/dist/lib/sync/SyncService.d.ts +96 -0
  27. package/dist/lib/sync/SyncService.d.ts.map +1 -0
  28. package/dist/lib/sync/SyncService.js +139 -0
  29. package/package.json +11 -6
  30. package/src/UnviredWrapper.ts +34 -52
  31. package/src/lib/auth/AuthService.ts +45 -0
  32. package/src/lib/database/DatabaseService.ts +53 -0
  33. package/src/lib/file/FileService.ts +166 -0
  34. package/src/lib/logger/LoggerService.ts +70 -0
  35. package/src/lib/notification/NotificationService.ts +45 -0
  36. package/src/lib/settings/SettingsService.ts +150 -0
  37. package/src/lib/storage/StorageService.ts +27 -0
  38. package/src/lib/sync/SyncService.ts +160 -0
  39. package/dist/lib/AuthBuilder.d.ts.map +0 -1
  40. /package/dist/lib/{AuthBuilder.d.ts → auth/AuthBuilder.d.ts} +0 -0
  41. /package/dist/lib/{AuthBuilder.js → auth/AuthBuilder.js} +0 -0
  42. /package/src/lib/{AuthBuilder.ts → auth/AuthBuilder.ts} +0 -0
@@ -1,5 +1,11 @@
1
- import AuthBuilder from './lib/AuthBuilder';
2
- import { AuthenticationService, PlatformManager } from '@unvired/unvired-ts-core-sdk';
1
+ import { AuthenticationService } from '@unvired/unvired-ts-core-sdk';
2
+ import { AuthService } from './lib/auth/AuthService';
3
+ import { DatabaseService } from './lib/database/DatabaseService';
4
+ import { FileService } from './lib/file/FileService';
5
+ import { NotificationService } from './lib/notification/NotificationService';
6
+ import { SyncService } from './lib/sync/SyncService';
7
+ import { SettingsService } from './lib/settings/SettingsService';
8
+ import { LoggerService } from './lib/logger/LoggerService';
3
9
 
4
10
  /**
5
11
  * React Native Wrapper for Unvired Core SDK
@@ -11,78 +17,54 @@ export class UnviredWrapper {
11
17
  }
12
18
 
13
19
  /**
14
- * Returns a builder for login method
15
- * Can be awaited directly: await sdk.login().setAppName("my-app")
20
+ * Access Authentication operations
16
21
  */
17
- login(): AuthBuilder {
18
- return new AuthBuilder('login');
22
+ auth(): AuthService {
23
+ return new AuthService();
19
24
  }
20
25
 
21
26
  /**
22
- * Returns a builder for authenticateAndActivate method
23
- * Can be awaited directly: await sdk.authenticateAndActivate().setUsername("demo")
27
+ * Access Database operations
24
28
  */
25
- authenticateAndActivate(): AuthBuilder {
26
- return new AuthBuilder('authenticateAndActivate');
29
+ database(): DatabaseService {
30
+ return new DatabaseService();
27
31
  }
28
32
 
29
33
  /**
30
- * Returns a builder for authenticateLocal method
31
- * Can be awaited directly: await sdk.authenticateLocal().setUsername("demo")
34
+ * Access File/Attachment operations
32
35
  */
33
- authenticateLocal(): AuthBuilder {
34
- return new AuthBuilder('authenticateLocal');
36
+ file(): FileService {
37
+ return new FileService();
35
38
  }
36
39
 
37
40
  /**
38
- * Logout method - Logs out the current user
41
+ * Access Notification operations
39
42
  */
40
- async logout(): Promise<any> {
41
- const authService = (AuthenticationService as any).instance;
42
- return authService.logout();
43
+ notification(): NotificationService {
44
+ return new NotificationService();
43
45
  }
44
46
 
45
47
  /**
46
- * Clear all data
48
+ * Access Synchronization operations
47
49
  */
48
- async clearData(): Promise<any> {
49
- const authService = (AuthenticationService as any).instance;
50
- return authService.clearData();
50
+ sync(): SyncService {
51
+ return new SyncService();
51
52
  }
52
53
 
53
- // Logging methods - delegating to PlatformManager's adapter
54
- static logInfo(className: string, methodName: string, message: string) {
55
- return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().logInfo(className, methodName, message);
56
- }
57
-
58
- static logError(className: string, methodName: string, message: string) {
59
- return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().logError(className, methodName, message);
60
- }
61
-
62
- static logDebug(className: string, methodName: string, message: string) {
63
- return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().logDebug(className, methodName, message);
64
- }
65
-
66
-
67
- static setLogLevel(level: string) {
68
- return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().setLogLevel(level);
69
- }
70
-
71
- static async getLogFileURL(): Promise<string> {
72
- return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().getLogFileURL();
73
- }
74
-
75
- static async getLogFileContent(): Promise<string> {
76
- return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().getLogFileContent();
54
+ /**
55
+ * Access Settings and Utility operations
56
+ */
57
+ settings(): SettingsService {
58
+ return new SettingsService();
77
59
  }
78
60
 
79
- static async getBackupLogFileContent(): Promise<string> {
80
- return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().getBackupLogFileContent();
61
+ /**
62
+ * Access Logger operations
63
+ */
64
+ logger(): LoggerService {
65
+ return new LoggerService();
81
66
  }
82
67
 
83
- static async clearLogFile(): Promise<void> {
84
- return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().clearLogFile();
85
- }
86
68
  }
87
69
 
88
- export default UnviredWrapper;
70
+ export default UnviredWrapper;
@@ -0,0 +1,45 @@
1
+ import AuthBuilder from './AuthBuilder';
2
+ import { AuthenticationService } from '@unvired/unvired-ts-core-sdk';
3
+
4
+ /**
5
+ * Service for handling Authentication operations
6
+ */
7
+ export class AuthService {
8
+
9
+ /**
10
+ * Returns a builder for login method
11
+ */
12
+ login(): AuthBuilder {
13
+ return new AuthBuilder('login');
14
+ }
15
+
16
+ /**
17
+ * Returns a builder for authenticateAndActivate method
18
+ */
19
+ authenticateAndActivate(): AuthBuilder {
20
+ return new AuthBuilder('authenticateAndActivate');
21
+ }
22
+
23
+ /**
24
+ * Returns a builder for authenticateLocal method
25
+ */
26
+ authenticateLocal(): AuthBuilder {
27
+ return new AuthBuilder('authenticateLocal');
28
+ }
29
+
30
+ /**
31
+ * Logout method - Logs out the current user
32
+ */
33
+ async logout(): Promise<any> {
34
+ const authService = (AuthenticationService as any).instance;
35
+ return authService.logout();
36
+ }
37
+
38
+ /**
39
+ * Clear all data
40
+ */
41
+ async clearData(): Promise<any> {
42
+ const authService = (AuthenticationService as any).instance;
43
+ return authService.clearData();
44
+ }
45
+ }
@@ -0,0 +1,53 @@
1
+ import { PlatformManager } from '@unvired/unvired-ts-core-sdk';
2
+
3
+
4
+ export interface IDatabaseAdapter {
5
+ create(options: { userId: string }, successCallback: (result: any) => void, errorCallback: (error: any) => void): void;
6
+ execute(options: any, successCallback: (result: any) => void, errorCallback: (error: any) => void): void;
7
+ executeStatementOnPath(dbPath: string, sqlQuery: string, callback: (result: any) => void): void;
8
+ selectFromPath(dbPath: string, sqlQuery: string, callback: (result: any) => void): void;
9
+ createDatabase(dbPath: string, callback: () => void): void;
10
+ getDBFilePath(options: { dbType: string }, callback: (path: string) => void): void;
11
+ saveWebDB(options: { userId: string }, callback: (result: any) => void, errorCallback: (error: any) => void): void;
12
+ exportWebDB(options: { userId: string }, callback: (result: any) => void, errorCallback: (error: any) => void): void;
13
+ deleteUserData(options: { userId: string }, callback: () => void, errorCallback: (error: any) => void): void;
14
+ }
15
+
16
+ export class DatabaseService {
17
+
18
+ create(options: { userId: string }, successCallback: (result: any) => void, errorCallback: (error: any) => void): void {
19
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().create(options, successCallback, errorCallback);
20
+ }
21
+
22
+ execute(options: any, successCallback: (result: any) => void, errorCallback: (error: any) => void): void {
23
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().execute(options, successCallback, errorCallback);
24
+ }
25
+
26
+ executeStatementOnPath(dbPath: string, sqlQuery: string, callback: (result: any) => void): void {
27
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().executeStatementOnPath(dbPath, sqlQuery, callback);
28
+ }
29
+
30
+ selectFromPath(dbPath: string, sqlQuery: string, callback: (result: any) => void): void {
31
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().selectFromPath(dbPath, sqlQuery, callback);
32
+ }
33
+
34
+ createDatabase(dbPath: string, callback: () => void): void {
35
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().createDatabase(dbPath, callback);
36
+ }
37
+
38
+ getDBFilePath(options: { dbType: string }, callback: (path: string) => void): void {
39
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().getDBFilePath(options, callback);
40
+ }
41
+
42
+ saveWebDB(options: { userId: string }, callback: (result: any) => void, errorCallback: (error: any) => void): void {
43
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().saveWebDB(options, callback, errorCallback);
44
+ }
45
+
46
+ exportWebDB(options: { userId: string }, callback: (result: any) => void, errorCallback: (error: any) => void): void {
47
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().exportWebDB(options, callback, errorCallback);
48
+ }
49
+
50
+ deleteUserData(options: { userId: string }, callback: () => void, errorCallback: (error: any) => void): void {
51
+ PlatformManager.getInstance().getPlatformAdapter().getDatabaseAdapter().deleteUserData(options, callback, errorCallback);
52
+ }
53
+ }
@@ -0,0 +1,166 @@
1
+ import { PlatformManager } from '@unvired/unvired-ts-core-sdk';
2
+
3
+ export interface IDirectoryReader {
4
+ readEntries(successCallback: (entries: IFileEntry[]) => void, errorCallback: (error: any) => void): void;
5
+ }
6
+
7
+ export interface IFileEntry {
8
+ fullPath: string;
9
+ nativeURL: string;
10
+ isDirectory?: boolean;
11
+ remove(callback: () => void, errorCallback: (error: any) => void): void;
12
+ removeRecursively(callback: () => void, errorCallback: (error: any) => void): void;
13
+ createReader(): IDirectoryReader;
14
+ getDirectory?(path: string, options: { create: boolean }, callback: (entry: IFileEntry) => void, errorCallback: (error: any) => void): void;
15
+ getFile?(path: string, options: { create: boolean }, callback: (entry: IFileEntry) => void, errorCallback: (error: any) => void): void;
16
+ file?(callback: (file: File) => void, errorCallback: (error: any) => void): void;
17
+ createWriter?(callback: (writer: any) => void, errorCallback: (error: any) => void): void;
18
+ }
19
+
20
+ export class FileService {
21
+
22
+ getDocumentDirectory(): string {
23
+ // @ts-ignore
24
+ return PlatformManager.getInstance().getPlatformAdapter().getDocumentDirectory();
25
+ }
26
+
27
+ resolveLocalFileSystemURL(url: string): Promise<IFileEntry> {
28
+ // @ts-ignore
29
+ return PlatformManager.getInstance().getPlatformAdapter().resolveLocalFileSystemURL(url);
30
+ }
31
+
32
+ async getFolderBasedOnUserId(userId: string): Promise<string> {
33
+ // @ts-ignore
34
+ return await PlatformManager.getInstance().getPlatformAdapter().getFolderBasedOnUserId(userId);
35
+ }
36
+
37
+ async deleteUserFolder(userId: string): Promise<void> {
38
+ // @ts-ignore
39
+ await PlatformManager.getInstance().getPlatformAdapter().deleteUserFolder(userId);
40
+ }
41
+
42
+ /**
43
+ * Reads an external file as ArrayBuffer using IFileEntry API
44
+ * @param filePath Absolute path to the file
45
+ */
46
+ async readExternalFile(filePath: string): Promise<ArrayBuffer> {
47
+ // Get the file entry
48
+ const fileEntry = await this.resolveLocalFileSystemURL(filePath);
49
+
50
+ return new Promise((resolve, reject) => {
51
+ // Use the file() method to read the file
52
+ if (!fileEntry.file) {
53
+ reject(new Error('file() method not available on entry'));
54
+ return;
55
+ }
56
+
57
+ fileEntry.file(
58
+ async (fileMetadata: any) => {
59
+ try {
60
+ // Read the file using react-native-fs
61
+ const RNFS = await import('react-native-fs');
62
+ const content = await RNFS.readFile(fileMetadata.path, 'utf8');
63
+
64
+ // Convert string to ArrayBuffer
65
+ const encoder = new TextEncoder();
66
+ resolve(encoder.encode(content).buffer);
67
+ } catch (error) {
68
+ reject(error);
69
+ }
70
+ },
71
+ (error: any) => {
72
+ reject(error);
73
+ }
74
+ );
75
+ });
76
+ }
77
+
78
+ /**
79
+ * Writes data to an external file using IFileEntry API
80
+ * @param filePath Parent directory path
81
+ * @param fileName File name
82
+ * @param data Data to write (ArrayBuffer or string)
83
+ */
84
+ async writeExternalFile(filePath: string, fileName: string, data: ArrayBuffer | string): Promise<void> {
85
+ // Convert data to string if it's ArrayBuffer
86
+ let content: string;
87
+ if (data instanceof ArrayBuffer) {
88
+ const decoder = new TextDecoder();
89
+ content = decoder.decode(data);
90
+ } else {
91
+ content = data;
92
+ }
93
+
94
+ // Get the directory entry
95
+ const dirEntry = await this.resolveLocalFileSystemURL(filePath);
96
+
97
+ return new Promise((resolve, reject) => {
98
+ // Get or create the file
99
+ if (!dirEntry.getFile) {
100
+ reject(new Error('getFile() method not available on directory entry'));
101
+ return;
102
+ }
103
+
104
+ dirEntry.getFile(
105
+ fileName,
106
+ { create: true },
107
+ (fileEntry: IFileEntry) => {
108
+ // Create a writer
109
+ if (!fileEntry.createWriter) {
110
+ reject(new Error('createWriter() method not available on file entry'));
111
+ return;
112
+ }
113
+
114
+ fileEntry.createWriter(
115
+ (writer: any) => {
116
+ writer.onwriteend = () => {
117
+ resolve();
118
+ };
119
+ writer.onerror = (error: any) => {
120
+ reject(error);
121
+ };
122
+
123
+ // Write the content
124
+ writer.write(content);
125
+ },
126
+ (error: any) => {
127
+ reject(error);
128
+ }
129
+ );
130
+ },
131
+ (error: any) => {
132
+ reject(error);
133
+ }
134
+ );
135
+ });
136
+ }
137
+
138
+ /**
139
+ * Deletes an external file using IFileEntry API
140
+ * @param filePath Absolute path to the file
141
+ */
142
+ async deleteExternalFile(filePath: string): Promise<void> {
143
+ const fileEntry = await this.resolveLocalFileSystemURL(filePath);
144
+
145
+ return new Promise((resolve, reject) => {
146
+ fileEntry.remove(
147
+ () => resolve(),
148
+ (error: any) => reject(error)
149
+ );
150
+ });
151
+ }
152
+
153
+ /**
154
+ * Checks if a file exists using IFileEntry API
155
+ * @param filePath Absolute path to the file
156
+ */
157
+ async fileExists(filePath: string): Promise<boolean> {
158
+ try {
159
+ await this.resolveLocalFileSystemURL(filePath);
160
+ return true;
161
+ } catch (error) {
162
+ return false;
163
+ }
164
+ }
165
+
166
+ }
@@ -0,0 +1,70 @@
1
+ import { PlatformManager } from '@unvired/unvired-ts-core-sdk';
2
+
3
+ export class LoggerService {
4
+
5
+ /**
6
+ * Log Information
7
+ * @param className Class Name
8
+ * @param methodName Method Name
9
+ * @param message Message
10
+ */
11
+ info(className: string, methodName: string, message: string): void {
12
+ PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().logInfo(className, methodName, message);
13
+ }
14
+
15
+ /**
16
+ * Log Error
17
+ * @param className Class Name
18
+ * @param methodName Method Name
19
+ * @param message Message
20
+ */
21
+ error(className: string, methodName: string, message: string): void {
22
+ PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().logError(className, methodName, message);
23
+ }
24
+
25
+ /**
26
+ * Log Debug
27
+ * @param className Class Name
28
+ * @param methodName Method Name
29
+ * @param message Message
30
+ */
31
+ debug(className: string, methodName: string, message: string): void {
32
+ PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().logDebug(className, methodName, message);
33
+ }
34
+
35
+ /**
36
+ * Set Log Level
37
+ * @param level Log Level
38
+ */
39
+ setLogLevel(level: string): void {
40
+ PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().setLogLevel(level);
41
+ }
42
+
43
+ /**
44
+ * Get Log File URL
45
+ */
46
+ async getLogFileURL(): Promise<string> {
47
+ return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().getLogFileURL();
48
+ }
49
+
50
+ /**
51
+ * Get Log File Content
52
+ */
53
+ async getLogFileContent(): Promise<string> {
54
+ return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().getLogFileContent();
55
+ }
56
+
57
+ /**
58
+ * Get Backup Log File Content
59
+ */
60
+ async getBackupLogFileContent(): Promise<string> {
61
+ return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().getBackupLogFileContent();
62
+ }
63
+
64
+ /**
65
+ * Clear Log File
66
+ */
67
+ async clearLogFile(): Promise<void> {
68
+ return PlatformManager.getInstance().getPlatformAdapter().getLoggerAdapter().clearLogFile();
69
+ }
70
+ }
@@ -0,0 +1,45 @@
1
+ import { PlatformManager } from '@unvired/unvired-ts-core-sdk';
2
+
3
+ export class NotificationService {
4
+
5
+ private get adapter() {
6
+ return PlatformManager.getInstance().getPlatformAdapter().getPushNotificationAdapter();
7
+ }
8
+
9
+ /**
10
+ * Requests permission and gets token
11
+ */
12
+ async requestPermission(options?: { forceShow: boolean }): Promise<void> {
13
+ return this.adapter?.requestPermission(options);
14
+ }
15
+
16
+ /**
17
+ * Gets the push token
18
+ */
19
+ async getToken(): Promise<string | undefined> {
20
+ return this.adapter?.getToken();
21
+ }
22
+
23
+ /**
24
+ * Sets callback for token refresh
25
+ */
26
+ onTokenRefresh(callback: (token: string) => void): void {
27
+ this.adapter?.onTokenRefresh(callback);
28
+ }
29
+
30
+ /**
31
+ * Sets listener for incoming notifications (foreground)
32
+ * @param onMessage Callback when a notification is received
33
+ */
34
+ onNotificationReceived(onMessage: (data: any) => void): void {
35
+ this.adapter?.onMessage(onMessage);
36
+ }
37
+
38
+ /**
39
+ * Sets listener for incoming notifications (background)
40
+ * @param onMessage Callback when a notification is received
41
+ */
42
+ onBackgroundNotificationReceived(onMessage: (data: any) => void): void {
43
+ this.adapter?.onBackgroundMessage(onMessage);
44
+ }
45
+ }
@@ -0,0 +1,150 @@
1
+ import {
2
+ SettingsHelper,
3
+ FrameworkSettingsManager,
4
+ FrameworkSettingsFields,
5
+ UserSettingsManager,
6
+ UserSettingsFields,
7
+ UnviredAccountManager,
8
+ HttpConnection,
9
+ AuthenticationService,
10
+ PlatformManager,
11
+ } from '@unvired/unvired-ts-core-sdk';
12
+
13
+ export class SettingsService {
14
+ /**
15
+ * Get current log level
16
+ */
17
+ async getLogLevel(): Promise<string> {
18
+ return FrameworkSettingsManager.getInstance().getFieldValue(FrameworkSettingsFields.logLevel);
19
+ }
20
+
21
+ getDeviceInfo(): string {
22
+ // @ts-ignore
23
+ return PlatformManager.getInstance().getPlatformAdapter().getDeviceInfo();
24
+ }
25
+
26
+ getPlatform(): string {
27
+ // @ts-ignore
28
+ return PlatformManager.getInstance().getPlatformAdapter().getPlatform();
29
+ }
30
+
31
+ getFrontendType(): string {
32
+ // @ts-ignore
33
+ return PlatformManager.getInstance().getPlatformAdapter().getFrontendType();
34
+ }
35
+ /**
36
+ * Set log level
37
+ * @param logLevel Log Level
38
+ */
39
+ async setLogLevel(logLevel: string): Promise<void> {
40
+ return SettingsHelper.setLogLevel(logLevel);
41
+ }
42
+
43
+ /**
44
+ * Send logs to server
45
+ */
46
+ async sendLogToServer(): Promise<void> {
47
+ return SettingsHelper.sendLogsToServer();
48
+ }
49
+
50
+ /**
51
+ * Create and get Log Zip path (for email etc)
52
+ */
53
+ async getLogZipPath(): Promise<string> {
54
+ return SettingsHelper.createAndGetLogZipPath();
55
+ }
56
+
57
+ /**
58
+ * Test Push Notification
59
+ */
60
+ async testPushNotification(): Promise<void> {
61
+ return SettingsHelper.testPushNotification();
62
+ }
63
+
64
+ /**
65
+ * Get list of Info Messages
66
+ */
67
+ async getInfoMessages(headerName: string, lid: string): Promise<any[]> {
68
+ return SettingsHelper.getInfoMessages(headerName, lid);
69
+ }
70
+
71
+ /**
72
+ * Get User Settings / Current Account Information
73
+ */
74
+ async getUserSettings(): Promise<any> {
75
+ const unviredAccount = UnviredAccountManager.getInstance().getLastLoggedInAccount();
76
+ if (!unviredAccount) {
77
+ throw new Error('No account found');
78
+ }
79
+
80
+ let jwtToken = (AuthenticationService as any).instance.jwtToken;
81
+ // Fallback or re-fetch token logic
82
+ if (!jwtToken) {
83
+ jwtToken = unviredAccount.getJwtToken();
84
+ }
85
+
86
+ const serverType = await FrameworkSettingsManager.getInstance().getFieldValue(
87
+ FrameworkSettingsFields.serverType
88
+ );
89
+ const emailId = await FrameworkSettingsManager.getInstance().getFieldValue(
90
+ FrameworkSettingsFields.email
91
+ );
92
+ const unviredUserId = await UserSettingsManager.getInstance().getFieldValue(
93
+ UserSettingsFields.unviredUserId
94
+ );
95
+ const unviredPassword = await UserSettingsManager.getInstance().getFieldValue(
96
+ UserSettingsFields.unviredPassword
97
+ );
98
+
99
+ // Accessing loginParameters from AuthenticationService might need cast if it's protected/private or simply public
100
+ // index.d.ts says: loginParameters: any;
101
+ const loginParams = (AuthenticationService as any).instance.loginParameters || {};
102
+
103
+ return {
104
+ UNVIRED_ID: unviredUserId,
105
+ USER_ID: loginParams.username || unviredUserId,
106
+ FIRST_NAME: unviredAccount.getFirstName(),
107
+ LAST_NAME: unviredAccount.getLastName(),
108
+ FULL_NAME: `${unviredAccount.getFirstName()} ${unviredAccount.getLastName()}`,
109
+ EMAIL: emailId || '',
110
+ SERVER_URL: unviredAccount.getServerURL(),
111
+ SERVER_TYPE: serverType || '',
112
+ LOGIN_TYPE: loginParams.loginType,
113
+ UNVIRED_PASSWORD: unviredPassword || '',
114
+ JWT_TOKEN: jwtToken,
115
+ };
116
+ }
117
+
118
+ /**
119
+ * Set Auth Token
120
+ * @param token JWT Token
121
+ */
122
+ async setAuthToken(token: string): Promise<void> {
123
+ (AuthenticationService as any).instance.jwtToken = token;
124
+ await UserSettingsManager.getInstance().setFieldValue(UserSettingsFields.jwtToken, token);
125
+ }
126
+
127
+ /**
128
+ * Get Auth Token Validity (remaining seconds)
129
+ */
130
+ async getAuthTokenValidity(): Promise<number> {
131
+ const token = await UserSettingsManager.getInstance().getFieldValue(
132
+ UserSettingsFields.jwtToken
133
+ );
134
+ if (!token) return 0;
135
+
136
+ try {
137
+ const parts = token.split('.');
138
+ if (parts.length !== 3) return 0;
139
+
140
+ const payload = JSON.parse(atob(parts[1]));
141
+ if (!payload.exp) return 0;
142
+
143
+ const now = Math.floor(Date.now() / 1000);
144
+ const remaining = payload.exp - now;
145
+ return remaining > 0 ? remaining : 0;
146
+ } catch (e) {
147
+ return 0;
148
+ }
149
+ }
150
+ }
@@ -0,0 +1,27 @@
1
+ import { PlatformManager } from '@unvired/unvired-ts-core-sdk';
2
+
3
+ export interface IStorageAdapter {
4
+ getItem(key: string): void;
5
+ setItem(key: string, value: string): void;
6
+ removeItem(key: string): void;
7
+ clear(): void;
8
+ }
9
+
10
+ export class StorageService {
11
+
12
+ getItem(key: string): void {
13
+ PlatformManager.getInstance().getPlatformAdapter().getStorageAdapter().getItem(key);
14
+ }
15
+
16
+ setItem(key: string, value: string): void {
17
+ PlatformManager.getInstance().getPlatformAdapter().getStorageAdapter().setItem(key, value);
18
+ }
19
+
20
+ removeItem(key: string): void {
21
+ PlatformManager.getInstance().getPlatformAdapter().getStorageAdapter().removeItem(key);
22
+ }
23
+
24
+ clear(): void {
25
+ PlatformManager.getInstance().getPlatformAdapter().getStorageAdapter().clear();
26
+ }
27
+ }