chore: fix windows webview2 trying to store data in admin folders

This commit is contained in:
Kingkor Roy Tirtho 2024-07-05 13:32:07 +06:00
parent 79b842dad3
commit f2f35bd2fb
3 changed files with 19 additions and 3 deletions

View File

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:dart_discord_rpc/dart_discord_rpc.dart'; import 'package:dart_discord_rpc/dart_discord_rpc.dart';
import 'package:desktop_webview_window/desktop_webview_window.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -65,7 +66,7 @@ Future<void> main(List<String> rawArgs) async {
await FlutterDisplayMode.setHighRefreshRate(); await FlutterDisplayMode.setHighRefreshRate();
} }
if (kIsDesktop && !kIsMacOS) { if (kIsDesktop) {
await windowManager.setPreventClose(true); await windowManager.setPreventClose(true);
} }

View File

@ -66,7 +66,7 @@ LazyDatabase _openConnection() {
return LazyDatabase(() async { return LazyDatabase(() async {
// put the database file, called db.sqlite here, into the documents folder // put the database file, called db.sqlite here, into the documents folder
// for your app. // for your app.
final dbFolder = await getApplicationDocumentsDirectory(); final dbFolder = await getApplicationSupportDirectory();
final file = File(join(dbFolder.path, 'db.sqlite')); final file = File(join(dbFolder.path, 'db.sqlite'));
// Also work around limitations on old Android versions // Also work around limitations on old Android versions

View File

@ -1,8 +1,12 @@
import 'dart:io';
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:desktop_webview_window/desktop_webview_window.dart'; import 'package:desktop_webview_window/desktop_webview_window.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/modules/settings/section_card_with_heading.dart'; import 'package:spotube/modules/settings/section_card_with_heading.dart';
import 'package:spotube/components/image/universal_image.dart'; import 'package:spotube/components/image/universal_image.dart';
@ -42,7 +46,18 @@ class SettingsAccountSection extends HookConsumerWidget {
return; return;
} }
final webview = await WebviewWindow.create(); final applicationSupportDir = await getApplicationSupportDirectory();
final userDataFolder = Directory(
join(applicationSupportDir.path, "webview_window_Webview2"));
if (!await userDataFolder.exists()) {
await userDataFolder.create();
}
final webview = await WebviewWindow.create(
configuration:
CreateConfiguration(userDataFolderWindows: userDataFolder.path),
);
webview.setOnUrlRequestCallback((url) { webview.setOnUrlRequestCallback((url) {
final exp = RegExp(r"https:\/\/accounts.spotify.com\/.+\/status"); final exp = RegExp(r"https:\/\/accounts.spotify.com\/.+\/status");