1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

useCallback hook

This commit is contained in:
grafixeyehero 2021-11-13 21:05:37 +03:00
parent 192b7542d8
commit aaa69d92fe

View file

@ -1,4 +1,4 @@
import React, { FunctionComponent, useEffect, useState, useRef } from 'react'; import React, { FunctionComponent, useCallback, useEffect, useState, useRef } from 'react';
import Dashboard from '../../scripts/clientUtils'; import Dashboard from '../../scripts/clientUtils';
import globalize from '../../scripts/globalize'; import globalize from '../../scripts/globalize';
import LibraryMenu from '../../scripts/libraryMenu'; import LibraryMenu from '../../scripts/libraryMenu';
@ -32,22 +32,18 @@ const UserEditPage: FunctionComponent = () => {
const element = useRef(null); const element = useRef(null);
useEffect(() => { const triggerChange = (select) => {
const evt = document.createEvent('HTMLEvents');
evt.initEvent('change', false, true);
select.dispatchEvent(evt);
};
const getUser = () => { const getUser = () => {
const userId = appRouter.param('userId'); const userId = appRouter.param('userId');
return window.ApiClient.getUser(userId); return window.ApiClient.getUser(userId);
}; };
const loadData = () => { const loadAuthProviders = useCallback((user, providers) => {
loading.show();
getUser().then(function (user) {
loadUser(user);
});
};
loadData();
const loadAuthProviders = (user, providers) => {
const fldSelectLoginProvider = element?.current?.querySelector('.fldSelectLoginProvider'); const fldSelectLoginProvider = element?.current?.querySelector('.fldSelectLoginProvider');
providers.length > 1 ? fldSelectLoginProvider.classList.remove('hide') : fldSelectLoginProvider.classList.add('hide'); providers.length > 1 ? fldSelectLoginProvider.classList.remove('hide') : fldSelectLoginProvider.classList.add('hide');
@ -55,9 +51,9 @@ const UserEditPage: FunctionComponent = () => {
const currentProviderId = user.Policy.AuthenticationProviderId; const currentProviderId = user.Policy.AuthenticationProviderId;
setAuthenticationProviderId(currentProviderId); setAuthenticationProviderId(currentProviderId);
}; }, []);
const loadPasswordResetProviders = (user, providers) => { const loadPasswordResetProviders = useCallback((user, providers) => {
const fldSelectPasswordResetProvider = element?.current?.querySelector('.fldSelectPasswordResetProvider'); const fldSelectPasswordResetProvider = element?.current?.querySelector('.fldSelectPasswordResetProvider');
providers.length > 1 ? fldSelectPasswordResetProvider.classList.remove('hide') : fldSelectPasswordResetProvider.classList.add('hide'); providers.length > 1 ? fldSelectPasswordResetProvider.classList.remove('hide') : fldSelectPasswordResetProvider.classList.add('hide');
@ -65,9 +61,9 @@ const UserEditPage: FunctionComponent = () => {
const currentProviderId = user.Policy.PasswordResetProviderId; const currentProviderId = user.Policy.PasswordResetProviderId;
setPasswordResetProviderId(currentProviderId); setPasswordResetProviderId(currentProviderId);
}; }, []);
const loadDeleteFolders = (user, mediaFolders) => { const loadDeleteFolders = useCallback((user, mediaFolders) => {
window.ApiClient.getJSON(window.ApiClient.getUrl('Channels', { window.ApiClient.getJSON(window.ApiClient.getUrl('Channels', {
SupportsMediaDeletion: true SupportsMediaDeletion: true
})).then(function (channelsResult) { })).then(function (channelsResult) {
@ -101,15 +97,9 @@ const UserEditPage: FunctionComponent = () => {
chkEnableDeleteAllFolders.checked = user.Policy.EnableContentDeletion; chkEnableDeleteAllFolders.checked = user.Policy.EnableContentDeletion;
triggerChange(chkEnableDeleteAllFolders); triggerChange(chkEnableDeleteAllFolders);
}); });
}; }, []);
const triggerChange = (select) => { const loadUser = useCallback((user) => {
const evt = document.createEvent('HTMLEvents');
evt.initEvent('change', false, true);
select.dispatchEvent(evt);
};
const loadUser = (user) => {
window.ApiClient.getJSON(window.ApiClient.getUrl('Auth/Providers')).then(function (providers) { window.ApiClient.getJSON(window.ApiClient.getUrl('Auth/Providers')).then(function (providers) {
loadAuthProviders(user, providers); loadAuthProviders(user, providers);
}); });
@ -155,7 +145,17 @@ const UserEditPage: FunctionComponent = () => {
element.current.querySelector('#selectSyncPlayAccess').value = user.Policy.SyncPlayAccess; element.current.querySelector('#selectSyncPlayAccess').value = user.Policy.SyncPlayAccess;
} }
loading.hide(); loading.hide();
}; }, [loadAuthProviders, loadPasswordResetProviders, loadDeleteFolders ]);
const loadData = useCallback(() => {
loading.show();
getUser().then(function (user) {
loadUser(user);
});
}, [loadUser]);
useEffect(() => {
loadData();
function onSaveComplete() { function onSaveComplete() {
Dashboard.navigate('userprofiles.html'); Dashboard.navigate('userprofiles.html');
@ -228,7 +228,7 @@ const UserEditPage: FunctionComponent = () => {
element?.current?.querySelector('.button-cancel').addEventListener('click', function() { element?.current?.querySelector('.button-cancel').addEventListener('click', function() {
window.history.back(); window.history.back();
}); });
}, []); }, [loadData]);
return ( return (
<div ref={element}> <div ref={element}>