diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..82694f25 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "packages/mmkv-metal/src-native/android/MMKV"] + path = packages/mmkv-metal/src-native/android/MMKV + url = https://github.com/Tencent/MMKV.git diff --git a/README.md b/README.md index a608b8bc..b4d03a4b 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,8 @@ npm start - [@nativescript/jetpack-compose](packages/jetpack-compose/README.md) - [@nativescript/local-notifications](packages/local-notifications/README.md) - [@nativescript/localize](packages/localize/README.md) +- [@nativescript/mmkv](packages/mmkv/README.md) +- [@nativescript/mmkv-metal](packages/mmkv-metal/README.md) - [@nativescript/pdf](packages/pdf/README.md) - [@nativescript/picker](packages/picker/README.md) - [@nativescript/shared-notification-delegate](packages/shared-notification-delegate/README.md) diff --git a/apps/demo-angular/package.json b/apps/demo-angular/package.json index 3db0fe43..cd08033b 100644 --- a/apps/demo-angular/package.json +++ b/apps/demo-angular/package.json @@ -37,7 +37,9 @@ "@nativescript/swift-ui": "file:../../dist/packages/swift-ui", "@nativescript/theme-switcher": "file:../../dist/packages/theme-switcher", "@nativescript/twitter": "file:../../dist/packages/twitter", - "@nativescript/zip": "file:../../dist/packages/zip" + "@nativescript/zip": "file:../../dist/packages/zip", + "@nativescript/mmkv": "file:../../dist/packages/mmkv", + "@nativescript/mmkv-metal": "file:../../dist/packages/mmkv-metal" }, "devDependencies": { "@nativescript/android": "~8.4.0", diff --git a/apps/demo-angular/src/app-routing.module.ts b/apps/demo-angular/src/app-routing.module.ts index cefc7451..eff279e9 100644 --- a/apps/demo-angular/src/app-routing.module.ts +++ b/apps/demo-angular/src/app-routing.module.ts @@ -35,6 +35,8 @@ const routes: Routes = [ { path: 'jetpack-compose', loadChildren: () => import('./plugin-demos/jetpack-compose.module').then((m) => m.JetpackComposeModule) }, { path: 'local-notifications', loadChildren: () => import('./plugin-demos/local-notifications.module').then((m) => m.LocalNotificationsModule) }, { path: 'localize', loadChildren: () => import('./plugin-demos/localize.module').then((m) => m.LocalizeModule) }, + { path: 'mmkv', loadChildren: () => import('./plugin-demos/mmkv.module').then((m) => m.MmkvModule) }, + { path: 'mmkv-metal', loadChildren: () => import('./plugin-demos/mmkv-metal.module').then((m) => m.MmkvMetalModule) }, { path: 'pdf', loadChildren: () => import('./plugin-demos/pdf.module').then((m) => m.PdfModule) }, { path: 'picker', loadChildren: () => import('./plugin-demos/picker.module').then((m) => m.PickerModule) }, { path: 'shared-notification-delegate', loadChildren: () => import('./plugin-demos/shared-notification-delegate.module').then((m) => m.SharedNotificationDelegateModule) }, diff --git a/apps/demo-angular/src/home.component.ts b/apps/demo-angular/src/home.component.ts index 863f9cb6..762c0014 100644 --- a/apps/demo-angular/src/home.component.ts +++ b/apps/demo-angular/src/home.component.ts @@ -90,6 +90,12 @@ export class HomeComponent { { name: 'localize', }, + { + name: 'mmkv', + }, + { + name: 'mmkv-metal', + }, { name: 'pdf', }, diff --git a/apps/demo-angular/src/plugin-demos/mmkv-metal.component.html b/apps/demo-angular/src/plugin-demos/mmkv-metal.component.html new file mode 100644 index 00000000..7e1e5bca --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mmkv-metal.component.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/apps/demo-angular/src/plugin-demos/mmkv-metal.component.ts b/apps/demo-angular/src/plugin-demos/mmkv-metal.component.ts new file mode 100644 index 00000000..b82eb76d --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mmkv-metal.component.ts @@ -0,0 +1,17 @@ +import { Component, NgZone } from '@angular/core'; +import { DemoSharedMmkvMetal } from '@demo/shared'; +import {} from '@nativescript/mmkv-metal'; + +@Component({ + selector: 'demo-mmkv-metal', + templateUrl: 'mmkv-metal.component.html', +}) +export class MmkvMetalComponent { + demoShared: DemoSharedMmkvMetal; + + constructor(private _ngZone: NgZone) {} + + ngOnInit() { + this.demoShared = new DemoSharedMmkvMetal(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/mmkv-metal.module.ts b/apps/demo-angular/src/plugin-demos/mmkv-metal.module.ts new file mode 100644 index 00000000..96444c4c --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mmkv-metal.module.ts @@ -0,0 +1,10 @@ +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; +import { MmkvMetalComponent } from './mmkv-metal.component'; + +@NgModule({ + imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: MmkvMetalComponent }])], + declarations: [MmkvMetalComponent], + schemas: [NO_ERRORS_SCHEMA], +}) +export class MmkvMetalModule {} diff --git a/apps/demo-angular/src/plugin-demos/mmkv.component.html b/apps/demo-angular/src/plugin-demos/mmkv.component.html new file mode 100644 index 00000000..ecd609f7 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mmkv.component.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/apps/demo-angular/src/plugin-demos/mmkv.component.ts b/apps/demo-angular/src/plugin-demos/mmkv.component.ts new file mode 100644 index 00000000..246e3fc2 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mmkv.component.ts @@ -0,0 +1,17 @@ +import { Component, NgZone } from '@angular/core'; +import { DemoSharedMmkv } from '@demo/shared'; +import {} from '@nativescript/mmkv'; + +@Component({ + selector: 'demo-mmkv', + templateUrl: 'mmkv.component.html', +}) +export class MmkvComponent { + demoShared: DemoSharedMmkv; + + constructor(private _ngZone: NgZone) {} + + ngOnInit() { + this.demoShared = new DemoSharedMmkv(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/mmkv.module.ts b/apps/demo-angular/src/plugin-demos/mmkv.module.ts new file mode 100644 index 00000000..e32dc000 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mmkv.module.ts @@ -0,0 +1,10 @@ +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; +import { MmkvComponent } from './mmkv.component'; + +@NgModule({ + imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: MmkvComponent }])], + declarations: [MmkvComponent], + schemas: [NO_ERRORS_SCHEMA], +}) +export class MmkvModule {} diff --git a/apps/demo/nativescript.config.ts b/apps/demo/nativescript.config.ts index e18221d6..34ed6855 100644 --- a/apps/demo/nativescript.config.ts +++ b/apps/demo/nativescript.config.ts @@ -1,7 +1,7 @@ import { NativeScriptConfig } from '@nativescript/core'; export default { - id: 'org.nativescript.plugindemo', + id: 'io.github.triniwiz.plugindemo', appResourcesPath: '../../tools/assets/App_Resources', android: { v8Flags: '--expose_gc', @@ -9,12 +9,12 @@ export default { }, appPath: 'src', cli: { - packageManager: 'npm' + packageManager: 'npm', }, hooks: [ { - type: 'before-prepare', - script: '../../tools/scripts/before-prepare.js', - } - ], + type: 'before-prepare', + script: '../../tools/scripts/before-prepare.js', + }, + ], } as NativeScriptConfig; diff --git a/apps/demo/package.json b/apps/demo/package.json index f79cc004..49bd7f06 100644 --- a/apps/demo/package.json +++ b/apps/demo/package.json @@ -33,6 +33,8 @@ "@nativescript/iqkeyboardmanager": "file:../../packages/iqkeyboardmanager", "@nativescript/local-notifications": "file:../../packages/local-notifications", "@nativescript/localize": "file:../../dist/packages/localize", + "@nativescript/mmkv": "file:../../packages/mmkv", + "@nativescript/mmkv-metal": "file:../../packages/mmkv-metal", "@nativescript/pdf": "file:../../packages/pdf", "@nativescript/picker": "file:../../packages/picker", "@nativescript/shared-notification-delegate": "file:../../packages/shared-notification-delegate", diff --git a/apps/demo/src/app.ts b/apps/demo/src/app.ts index 61231d5a..8e9e4af1 100644 --- a/apps/demo/src/app.ts +++ b/apps/demo/src/app.ts @@ -1,4 +1,5 @@ import { Application } from '@nativescript/core'; +import '@nativescript/mmkv-metal/local-storage'; // uncomment to test local notifications // import "@nativescript/local-notifications"; diff --git a/apps/demo/src/main-page.xml b/apps/demo/src/main-page.xml index f68418ec..7b026d59 100644 --- a/apps/demo/src/main-page.xml +++ b/apps/demo/src/main-page.xml @@ -41,6 +41,8 @@