mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-02-04 03:36:29 +08:00
feat(update): add toast notifications for update failures
- Add toast error messages when version check fails - Show user-friendly error notifications for download failures - Display specific installation error messages with troubleshooting hints - Improve logging from console.error to console.info for better categorization
This commit is contained in:
@@ -53,11 +53,11 @@ export function UpdateSection() {
|
||||
</StyledButton>
|
||||
</View>
|
||||
|
||||
{UPDATE_CONFIG.AUTO_CHECK && (
|
||||
{/* {UPDATE_CONFIG.AUTO_CHECK && (
|
||||
<ThemedText style={styles.hint}>
|
||||
自动检查更新已开启,每{UPDATE_CONFIG.CHECK_INTERVAL / (60 * 60 * 1000)}小时检查一次
|
||||
</ThemedText>
|
||||
)}
|
||||
)} */}
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import ReactNativeBlobUtil from "react-native-blob-util";
|
||||
import FileViewer from "react-native-file-viewer";
|
||||
import Toast from "react-native-toast-message";
|
||||
import { version as currentVersion } from "../package.json";
|
||||
import { UPDATE_CONFIG } from "../constants/UpdateConfig";
|
||||
|
||||
@@ -46,9 +47,10 @@ class UpdateService {
|
||||
};
|
||||
} catch (error) {
|
||||
retries++;
|
||||
console.error(`Error checking version (attempt ${retries}/${maxRetries}):`, error);
|
||||
console.info(`Error checking version (attempt ${retries}/${maxRetries}):`, error);
|
||||
|
||||
if (retries === maxRetries) {
|
||||
Toast.show({ type: "error", text1: "检查更新失败", text2: "无法获取版本信息,请检查网络连接" });
|
||||
throw error;
|
||||
}
|
||||
|
||||
@@ -140,9 +142,10 @@ class UpdateService {
|
||||
return res.path();
|
||||
} catch (error) {
|
||||
retries++;
|
||||
console.error(`Error downloading APK (attempt ${retries}/${maxRetries}):`, error);
|
||||
console.info(`Error downloading APK (attempt ${retries}/${maxRetries}):`, error);
|
||||
|
||||
if (retries === maxRetries) {
|
||||
Toast.show({ type: "error", text1: "下载失败", text2: "APK下载失败,请检查网络连接" });
|
||||
throw new Error(`Download failed after ${maxRetries} attempts: ${error}`);
|
||||
}
|
||||
|
||||
@@ -170,15 +173,21 @@ class UpdateService {
|
||||
displayName: "OrionTV Update",
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Error installing APK:", error);
|
||||
console.info("Error installing APK:", error);
|
||||
|
||||
// 提供更详细的错误信息
|
||||
if (error instanceof Error) {
|
||||
if (error.message.includes('No app found')) {
|
||||
Toast.show({ type: "error", text1: "安装失败", text2: "未找到可安装APK的应用,请确保允许安装未知来源的应用" });
|
||||
throw new Error('未找到可安装APK的应用,请确保允许安装未知来源的应用');
|
||||
} else if (error.message.includes('permission')) {
|
||||
Toast.show({ type: "error", text1: "安装失败", text2: "没有安装权限,请在设置中允许此应用安装未知来源的应用" });
|
||||
throw new Error('没有安装权限,请在设置中允许此应用安装未知来源的应用');
|
||||
} else {
|
||||
Toast.show({ type: "error", text1: "安装失败", text2: "APK安装过程中出现错误" });
|
||||
}
|
||||
} else {
|
||||
Toast.show({ type: "error", text1: "安装失败", text2: "APK安装过程中出现未知错误" });
|
||||
}
|
||||
|
||||
throw error;
|
||||
|
||||
@@ -124,7 +124,7 @@ const usePlayerStore = create<PlayerState>((set, get) => ({
|
||||
try {
|
||||
await videoRef?.current?.replayAsync();
|
||||
} catch (error) {
|
||||
console.error("Failed to replay video:", error);
|
||||
console.info("Failed to replay video:", error);
|
||||
Toast.show({ type: "error", text1: "播放失败" });
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,7 @@ const usePlayerStore = create<PlayerState>((set, get) => ({
|
||||
await videoRef?.current?.playAsync();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to toggle play/pause:", error);
|
||||
console.info("Failed to toggle play/pause:", error);
|
||||
Toast.show({ type: "error", text1: "操作失败" });
|
||||
}
|
||||
}
|
||||
@@ -154,7 +154,7 @@ const usePlayerStore = create<PlayerState>((set, get) => ({
|
||||
try {
|
||||
await videoRef?.current?.setPositionAsync(newPosition);
|
||||
} catch (error) {
|
||||
console.error("Failed to seek video:", error);
|
||||
console.info("Failed to seek video:", error);
|
||||
Toast.show({ type: "error", text1: "快进/快退失败" });
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ export const useUpdateStore = create<UpdateState>((set, get) => ({
|
||||
Date.now().toString()
|
||||
);
|
||||
} catch (error) {
|
||||
console.error('检查更新失败:', error);
|
||||
// console.info('检查更新失败:', error);
|
||||
set({
|
||||
error: error instanceof Error ? error.message : '检查更新失败',
|
||||
updateAvailable: false
|
||||
@@ -110,7 +110,7 @@ export const useUpdateStore = create<UpdateState>((set, get) => ({
|
||||
downloadProgress: 100,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('下载失败:', error);
|
||||
// console.info('下载失败:', error);
|
||||
set({
|
||||
downloading: false,
|
||||
downloadProgress: 0,
|
||||
@@ -133,7 +133,7 @@ export const useUpdateStore = create<UpdateState>((set, get) => ({
|
||||
// 安装开始后,关闭弹窗
|
||||
set({ showUpdateModal: false });
|
||||
} catch (error) {
|
||||
console.error('安装失败:', error);
|
||||
console.info('安装失败:', error);
|
||||
set({
|
||||
error: error instanceof Error ? error.message : '安装失败',
|
||||
});
|
||||
@@ -181,6 +181,6 @@ export const initUpdateStore = async () => {
|
||||
skipVersion: skipVersion || null,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('初始化更新存储失败:', error);
|
||||
console.info('初始化更新存储失败:', error);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user