Skip to content

Commit 830fa5b

Browse files
author
djmaze
committed
Added back base for simple plugins hooks
1 parent fe4dbc7 commit 830fa5b

File tree

4 files changed

+57
-1
lines changed

4 files changed

+57
-1
lines changed

dev/Common/Plugins.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,34 @@
11
import { settingsAddViewModel } from 'Screen/AbstractSettings';
22
import { SettingsGet } from 'Common/Globals';
3+
import { isArray, isFunction } from 'Common/Utils';
34

4-
const USER_VIEW_MODELS_HOOKS = [],
5+
const SIMPLE_HOOKS = {},
6+
USER_VIEW_MODELS_HOOKS = [],
57
ADMIN_VIEW_MODELS_HOOKS = [];
68

9+
/**
10+
* @param {string} name
11+
* @param {Function} callback
12+
*/
13+
rl.addHook = (name, callback) => {
14+
if (isFunction(callback)) {
15+
if (!isArray(SIMPLE_HOOKS[name])) {
16+
SIMPLE_HOOKS[name] = [];
17+
}
18+
SIMPLE_HOOKS[name].push(callback);
19+
}
20+
};
21+
22+
/**
23+
* @param {string} name
24+
* @param {Array=} args = []
25+
*/
26+
export function runHook(name, args = []) {
27+
if (isArray(SIMPLE_HOOKS[name])) {
28+
SIMPLE_HOOKS[name].forEach(callback => callback(...args));
29+
}
30+
}
31+
732
/**
833
* @param {Function} callback
934
* @param {string} action

dev/Knoin/Knoin.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import ko from 'ko';
22

33
import { doc, $htmlCL } from 'Common/Globals';
4+
import { runHook } from 'Common/Plugins';
45
import { isNonEmptyArray, isFunction } from 'Common/Utils';
56

67
let currentScreen = null,
@@ -172,6 +173,8 @@ export function showScreenPopup(ViewModelClassToShow, params = []) {
172173
vm.modalVisibility(true);
173174

174175
vm.onShow && vm.onShow(...params);
176+
177+
runHook('view-model-on-show', [vm.name, vm.__vm, params]);
175178
}
176179
}
177180

@@ -275,6 +278,8 @@ function screenOnRoute(screenName, subPart) {
275278
autofocus(ViewModelClass.__dom);
276279

277280
ViewModelClass.__vm.onShowWithDelay && setTimeout(()=>ViewModelClass.__vm.onShowWithDelay, 200);
281+
282+
runHook('view-model-on-show', [ViewModelClass.name, ViewModelClass.__vm, params]);
278283
}
279284
});
280285
}

dev/Remote/AbstractFetch.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Notification } from 'Common/Enums';
22
import { Settings } from 'Common/Globals';
33
import { isArray, pInt, pString } from 'Common/Utils';
44
import { serverRequest } from 'Common/Links';
5+
import { runHook } from 'Common/Plugins';
56

67
let iJsonErrorCount = 0,
78
iTokenErrorCount = 0;
@@ -92,6 +93,8 @@ export class AbstractFetchRemote
9293
abortActions.forEach(actionToAbort => abort(actionToAbort));
9394
}
9495

96+
runHook('json-default-request', [sAction, params, sGetAdd]);
97+
9598
fetchJSON(sAction, sGetAdd,
9699
params,
97100
undefined === iTimeout ? 30000 : pInt(iTimeout),
@@ -127,6 +130,14 @@ export class AbstractFetchRemote
127130
}
128131
}
129132

133+
runHook('json-default-response', [
134+
sAction,
135+
iError,
136+
data,
137+
cached,
138+
params
139+
]);
140+
130141
fCallback && fCallback(
131142
iError,
132143
data,

dev/View/User/Login.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Notification } from 'Common/Enums';
44
import { ClientSideKeyName } from 'Common/EnumsUser';
55
import { Settings, SettingsGet } from 'Common/Globals';
66
import { getNotification, reload as translatorReload, convertLangName } from 'Common/Translator';
7+
import { runHook } from 'Common/Plugins';
78

89
import { LanguageStore } from 'Stores/Language';
910

@@ -127,6 +128,20 @@ class LoginUserView extends AbstractViewCenter {
127128
this.emailError(!email);
128129
this.passwordError(!pass);
129130
this.additionalCodeError(totp && !code);
131+
132+
let pluginResultCode = 0, pluginResultMessage = '';
133+
Plugins.runHook('user-login-submit', [(iResultCode, sResultMessage) => {
134+
pluginResultCode = iResultCode;
135+
pluginResultMessage = sResultMessage;
136+
}]);
137+
if (0 < pluginResultCode) {
138+
this.submitError(getNotification(pluginResultCode));
139+
valid = false;
140+
} else if (pluginResultMessage) {
141+
this.submitError(pluginResultMessage);
142+
valid = false;
143+
}
144+
130145
this.formError(!valid);
131146

132147
if (valid) {

0 commit comments

Comments
 (0)