0.0.1 • Published 6 years ago

@ngx-electron/electron-data-shared v0.0.1

Weekly downloads
-
License
-
Repository
-
Last release
6 years ago

@ngx-electron/electron-data-shared

Rely on angular 6.x.x and electron 2.x.x and @ng/store 6.x.x and @ngx-electron/electron-core

Use NgxElectronDataSharedService services to synchronize data in multiple windows (data is managed uniformly by store).

Installation

   npm install @ngx-electron/electron-data-shared --save

Usage

import {ElectronDataSharedModule} from '@ngx-electron/electron-data-shared'
import {StoreModule} from '@ngrx/store';
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';

const reducers = [];
@NgModule({
    declarations: [
        
    ],
    imports: [
        BrowserModule,
        ElectronDataSharedModule,
        StoreModule.forRoot(reducers),
    ],
    providers: [],
    bootstrap: []
})
export class AppModule {
}

Open a page and synchronize the data

The current page

use NgxElectronDataSharedService openPage

openPage({
    url, 
    channel = url, 
    webInvoker
}: {
    url: string, 
    channel?: string, 
    webInvoker?: (string) => void
}, observables?: Observable<Action>[], complete?: () => void)
// data (action)
const loadUserAction$ = this.store$.pipe(
    select(getUsers),
    map(users => new LoadUserAction(users)),
    take(1)
);
electronDataSharedService.openPage({
    url: 'home/chat-list'
}, [loadUserAction$], () => alert('data send over')));

new page use NgxElectronDataSharedService initStore

construct(private electronDataSharedService: NgxElectronDataSharedService) {
}
onInit() {
    electronDataSharedService.initStore();
}

Multiple pages pass the data(action, eg: LoadUserSuccessAction)

On a page use NgxElectronStoreService

electronStoreService.dispath({
    type: '[user] init user',
    payload: [user1, user2]
});

Other page usage

use initStore() or use onStore()

0.0.1

6 years ago