@wallfree-dev/angular-ngrx 0.0.59-beta.1
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/README.md +60 -0
- package/esm2022/lib/airgap-angular-ngrx.module.mjs +23 -0
- package/esm2022/lib/base/base-ngrx.facade.mjs +36 -0
- package/esm2022/lib/components/components.module.mjs +21 -0
- package/esm2022/lib/components/currency-symbol/currency-symbol.facade.mjs +59 -0
- package/esm2022/lib/components/currency-symbol/currency-symbol.store.mjs +148 -0
- package/esm2022/lib/components/currency-symbol/currency-symbol.types.mjs +2 -0
- package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.facade.mjs +28 -0
- package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.store.mjs +76 -0
- package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.types.mjs +2 -0
- package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.facade.mjs +26 -0
- package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.store.mjs +55 -0
- package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.types.mjs +2 -0
- package/esm2022/lib/pages/isolated-modules-list/isolated-modules-list.facade.mjs +24 -0
- package/esm2022/lib/pages/isolated-modules-list/isolated-modules-list.store.mjs +57 -0
- package/esm2022/lib/pages/isolated-modules-list/isolated-modules-list.types.mjs +2 -0
- package/esm2022/public-api.mjs +15 -0
- package/esm2022/wallfree-dev-angular-ngrx.mjs +5 -0
- package/fesm2022/wallfree-dev-angular-ngrx.mjs +524 -0
- package/fesm2022/wallfree-dev-angular-ngrx.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/airgap-angular-ngrx.module.d.ts +9 -0
- package/lib/airgap-angular-ngrx.module.d.ts.map +1 -0
- package/lib/base/base-ngrx.facade.d.ts +17 -0
- package/lib/base/base-ngrx.facade.d.ts.map +1 -0
- package/lib/components/components.module.d.ts +12 -0
- package/lib/components/components.module.d.ts.map +1 -0
- package/lib/components/currency-symbol/currency-symbol.facade.d.ts +20 -0
- package/lib/components/currency-symbol/currency-symbol.facade.d.ts.map +1 -0
- package/lib/components/currency-symbol/currency-symbol.store.d.ts +21 -0
- package/lib/components/currency-symbol/currency-symbol.store.d.ts.map +1 -0
- package/lib/components/currency-symbol/currency-symbol.types.d.ts +9 -0
- package/lib/components/currency-symbol/currency-symbol.types.d.ts.map +1 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.facade.d.ts +17 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.facade.d.ts.map +1 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.store.d.ts +16 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.store.d.ts.map +1 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.types.d.ts +7 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.types.d.ts.map +1 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.facade.d.ts +16 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.facade.d.ts.map +1 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.store.d.ts +19 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.store.d.ts.map +1 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.types.d.ts +6 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.types.d.ts.map +1 -0
- package/lib/pages/isolated-modules-list/isolated-modules-list.facade.d.ts +15 -0
- package/lib/pages/isolated-modules-list/isolated-modules-list.facade.d.ts.map +1 -0
- package/lib/pages/isolated-modules-list/isolated-modules-list.store.d.ts +15 -0
- package/lib/pages/isolated-modules-list/isolated-modules-list.store.d.ts.map +1 -0
- package/lib/pages/isolated-modules-list/isolated-modules-list.types.d.ts +6 -0
- package/lib/pages/isolated-modules-list/isolated-modules-list.types.d.ts.map +1 -0
- package/package.json +42 -0
- package/public-api.d.ts +8 -0
- package/public-api.d.ts.map +1 -0
- package/wallfree-dev-angular-ngrx.d.ts.map +1 -0
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { NgModule, Injectable, Inject } from '@angular/core';
|
|
3
|
+
import * as i1 from '@ngrx/store';
|
|
4
|
+
import { StoreModule } from '@ngrx/store';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { FormsModule } from '@angular/forms';
|
|
7
|
+
import { IonicModule } from '@ionic/angular';
|
|
8
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
9
|
+
import { QRCodeModule } from 'angularx-qrcode';
|
|
10
|
+
import * as i1$1 from '@wallfree-dev/angular-core';
|
|
11
|
+
import { BaseFacade, UIActionStatus, DEFAULT_CURRENCY_SYMBOL_URL, FilesystemService, ProtocolService, UIResourceStatus, ISOLATED_MODULES_PLUGIN, BaseModulesService, UiEventService } from '@wallfree-dev/angular-core';
|
|
12
|
+
import { ComponentStore, tapResponse } from '@ngrx/component-store';
|
|
13
|
+
import { Observable, from, of } from 'rxjs';
|
|
14
|
+
import { withLatestFrom, switchMap, map, repeat, first, tap } from 'rxjs/operators';
|
|
15
|
+
|
|
16
|
+
class ComponentsModule {
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
18
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ComponentsModule, imports: [CommonModule, IonicModule, TranslateModule, QRCodeModule, FormsModule] }); }
|
|
19
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentsModule, imports: [CommonModule, IonicModule, TranslateModule, QRCodeModule, FormsModule] }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentsModule, decorators: [{
|
|
22
|
+
type: NgModule,
|
|
23
|
+
args: [{
|
|
24
|
+
declarations: [],
|
|
25
|
+
imports: [CommonModule, IonicModule, TranslateModule, QRCodeModule, FormsModule],
|
|
26
|
+
exports: []
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
|
|
30
|
+
class AirGapAngularNgRxModule {
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AirGapAngularNgRxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
32
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: AirGapAngularNgRxModule, imports: [i1.StoreFeatureModule, ComponentsModule], exports: [ComponentsModule] }); }
|
|
33
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AirGapAngularNgRxModule, imports: [StoreModule.forFeature('shared', {}),
|
|
34
|
+
ComponentsModule, ComponentsModule] }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AirGapAngularNgRxModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
declarations: [],
|
|
40
|
+
imports: [
|
|
41
|
+
StoreModule.forFeature('shared', {}),
|
|
42
|
+
ComponentsModule
|
|
43
|
+
],
|
|
44
|
+
exports: [ComponentsModule]
|
|
45
|
+
}]
|
|
46
|
+
}] });
|
|
47
|
+
|
|
48
|
+
class BaseNgRxFacade extends BaseFacade {
|
|
49
|
+
constructor(store, uiEventService) {
|
|
50
|
+
super();
|
|
51
|
+
this.store = store;
|
|
52
|
+
this.uiEventService = uiEventService;
|
|
53
|
+
}
|
|
54
|
+
async showOrHideToast(toast) {
|
|
55
|
+
if (this.uiEventService === undefined) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// TODO: Move error sentries to common components and catch toast errors
|
|
59
|
+
this.toastElement?.dismiss();
|
|
60
|
+
if (toast?.status === UIActionStatus.PENDING) {
|
|
61
|
+
const defaultToastOptions = {
|
|
62
|
+
duration: 3000,
|
|
63
|
+
position: 'bottom'
|
|
64
|
+
};
|
|
65
|
+
this.toastElement = await this.uiEventService.getTranslatedToast({ ...defaultToastOptions, ...this.getToastData(toast.value) });
|
|
66
|
+
this.toastElement.present();
|
|
67
|
+
return this.toastElement.onWillDismiss().then(() => {
|
|
68
|
+
this.onToastDismissed(toast);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.toastElement = undefined;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
onToastDismissed(_toast) {
|
|
76
|
+
throw new Error('`onToastDismissed` not implemented');
|
|
77
|
+
}
|
|
78
|
+
getToastData(_toast) {
|
|
79
|
+
throw new Error('`getToastData` not implemented');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const initialStore = {
|
|
84
|
+
src: DEFAULT_CURRENCY_SYMBOL_URL,
|
|
85
|
+
input: undefined,
|
|
86
|
+
fallbackInput: undefined,
|
|
87
|
+
inputs: []
|
|
88
|
+
};
|
|
89
|
+
class CurrencySymbolStore extends ComponentStore {
|
|
90
|
+
constructor(filesystemService) {
|
|
91
|
+
super(initialStore);
|
|
92
|
+
this.filesystemService = filesystemService;
|
|
93
|
+
this.onError$ = this.effect((trigger$) => {
|
|
94
|
+
return trigger$.pipe(withLatestFrom(this.state$), switchMap(([, state]) => {
|
|
95
|
+
return this.loadFallbackImage(state).pipe(map((value) => {
|
|
96
|
+
if (value.kind === 'lazy' && value.url === undefined) {
|
|
97
|
+
return !state.fallbackInput || value.symbolInput === state.fallbackInput
|
|
98
|
+
? { kind: 'default' }
|
|
99
|
+
: { kind: 'asset', symbolInput: state.fallbackInput, extension: 'svg' }; // try again with fallback symbol
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
}), tapResponse((value) => this.setSrc(value), () => this.setSrc({ kind: 'default' })));
|
|
105
|
+
}), repeat());
|
|
106
|
+
});
|
|
107
|
+
this.setInitialSrc = this.updater((state, inputs) => {
|
|
108
|
+
const input = inputs[0];
|
|
109
|
+
const fallbackInput = inputs[1];
|
|
110
|
+
return {
|
|
111
|
+
...state,
|
|
112
|
+
src: input ? this.getSymbolAssetURL(input, 'svg') /* use .svg by default */ : state.src,
|
|
113
|
+
fallbackType: input ? { kind: 'asset', symbolInput: input, extension: 'png' } /* use .png as a fallback */ : state.fallbackType,
|
|
114
|
+
input,
|
|
115
|
+
fallbackInput,
|
|
116
|
+
inputs
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
this.setSrc = this.updater((state, value) => {
|
|
120
|
+
switch (value.kind) {
|
|
121
|
+
case 'default':
|
|
122
|
+
return {
|
|
123
|
+
...state,
|
|
124
|
+
src: DEFAULT_CURRENCY_SYMBOL_URL,
|
|
125
|
+
input: undefined,
|
|
126
|
+
fallbackInput: undefined
|
|
127
|
+
};
|
|
128
|
+
case 'asset':
|
|
129
|
+
const { current: assetCurrent, fallback: assetFallback } = this.getNextInputs(state, value.symbolInput);
|
|
130
|
+
return {
|
|
131
|
+
...state,
|
|
132
|
+
src: this.getSymbolAssetURL(value.symbolInput, value.extension),
|
|
133
|
+
fallbackType: value.extension === 'svg'
|
|
134
|
+
? { kind: 'asset', symbolInput: value.symbolInput, extension: 'png' } /* use .png as a fallback */
|
|
135
|
+
: { kind: 'isolated', symbolInput: value.symbolInput } /* try loading external isolated image as a fallback */,
|
|
136
|
+
input: assetCurrent,
|
|
137
|
+
fallbackInput: assetFallback
|
|
138
|
+
};
|
|
139
|
+
case 'isolated':
|
|
140
|
+
const { current: isolatedCurrent, fallback: isolatedFallback } = this.getNextInputs(state, value.symbolInput);
|
|
141
|
+
return {
|
|
142
|
+
...state,
|
|
143
|
+
src: value.url ?? '',
|
|
144
|
+
fallbackType: !state.fallbackInput || value.symbolInput === state.fallbackInput
|
|
145
|
+
? { kind: 'lazy', symbolInput: value.symbolInput } /* try loading external image as a fallback */
|
|
146
|
+
: { kind: 'asset', symbolInput: state.fallbackInput, extension: 'svg' } /* try again with fallback symbol */,
|
|
147
|
+
input: isolatedCurrent,
|
|
148
|
+
fallbackInput: isolatedFallback
|
|
149
|
+
};
|
|
150
|
+
case 'lazy':
|
|
151
|
+
const { current: lazyCurrent, fallback: lazyFallback } = this.getNextInputs(state, value.symbolInput);
|
|
152
|
+
return {
|
|
153
|
+
...state,
|
|
154
|
+
src: value.url ?? '',
|
|
155
|
+
fallbackType: !state.fallbackInput || value.symbolInput === state.fallbackInput
|
|
156
|
+
? { kind: 'default' }
|
|
157
|
+
: { kind: 'asset', symbolInput: state.fallbackInput, extension: 'svg' } /* try again with fallback symbol */,
|
|
158
|
+
input: lazyCurrent,
|
|
159
|
+
fallbackInput: lazyFallback
|
|
160
|
+
};
|
|
161
|
+
default:
|
|
162
|
+
return state;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
getNextInputs(state, input) {
|
|
167
|
+
if (!input) {
|
|
168
|
+
return {};
|
|
169
|
+
}
|
|
170
|
+
const index = state.inputs.indexOf(input);
|
|
171
|
+
return index > -1 ? { current: state.inputs[index], fallback: state.inputs[index + 1] } : {};
|
|
172
|
+
}
|
|
173
|
+
loadFallbackImage(state) {
|
|
174
|
+
return new Observable((subscriber) => {
|
|
175
|
+
new Promise(async (resolve, reject) => {
|
|
176
|
+
try {
|
|
177
|
+
subscriber.next({ kind: 'default' });
|
|
178
|
+
if (state.fallbackType?.kind === 'asset') {
|
|
179
|
+
subscriber.next({ kind: 'asset', symbolInput: state.fallbackType.symbolInput, extension: state.fallbackType.extension });
|
|
180
|
+
}
|
|
181
|
+
else if (state.fallbackType?.kind === 'isolated') {
|
|
182
|
+
const imageURI = await this.loadIsolatedImage(state.fallbackType.symbolInput);
|
|
183
|
+
subscriber.next({ kind: 'isolated', symbolInput: state.fallbackType.symbolInput, url: imageURI });
|
|
184
|
+
}
|
|
185
|
+
else if (state.fallbackType?.kind === 'lazy') {
|
|
186
|
+
// try loading external image
|
|
187
|
+
const imageURI = await this.loadLazyImage(state.fallbackType.symbolInput);
|
|
188
|
+
subscriber.next({ kind: 'lazy', symbolInput: state.fallbackType.symbolInput, url: imageURI });
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
// no image was found for the symbol, use the generic image
|
|
192
|
+
subscriber.next({ kind: 'default' });
|
|
193
|
+
}
|
|
194
|
+
resolve();
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
reject(error);
|
|
198
|
+
}
|
|
199
|
+
}).finally(() => {
|
|
200
|
+
subscriber.complete();
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
async loadIsolatedImage(symbolInput) {
|
|
205
|
+
return this.filesystemService.readIsolatedSymbol(symbolInput.caseSensitive ? symbolInput.value : symbolInput.value.toLocaleLowerCase());
|
|
206
|
+
}
|
|
207
|
+
async loadLazyImage(symbolInput) {
|
|
208
|
+
const imagePath = this.getSymbolImagePath(symbolInput);
|
|
209
|
+
return this.filesystemService.readLazyImage(imagePath);
|
|
210
|
+
}
|
|
211
|
+
getSymbolAssetURL(symbolInput, extension) {
|
|
212
|
+
return `./assets/symbols/${symbolInput.caseSensitive ? symbolInput.value : symbolInput.value.toLowerCase()}.${extension}`;
|
|
213
|
+
}
|
|
214
|
+
getSymbolImagePath(symbolInput) {
|
|
215
|
+
return `/images/symbols/${symbolInput.caseSensitive ? symbolInput.value : symbolInput.value.toLowerCase()}`;
|
|
216
|
+
}
|
|
217
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CurrencySymbolStore, deps: [{ token: i1$1.FilesystemService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
218
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CurrencySymbolStore }); }
|
|
219
|
+
}
|
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CurrencySymbolStore, decorators: [{
|
|
221
|
+
type: Injectable
|
|
222
|
+
}], ctorParameters: () => [{ type: i1$1.FilesystemService }] });
|
|
223
|
+
|
|
224
|
+
class CurrencySymbolNgRxFacade extends BaseNgRxFacade {
|
|
225
|
+
constructor(store, protocolService) {
|
|
226
|
+
super(store);
|
|
227
|
+
this.protocolService = protocolService;
|
|
228
|
+
this.symbolSrc$ = this.store.select((state) => state.src);
|
|
229
|
+
}
|
|
230
|
+
initWithSymbol(symbol, protocolIdentifier) {
|
|
231
|
+
this.getSymbolInputs(symbol, protocolIdentifier)
|
|
232
|
+
.then((symbolInputs) => this.store.setInitialSrc(symbolInputs))
|
|
233
|
+
.catch(console.error);
|
|
234
|
+
}
|
|
235
|
+
onSymbolChanged(symbol, protocolIdentifier) {
|
|
236
|
+
this.getSymbolInputs(symbol, protocolIdentifier)
|
|
237
|
+
.then((symbolInputs) => this.store.setInitialSrc(symbolInputs))
|
|
238
|
+
.catch(console.error);
|
|
239
|
+
}
|
|
240
|
+
onError(_symbol, _protocolIdentifier, _src) {
|
|
241
|
+
this.store.onError$();
|
|
242
|
+
}
|
|
243
|
+
async getSymbolInputs(symbol, protocolIdentifier) {
|
|
244
|
+
let assetSymbol;
|
|
245
|
+
try {
|
|
246
|
+
const protocol = await this.protocolService.getProtocol(protocolIdentifier);
|
|
247
|
+
const [protocolSymbol, protocolAssetSymbol] = await Promise.all([
|
|
248
|
+
protocol.getSymbol(),
|
|
249
|
+
protocol.getAssetSymbol()
|
|
250
|
+
]);
|
|
251
|
+
assetSymbol = protocolSymbol.toLowerCase() === symbol.toLowerCase() ? protocolAssetSymbol : undefined;
|
|
252
|
+
}
|
|
253
|
+
catch (e) {
|
|
254
|
+
console.warn(e);
|
|
255
|
+
}
|
|
256
|
+
assetSymbol = assetSymbol ?? symbol;
|
|
257
|
+
const symbolInput = assetSymbol ? { value: assetSymbol, caseSensitive: false } : undefined;
|
|
258
|
+
const protocolIdentifierInput = protocolIdentifier
|
|
259
|
+
? { value: protocolIdentifier, caseSensitive: true }
|
|
260
|
+
: undefined;
|
|
261
|
+
const symbolInputs = protocolIdentifier && this.protocolService.isKnownProtocolSymbol(protocolIdentifier)
|
|
262
|
+
? [symbolInput, protocolIdentifierInput]
|
|
263
|
+
: [protocolIdentifierInput, symbolInput];
|
|
264
|
+
return symbolInputs.filter((symbolInputOrUndefined) => symbolInputOrUndefined !== undefined);
|
|
265
|
+
}
|
|
266
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CurrencySymbolNgRxFacade, deps: [{ token: CurrencySymbolStore }, { token: i1$1.ProtocolService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
267
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CurrencySymbolNgRxFacade }); }
|
|
268
|
+
}
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CurrencySymbolNgRxFacade, decorators: [{
|
|
270
|
+
type: Injectable
|
|
271
|
+
}], ctorParameters: () => [{ type: CurrencySymbolStore }, { type: i1$1.ProtocolService }] });
|
|
272
|
+
const currencySymbolNgRxFacade = (injector) => {
|
|
273
|
+
return new CurrencySymbolNgRxFacade(new CurrencySymbolStore(injector.get(FilesystemService)), injector.get(ProtocolService));
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
const initialState$2 = {
|
|
277
|
+
manifest: {
|
|
278
|
+
status: UIResourceStatus.IDLE,
|
|
279
|
+
value: undefined
|
|
280
|
+
},
|
|
281
|
+
path: {
|
|
282
|
+
status: UIResourceStatus.IDLE,
|
|
283
|
+
value: undefined
|
|
284
|
+
},
|
|
285
|
+
isVerified: {
|
|
286
|
+
status: UIResourceStatus.IDLE,
|
|
287
|
+
value: undefined
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
class IsolatedModulesDetailsStore extends ComponentStore {
|
|
291
|
+
constructor(isolatedModules) {
|
|
292
|
+
super(initialState$2);
|
|
293
|
+
this.isolatedModules = isolatedModules;
|
|
294
|
+
this.loadModuleData = this.effect((metadata$) => {
|
|
295
|
+
return metadata$.pipe(switchMap((metadata) => metadata.type === 'preview'
|
|
296
|
+
? from(this.verifyModule(metadata)).pipe(first(), map((isVerified) => ({ manifest: metadata.manifest, isVerified })))
|
|
297
|
+
: of({ manifest: metadata.manifest, isVerified: true })), tap({
|
|
298
|
+
next: ({ manifest, isVerified }) => this.setData({ manifest, isVerified }),
|
|
299
|
+
error: () => this.onError()
|
|
300
|
+
}));
|
|
301
|
+
});
|
|
302
|
+
this.setData = this.updater((state, data) => {
|
|
303
|
+
return {
|
|
304
|
+
...state,
|
|
305
|
+
manifest: {
|
|
306
|
+
status: UIResourceStatus.SUCCESS,
|
|
307
|
+
value: data.manifest
|
|
308
|
+
},
|
|
309
|
+
isVerified: {
|
|
310
|
+
status: UIResourceStatus.SUCCESS,
|
|
311
|
+
value: data.isVerified
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
});
|
|
315
|
+
this.onError = this.updater((state) => {
|
|
316
|
+
return {
|
|
317
|
+
...state,
|
|
318
|
+
manifest: {
|
|
319
|
+
status: UIResourceStatus.ERROR,
|
|
320
|
+
value: state.manifest.value
|
|
321
|
+
},
|
|
322
|
+
isVerified: {
|
|
323
|
+
status: UIResourceStatus.ERROR,
|
|
324
|
+
value: state.isVerified.value
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
async verifyModule(metadata) {
|
|
330
|
+
const { verified } = await this.isolatedModules.verifyDynamicModule({
|
|
331
|
+
path: `${metadata.path}/${metadata.root}`.replace(/\/+$/, ''),
|
|
332
|
+
directory: metadata.directory
|
|
333
|
+
});
|
|
334
|
+
return verified;
|
|
335
|
+
}
|
|
336
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesDetailsStore, deps: [{ token: ISOLATED_MODULES_PLUGIN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
337
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesDetailsStore }); }
|
|
338
|
+
}
|
|
339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesDetailsStore, decorators: [{
|
|
340
|
+
type: Injectable
|
|
341
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
342
|
+
type: Inject,
|
|
343
|
+
args: [ISOLATED_MODULES_PLUGIN]
|
|
344
|
+
}] }] });
|
|
345
|
+
|
|
346
|
+
class IsolatedModulesDetailsNgRxFacade extends BaseNgRxFacade {
|
|
347
|
+
constructor(store) {
|
|
348
|
+
super(store);
|
|
349
|
+
this.manifest$ = this.store.select((state) => state.manifest);
|
|
350
|
+
this.isVerified$ = this.store.select((state) => state.isVerified);
|
|
351
|
+
}
|
|
352
|
+
initWithData(metadata) {
|
|
353
|
+
this.store.loadModuleData(metadata);
|
|
354
|
+
}
|
|
355
|
+
onDataChanged(metadata) {
|
|
356
|
+
this.store.loadModuleData(metadata);
|
|
357
|
+
}
|
|
358
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesDetailsNgRxFacade, deps: [{ token: IsolatedModulesDetailsStore }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
359
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesDetailsNgRxFacade }); }
|
|
360
|
+
}
|
|
361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesDetailsNgRxFacade, decorators: [{
|
|
362
|
+
type: Injectable
|
|
363
|
+
}], ctorParameters: () => [{ type: IsolatedModulesDetailsStore }] });
|
|
364
|
+
const isolatedModulesDetailsNgRxFacade = (injector) => {
|
|
365
|
+
return new IsolatedModulesDetailsNgRxFacade(new IsolatedModulesDetailsStore(injector.get(ISOLATED_MODULES_PLUGIN)));
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
const initialState$1 = {
|
|
369
|
+
allModules: {
|
|
370
|
+
status: UIResourceStatus.IDLE,
|
|
371
|
+
value: []
|
|
372
|
+
},
|
|
373
|
+
filteredModules: {
|
|
374
|
+
status: UIResourceStatus.IDLE,
|
|
375
|
+
value: []
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
class IsolatedModulesListStore extends ComponentStore {
|
|
379
|
+
constructor() {
|
|
380
|
+
super(initialState$1);
|
|
381
|
+
this.setModules = this.updater((state, data) => {
|
|
382
|
+
return {
|
|
383
|
+
...state,
|
|
384
|
+
allModules: {
|
|
385
|
+
status: data.modules.status,
|
|
386
|
+
value: data.modules.value
|
|
387
|
+
},
|
|
388
|
+
filteredModules: {
|
|
389
|
+
status: data.modules.status,
|
|
390
|
+
value: this.filterModulesByNameOrAuthor(data.modules.value ?? [], data.query)
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
});
|
|
394
|
+
this.filterModules = this.updater((state, query) => {
|
|
395
|
+
return {
|
|
396
|
+
...state,
|
|
397
|
+
filteredModules: {
|
|
398
|
+
status: state.allModules.status,
|
|
399
|
+
value: this.filterModulesByNameOrAuthor(state.allModules.value ?? [], query)
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
filterModulesByNameOrAuthor(modules, query) {
|
|
405
|
+
return query
|
|
406
|
+
? modules.filter((module) => {
|
|
407
|
+
return (module.manifest.name.toLowerCase().includes(query.toLowerCase()) ||
|
|
408
|
+
module.manifest.author.toLowerCase().includes(query.toLowerCase()));
|
|
409
|
+
})
|
|
410
|
+
: modules;
|
|
411
|
+
}
|
|
412
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesListStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
413
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesListStore }); }
|
|
414
|
+
}
|
|
415
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesListStore, decorators: [{
|
|
416
|
+
type: Injectable
|
|
417
|
+
}], ctorParameters: () => [] });
|
|
418
|
+
|
|
419
|
+
class IsolatedModulesListNgRxFacade extends BaseNgRxFacade {
|
|
420
|
+
constructor(store) {
|
|
421
|
+
super(store);
|
|
422
|
+
this.modules$ = this.store.select((state) => state.filteredModules);
|
|
423
|
+
}
|
|
424
|
+
updateModules(modules, query) {
|
|
425
|
+
this.store.setModules({ modules, query });
|
|
426
|
+
}
|
|
427
|
+
filterModules(query) {
|
|
428
|
+
this.store.filterModules(query);
|
|
429
|
+
}
|
|
430
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesListNgRxFacade, deps: [{ token: IsolatedModulesListStore }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
431
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesListNgRxFacade }); }
|
|
432
|
+
}
|
|
433
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedModulesListNgRxFacade, decorators: [{
|
|
434
|
+
type: Injectable
|
|
435
|
+
}], ctorParameters: () => [{ type: IsolatedModulesListStore }] });
|
|
436
|
+
const isolatedModulesListNgRxFacade = (_injector) => {
|
|
437
|
+
return new IsolatedModulesListNgRxFacade(new IsolatedModulesListStore());
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
const initialState = {
|
|
441
|
+
modules: {
|
|
442
|
+
status: UIResourceStatus.IDLE,
|
|
443
|
+
value: []
|
|
444
|
+
},
|
|
445
|
+
filter: undefined
|
|
446
|
+
};
|
|
447
|
+
class IsolatedModulesListPageStore extends ComponentStore {
|
|
448
|
+
constructor(modulesService) {
|
|
449
|
+
super(initialState);
|
|
450
|
+
this.modulesService = modulesService;
|
|
451
|
+
this.onPageLoaded$ = this.effect((trigger$) => {
|
|
452
|
+
return trigger$.pipe(tap(() => this.onModulesLoading()), switchMap(() => from(this.loadModules()).pipe(first())), tapResponse((value) => this.setModules(value), () => this.onModulesLoadingError()));
|
|
453
|
+
});
|
|
454
|
+
this.setModules = this.updater((state, modules) => {
|
|
455
|
+
return {
|
|
456
|
+
...state,
|
|
457
|
+
modules: {
|
|
458
|
+
status: UIResourceStatus.SUCCESS,
|
|
459
|
+
value: modules
|
|
460
|
+
}
|
|
461
|
+
};
|
|
462
|
+
});
|
|
463
|
+
this.onModulesLoading = this.updater((state) => {
|
|
464
|
+
return {
|
|
465
|
+
...state,
|
|
466
|
+
modules: {
|
|
467
|
+
status: UIResourceStatus.LOADING,
|
|
468
|
+
value: state.modules.value
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
});
|
|
472
|
+
this.onModulesLoadingError = this.updater((state) => {
|
|
473
|
+
return {
|
|
474
|
+
...state,
|
|
475
|
+
modules: {
|
|
476
|
+
status: UIResourceStatus.ERROR,
|
|
477
|
+
value: state.modules.value
|
|
478
|
+
}
|
|
479
|
+
};
|
|
480
|
+
});
|
|
481
|
+
this.setFilterQuery = this.updater((state, query) => {
|
|
482
|
+
return {
|
|
483
|
+
...state,
|
|
484
|
+
filter: query
|
|
485
|
+
};
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
async loadModules() {
|
|
489
|
+
return this.modulesService.getModulesMetadata();
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
class IsolatedModulesListPageNgRxFacade extends BaseNgRxFacade {
|
|
494
|
+
constructor(store, uiEventService) {
|
|
495
|
+
super(store, uiEventService);
|
|
496
|
+
this.modules$ = this.store.select((state) => state.modules);
|
|
497
|
+
this.filter$ = this.store.select((state) => state.filter);
|
|
498
|
+
}
|
|
499
|
+
onViewInit() {
|
|
500
|
+
this.store.onPageLoaded$();
|
|
501
|
+
return super.onViewInit();
|
|
502
|
+
}
|
|
503
|
+
onViewWillEnter() {
|
|
504
|
+
this.store.onPageLoaded$();
|
|
505
|
+
}
|
|
506
|
+
onFilterQueryChanged(query) {
|
|
507
|
+
this.store.setFilterQuery(query);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
const isolatedModulesListPageNgRxFacade = (injector) => {
|
|
511
|
+
return new IsolatedModulesListPageNgRxFacade(new IsolatedModulesListPageStore(injector.get(BaseModulesService)), injector.get(UiEventService));
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
/*
|
|
515
|
+
* Public API Surface of ngrx
|
|
516
|
+
*/
|
|
517
|
+
// NgRx module
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* Generated bundle index. Do not edit.
|
|
521
|
+
*/
|
|
522
|
+
|
|
523
|
+
export { AirGapAngularNgRxModule, BaseNgRxFacade, ComponentsModule, CurrencySymbolNgRxFacade, IsolatedModulesDetailsNgRxFacade, IsolatedModulesListNgRxFacade, IsolatedModulesListPageNgRxFacade, currencySymbolNgRxFacade, isolatedModulesDetailsNgRxFacade, isolatedModulesListNgRxFacade, isolatedModulesListPageNgRxFacade };
|
|
524
|
+
//# sourceMappingURL=wallfree-dev-angular-ngrx.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallfree-dev-angular-ngrx.mjs","sources":["../../src/lib/components/components.module.ts","../../src/lib/airgap-angular-ngrx.module.ts","../../src/lib/base/base-ngrx.facade.ts","../../src/lib/components/currency-symbol/currency-symbol.store.ts","../../src/lib/components/currency-symbol/currency-symbol.facade.ts","../../src/lib/components/isolated-modules-details/isolated-modules-details.store.ts","../../src/lib/components/isolated-modules-details/isolated-modules-details.facade.ts","../../src/lib/components/isolated-modules-list/isolated-modules-list.store.ts","../../src/lib/components/isolated-modules-list/isolated-modules-list.facade.ts","../../src/lib/pages/isolated-modules-list/isolated-modules-list.store.ts","../../src/lib/pages/isolated-modules-list/isolated-modules-list.facade.ts","../../src/public-api.ts","../../src/wallfree-dev-angular-ngrx.ts"],"sourcesContent":["import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { FormsModule } from '@angular/forms'\nimport { IonicModule } from '@ionic/angular'\nimport { TranslateModule } from '@ngx-translate/core'\nimport { QRCodeModule } from 'angularx-qrcode'\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, IonicModule, TranslateModule, QRCodeModule, FormsModule],\n exports: []\n})\nexport class ComponentsModule {}\n","import { NgModule } from '@angular/core'\nimport { StoreModule } from '@ngrx/store'\nimport { ComponentsModule } from './components/components.module'\n\n@NgModule({\n declarations: [],\n imports: [\n StoreModule.forFeature('shared', {}),\n ComponentsModule\n ],\n exports: [ComponentsModule]\n})\nexport class AirGapAngularNgRxModule {}\n","import { BaseFacade, UIAction, UIActionStatus, UiEventService } from '@wallfree-dev/angular-core'\nimport { ToastOptions } from '@ionic/core'\nimport { ComponentStore } from '@ngrx/component-store'\nimport { Store } from '@ngrx/store'\n\nexport interface FacadeTypes {\n Toast: any\n}\n\nexport abstract class BaseNgRxFacade<S extends Store | ComponentStore<any>, T extends FacadeTypes = any> extends BaseFacade {\n protected toastElement: HTMLIonToastElement | undefined\n\n constructor(protected readonly store: S, protected readonly uiEventService?: UiEventService) {\n super()\n }\n\n protected async showOrHideToast(toast: UIAction<T['Toast']> | undefined): Promise<void> {\n if (this.uiEventService === undefined) {\n return\n }\n\n // TODO: Move error sentries to common components and catch toast errors\n\n this.toastElement?.dismiss()\n if (toast?.status === UIActionStatus.PENDING) {\n const defaultToastOptions: ToastOptions = {\n duration: 3000,\n position: 'bottom'\n }\n this.toastElement = await this.uiEventService.getTranslatedToast({ ...defaultToastOptions, ...this.getToastData(toast.value) })\n this.toastElement.present()\n\n return this.toastElement.onWillDismiss().then(() => {\n this.onToastDismissed(toast)\n })\n } else {\n this.toastElement = undefined\n }\n }\n\n protected onToastDismissed(_toast: UIAction<T['Toast']>): void {\n throw new Error('`onToastDismissed` not implemented')\n }\n\n protected getToastData(_toast: T['Toast']): ToastOptions {\n throw new Error('`getToastData` not implemented')\n }\n}\n","import { DEFAULT_CURRENCY_SYMBOL_URL, FilesystemService, SymbolInput, SymbolValue } from '@wallfree-dev/angular-core'\nimport { Injectable } from '@angular/core'\nimport { ComponentStore, tapResponse } from '@ngrx/component-store'\nimport { Observable, Subscriber } from 'rxjs'\nimport { map, repeat, switchMap, withLatestFrom } from 'rxjs/operators'\n\nimport { CurrencySymbolState } from './currency-symbol.types'\n\nconst initialStore: CurrencySymbolState = {\n src: DEFAULT_CURRENCY_SYMBOL_URL,\n\n input: undefined,\n fallbackInput: undefined,\n inputs: []\n}\n\n@Injectable()\nexport class CurrencySymbolStore extends ComponentStore<CurrencySymbolState> {\n constructor(private readonly filesystemService: FilesystemService) {\n super(initialStore)\n }\n\n public readonly onError$ = this.effect((trigger$: Observable<void>) => {\n return trigger$.pipe(\n withLatestFrom(this.state$),\n switchMap(([, state]: [void, CurrencySymbolState]) => {\n return this.loadFallbackImage(state).pipe(\n map((value: SymbolValue) => {\n if (value.kind === 'lazy' && value.url === undefined) {\n return !state.fallbackInput || value.symbolInput === state.fallbackInput\n ? { kind: 'default' }\n : { kind: 'asset', symbolInput: state.fallbackInput, extension: 'svg' } // try again with fallback symbol\n } else {\n return value\n }\n }),\n tapResponse(\n (value: SymbolValue) => this.setSrc(value),\n () => this.setSrc({ kind: 'default' })\n )\n )\n }),\n repeat()\n )\n })\n\n public readonly setInitialSrc = this.updater((state: CurrencySymbolState, inputs: SymbolInput[]) => {\n const input: SymbolInput | undefined = inputs[0]\n const fallbackInput: SymbolInput | undefined = inputs[1]\n\n return {\n ...state,\n src: input ? this.getSymbolAssetURL(input, 'svg') /* use .svg by default */ : state.src,\n fallbackType: input ? { kind: 'asset', symbolInput: input, extension: 'png' } /* use .png as a fallback */ : state.fallbackType,\n\n input,\n fallbackInput,\n inputs\n }\n })\n\n private readonly setSrc = this.updater((state: CurrencySymbolState, value: SymbolValue) => {\n switch (value.kind) {\n case 'default':\n return {\n ...state,\n src: DEFAULT_CURRENCY_SYMBOL_URL,\n\n input: undefined,\n fallbackInput: undefined\n }\n case 'asset':\n const { current: assetCurrent, fallback: assetFallback } = this.getNextInputs(state, value.symbolInput)\n\n return {\n ...state,\n src: this.getSymbolAssetURL(value.symbolInput, value.extension),\n fallbackType:\n value.extension === 'svg'\n ? { kind: 'asset', symbolInput: value.symbolInput, extension: 'png' } /* use .png as a fallback */\n : { kind: 'isolated', symbolInput: value.symbolInput } /* try loading external isolated image as a fallback */,\n\n input: assetCurrent,\n fallbackInput: assetFallback\n }\n case 'isolated':\n const { current: isolatedCurrent, fallback: isolatedFallback } = this.getNextInputs(state, value.symbolInput)\n\n return {\n ...state,\n src: value.url ?? '',\n fallbackType:\n !state.fallbackInput || value.symbolInput === state.fallbackInput\n ? { kind: 'lazy', symbolInput: value.symbolInput } /* try loading external image as a fallback */\n : { kind: 'asset', symbolInput: state.fallbackInput, extension: 'svg' } /* try again with fallback symbol */,\n\n input: isolatedCurrent,\n fallbackInput: isolatedFallback\n }\n case 'lazy':\n const { current: lazyCurrent, fallback: lazyFallback } = this.getNextInputs(state, value.symbolInput)\n\n return {\n ...state,\n src: value.url ?? '',\n fallbackType:\n !state.fallbackInput || value.symbolInput === state.fallbackInput\n ? { kind: 'default' }\n : { kind: 'asset', symbolInput: state.fallbackInput, extension: 'svg' } /* try again with fallback symbol */,\n\n input: lazyCurrent,\n fallbackInput: lazyFallback\n }\n default:\n return state\n }\n })\n\n private getNextInputs(state: CurrencySymbolState, input?: SymbolInput): { current?: SymbolInput; fallback?: SymbolInput } {\n if (!input) {\n return {}\n }\n\n const index = state.inputs.indexOf(input)\n\n return index > -1 ? { current: state.inputs[index], fallback: state.inputs[index + 1] } : {}\n }\n\n private loadFallbackImage(state: CurrencySymbolState): Observable<SymbolValue> {\n return new Observable((subscriber: Subscriber<SymbolValue>) => {\n new Promise<void>(async (resolve, reject) => {\n try {\n subscriber.next({ kind: 'default' })\n if (state.fallbackType?.kind === 'asset') {\n subscriber.next({ kind: 'asset', symbolInput: state.fallbackType.symbolInput, extension: state.fallbackType.extension })\n } else if (state.fallbackType?.kind === 'isolated') {\n const imageURI: string | undefined = await this.loadIsolatedImage(state.fallbackType.symbolInput)\n subscriber.next({ kind: 'isolated', symbolInput: state.fallbackType.symbolInput, url: imageURI })\n } else if (state.fallbackType?.kind === 'lazy') {\n // try loading external image\n const imageURI: string | undefined = await this.loadLazyImage(state.fallbackType.symbolInput)\n subscriber.next({ kind: 'lazy', symbolInput: state.fallbackType.symbolInput, url: imageURI })\n } else {\n // no image was found for the symbol, use the generic image\n subscriber.next({ kind: 'default' })\n }\n\n resolve()\n } catch (error) {\n reject(error)\n }\n }).finally(() => {\n subscriber.complete()\n })\n })\n }\n\n private async loadIsolatedImage(symbolInput: SymbolInput): Promise<string | undefined> {\n return this.filesystemService.readIsolatedSymbol(symbolInput.caseSensitive ? symbolInput.value : symbolInput.value.toLocaleLowerCase())\n }\n\n private async loadLazyImage(symbolInput: SymbolInput): Promise<string | undefined> {\n const imagePath: string = this.getSymbolImagePath(symbolInput)\n\n return this.filesystemService.readLazyImage(imagePath)\n }\n\n private getSymbolAssetURL(symbolInput: SymbolInput, extension: 'svg' | 'png'): string {\n return `./assets/symbols/${symbolInput.caseSensitive ? symbolInput.value : symbolInput.value.toLowerCase()}.${extension}`\n }\n\n private getSymbolImagePath(symbolInput: SymbolInput): string {\n return `/images/symbols/${symbolInput.caseSensitive ? symbolInput.value : symbolInput.value.toLowerCase()}`\n }\n}\n","import { FilesystemService, ICurrencySymbolFacade, ProtocolService, SymbolInput } from '@wallfree-dev/angular-core'\nimport { ICoinProtocol, ProtocolSymbols } from '@wallfree-dev/coinlib-core'\nimport { Injectable, Injector } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { BaseNgRxFacade } from '../../base/base-ngrx.facade'\n\nimport { CurrencySymbolStore } from './currency-symbol.store'\n\n@Injectable()\nexport class CurrencySymbolNgRxFacade extends BaseNgRxFacade<CurrencySymbolStore> implements ICurrencySymbolFacade {\n public readonly symbolSrc$: Observable<string>\n\n constructor(store: CurrencySymbolStore, private readonly protocolService: ProtocolService) {\n super(store)\n this.symbolSrc$ = this.store.select((state) => state.src)\n }\n\n public initWithSymbol(symbol: string | undefined, protocolIdentifier: ProtocolSymbols | undefined): void {\n this.getSymbolInputs(symbol, protocolIdentifier)\n .then((symbolInputs: SymbolInput[]) => this.store.setInitialSrc(symbolInputs))\n .catch(console.error)\n }\n\n public onSymbolChanged(symbol: string | undefined, protocolIdentifier: ProtocolSymbols | undefined): void {\n this.getSymbolInputs(symbol, protocolIdentifier)\n .then((symbolInputs: SymbolInput[]) => this.store.setInitialSrc(symbolInputs))\n .catch(console.error)\n }\n\n public onError(_symbol: string | undefined, _protocolIdentifier: ProtocolSymbols | undefined, _src?: string): void {\n this.store.onError$()\n }\n\n private async getSymbolInputs(symbol: string | undefined, protocolIdentifier: ProtocolSymbols | undefined): Promise<SymbolInput[]> {\n let assetSymbol: string | undefined\n try {\n const protocol: ICoinProtocol = await this.protocolService.getProtocol(protocolIdentifier)\n const [protocolSymbol, protocolAssetSymbol]: [string, string | undefined] = await Promise.all([\n protocol.getSymbol(),\n protocol.getAssetSymbol()\n ])\n\n assetSymbol = protocolSymbol.toLowerCase() === symbol.toLowerCase() ? protocolAssetSymbol : undefined\n } catch (e) {\n console.warn(e)\n }\n\n assetSymbol = assetSymbol ?? symbol\n\n const symbolInput: SymbolInput | undefined = assetSymbol ? { value: assetSymbol, caseSensitive: false } : undefined\n const protocolIdentifierInput: SymbolInput | undefined = protocolIdentifier\n ? { value: protocolIdentifier, caseSensitive: true }\n : undefined\n\n const symbolInputs: (SymbolInput | undefined)[] =\n protocolIdentifier && this.protocolService.isKnownProtocolSymbol(protocolIdentifier)\n ? [symbolInput, protocolIdentifierInput]\n : [protocolIdentifierInput, symbolInput]\n\n return symbolInputs.filter((symbolInputOrUndefined: SymbolInput | undefined) => symbolInputOrUndefined !== undefined)\n }\n}\n\nexport const currencySymbolNgRxFacade = (injector: Injector): CurrencySymbolNgRxFacade => {\n return new CurrencySymbolNgRxFacade(new CurrencySymbolStore(injector.get(FilesystemService)), injector.get(ProtocolService))\n}\n","import {\n IsolatedModuleManifest,\n IsolatedModuleMetadata,\n IsolatedModulePreviewMetadata,\n IsolatedModulesPlugin,\n ISOLATED_MODULES_PLUGIN,\n UIResourceStatus,\n VerifyDynamicModuleResult\n} from '@wallfree-dev/angular-core'\nimport { Inject, Injectable } from '@angular/core'\nimport { ComponentStore } from '@ngrx/component-store'\nimport { from, Observable, of } from 'rxjs'\nimport { first, map, switchMap, tap } from 'rxjs/operators'\nimport { IsolatedModulesDetailsState } from './isolated-modules-details.types'\n\nconst initialState: IsolatedModulesDetailsState = {\n manifest: {\n status: UIResourceStatus.IDLE,\n value: undefined\n },\n path: {\n status: UIResourceStatus.IDLE,\n value: undefined\n },\n isVerified: {\n status: UIResourceStatus.IDLE,\n value: undefined\n }\n}\n\n@Injectable()\nexport class IsolatedModulesDetailsStore extends ComponentStore<IsolatedModulesDetailsState> {\n constructor(@Inject(ISOLATED_MODULES_PLUGIN) private readonly isolatedModules: IsolatedModulesPlugin) {\n super(initialState)\n }\n\n public readonly loadModuleData = this.effect((metadata$: Observable<IsolatedModuleMetadata>) => {\n return metadata$.pipe(\n switchMap((metadata) =>\n metadata.type === 'preview'\n ? from(this.verifyModule(metadata)).pipe(\n first(),\n map((isVerified: boolean) => ({ manifest: metadata.manifest, isVerified }))\n )\n : of({ manifest: metadata.manifest, isVerified: true })\n ),\n tap({\n next: ({ manifest, isVerified }) => this.setData({ manifest, isVerified }),\n error: () => this.onError()\n })\n )\n })\n\n private readonly setData = this.updater(\n (state: IsolatedModulesDetailsState, data: { manifest: IsolatedModuleManifest; isVerified: boolean }) => {\n return {\n ...state,\n manifest: {\n status: UIResourceStatus.SUCCESS,\n value: data.manifest\n },\n isVerified: {\n status: UIResourceStatus.SUCCESS,\n value: data.isVerified\n }\n }\n }\n )\n\n private readonly onError = this.updater((state: IsolatedModulesDetailsState) => {\n return {\n ...state,\n manifest: {\n status: UIResourceStatus.ERROR,\n value: state.manifest.value\n },\n isVerified: {\n status: UIResourceStatus.ERROR,\n value: state.isVerified.value\n }\n }\n })\n\n private async verifyModule(metadata: IsolatedModulePreviewMetadata): Promise<boolean> {\n const { verified }: VerifyDynamicModuleResult = await this.isolatedModules.verifyDynamicModule({\n path: `${metadata.path}/${metadata.root}`.replace(/\\/+$/, ''),\n directory: metadata.directory\n })\n\n return verified\n }\n}\n","import {\n IIsolatedModulesListDetails,\n IsolatedModuleManifest,\n IsolatedModuleMetadata,\n IsolatedModulesDetailsFacade,\n ISOLATED_MODULES_PLUGIN,\n UIResource\n} from '@wallfree-dev/angular-core'\nimport { Injectable, Injector } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { BaseNgRxFacade } from '../../base/base-ngrx.facade'\nimport { IsolatedModulesDetailsStore } from './isolated-modules-details.store'\n\n@Injectable()\nexport class IsolatedModulesDetailsNgRxFacade extends BaseNgRxFacade<IsolatedModulesDetailsStore> implements IIsolatedModulesListDetails {\n public readonly manifest$: Observable<UIResource<IsolatedModuleManifest>>\n public readonly isVerified$: Observable<UIResource<boolean>>\n\n constructor(store: IsolatedModulesDetailsStore) {\n super(store)\n\n this.manifest$ = this.store.select((state) => state.manifest)\n this.isVerified$ = this.store.select((state) => state.isVerified)\n }\n\n public initWithData(metadata: IsolatedModuleMetadata): void {\n this.store.loadModuleData(metadata)\n }\n\n public onDataChanged(metadata: IsolatedModuleMetadata): void {\n this.store.loadModuleData(metadata)\n }\n}\n\nexport const isolatedModulesDetailsNgRxFacade = (injector: Injector): IsolatedModulesDetailsFacade => {\n return new IsolatedModulesDetailsNgRxFacade(new IsolatedModulesDetailsStore(injector.get(ISOLATED_MODULES_PLUGIN)))\n}\n","import { IsolatedModuleMetadata, UIResource, UIResourceStatus } from '@wallfree-dev/angular-core'\nimport { Injectable } from '@angular/core'\nimport { ComponentStore } from '@ngrx/component-store'\nimport { IsolatedModulesListState } from './isolated-modules-list.types'\n\nconst initialState: IsolatedModulesListState = {\n allModules: {\n status: UIResourceStatus.IDLE,\n value: []\n },\n filteredModules: {\n status: UIResourceStatus.IDLE,\n value: []\n }\n}\n\n@Injectable()\nexport class IsolatedModulesListStore extends ComponentStore<IsolatedModulesListState> {\n constructor() {\n super(initialState)\n }\n\n public readonly setModules = this.updater(\n (state: IsolatedModulesListState, data: { modules: UIResource<IsolatedModuleMetadata[]>; query?: string }) => {\n return {\n ...state,\n allModules: {\n status: data.modules.status,\n value: data.modules.value\n },\n filteredModules: {\n status: data.modules.status,\n value: this.filterModulesByNameOrAuthor(data.modules.value ?? [], data.query)\n }\n }\n }\n )\n\n public readonly filterModules = this.updater((state: IsolatedModulesListState, query: string | undefined) => {\n return {\n ...state,\n filteredModules: {\n status: state.allModules.status,\n value: this.filterModulesByNameOrAuthor(state.allModules.value ?? [], query)\n }\n }\n })\n\n private filterModulesByNameOrAuthor(modules: IsolatedModuleMetadata[], query: string | undefined): IsolatedModuleMetadata[] {\n return query\n ? modules.filter((module: IsolatedModuleMetadata) => {\n return (\n module.manifest.name.toLowerCase().includes(query.toLowerCase()) ||\n module.manifest.author.toLowerCase().includes(query.toLowerCase())\n )\n })\n : modules\n }\n}\n","import { IIsolatedModulesListFacade, IsolatedModuleMetadata, IsolatedModulesListFacade, UIResource } from '@wallfree-dev/angular-core'\nimport { Injectable, Injector } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { BaseNgRxFacade } from '../../base/base-ngrx.facade'\nimport { IsolatedModulesListStore } from './isolated-modules-list.store'\nimport { IsolatedModulesListState } from './isolated-modules-list.types'\n\n@Injectable()\nexport class IsolatedModulesListNgRxFacade extends BaseNgRxFacade<IsolatedModulesListStore> implements IIsolatedModulesListFacade {\n public readonly modules$: Observable<UIResource<IsolatedModuleMetadata[]>>\n\n constructor(store: IsolatedModulesListStore) {\n super(store)\n\n this.modules$ = this.store.select((state: IsolatedModulesListState) => state.filteredModules)\n }\n\n public updateModules(modules: UIResource<IsolatedModuleMetadata[]>, query: string): void {\n this.store.setModules({ modules, query })\n }\n\n public filterModules(query: string | undefined): void {\n this.store.filterModules(query)\n }\n}\n\nexport const isolatedModulesListNgRxFacade = (_injector: Injector): IsolatedModulesListFacade => {\n return new IsolatedModulesListNgRxFacade(new IsolatedModulesListStore())\n}\n","import { BaseModulesService, IsolatedModuleMetadata, UIResourceStatus } from '@wallfree-dev/angular-core'\nimport { ComponentStore, tapResponse } from '@ngrx/component-store'\nimport { from, Observable } from 'rxjs'\nimport { first, switchMap, tap } from 'rxjs/operators'\nimport { IsolatedModulesListPageState } from './isolated-modules-list.types'\n\nconst initialState: IsolatedModulesListPageState = {\n modules: {\n status: UIResourceStatus.IDLE,\n value: []\n },\n filter: undefined\n}\n\nexport class IsolatedModulesListPageStore extends ComponentStore<IsolatedModulesListPageState> {\n constructor(private readonly modulesService: BaseModulesService) {\n super(initialState)\n }\n\n public readonly onPageLoaded$ = this.effect((trigger$: Observable<void>) => {\n return trigger$.pipe(\n tap(() => this.onModulesLoading()),\n switchMap(() => from(this.loadModules()).pipe(first())),\n tapResponse(\n (value: IsolatedModuleMetadata[]) => this.setModules(value),\n () => this.onModulesLoadingError()\n )\n )\n })\n\n public readonly setModules = this.updater((state: IsolatedModulesListPageState, modules: IsolatedModuleMetadata[]) => {\n return {\n ...state,\n modules: {\n status: UIResourceStatus.SUCCESS,\n value: modules\n }\n }\n })\n\n public readonly onModulesLoading = this.updater((state: IsolatedModulesListPageState) => {\n return {\n ...state,\n modules: {\n status: UIResourceStatus.LOADING,\n value: state.modules.value\n }\n }\n })\n\n public readonly onModulesLoadingError = this.updater((state: IsolatedModulesListPageState) => {\n return {\n ...state,\n modules: {\n status: UIResourceStatus.ERROR,\n value: state.modules.value\n }\n }\n })\n\n public readonly setFilterQuery = this.updater((state: IsolatedModulesListPageState, query: string | undefined) => {\n return {\n ...state,\n filter: query\n }\n })\n\n private async loadModules(): Promise<IsolatedModuleMetadata[]> {\n return this.modulesService.getModulesMetadata()\n }\n}\n","import { BaseModulesService, IsolatedModuleMetadata, IsolatedModulesListPageFacade, UiEventService, UIResource } from '@wallfree-dev/angular-core'\nimport { Injector } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { BaseNgRxFacade } from '../../base/base-ngrx.facade'\n\nimport { IsolatedModulesListPageStore } from './isolated-modules-list.store'\nimport { IsolatedModulesListPageState } from './isolated-modules-list.types'\n\nexport class IsolatedModulesListPageNgRxFacade\n extends BaseNgRxFacade<IsolatedModulesListPageStore>\n implements IsolatedModulesListPageFacade\n{\n public readonly modules$: Observable<UIResource<IsolatedModuleMetadata[]>>\n public readonly filter$: Observable<string | undefined>\n\n constructor(store: IsolatedModulesListPageStore, uiEventService: UiEventService) {\n super(store, uiEventService)\n\n this.modules$ = this.store.select((state: IsolatedModulesListPageState) => state.modules)\n this.filter$ = this.store.select((state: IsolatedModulesListPageState) => state.filter)\n }\n\n public onViewInit() {\n this.store.onPageLoaded$()\n\n return super.onViewInit()\n }\n\n public onViewWillEnter(): void {\n this.store.onPageLoaded$()\n }\n\n public onFilterQueryChanged(query: string | undefined): void {\n this.store.setFilterQuery(query)\n }\n}\n\nexport const isolatedModulesListPageNgRxFacade = (injector: Injector): IsolatedModulesListPageFacade => {\n return new IsolatedModulesListPageNgRxFacade(\n new IsolatedModulesListPageStore(injector.get(BaseModulesService)),\n injector.get(UiEventService)\n )\n}\n","/*\n * Public API Surface of ngrx\n */\n\n// NgRx module\nexport * from './lib/airgap-angular-ngrx.module'\n\n// Base\nexport * from './lib/base/base-ngrx.facade'\n\n// Components\nexport * from './lib/components/components.module'\nexport * from './lib/components/currency-symbol/currency-symbol.facade'\nexport * from './lib/components/isolated-modules-details/isolated-modules-details.facade'\nexport * from './lib/components/isolated-modules-list/isolated-modules-list.facade'\n\n// Pages\nexport * from './lib/pages/isolated-modules-list/isolated-modules-list.facade'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.CurrencySymbolStore","i2","initialState","i1.IsolatedModulesDetailsStore","i1.IsolatedModulesListStore"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "@ngrx/store";
|
|
3
|
+
import * as i2 from "./components/components.module";
|
|
4
|
+
export declare class AirGapAngularNgRxModule {
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AirGapAngularNgRxModule, never>;
|
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AirGapAngularNgRxModule, never, [typeof i1.StoreFeatureModule, typeof i2.ComponentsModule], [typeof i2.ComponentsModule]>;
|
|
7
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AirGapAngularNgRxModule>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=airgap-angular-ngrx.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"airgap-angular-ngrx.module.d.ts","sourceRoot":"","sources":["../../src/lib/airgap-angular-ngrx.module.ts"],"names":[],"mappings":";;;AAIA,qBAQa,uBAAuB;yCAAvB,uBAAuB;0CAAvB,uBAAuB;0CAAvB,uBAAuB;CAAG"}
|