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:
Jesse Chan
2021-05-22 21:14:59 +08:00
parent 2c0e036c02
commit 2b6ca5ff66
5 changed files with 6 additions and 25 deletions

View File

@@ -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');

View File

@@ -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();

View File

@@ -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(

View File

@@ -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(),
});

View File

@@ -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[];
}