mirror of
https://github.com/pezkuwichain/pezkuwi-apps.git
synced 2026-04-23 01:17:58 +00:00
feat: initial Pezkuwi Apps rebrand from polkadot-apps
Rebranded terminology: - Polkadot → Pezkuwi - Kusama → Dicle - Westend → Zagros - Rococo → PezkuwiChain - Substrate → Bizinikiwi - parachain → teyrchain Custom logos with Kurdistan brand colors (#e6007a → #86e62a): - bizinikiwi-hexagon.svg - sora-bizinikiwi.svg - hezscanner.svg - heztreasury.svg - pezkuwiscan.svg - pezkuwistats.svg - pezkuwiassembly.svg - pezkuwiholic.svg
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
// Copyright 2017-2025 @pezkuwi/app-accounts authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Environment } from '../types.js';
|
||||
|
||||
// https://github.com/electron/electron/issues/2288
|
||||
function isElectron () {
|
||||
if (process?.versions?.electron) {
|
||||
return true;
|
||||
} else if ((window?.process as unknown as (Record<string, string> | undefined))?.type === 'renderer') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return navigator?.userAgent?.indexOf('Electron') >= 0;
|
||||
}
|
||||
|
||||
export function getEnvironment (): Environment {
|
||||
if (isElectron()) {
|
||||
return 'app';
|
||||
}
|
||||
|
||||
return 'web';
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
// Copyright 2017-2025 @pezkuwi/react-api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Hash } from '@pezkuwi/types/interfaces';
|
||||
import type { Codec } from '@pezkuwi/types/types';
|
||||
|
||||
type AtQuery <I extends unknown[]> = (hash: string | Uint8Array, ...params: I) => Promise<Codec>;
|
||||
|
||||
export async function getHistoric <T extends Codec, I extends unknown[] = unknown[]> (atQuery: AtQuery<I>, params: I, hashes: Hash[]): Promise<[Hash, T][]> {
|
||||
return Promise
|
||||
.all(hashes.map((hash): Promise<T> => atQuery(hash, ...params) as Promise<T>))
|
||||
.then((results): [Hash, T][] =>
|
||||
results.map((value, index): [Hash, T] => [hashes[index], value])
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
// Copyright 2017-2025 @pezkuwi/react-api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export { getEnvironment } from './getEnvironment.js';
|
||||
export { getHistoric } from './historic.js';
|
||||
export { intervalObservable } from './intervalObservable.js';
|
||||
export { isEqual } from './isEqual.js';
|
||||
export { triggerChange } from './triggerChange.js';
|
||||
@@ -0,0 +1,23 @@
|
||||
// Copyright 2017-2025 @pezkuwi/react-api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type React from 'react';
|
||||
import type { Subscription } from 'rxjs';
|
||||
import type { CallState } from '../types.js';
|
||||
|
||||
import { interval } from 'rxjs';
|
||||
|
||||
const interval$ = interval(500);
|
||||
|
||||
export function intervalObservable<Props, State extends CallState> (that: React.Component<Props, State>): Subscription {
|
||||
return interval$.subscribe((): void => {
|
||||
const elapsed = Date.now() - (that.state.callUpdatedAt || 0);
|
||||
const callUpdated = elapsed <= 1500;
|
||||
|
||||
if (callUpdated !== that.state.callUpdated) {
|
||||
that.setState({
|
||||
callUpdated
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
// Copyright 2017-2025 @pezkuwi/react-api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
function flatten (_key: string | null, value?: unknown): unknown {
|
||||
return !value
|
||||
? value
|
||||
: (value as Record<string, unknown>).$$typeof
|
||||
? ''
|
||||
: Array.isArray(value)
|
||||
? value.map((item) => flatten(null, item))
|
||||
: value;
|
||||
}
|
||||
|
||||
export function isEqual <T> (a?: T, b?: T): boolean {
|
||||
return JSON.stringify({ test: a }, flatten) === JSON.stringify({ test: b }, flatten);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// Copyright 2017-2025 @pezkuwi/react-api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { OnChangeCb } from '../types.js';
|
||||
|
||||
import { isFunction, isObservable } from '@pezkuwi/util';
|
||||
|
||||
export function triggerChange (value?: unknown, ...callOnResult: (OnChangeCb | undefined)[]): void {
|
||||
if (!callOnResult?.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
callOnResult.forEach((callOnResult): void => {
|
||||
if (isObservable(callOnResult)) {
|
||||
callOnResult.next(value);
|
||||
} else if (isFunction(callOnResult)) {
|
||||
callOnResult(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user