diff --git a/lib/src/screens/event/components/fight_list.dart b/lib/src/screens/event/components/fight_list.dart index fc83424..8890cdf 100644 --- a/lib/src/screens/event/components/fight_list.dart +++ b/lib/src/screens/event/components/fight_list.dart @@ -31,7 +31,7 @@ import 'package:steamwar_multitool/src/delegates/delegates.dart'; import 'package:steamwar_multitool/src/screens/event/components/dialogs/dialogs.dart'; import 'package:steamwar_multitool/src/types/types.dart'; import 'package:steamwar_multitool/src/util/constants.dart'; -import 'package:steamwar_multitool/src/util/event_fight_exporter.dart'; +import 'package:url_launcher/url_launcher.dart'; class EventFightList extends HookConsumerWidget { final EventExtended eventData; @@ -326,9 +326,13 @@ class EventFightList extends HookConsumerWidget { ), ]; }, - onSelected: (value) { + onSelected: (value) async { if (value == "export") { - openExportedFights(fights.value, event.name); + final url = Uri.parse( + "https://steamwar.de/eventplanner-api/events/${event.id}/csv?auth=${await ref.read(userDataProvider.future).then((value) => value.key)}"); + if (await canLaunchUrl(url)) { + await launchUrl(url, webOnlyWindowName: "_blank"); + } } else if (value == "display") { showDialog( context: context, diff --git a/lib/src/util/event_fight_exporter.dart b/lib/src/util/event_fight_exporter.dart deleted file mode 100644 index 59ed816..0000000 --- a/lib/src/util/event_fight_exporter.dart +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2023 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -import 'dart:convert'; -import 'dart:html'; - -import 'package:csv/csv.dart'; -import 'package:steamwar_multitool/src/types/types.dart'; - -/* -Start,BlueTeam,RedTeam,WinnerTeam - - */ - -Uri exportFights(List fights, String eventName) { - List> csv = []; - csv.add(['Start', 'BlueTeam', 'RedTeam', 'WinnerTeam', 'Group']); - for (var fight in fights) { - csv.add([ - fight.start.toString(), - fight.blueTeam.name, - fight.redTeam.name, - fight.winner.name, - fight.group ?? "Ungrouped" - ]); - } - - return Uri.dataFromBytes( - Encoding.getByName("utf-8")! - .encode(const ListToCsvConverter(eol: "\n").convert(csv)), - mimeType: "text/csv", - ); -} - -void openExportedFights(List fights, String eventName) async { - final uri = exportFights(fights, eventName); - window.open(uri.toString(), "export"); -} diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e71a16d..f6f23bf 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 2e1de87..f16b4c3 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 724bb2a..997e35d 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,7 +6,9 @@ import FlutterMacOS import Foundation import shared_preferences_foundation +import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 84e4469..5bfe42f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -693,6 +693,70 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: e8f2efc804810c0f2f5b485f49e7942179f56eabcfe81dce3387fec4bb55876b + url: "https://pub.dev" + source: hosted + version: "6.1.9" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "3e2f6dfd2c7d9cd123296cab8ef66cfc2c1a13f5845f42c7a0f365690a8a7dd1" + url: "https://pub.dev" + source: hosted + version: "6.0.23" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "0a5af0aefdd8cf820dd739886efb1637f1f24489900204f50984634c07a54815" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "318c42cba924e18180c029be69caf0a1a710191b9ec49bb42b5998fdcccee3cc" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "41988b55570df53b3dd2a7fc90c76756a963de6a8c5f8e113330cb35992e2094" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "44d79408ce9f07052095ef1f9a693c258d6373dc3944249374e30eff7219ccb0" + url: "https://pub.dev" + source: hosted + version: "2.0.14" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: b6217370f8eb1fd85c8890c539f5a639a01ab209a36db82c921ebeacefc7a615 + url: "https://pub.dev" + source: hosted + version: "3.0.3" vector_math: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 53bdb89..a710a21 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -22,6 +22,7 @@ dependencies: intl: ^0.18.0 csv: ^5.0.1 grouped_list: ^5.1.2 + url_launcher: ^6.1.9 dev_dependencies: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8b6d468..4f78848 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index b93c4c3..88b22e5 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST