diff --git a/.circleci/config.yml b/.circleci/config.yml index d84145f6d..bfe756da0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,7 +6,7 @@ orbs: macos: &macos macos: - xcode: "14.2.0" + xcode: "15.2.0" resource_class: macos.m1.medium.gen1 bash-env: &bash-env @@ -54,7 +54,6 @@ save-gems-cache: &save-gems-cache update-fastlane-ios: &update-fastlane-ios name: Update Fastlane command: | - echo "ruby-2.7.7" > ~/.ruby-version bundle install working_directory: ios @@ -78,6 +77,27 @@ restore_cache: &restore-gradle-cache # COMMANDS commands: + manage-ruby: + description: "Manage ruby version" + steps: + - restore_cache: + name: Restore ruby + key: ruby-v2-{{ checksum ".ruby-version" }} + - run: + name: Install ruby + command: | + echo "ruby-2.7.7" > ~/.ruby-version + if [ -d ~/.rbenv/versions/2.7.7 ]; then + echo "Ruby already installed" + else + rbenv install 2.7.7 + fi + - save_cache: + name: Save ruby cache + key: ruby-v2-{{ checksum ".ruby-version" }} + paths: + - ~/.rbenv/versions/2.7.7 + manage-pods: description: "Restore/Get/Save cache of pods libs" steps: @@ -204,6 +224,7 @@ commands: - checkout - restore_cache: *restore-gems-cache - restore_cache: *restore-npm-cache-mac + - manage-ruby - run: *install-npm-modules - run: *update-fastlane-ios - manage-pods @@ -328,6 +349,7 @@ commands: at: ios - restore_cache: *restore-gems-cache - restore_cache: *restore-npm-cache-mac + - manage-ruby - run: *install-npm-modules - run: *update-fastlane-ios - manage-pods @@ -575,6 +597,7 @@ jobs: - checkout - restore_cache: *restore-gems-cache - restore_cache: *restore-npm-cache-mac + - manage-ruby - run: *install-npm-modules - run: *update-fastlane-ios - save_cache: *save-npm-cache-mac 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')} +