mirror of
https://github.com/array-in-a-matrix/xinny.git
synced 2024-05-31 18:47:29 -04:00
24 lines
856 B
TypeScript
24 lines
856 B
TypeScript
|
import { useEffect, useState } from 'react';
|
||
|
import { ClientEvent, MatrixClient, MatrixEvent } from 'matrix-js-sdk';
|
||
|
import { getRecentEmojis } from '../plugins/recent-emoji';
|
||
|
import { AccountDataEvent } from '../../types/matrix/accountData';
|
||
|
import { IEmoji } from '../plugins/emoji';
|
||
|
|
||
|
export const useRecentEmoji = (mx: MatrixClient, limit?: number): IEmoji[] => {
|
||
|
const [recentEmoji, setRecentEmoji] = useState(() => getRecentEmojis(mx, limit));
|
||
|
|
||
|
useEffect(() => {
|
||
|
const handleAccountData = (event: MatrixEvent) => {
|
||
|
if (event.getType() !== AccountDataEvent.ElementRecentEmoji) return;
|
||
|
setRecentEmoji(getRecentEmojis(mx, limit));
|
||
|
};
|
||
|
|
||
|
mx.on(ClientEvent.AccountData, handleAccountData);
|
||
|
return () => {
|
||
|
mx.removeListener(ClientEvent.AccountData, handleAccountData);
|
||
|
};
|
||
|
}, [mx, limit]);
|
||
|
|
||
|
return recentEmoji;
|
||
|
};
|