mirror of
https://github.com/zoriya/flood.git
synced 2025-12-05 23:06:20 +00:00
API: ditch inefficient "TRANSFER_SUMMARY_DIFF_CHANGE", always full update
TRANSFER_SUMMARY_DIFF_CHANGE is almost always full update:
```
[
{"op":"replace","path":"/downTotal","value":851320719382},
{"op":"replace","path":"/downRate","value":6139},
{"op":"replace","path":"/upTotal","value":1826972572184},
{"op":"replace","path":"/upRate","value":5480521}
]
```
which is generally less efficient than full object (TRANSFER_SUMMARY_FULL_UPDATE):
```
{
"upRate":5430724,
"upTotal":1827320521117,
"downRate":6062,
"downTotal":851321106383
}
```
This commit is contained in:
@@ -56,10 +56,6 @@ const ServerEventHandlers: Record<keyof ServerEvents, (event: unknown) => void>
|
||||
UIStore.satisfyDependency('torrent-taxonomy');
|
||||
},
|
||||
|
||||
TRANSFER_SUMMARY_DIFF_CHANGE: (event: unknown) => {
|
||||
TransferDataStore.handleTransferSummaryDiffChange(JSON.parse((event as {data: string}).data));
|
||||
},
|
||||
|
||||
TRANSFER_SUMMARY_FULL_UPDATE: (event: unknown) => {
|
||||
TransferDataStore.handleTransferSummaryFullUpdate(JSON.parse((event as {data: string}).data));
|
||||
UIStore.satisfyDependency('transfer-data');
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import jsonpatch, {Operation} from 'fast-json-patch';
|
||||
import {makeAutoObservable} from 'mobx';
|
||||
|
||||
import type {TransferDirection, TransferHistory, TransferSummary} from '@shared/types/TransferData';
|
||||
@@ -45,11 +44,6 @@ class TransferDataStore {
|
||||
this.transferRates = transferData;
|
||||
}
|
||||
|
||||
handleTransferSummaryDiffChange(diff: Operation[]) {
|
||||
jsonpatch.applyPatch(this.transferSummary, diff);
|
||||
this.appendCurrentTransferRateToHistory();
|
||||
}
|
||||
|
||||
handleTransferSummaryFullUpdate(transferSummary: TransferSummary) {
|
||||
this.transferSummary = transferSummary;
|
||||
this.appendCurrentTransferRateToHistory();
|
||||
|
||||
@@ -108,13 +108,9 @@ export default async (req: Request<unknown, unknown, unknown, {historySnapshot:
|
||||
// Transfer summary
|
||||
const transferSummary = serviceInstances.historyService.getTransferSummary();
|
||||
serverEvent.emit(transferSummary.id, 'TRANSFER_SUMMARY_FULL_UPDATE', transferSummary.transferSummary);
|
||||
handleEvents(
|
||||
serviceInstances.historyService,
|
||||
'TRANSFER_SUMMARY_DIFF_CHANGE',
|
||||
({id, diff}: {id: number; diff: Operation[]}) => {
|
||||
serverEvent.emit(id, 'TRANSFER_SUMMARY_DIFF_CHANGE', diff);
|
||||
},
|
||||
);
|
||||
handleEvents(serviceInstances.historyService, 'TRANSFER_SUMMARY_FULL_UPDATE', ({id, summary}) => {
|
||||
serverEvent.emit(id, 'TRANSFER_SUMMARY_FULL_UPDATE', summary);
|
||||
});
|
||||
|
||||
// Notifications
|
||||
serverEvent.emit(
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import jsonpatch, {Operation} from 'fast-json-patch';
|
||||
|
||||
import type {HistorySnapshot} from '@shared/constants/historySnapshotTypes';
|
||||
import type {TransferHistory, TransferSummary} from '@shared/types/TransferData';
|
||||
|
||||
@@ -8,7 +6,7 @@ import config from '../../config';
|
||||
import HistoryEra from '../models/HistoryEra';
|
||||
|
||||
interface HistoryServiceEvents {
|
||||
TRANSFER_SUMMARY_DIFF_CHANGE: (payload: {id: number; diff: Operation[]}) => void;
|
||||
TRANSFER_SUMMARY_FULL_UPDATE: (payload: {id: number; summary: TransferSummary}) => void;
|
||||
FETCH_TRANSFER_SUMMARY_SUCCESS: () => void;
|
||||
FETCH_TRANSFER_SUMMARY_ERROR: () => void;
|
||||
}
|
||||
@@ -109,10 +107,8 @@ class HistoryService extends BaseService<HistoryServiceEvents> {
|
||||
}
|
||||
|
||||
private handleFetchTransferSummarySuccess = async (nextTransferSummary: TransferSummary): Promise<void> => {
|
||||
const summaryDiff = jsonpatch.compare(this.transferSummary, nextTransferSummary);
|
||||
|
||||
this.emit('TRANSFER_SUMMARY_DIFF_CHANGE', {
|
||||
diff: summaryDiff,
|
||||
this.emit('TRANSFER_SUMMARY_FULL_UPDATE', {
|
||||
summary: nextTransferSummary,
|
||||
id: Date.now(),
|
||||
});
|
||||
|
||||
|
||||
@@ -19,5 +19,4 @@ export interface ServerEvents {
|
||||
TORRENT_LIST_DIFF_CHANGE: Operation[];
|
||||
TRANSFER_HISTORY_FULL_UPDATE: TransferHistory;
|
||||
TRANSFER_SUMMARY_FULL_UPDATE: TransferSummary;
|
||||
TRANSFER_SUMMARY_DIFF_CHANGE: Operation[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user