added saved permissions local

This commit is contained in:
PhilReact 2024-10-14 23:27:11 +03:00
parent 9521978335
commit 9660e04d8d
3 changed files with 136 additions and 20 deletions

View File

@ -322,6 +322,7 @@ function App() {
const [isOpenSendQortSuccess, setIsOpenSendQortSuccess] = useState(false)
const [rootHeight, setRootHeight] = useState('100%')
const [isSettingsOpen, setIsSettingsOpen] = useState(false)
const qortalRequestCheckbox1Ref = useRef(null);
useEffect(() => {
if(!isMobile) return
// Function to set the height of the app to the viewport height
@ -569,10 +570,21 @@ function App() {
!isMainWindow
) {
try {
console.log('payloadbefore', message.payload)
await showQortalRequest(message?.payload)
sendResponse(true)
console.log('payload', message.payload)
if(message?.payload?.checkbox1){
console.log('qortalRequestCheckbox1Ref.current', qortalRequestCheckbox1Ref.current)
sendResponse({accepted: true,
checkbox1: qortalRequestCheckbox1Ref.current
})
return
}
sendResponse({accepted: true})
} catch (error) {
sendResponse(false)
console.log('error', error)
sendResponse({accepted: false})
} finally {
window.close();
}
@ -1811,7 +1823,7 @@ function App() {
{isShowQortalRequest && !isMainWindow && (
<>
<Spacer height="100px" />
<Spacer height="120px" />
<TextP
sx={{
@ -1846,6 +1858,42 @@ function App() {
>
{messageQortalRequest?.text3}
</TextP>
{messageQortalRequest?.checkbox1 &&
(
<Box
sx={{
display: "flex",
gap: "10px",
alignItems: "center",
justifyContent: 'center',
width: '90%',
marginTop: '20px'
}}
>
<Checkbox
onChange={(e)=> {
qortalRequestCheckbox1Ref.current = e.target.checked
}}
edge="start"
tabIndex={-1}
disableRipple
defaultChecked={messageQortalRequest?.checkbox1?.value}
sx={{
"&.Mui-checked": {
color: "white", // Customize the color when checked
},
"& .MuiSvgIcon-root": {
color: "white",
},
}}
/>
<Typography sx={{
fontSize: '14px'
}}>{messageQortalRequest?.checkbox1?.label}</Typography>
</Box>
)}
<Spacer height="29px" />
<Box
sx={{

View File

@ -1,5 +1,62 @@
import { addListItems, decryptData, deleteListItems, encryptData, getListItems, getUserAccount, sendCoin } from "./qortalRequests/get";
// Promisify chrome.storage.local.get
function getLocalStorage(key) {
return new Promise((resolve, reject) => {
chrome.storage.local.get([key], function (result) {
if (chrome.runtime.lastError) {
return reject(chrome.runtime.lastError);
}
resolve(result[key]);
});
});
}
// Promisify chrome.storage.local.set
function setLocalStorage(data) {
return new Promise((resolve, reject) => {
chrome.storage.local.set(data, function () {
if (chrome.runtime.lastError) {
return reject(chrome.runtime.lastError);
}
resolve();
});
});
}
export async function setPermission(key, value) {
try {
// Get the existing qortalRequestPermissions object
const qortalRequestPermissions = (await getLocalStorage('qortalRequestPermissions')) || {};
// Update the permission
qortalRequestPermissions[key] = value;
// Save the updated object back to storage
await setLocalStorage({ qortalRequestPermissions });
console.log('Permission set for', key);
} catch (error) {
console.error('Error setting permission:', error);
}
}
export async function getPermission(key) {
try {
// Get the qortalRequestPermissions object from storage
const qortalRequestPermissions = (await getLocalStorage('qortalRequestPermissions')) || {};
// Return the value for the given key, or null if it doesn't exist
return qortalRequestPermissions[key] || null;
} catch (error) {
console.error('Error getting permission:', error);
return null;
}
}
chrome?.runtime?.onMessage.addListener((request, sender, sendResponse) => {
if (request) {
switch (request.action) {

View File

@ -13,6 +13,7 @@ import {
uint8ArrayStartsWith,
uint8ArrayToBase64,
} from "../qdn/encryption/group-encryption";
import { getPermission, setPermission } from "../qortalRequests";
import { fileToBase64 } from "../utils/fileReading";
async function getUserPermission(payload: any) {
@ -219,27 +220,34 @@ export const getListItems = async (data) => {
const errorMsg = `Missing fields: ${missingFieldsString}`;
throw new Error(errorMsg);
}
let skip = false;
// if (window.parent.reduxStore.getState().app.qAPPAutoLists) {
// skip = true
// }
let resPermission;
if (!skip) {
// res1 = await showModalAndWait(
// actions.GET_LIST_ITEMS,
// {
// list_name: data.list_name
// }
// )
const value = await getPermission('qAPPAutoLists') || false;
let skip = false;
if (value) {
skip = true
}
let resPermission;
let acceptedVar
let checkbox1Var
if (!skip) {
resPermission = await getUserPermission({
text1: "Do you give this application permission to",
text2: "Access the list",
text3: data.list_name,
checkbox1: {
value: value,
label: 'Always allow lists to be retrieved automatically'
}
});
const {accepted, checkbox1} = resPermission
acceptedVar = accepted
checkbox1Var = checkbox1
setPermission('qAPPAutoLists', checkbox1)
}
console.log("resPermission", resPermission);
if (resPermission || skip) {
if (acceptedVar || skip) {
const url = await createEndpoint(`/lists/${data.list_name}`);
console.log("url", url);
const response = await fetch(url);
@ -247,6 +255,7 @@ export const getListItems = async (data) => {
if (!response.ok) throw new Error("Failed to fetch");
const list = await response.json();
console.log('list', list)
return list;
} else {
throw new Error("User declined to share list");
@ -275,8 +284,9 @@ export const addListItems = async (data) => {
text2: `Add the following to the list ${list_name}:`,
text3: items.join(', ')
});
const {accepted} = resPermission
if (resPermission) {
if (accepted) {
const url = await createEndpoint(`/lists/${list_name}`);
console.log("url", url);
const body = {
@ -327,8 +337,9 @@ export const deleteListItems = async (data) => {
text2: `Remove the following from the list ${list_name}:`,
text3: item
});
if (resPermission) {
const {accepted} = resPermission
if (accepted) {
const url = await createEndpoint(`/lists/${list_name}`);
console.log("url", url);
const body = {