diff --git a/codemagic.yaml b/codemagic.yaml index cd74c54..9bb8bd9 100644 --- a/codemagic.yaml +++ b/codemagic.yaml @@ -38,7 +38,7 @@ workflows: cd "$pwd" cp build/ios/Payload.zip build/ios/ipa/infotren.ipa artifacts: - - build/ios/*.zip + # - build/ios/*.zip - build/ios/ipa/*.ipa - /tmp/xcodebuild_logs/*.log - flutter_drive.log diff --git a/lib/api/releases.dart b/lib/api/releases.dart index 75e4ce8..e374c04 100644 --- a/lib/api/releases.dart +++ b/lib/api/releases.dart @@ -12,5 +12,7 @@ Future> getRemoteReleases() async { version: ChangelogVersion.parse(e['tag_name']), description: e['body'], apkLink: (e['assets'] as List).where((e) => (e['name'] as String).contains('.apk')).map((e) => Uri.parse(e['browser_download_url'] as String)).firstOrNull, + linuxLink: (e['assets'] as List).where((e) => (e['name'] as String).contains('infotren-linux')).map((e) => Uri.parse(e['browser_download_url'] as String)).firstOrNull, + windowsLink: (e['assets'] as List).where((e) => (e['name'] as String).contains('-win.zip')).map((e) => Uri.parse(e['browser_download_url'] as String)).firstOrNull, )).toList(); } \ No newline at end of file diff --git a/lib/models/changelog_entry.dart b/lib/models/changelog_entry.dart index b807878..261cdf6 100644 --- a/lib/models/changelog_entry.dart +++ b/lib/models/changelog_entry.dart @@ -4,8 +4,16 @@ class ChangelogEntry { final ChangelogVersion version; final String description; final Uri? apkLink; + final Uri? linuxLink; + final Uri? windowsLink; - ChangelogEntry({required this.version, required this.description, this.apkLink}); + ChangelogEntry({ + required this.version, + required this.description, + this.apkLink, + this.linuxLink, + this.windowsLink, + }); factory ChangelogEntry.fromTextBlock(String text) { final lines = text.split(RegExp(r'(\r?\n)+')); diff --git a/lib/pages/about/about_page_fluent.dart b/lib/pages/about/about_page_fluent.dart index 9977c62..af86cdd 100644 --- a/lib/pages/about/about_page_fluent.dart +++ b/lib/pages/about/about_page_fluent.dart @@ -120,6 +120,64 @@ class AboutPageStateFluent extends AboutPageState { ), ), ), + if (AboutPageState.download == 'linux' && log.linuxLink != null) + GestureDetector( + onSecondaryTap: () { + Clipboard.setData(ClipboardData(text: log.linuxLink!.toString())); + // ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + // content: Text('Link copied to clipboard'), + // )); + }, + onLongPress: () { + Clipboard.setData(ClipboardData(text: log.linuxLink!.toString())); + // ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + // content: Text('Link copied to clipboard'), + // )); + }, + onTap: () { + launchUrl( + log.linuxLink!, + mode: LaunchMode.externalApplication, + ); + }, + behavior: HitTestBehavior.translucent, + child: const Tooltip( + message: 'Download Linux ZIP', + child: Padding( + padding: EdgeInsets.all(4), + child: Icon(FluentIcons.download), + ), + ), + ), + if (AboutPageState.download == 'windows' && log.windowsLink != null) + GestureDetector( + onSecondaryTap: () { + Clipboard.setData(ClipboardData(text: log.windowsLink!.toString())); + // ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + // content: Text('Link copied to clipboard'), + // )); + }, + onLongPress: () { + Clipboard.setData(ClipboardData(text: log.windowsLink!.toString())); + // ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + // content: Text('Link copied to clipboard'), + // )); + }, + onTap: () { + launchUrl( + log.windowsLink!, + mode: LaunchMode.externalApplication, + ); + }, + behavior: HitTestBehavior.translucent, + child: const Tooltip( + message: 'Download Windows App ZIP', + child: Padding( + padding: EdgeInsets.all(4), + child: Icon(FluentIcons.download), + ), + ), + ), ], ), ), diff --git a/lib/pages/about/about_page_material.dart b/lib/pages/about/about_page_material.dart index b069ffc..ae118f4 100644 --- a/lib/pages/about/about_page_material.dart +++ b/lib/pages/about/about_page_material.dart @@ -121,6 +121,64 @@ class AboutPageStateMaterial extends AboutPageState { ), ), ), + if (AboutPageState.download == 'linux' && log.linuxLink != null) + GestureDetector( + onSecondaryTap: () { + Clipboard.setData(ClipboardData(text: log.linuxLink!.toString())); + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Link copied to clipboard'), + )); + }, + onLongPress: () { + Clipboard.setData(ClipboardData(text: log.linuxLink!.toString())); + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Link copied to clipboard'), + )); + }, + onTap: () { + launchUrl( + log.linuxLink!, + mode: LaunchMode.externalApplication, + ); + }, + behavior: HitTestBehavior.translucent, + child: const Tooltip( + message: 'Download Linux ZIP', + child: Padding( + padding: EdgeInsets.all(4), + child: Icon(Icons.download), + ), + ), + ), + if (AboutPageState.download == 'windows' && log.windowsLink != null) + GestureDetector( + onSecondaryTap: () { + Clipboard.setData(ClipboardData(text: log.windowsLink!.toString())); + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Link copied to clipboard'), + )); + }, + onLongPress: () { + Clipboard.setData(ClipboardData(text: log.windowsLink!.toString())); + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Link copied to clipboard'), + )); + }, + onTap: () { + launchUrl( + log.windowsLink!, + mode: LaunchMode.externalApplication, + ); + }, + behavior: HitTestBehavior.translucent, + child: const Tooltip( + message: 'Download Windows App ZIP', + child: Padding( + padding: EdgeInsets.all(4), + child: Icon(Icons.download), + ), + ), + ), ], ), ),