@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.
- package/dist/UnviredWrapper.d.ts +25 -22
- package/dist/UnviredWrapper.d.ts.map +1 -1
- package/dist/UnviredWrapper.js +32 -48
- package/dist/lib/auth/AuthBuilder.d.ts.map +1 -0
- package/dist/lib/auth/AuthService.d.ts +27 -0
- package/dist/lib/auth/AuthService.d.ts.map +1 -0
- package/dist/lib/auth/AuthService.js +46 -0
- package/dist/lib/database/DatabaseService.d.ts +43 -0
- package/dist/lib/database/DatabaseService.d.ts.map +1 -0
- package/dist/lib/database/DatabaseService.js +34 -0
- package/dist/lib/file/FileService.d.ts +48 -0
- package/dist/lib/file/FileService.d.ts.map +1 -0
- package/dist/lib/file/FileService.js +156 -0
- package/dist/lib/logger/LoggerService.d.ts +45 -0
- package/dist/lib/logger/LoggerService.d.ts.map +1 -0
- package/dist/lib/logger/LoggerService.js +65 -0
- package/dist/lib/notification/NotificationService.d.ts +28 -0
- package/dist/lib/notification/NotificationService.d.ts.map +1 -0
- package/dist/lib/notification/NotificationService.js +47 -0
- package/dist/lib/settings/SettingsService.d.ts +44 -0
- package/dist/lib/settings/SettingsService.d.ts.map +1 -0
- package/dist/lib/settings/SettingsService.js +120 -0
- package/dist/lib/storage/StorageService.d.ts +13 -0
- package/dist/lib/storage/StorageService.d.ts.map +1 -0
- package/dist/lib/storage/StorageService.js +19 -0
- package/dist/lib/sync/SyncService.d.ts +96 -0
- package/dist/lib/sync/SyncService.d.ts.map +1 -0
- package/dist/lib/sync/SyncService.js +139 -0
- package/package.json +11 -6
- package/src/UnviredWrapper.ts +34 -52
- package/src/lib/auth/AuthService.ts +45 -0
- package/src/lib/database/DatabaseService.ts +53 -0
- package/src/lib/file/FileService.ts +166 -0
- package/src/lib/logger/LoggerService.ts +70 -0
- package/src/lib/notification/NotificationService.ts +45 -0
- package/src/lib/settings/SettingsService.ts +150 -0
- package/src/lib/storage/StorageService.ts +27 -0
- package/src/lib/sync/SyncService.ts +160 -0
- package/dist/lib/AuthBuilder.d.ts.map +0 -1
- /package/dist/lib/{AuthBuilder.d.ts → auth/AuthBuilder.d.ts} +0 -0
- /package/dist/lib/{AuthBuilder.js → auth/AuthBuilder.js} +0 -0
- /package/src/lib/{AuthBuilder.ts → auth/AuthBuilder.ts} +0 -0
package/src/UnviredWrapper.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
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
|
-
*
|
|
15
|
-
* Can be awaited directly: await sdk.login().setAppName("my-app")
|
|
20
|
+
* Access Authentication operations
|
|
16
21
|
*/
|
|
17
|
-
|
|
18
|
-
return new
|
|
22
|
+
auth(): AuthService {
|
|
23
|
+
return new AuthService();
|
|
19
24
|
}
|
|
20
25
|
|
|
21
26
|
/**
|
|
22
|
-
*
|
|
23
|
-
* Can be awaited directly: await sdk.authenticateAndActivate().setUsername("demo")
|
|
27
|
+
* Access Database operations
|
|
24
28
|
*/
|
|
25
|
-
|
|
26
|
-
return new
|
|
29
|
+
database(): DatabaseService {
|
|
30
|
+
return new DatabaseService();
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
|
-
*
|
|
31
|
-
* Can be awaited directly: await sdk.authenticateLocal().setUsername("demo")
|
|
34
|
+
* Access File/Attachment operations
|
|
32
35
|
*/
|
|
33
|
-
|
|
34
|
-
return new
|
|
36
|
+
file(): FileService {
|
|
37
|
+
return new FileService();
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
/**
|
|
38
|
-
*
|
|
41
|
+
* Access Notification operations
|
|
39
42
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return authService.logout();
|
|
43
|
+
notification(): NotificationService {
|
|
44
|
+
return new NotificationService();
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
|
-
*
|
|
48
|
+
* Access Synchronization operations
|
|
47
49
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return authService.clearData();
|
|
50
|
+
sync(): SyncService {
|
|
51
|
+
return new SyncService();
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
80
|
-
|
|
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
|
+
}
|