Merge branch 'main' into zh-cn-i18n-patch-2
This commit is contained in:
3
.github/workflows/build.yml
vendored
3
.github/workflows/build.yml
vendored
@@ -92,9 +92,6 @@ jobs:
|
|||||||
make ${{ matrix.platform }}-prepare
|
make ${{ matrix.platform }}-prepare
|
||||||
tree
|
tree
|
||||||
|
|
||||||
- name: Test
|
|
||||||
run: flutter test
|
|
||||||
|
|
||||||
- name: Setup Android Signing Properties
|
- name: Setup Android Signing Properties
|
||||||
if: startsWith(matrix.platform,'android')
|
if: startsWith(matrix.platform,'android')
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Unreleased
|
## [0.16.0.dev] - 2023-2-18
|
||||||
|
|
||||||
### New Features and Improvements
|
### New Features and Improvements
|
||||||
|
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
- Changed in-app icons (using [Fluent UI System Icons](https://github.com/microsoft/fluentui-system-icons))
|
- Changed in-app icons (using [Fluent UI System Icons](https://github.com/microsoft/fluentui-system-icons))
|
||||||
- Redesigned navigation flow, separating config options
|
- Redesigned navigation flow, separating config options
|
||||||
- Added haptic feedback
|
- Added haptic feedback
|
||||||
|
- Added detailed subscription info in profile edit page
|
||||||
- Added Chinese Taiwan language. [PR#410](https://github.com/hiddify/hiddify-next/pull/410) by [junlin03](https://github.com/junlin03) and [PR#491](https://github.com/hiddify/hiddify-next/pull/491) by [kouhe3](https://github.com/kouhe3)
|
- Added Chinese Taiwan language. [PR#410](https://github.com/hiddify/hiddify-next/pull/410) by [junlin03](https://github.com/junlin03) and [PR#491](https://github.com/hiddify/hiddify-next/pull/491) by [kouhe3](https://github.com/kouhe3)
|
||||||
- Added Japanese Readme. [PR#371](https://github.com/hiddify/hiddify-next/pull/371) by [Ikko Eltociear Ashimine](https://github.com/eltociear)
|
- Added Japanese Readme. [PR#371](https://github.com/hiddify/hiddify-next/pull/371) by [Ikko Eltociear Ashimine](https://github.com/eltociear)
|
||||||
|
|
||||||
@@ -277,6 +278,7 @@
|
|||||||
- Fixed localization mistakes in Russian. [PR#95](https://github.com/hiddify/hiddify-next/pull/95) by [solokot](https://github.com/solokot)
|
- Fixed localization mistakes in Russian. [PR#95](https://github.com/hiddify/hiddify-next/pull/95) by [solokot](https://github.com/solokot)
|
||||||
- Fixed localization mistakes in Russian. [PR#74](https://github.com/hiddify/hiddify-next/pull/74) by [Elshad Guseynov](https://github.com/lifeindarkside)
|
- Fixed localization mistakes in Russian. [PR#74](https://github.com/hiddify/hiddify-next/pull/74) by [Elshad Guseynov](https://github.com/lifeindarkside)
|
||||||
|
|
||||||
|
[0.16.0.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.16.0.dev
|
||||||
[0.14.1.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.14.1.dev
|
[0.14.1.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.14.1.dev
|
||||||
[0.14.0.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.14.0.dev
|
[0.14.0.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.14.0.dev
|
||||||
[0.13.6]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.6
|
[0.13.6]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.6
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"general": {
|
"general": {
|
||||||
"reset": "Renicio",
|
|
||||||
"appTitle": "Hiddify",
|
"appTitle": "Hiddify",
|
||||||
|
"reset": "Renicio",
|
||||||
"toggle": {
|
"toggle": {
|
||||||
"enabled": "Activado",
|
"enabled": "Activado",
|
||||||
"disabled": "Desactivado"
|
"disabled": "Desactivado"
|
||||||
@@ -211,6 +211,10 @@
|
|||||||
"warp": "WARP Options",
|
"warp": "WARP Options",
|
||||||
"misc": "Opciones varias"
|
"misc": "Opciones varias"
|
||||||
},
|
},
|
||||||
|
"warpConsent": {
|
||||||
|
"title": "Consentimiento WARP de Cloudflare",
|
||||||
|
"description(rich)": "Cloudflare WARP es un proveedor de VPN WireGuard gratuito. Al habilitar esta opción, acepta los ${tos(Términos de servicio)} y ${privacy(Política de privacidad)} de Cloudflare WARP."
|
||||||
|
},
|
||||||
"pageTitle": "Opciones de configuración",
|
"pageTitle": "Opciones de configuración",
|
||||||
"logLevel": "Registro del Nivel",
|
"logLevel": "Registro del Nivel",
|
||||||
"resolveDestination": "Resolver Destino",
|
"resolveDestination": "Resolver Destino",
|
||||||
@@ -258,11 +262,7 @@
|
|||||||
"warpLicenseKey": "License Key",
|
"warpLicenseKey": "License Key",
|
||||||
"warpCleanIp": "Clean IP",
|
"warpCleanIp": "Clean IP",
|
||||||
"warpPort": "Port",
|
"warpPort": "Port",
|
||||||
"warpNoise": "Noise",
|
"warpNoise": "Noise"
|
||||||
"warpConsent": {
|
|
||||||
"title": "Consentimiento WARP de Cloudflare",
|
|
||||||
"description(rich)": "Cloudflare WARP es un proveedor de VPN WireGuard gratuito. Al habilitar esta opción, acepta los ${tos(Términos de servicio)} y ${privacy(Política de privacidad)} de Cloudflare WARP."
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"geoAssets": {
|
"geoAssets": {
|
||||||
"pageTitle": "Activos de enrutamiento",
|
"pageTitle": "Activos de enrutamiento",
|
||||||
|
|||||||
@@ -211,6 +211,10 @@
|
|||||||
"warp": "WARP Options",
|
"warp": "WARP Options",
|
||||||
"misc": "تنظیمات متفرقه"
|
"misc": "تنظیمات متفرقه"
|
||||||
},
|
},
|
||||||
|
"warpConsent": {
|
||||||
|
"title": "رضایت Cloudflare WARP",
|
||||||
|
"description(rich)": "Cloudflare WARP یک ارائه دهنده رایگان WireGuard VPN است. با فعال کردن این گزینه، با ${tos(شرایط خدمات)} و ${privacy(خطمشی رازداری)} Cloudflare WARP موافقت میکنید."
|
||||||
|
},
|
||||||
"pageTitle": "تنظیمات کانفیگ",
|
"pageTitle": "تنظیمات کانفیگ",
|
||||||
"logLevel": "سطح لاگ",
|
"logLevel": "سطح لاگ",
|
||||||
"resolveDestination": "جایگذاری IP مقصد",
|
"resolveDestination": "جایگذاری IP مقصد",
|
||||||
@@ -258,11 +262,7 @@
|
|||||||
"warpLicenseKey": "License Key",
|
"warpLicenseKey": "License Key",
|
||||||
"warpCleanIp": "Clean IP",
|
"warpCleanIp": "Clean IP",
|
||||||
"warpPort": "Port",
|
"warpPort": "Port",
|
||||||
"warpNoise": "Noise",
|
"warpNoise": "Noise"
|
||||||
"warpConsent": {
|
|
||||||
"title": "رضایت Cloudflare WARP",
|
|
||||||
"description(rich)": "Cloudflare WARP یک ارائه دهنده رایگان WireGuard VPN است. با فعال کردن این گزینه، با ${tos(شرایط خدمات)} و ${privacy(خطمشی رازداری)} Cloudflare WARP موافقت میکنید."
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"geoAssets": {
|
"geoAssets": {
|
||||||
"pageTitle": "فایلهای مسیریابی",
|
"pageTitle": "فایلهای مسیریابی",
|
||||||
|
|||||||
@@ -211,6 +211,10 @@
|
|||||||
"warp": "WARP Options",
|
"warp": "WARP Options",
|
||||||
"misc": "Разные параметры"
|
"misc": "Разные параметры"
|
||||||
},
|
},
|
||||||
|
"warpConsent": {
|
||||||
|
"title": "Согласие Cloudflare WARP",
|
||||||
|
"description(rich)": "Cloudflare WARP — бесплатный провайдер WireGuard VPN. Включая эту опцию, вы соглашаетесь с ${tos(Условиями обслуживания)} и ${privacy(Политикой конфиденциальности)} Cloudflare WARP."
|
||||||
|
},
|
||||||
"pageTitle": "Параметры конфигурации",
|
"pageTitle": "Параметры конфигурации",
|
||||||
"logLevel": "Подробность журналирования",
|
"logLevel": "Подробность журналирования",
|
||||||
"resolveDestination": "Определять назначение",
|
"resolveDestination": "Определять назначение",
|
||||||
@@ -258,11 +262,7 @@
|
|||||||
"warpLicenseKey": "License Key",
|
"warpLicenseKey": "License Key",
|
||||||
"warpCleanIp": "Clean IP",
|
"warpCleanIp": "Clean IP",
|
||||||
"warpPort": "Port",
|
"warpPort": "Port",
|
||||||
"warpNoise": "Noise",
|
"warpNoise": "Noise"
|
||||||
"warpConsent": {
|
|
||||||
"title": "Согласие Cloudflare WARP",
|
|
||||||
"description(rich)": "Cloudflare WARP — бесплатный провайдер WireGuard VPN. Включая эту опцию, вы соглашаетесь с ${tos(Условиями обслуживания)} и ${privacy(Политикой конфиденциальности)} Cloudflare WARP."
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"geoAssets": {
|
"geoAssets": {
|
||||||
"pageTitle": "Активы маршрутизации",
|
"pageTitle": "Активы маршрутизации",
|
||||||
|
|||||||
@@ -211,6 +211,10 @@
|
|||||||
"warp": "WARP Options",
|
"warp": "WARP Options",
|
||||||
"misc": "Çeşitli Seçenekler"
|
"misc": "Çeşitli Seçenekler"
|
||||||
},
|
},
|
||||||
|
"warpConsent": {
|
||||||
|
"title": "Cloudflare WARP Onayı",
|
||||||
|
"description(rich)": "Cloudflare WARP ücretsiz bir WireGuard VPN sağlayıcısıdır. Bu seçeneği etkinleştirerek Cloudflare WARP'ın ${tos(Hizmet Şartları)} ve ${privacy(Gizlilik Politikası)}'nı kabul etmiş olursunuz."
|
||||||
|
},
|
||||||
"pageTitle": "Yapılandırma Seçenekleri",
|
"pageTitle": "Yapılandırma Seçenekleri",
|
||||||
"logLevel": "Log Seviyesi",
|
"logLevel": "Log Seviyesi",
|
||||||
"resolveDestination": "Hedefi Çöz",
|
"resolveDestination": "Hedefi Çöz",
|
||||||
@@ -258,11 +262,7 @@
|
|||||||
"warpLicenseKey": "License Key",
|
"warpLicenseKey": "License Key",
|
||||||
"warpCleanIp": "Clean IP",
|
"warpCleanIp": "Clean IP",
|
||||||
"warpPort": "Port",
|
"warpPort": "Port",
|
||||||
"warpNoise": "Noise",
|
"warpNoise": "Noise"
|
||||||
"warpConsent": {
|
|
||||||
"title": "Cloudflare WARP Onayı",
|
|
||||||
"description(rich)": "Cloudflare WARP ücretsiz bir WireGuard VPN sağlayıcısıdır. Bu seçeneği etkinleştirerek Cloudflare WARP'ın ${tos(Hizmet Şartları)} ve ${privacy(Gizlilik Politikası)}'nı kabul etmiş olursunuz."
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"geoAssets": {
|
"geoAssets": {
|
||||||
"pageTitle": "Varlıkları Yönlendirme",
|
"pageTitle": "Varlıkları Yönlendirme",
|
||||||
|
|||||||
@@ -57,8 +57,8 @@
|
|||||||
"remainingTrafficSemanticLabel": "已使用 ${consumed} 流量,共 ${total} 流量。",
|
"remainingTrafficSemanticLabel": "已使用 ${consumed} 流量,共 ${total} 流量。",
|
||||||
"expired": "已过期",
|
"expired": "已过期",
|
||||||
"noTraffic": "超出配额",
|
"noTraffic": "超出配额",
|
||||||
"upload": "上行",
|
"upload": "上传",
|
||||||
"download": "下行",
|
"download": "下载",
|
||||||
"total": "总流量",
|
"total": "总流量",
|
||||||
"expireDate": "到期时间"
|
"expireDate": "到期时间"
|
||||||
},
|
},
|
||||||
@@ -129,18 +129,18 @@
|
|||||||
"emptyProxiesMsg": "没有可用的代理",
|
"emptyProxiesMsg": "没有可用的代理",
|
||||||
"delayTestTooltip": "测试延迟",
|
"delayTestTooltip": "测试延迟",
|
||||||
"sortTooltip": "对代理进行排序",
|
"sortTooltip": "对代理进行排序",
|
||||||
"checkIp": "查看IP",
|
"checkIp": "检测IP地址",
|
||||||
"unknownIp": "未知IP",
|
"unknownIp": "未知的IP",
|
||||||
"sortOptions": {
|
"sortOptions": {
|
||||||
"unsorted": "默认",
|
"unsorted": "默认",
|
||||||
"name": "按字母顺序",
|
"name": "按字母顺序",
|
||||||
"delay": "按延迟顺序"
|
"delay": "按延迟顺序"
|
||||||
},
|
},
|
||||||
"activeProxySemanticLabel": "激活代理",
|
"activeProxySemanticLabel": "活跃的代理",
|
||||||
"delaySemantics": {
|
"delaySemantics": {
|
||||||
"result": "延迟: ${delay}ms",
|
"result": "延迟:${delay}ms",
|
||||||
"timeout": "测试延迟超时",
|
"timeout": "延迟测试超时",
|
||||||
"testing": "延迟: 测试中..."
|
"testing": "正在测试延迟"
|
||||||
},
|
},
|
||||||
"ipInfoSemantics": {
|
"ipInfoSemantics": {
|
||||||
"address": "IP地址",
|
"address": "IP地址",
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
},
|
},
|
||||||
"statsSemantics": {
|
"statsSemantics": {
|
||||||
"speed": "速度",
|
"speed": "速度",
|
||||||
"totalTransferred": "已转发流量"
|
"totalTransferred": "总传输量"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"logs": {
|
"logs": {
|
||||||
@@ -194,7 +194,7 @@
|
|||||||
"ignoreBatteryOptimizationsMsg": "消除限制以获得最佳 VPN 性能",
|
"ignoreBatteryOptimizationsMsg": "消除限制以获得最佳 VPN 性能",
|
||||||
"dynamicNotification": "在通知中显示速度",
|
"dynamicNotification": "在通知中显示速度",
|
||||||
"hapticFeedback": "触觉反馈",
|
"hapticFeedback": "触觉反馈",
|
||||||
"autoIpCheck": "自动检查IP"
|
"autoIpCheck": "自动检查连接的 IP"
|
||||||
},
|
},
|
||||||
"advanced": {
|
"advanced": {
|
||||||
"sectionTitle": "高级选项",
|
"sectionTitle": "高级选项",
|
||||||
@@ -224,7 +224,8 @@
|
|||||||
"serviceModes": {
|
"serviceModes": {
|
||||||
"proxy": "仅代理",
|
"proxy": "仅代理",
|
||||||
"systemProxy": "系统代理",
|
"systemProxy": "系统代理",
|
||||||
"tun": "VPN"
|
"tun": "VPN",
|
||||||
|
"tunService": "VPN服务"
|
||||||
},
|
},
|
||||||
"section": {
|
"section": {
|
||||||
"route": "路由选项",
|
"route": "路由选项",
|
||||||
@@ -240,8 +241,8 @@
|
|||||||
"title": "Cloudflare WARP 同意",
|
"title": "Cloudflare WARP 同意",
|
||||||
"description(rich)": "Cloudflare WARP 是免费的 WireGuard VPN 提供商。启用此选项即表示您同意 Cloudflare WARP 的 ${tos(服务条款)} 和 ${privacy(隐私政策)}"
|
"description(rich)": "Cloudflare WARP 是免费的 WireGuard VPN 提供商。启用此选项即表示您同意 Cloudflare WARP 的 ${tos(服务条款)} 和 ${privacy(隐私政策)}"
|
||||||
},
|
},
|
||||||
"generateWarpConfig": "生成WARP配置",
|
"generateWarpConfig": "生成WARP配置文件",
|
||||||
"missingWarpConfig": "缺失WARP配置",
|
"missingWarpConfig": "WARP配置缺失",
|
||||||
"pageTitle": "配置选项",
|
"pageTitle": "配置选项",
|
||||||
"logLevel": "日志级别",
|
"logLevel": "日志级别",
|
||||||
"resolveDestination": "解析目标地址",
|
"resolveDestination": "解析目标地址",
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
core.version=0.15.15
|
core.version=0.16.0
|
||||||
@@ -751,7 +751,7 @@
|
|||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_ENTITLEMENTS = SingBoxPacketTunnel/SingBoxPacketTunnel.entitlements;
|
CODE_SIGN_ENTITLEMENTS = SingBoxPacketTunnel/SingBoxPacketTunnel.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1515;
|
CURRENT_PROJECT_VERSION = 1600;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
EXCLUDED_ARCHS = armv7;
|
EXCLUDED_ARCHS = armv7;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
@@ -770,7 +770,7 @@
|
|||||||
"@executable_path/libcore/",
|
"@executable_path/libcore/",
|
||||||
);
|
);
|
||||||
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||||
MARKETING_VERSION = 0.15.15;
|
MARKETING_VERSION = 0.16.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
OTHER_LDFLAGS = "-lresolv";
|
OTHER_LDFLAGS = "-lresolv";
|
||||||
@@ -802,7 +802,7 @@
|
|||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_ENTITLEMENTS = SingBoxPacketTunnel/SingBoxPacketTunnel.entitlements;
|
CODE_SIGN_ENTITLEMENTS = SingBoxPacketTunnel/SingBoxPacketTunnel.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1515;
|
CURRENT_PROJECT_VERSION = 1600;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
EXCLUDED_ARCHS = armv7;
|
EXCLUDED_ARCHS = armv7;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
@@ -821,7 +821,7 @@
|
|||||||
"@executable_path/libcore/",
|
"@executable_path/libcore/",
|
||||||
);
|
);
|
||||||
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||||
MARKETING_VERSION = 0.15.15;
|
MARKETING_VERSION = 0.16.0;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
ONLY_ACTIVE_ARCH = NO;
|
ONLY_ACTIVE_ARCH = NO;
|
||||||
OTHER_LDFLAGS = "-lresolv";
|
OTHER_LDFLAGS = "-lresolv";
|
||||||
@@ -851,7 +851,7 @@
|
|||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_ENTITLEMENTS = SingBoxPacketTunnel/SingBoxPacketTunnel.entitlements;
|
CODE_SIGN_ENTITLEMENTS = SingBoxPacketTunnel/SingBoxPacketTunnel.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1515;
|
CURRENT_PROJECT_VERSION = 1600;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
EXCLUDED_ARCHS = armv7;
|
EXCLUDED_ARCHS = armv7;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
@@ -870,7 +870,7 @@
|
|||||||
"@executable_path/libcore/",
|
"@executable_path/libcore/",
|
||||||
);
|
);
|
||||||
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||||
MARKETING_VERSION = 0.15.15;
|
MARKETING_VERSION = 0.16.0;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
ONLY_ACTIVE_ARCH = NO;
|
ONLY_ACTIVE_ARCH = NO;
|
||||||
OTHER_LDFLAGS = "-lresolv";
|
OTHER_LDFLAGS = "-lresolv";
|
||||||
|
|||||||
@@ -32,4 +32,10 @@ class HapticService extends _$HapticService {
|
|||||||
await HapticFeedback.mediumImpact();
|
await HapticFeedback.mediumImpact();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> heavyImpact() async {
|
||||||
|
if (state) {
|
||||||
|
await HapticFeedback.heavyImpact();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,17 @@ class ConnectionNotifier extends _$ConnectionNotifier with AppLogger {
|
|||||||
}).run();
|
}).run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ref.listenSelf(
|
||||||
|
(previous, next) async {
|
||||||
|
if (previous == next) return;
|
||||||
|
if (previous case AsyncData(:final value) when !value.isConnected) {
|
||||||
|
if (next case AsyncData(value: final Connected _)) {
|
||||||
|
await ref.read(hapticServiceProvider.notifier).heavyImpact();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
ref.listen(
|
ref.listen(
|
||||||
activeProfileProvider.select((value) => value.asData?.value),
|
activeProfileProvider.select((value) => value.asData?.value),
|
||||||
(previous, next) async {
|
(previous, next) async {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:fpdart/fpdart.dart';
|
import 'package:fpdart/fpdart.dart';
|
||||||
|
import 'package:hiddify/core/haptic/haptic_service.dart';
|
||||||
import 'package:hiddify/features/profile/data/profile_data_providers.dart';
|
import 'package:hiddify/features/profile/data/profile_data_providers.dart';
|
||||||
import 'package:hiddify/features/profile/data/profile_repository.dart';
|
import 'package:hiddify/features/profile/data/profile_repository.dart';
|
||||||
import 'package:hiddify/features/profile/model/profile_entity.dart';
|
import 'package:hiddify/features/profile/model/profile_entity.dart';
|
||||||
@@ -46,6 +47,7 @@ class ProfilesOverviewNotifier extends _$ProfilesOverviewNotifier
|
|||||||
|
|
||||||
Future<Unit> selectActiveProfile(String id) async {
|
Future<Unit> selectActiveProfile(String id) async {
|
||||||
loggy.debug('changing active profile to: [$id]');
|
loggy.debug('changing active profile to: [$id]');
|
||||||
|
await ref.read(hapticServiceProvider.notifier).lightImpact();
|
||||||
return _profilesRepo.setAsActive(id).getOrElse((err) {
|
return _profilesRepo.setAsActive(id).getOrElse((err) {
|
||||||
loggy.warning('failed to set [$id] as active profile', err);
|
loggy.warning('failed to set [$id] as active profile', err);
|
||||||
throw err;
|
throw err;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:circle_flags/circle_flags.dart';
|
import 'package:circle_flags/circle_flags.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:hiddify/core/haptic/haptic_service.dart';
|
||||||
import 'package:hiddify/core/localization/translations.dart';
|
import 'package:hiddify/core/localization/translations.dart';
|
||||||
import 'package:hiddify/core/utils/ip_utils.dart';
|
import 'package:hiddify/core/utils/ip_utils.dart';
|
||||||
import 'package:hiddify/utils/riverpod_utils.dart';
|
import 'package:hiddify/utils/riverpod_utils.dart';
|
||||||
@@ -7,6 +8,11 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||||||
|
|
||||||
final _showIp = StateProvider.autoDispose((ref) {
|
final _showIp = StateProvider.autoDispose((ref) {
|
||||||
ref.disposeDelay(const Duration(seconds: 20));
|
ref.disposeDelay(const Duration(seconds: 20));
|
||||||
|
ref.listenSelf((previous, next) {
|
||||||
|
if (previous == false && next == true) {
|
||||||
|
ref.read(hapticServiceProvider.notifier).mediumImpact();
|
||||||
|
}
|
||||||
|
});
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
2
libcore
2
libcore
Submodule libcore updated: 6672cd8104...6c65b73981
@@ -1,7 +1,7 @@
|
|||||||
name: hiddify
|
name: hiddify
|
||||||
description: Cross Platform Multi Protocol Proxy Frontend.
|
description: Cross Platform Multi Protocol Proxy Frontend.
|
||||||
publish_to: "none"
|
publish_to: "none"
|
||||||
version: 0.15.15+1515
|
version: 0.16.0+1600
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.2.0 <4.0.0"
|
sdk: ">=3.2.0 <4.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user