From d9dd6a3dd830c4d9b776a676f1140782f5599abc Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Thu, 1 Feb 2024 10:32:02 -0300 Subject: [PATCH] feat: button to refresh cloud data on support window expired screen (#5528) --- .../SupportedVersionsExpired.tsx | 37 ++++++++++++++++++- app/definitions/IServer.ts | 4 +- app/i18n/locales/en.json | 3 +- app/i18n/locales/pt-BR.json | 3 +- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/app/containers/SupportedVersions/SupportedVersionsExpired.tsx b/app/containers/SupportedVersions/SupportedVersionsExpired.tsx index ead812498..e38c52e00 100644 --- a/app/containers/SupportedVersions/SupportedVersionsExpired.tsx +++ b/app/containers/SupportedVersions/SupportedVersionsExpired.tsx @@ -1,17 +1,49 @@ -import React from 'react'; +import React, { useState } from 'react'; import { View, Text, Linking } from 'react-native'; +import { useDispatch } from 'react-redux'; import I18n from '../../i18n'; import { useAppSelector } from '../../lib/hooks'; +import { getServerById } from '../../lib/database/services/Server'; +import log from '../../lib/methods/helpers/log'; +import database from '../../lib/database'; import { useTheme } from '../../theme'; import { CustomIcon } from '../CustomIcon'; import Button from '../Button'; import { styles } from './styles'; import { LEARN_MORE_URL } from './constants'; +import { selectServerRequest } from '../../actions/server'; + +const checkAgainTimeout = 3000; export const SupportedVersionsExpired = () => { const { colors } = useTheme(); - const { name } = useAppSelector(state => state.server); + const [checking, setChecking] = useState(false); + const { name, server } = useAppSelector(state => state.server); + const dispatch = useDispatch(); + + const checkAgain = async () => { + try { + setChecking(true); + const serversDB = database.servers; + const serverRecord = await getServerById(server); + if (serverRecord) { + await serversDB.write(async () => { + await serverRecord.update(r => { + r.supportedVersionsUpdatedAt = null; + r.supportedVersionsWarningAt = null; + }); + }); + dispatch(selectServerRequest(server)); + // forces loading state a little longer until redux is finished + await new Promise(res => setTimeout(res, checkAgainTimeout)); + } + } catch (e) { + log(e); + } finally { + setChecking(false); + } + }; return ( @@ -22,6 +54,7 @@ export const SupportedVersionsExpired = () => { {I18n.t('Supported_versions_expired_title', { workspace_name: name })} {I18n.t('Supported_versions_expired_description')} +