Skip to content

Commit

Permalink
feat(user): save edited user to local storage
Browse files Browse the repository at this point in the history
  • Loading branch information
ElonH committed May 18, 2020
1 parent 44b5cf6 commit 691513d
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 27 deletions.
31 changes: 14 additions & 17 deletions src/app/@dataflow/extra/users-flow.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Observable, of, Subject } from 'rxjs';
import { BareFlow, FlowInNode, CombErr } from '../core';
import { startWith } from 'rxjs/operators';

export interface IRcloneServer {
url: string;
Expand All @@ -22,30 +21,28 @@ export abstract class UsersFlow extends BareFlow<FlowInNode, UsersFlowNode> {
];
private static trigger$ = new Subject<number>();
protected request(pre: CombErr<FlowInNode>): Observable<CombErr<UsersFlowNode>> {
return of([{ users: UsersFlow.getAll() }, []]);
}
public static getAll(): IUser[] {
const dataRaw = localStorage.getItem('users');
if (dataRaw) return of([{ users: JSON.parse(dataRaw) }, []]);
localStorage.setItem('users', JSON.stringify(UsersFlow.defaultUser));
return of([{ users: UsersFlow.defaultUser }, []]);
if (!dataRaw) {
localStorage.setItem('users', JSON.stringify(UsersFlow.defaultUser));
return UsersFlow.defaultUser;
}
return JSON.parse(dataRaw);
}

public static setAll(data: IUser[]) {
localStorage.setItem('users', JSON.stringify(data));
}
public static set(user: IUser) {
const dataRaw = localStorage.getItem('users');
if (dataRaw) {
const data = JSON.parse(dataRaw) as IUser[];
for (let i = 0; i < data.length; i++) {
if (data[i].name === user.name) {
data[i] = user;
this.setAll(data);
return;
}
}
data.push(user);
public static set(user: IUser, preName: string = '') {
const data = this.getAll();
for (let i = 0; i < data.length; i++) {
if (preName !== data[i].name) continue;
data[i] = user;
this.setAll(data);
return;
}
const data = [];
data.push(user);
this.setAll(data);
}
Expand Down
5 changes: 2 additions & 3 deletions src/app/pages/user/config/config.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ export class ConfigComponent implements OnInit {
@Input()
editUser: Observable<CombErr<{ prevName: string }>> = of([{ prevName: '' }, []]);
@Output()
onSave: EventEmitter<any> = new EventEmitter();
onSave: EventEmitter<IUser> = new EventEmitter();

nameValidation$: NameValidation;
authPass$: Observable<boolean | null>;
Expand All @@ -154,13 +154,12 @@ export class ConfigComponent implements OnInit {
constructor() {}

save() {
UsersFlow.set({
this.onSave.emit({
name: this.name.value,
url: this.url.value,
user: this.user.value,
password: this.password.value,
});
this.onSave.emit(true);
}

private setUser(...args: string[]) {
Expand Down
26 changes: 19 additions & 7 deletions src/app/pages/user/user.component.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { UsersFlow } from 'src/app/@dataflow/extra';
import { Subject, Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { UsersFlow, IUser } from 'src/app/@dataflow/extra';
import { Subject, Observable, of } from 'rxjs';
import { map, withLatestFrom, filter, tap } from 'rxjs/operators';
import { CombErr, FlowInNode, NothingFlow } from 'src/app/@dataflow/core';
import { NbStepperComponent, NbStepComponent } from '@nebular/theme';

Expand Down Expand Up @@ -38,7 +38,7 @@ import { NbStepperComponent, NbStepComponent } from '@nebular/theme';
<user-config
[users$]="usersFlow$.getOutput()"
[editUser]="prevUserFlow$.getOutput()"
(onSave)="onSave()"
(onSave)="onSave($event)"
>
</user-config>
<button nbButton (click)="realPrev()">prev</button>
Expand Down Expand Up @@ -71,6 +71,7 @@ export class UserComponent implements OnInit {
public usersFlow$: UsersFlow;
public selectedTrigger = new Subject<string>();
public prevUserFlow$: NothingFlow<{ prevName: string }>;
private saveUserTrigger = new Subject<IUser>();
operation = [
{ request: [false, true, false], icon: 'plus-square', status: 'primary', text: 'Add user' },
{ request: [true, true, false], icon: 'edit', status: 'info', text: 'Edit user' },
Expand Down Expand Up @@ -129,17 +130,28 @@ export class UserComponent implements OnInit {
})();
this.prevUserFlow$.deploy();
this.selectedTrigger.next('');
}

onSave() {
this.usersTrigger.next(1);
this.saveUserTrigger
.pipe(
withLatestFrom(this.prevUserFlow$.getOutput()),
filter(([x, y]) => y[1].length === 0)
)
.subscribe(([x, y]) => {
UsersFlow.set(x, y[0].prevName);
this.usersTrigger.next(1); // update users
});
}

onSelect(item: string) {
console.log(item);
this.selectedTrigger.next(item);
this.realNext();
}

onSave(user: IUser) {
this.saveUserTrigger.next(user);
}

onConfirm() {
console.log('deleted');
}
Expand Down

0 comments on commit 691513d

Please sign in to comment.