mirror of https://github.com/vector-im/riot-web
Convert hooks to Typescript
parent
93b4ea5be4
commit
ed4a427287
|
@ -14,9 +14,11 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { useState, useEffect } from 'react';
|
||||
import {useState, useEffect, DependencyList} from 'react';
|
||||
|
||||
export const useAsyncMemo = (fn, deps, initialValue) => {
|
||||
type Fn<T> = () => Promise<T>;
|
||||
|
||||
export const useAsyncMemo = <T>(fn: Fn<T>, deps: DependencyList, initialValue?: T) => {
|
||||
const [value, setValue] = useState(initialValue);
|
||||
useEffect(() => {
|
||||
fn().then(setValue);
|
|
@ -15,11 +15,14 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import {useRef, useEffect} from "react";
|
||||
import type {EventEmitter} from "events";
|
||||
|
||||
type Handler = (...args: any[]) => void;
|
||||
|
||||
// Hook to wrap event emitter on and removeListener in hook lifecycle
|
||||
export const useEventEmitter = (emitter, eventName, handler) => {
|
||||
export const useEventEmitter = (emitter: EventEmitter, eventName: string | symbol, handler: Handler) => {
|
||||
// Create a ref that stores handler
|
||||
const savedHandler = useRef();
|
||||
const savedHandler = useRef(handler);
|
||||
|
||||
// Update ref.current value if handler changes.
|
||||
useEffect(() => {
|
|
@ -18,7 +18,7 @@ import {useEffect, useState} from "react";
|
|||
import SettingsStore from '../settings/SettingsStore';
|
||||
|
||||
// Hook to fetch the value of a setting and dynamically update when it changes
|
||||
export const useSettingValue = (settingName, roomId = null, excludeDefault = false) => {
|
||||
export const useSettingValue = (settingName: string, roomId: string = null, excludeDefault = false) => {
|
||||
const [value, setValue] = useState(SettingsStore.getValue(settingName, roomId, excludeDefault));
|
||||
|
||||
useEffect(() => {
|
||||
|
@ -35,7 +35,7 @@ export const useSettingValue = (settingName, roomId = null, excludeDefault = fal
|
|||
};
|
||||
|
||||
// Hook to fetch whether a feature is enabled and dynamically update when that changes
|
||||
export const useFeatureEnabled = (featureName, roomId = null) => {
|
||||
export const useFeatureEnabled = (featureName: string, roomId: string = null) => {
|
||||
const [enabled, setEnabled] = useState(SettingsStore.isFeatureEnabled(featureName, roomId));
|
||||
|
||||
useEffect(() => {
|
|
@ -14,12 +14,12 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import {useState} from 'react';
|
||||
import {useState} from "react";
|
||||
|
||||
// Hook to simplify toggling of a boolean state value
|
||||
// Returns value, method to toggle boolean value and method to set the boolean value
|
||||
export const useStateToggle = (initialValue) => {
|
||||
const [value, setValue] = useState(Boolean(initialValue));
|
||||
export const useStateToggle = (initialValue: boolean) => {
|
||||
const [value, setValue] = useState(initialValue);
|
||||
const toggleValue = () => {
|
||||
setValue(!value);
|
||||
};
|
Loading…
Reference in New Issue