Track frequently used emojis in web UI (#5275)
* Track frequently used emojis in web UI * Persist emoji usage, but debounce commits to the settings API * Fix #5144 - Add tooltips to picker * Display only 2 lines of frequently used emojis
This commit is contained in:
		@@ -1,6 +1,8 @@
 | 
			
		||||
import axios from 'axios';
 | 
			
		||||
import { debounce } from 'lodash';
 | 
			
		||||
 | 
			
		||||
export const SETTING_CHANGE = 'SETTING_CHANGE';
 | 
			
		||||
export const SETTING_SAVE   = 'SETTING_SAVE';
 | 
			
		||||
 | 
			
		||||
export function changeSetting(key, value) {
 | 
			
		||||
  return dispatch => {
 | 
			
		||||
@@ -14,10 +16,16 @@ export function changeSetting(key, value) {
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const debouncedSave = debounce((dispatch, getState) => {
 | 
			
		||||
  if (getState().getIn(['settings', 'saved'])) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const data = getState().get('settings').filter((_, key) => key !== 'saved').toJS();
 | 
			
		||||
 | 
			
		||||
  axios.put('/api/web/settings', { data }).then(() => dispatch({ type: SETTING_SAVE }));
 | 
			
		||||
}, 5000, { trailing: true });
 | 
			
		||||
 | 
			
		||||
export function saveSettings() {
 | 
			
		||||
  return (_, getState) => {
 | 
			
		||||
    axios.put('/api/web/settings', {
 | 
			
		||||
      data: getState().get('settings').toJS(),
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
  return (dispatch, getState) => debouncedSave(dispatch, getState);
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user