mirror of
https://github.com/Qortal/qortal-mobile.git
synced 2025-07-05 13:11:22 +00:00
221 lines
5.3 KiB
TypeScript
221 lines
5.3 KiB
TypeScript
import React, { useCallback, useEffect, useRef } from "react";
|
|
|
|
|
|
|
|
|
|
export const useBlockedAddresses = (isAuthenticated: boolean) => {
|
|
const userBlockedRef = useRef({})
|
|
const userNamesBlockedRef = useRef({})
|
|
|
|
const getAllBlockedUsers = useCallback(()=> {
|
|
|
|
return {
|
|
names: userNamesBlockedRef.current,
|
|
addresses: userBlockedRef.current
|
|
}
|
|
}, [])
|
|
|
|
const isUserBlocked = useCallback((address, name)=> {
|
|
try {
|
|
if(!address) return false
|
|
if(userBlockedRef.current[address]) return true
|
|
return false
|
|
|
|
|
|
} catch (error) {
|
|
//error
|
|
}
|
|
}, [])
|
|
|
|
useEffect(()=> {
|
|
if (!isAuthenticated) return;
|
|
userBlockedRef.current = {};
|
|
userNamesBlockedRef.current = {};
|
|
const fetchBlockedList = async ()=> {
|
|
try {
|
|
const response = await new Promise((res, rej) => {
|
|
window.sendMessage("listActions", {
|
|
|
|
type: 'get',
|
|
listName: `blockedAddresses`,
|
|
|
|
})
|
|
.then((response) => {
|
|
if (response.error) {
|
|
rej(response?.message);
|
|
return;
|
|
} else {
|
|
res(response);
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error("Failed qortalRequest", error);
|
|
});
|
|
})
|
|
const blockedUsers = {}
|
|
response?.forEach((item)=> {
|
|
blockedUsers[item] = true
|
|
})
|
|
userBlockedRef.current = blockedUsers
|
|
|
|
const response2 = await new Promise((res, rej) => {
|
|
window.sendMessage("listActions", {
|
|
|
|
type: 'get',
|
|
listName: `blockedNames`,
|
|
|
|
})
|
|
.then((response) => {
|
|
if (response.error) {
|
|
rej(response?.message);
|
|
return;
|
|
} else {
|
|
res(response);
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error("Failed qortalRequest", error);
|
|
});
|
|
})
|
|
const blockedUsers2 = {}
|
|
response2?.forEach((item)=> {
|
|
blockedUsers2[item] = true
|
|
})
|
|
userNamesBlockedRef.current = blockedUsers2
|
|
|
|
|
|
} catch (error) {
|
|
console.error(error)
|
|
}
|
|
}
|
|
fetchBlockedList()
|
|
}, [isAuthenticated])
|
|
|
|
const removeBlockFromList = useCallback(async (address, name)=> {
|
|
if(name){
|
|
await new Promise((res, rej) => {
|
|
window.sendMessage("listActions", {
|
|
|
|
type: 'remove',
|
|
items: [name] ,
|
|
listName: 'blockedNames'
|
|
|
|
})
|
|
.then((response) => {
|
|
if (response.error) {
|
|
rej(response?.message);
|
|
return;
|
|
} else {
|
|
|
|
const copyObject = {...userNamesBlockedRef.current}
|
|
delete copyObject[name]
|
|
userNamesBlockedRef.current = copyObject
|
|
|
|
|
|
res(response);
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error("Failed qortalRequest", error);
|
|
});
|
|
})
|
|
}
|
|
|
|
if(address){
|
|
await new Promise((res, rej) => {
|
|
window.sendMessage("listActions", {
|
|
|
|
type: 'remove',
|
|
items: [address],
|
|
listName: 'blockedAddresses'
|
|
|
|
})
|
|
.then((response) => {
|
|
if (response.error) {
|
|
rej(response?.message);
|
|
return;
|
|
} else {
|
|
|
|
const copyObject = {...userBlockedRef.current}
|
|
delete copyObject[address]
|
|
userBlockedRef.current = copyObject
|
|
|
|
|
|
res(response);
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error("Failed qortalRequest", error);
|
|
});
|
|
})
|
|
}
|
|
|
|
|
|
}, [])
|
|
|
|
const addToBlockList = useCallback(async (address, name)=> {
|
|
if(name){
|
|
await new Promise((res, rej) => {
|
|
window.sendMessage("listActions", {
|
|
|
|
type: 'add',
|
|
items: [name],
|
|
listName: 'blockedNames'
|
|
|
|
})
|
|
.then((response) => {
|
|
if (response.error) {
|
|
rej(response?.message);
|
|
return;
|
|
} else {
|
|
const copyObject = {...userNamesBlockedRef.current}
|
|
copyObject[name] = true
|
|
userNamesBlockedRef.current = copyObject
|
|
|
|
|
|
res(response);
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error("Failed qortalRequest", error);
|
|
});
|
|
})
|
|
}
|
|
if(address){
|
|
await new Promise((res, rej) => {
|
|
window.sendMessage("listActions", {
|
|
|
|
type: 'add',
|
|
items: [address],
|
|
listName: 'blockedAddresses'
|
|
|
|
})
|
|
.then((response) => {
|
|
if (response.error) {
|
|
rej(response?.message);
|
|
return;
|
|
} else {
|
|
|
|
const copyObject = {...userBlockedRef.current}
|
|
copyObject[address] = true
|
|
userBlockedRef.current = copyObject
|
|
|
|
res(response);
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error("Failed qortalRequest", error);
|
|
});
|
|
})
|
|
}
|
|
|
|
}, [])
|
|
|
|
return {
|
|
isUserBlocked,
|
|
addToBlockList,
|
|
removeBlockFromList,
|
|
getAllBlockedUsers
|
|
};
|
|
};
|