This commit is contained in:
Fabian Freund
2024-04-25 17:32:42 +02:00
parent 0e1972242a
commit 4b0da6f3af
64 changed files with 197 additions and 184 deletions
+1 -1
View File
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: notice like this when it starts in an interactive mode:
kagi_bang_bang Copyright (C) 2024 Fabian Freund bang_navigator Copyright (C) 2024 Fabian Freund
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
+1 -1
View File
@@ -1,3 +1,3 @@
# kagi_bang_bang # bang_navigator
A new Flutter project. A new Flutter project.
+2 -2
View File
@@ -24,7 +24,7 @@ if (flutterVersionName == null) {
} }
android { android {
namespace = "me.movenext.kagi_bang_bang" namespace = "me.movenext.bang_navigator"
compileSdk = 34 compileSdk = 34
ndkVersion = flutter.ndkVersion ndkVersion = flutter.ndkVersion
@@ -39,7 +39,7 @@ android {
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "me.movenext.kagi_bang_bang" applicationId = "me.movenext.bang_navigator"
// https://api.flutter.dev/flutter/widgets/AndroidView-class.html // https://api.flutter.dev/flutter/widgets/AndroidView-class.html
//https://inappwebview.dev/docs/intro/#setup-android //https://inappwebview.dev/docs/intro/#setup-android
minSdk = 23 minSdk = 23
+5 -5
View File
@@ -1,9 +1,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<application <application
android:label="kagi_bang_bang" android:label="Bang Navigator"
android:name="${applicationName}" android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"> android:icon="@mipmap/launcher_icon">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
@@ -26,7 +26,7 @@
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="me.movenext.kagi_bang_bang.action.LAUNCH" /> <action android:name="me.movenext.bang_navigator.action.LAUNCH" />
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND" />
@@ -40,13 +40,13 @@
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
</intent-filter> </intent-filter>
</activity> </activity>
<receiver android:name="KagiWidgetProvider" android:exported="true"> <receiver android:name="BangNavigatorWidgetProvider" android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter> </intent-filter>
<meta-data android:name="android.appwidget.provider" <meta-data android:name="android.appwidget.provider"
android:resource="@xml/kagi_widget_info" /> android:resource="@xml/bang_navigator_widget_info" />
</receiver> </receiver>
<!-- Don't delete the meta-data below. <!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
@@ -1,4 +1,4 @@
package me.movenext.kagi_bang_bang package me.movenext.bang_navigator
import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetManager
import android.content.Context import android.content.Context
@@ -11,10 +11,10 @@ import es.antonborri.home_widget.HomeWidgetBackgroundIntent
import es.antonborri.home_widget.HomeWidgetLaunchIntent import es.antonborri.home_widget.HomeWidgetLaunchIntent
import es.antonborri.home_widget.HomeWidgetProvider import es.antonborri.home_widget.HomeWidgetProvider
class KagiWidgetProvider : HomeWidgetProvider() { class BangNavigatorWidgetProvider : HomeWidgetProvider() {
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray, widgetData: SharedPreferences) { override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray, widgetData: SharedPreferences) {
appWidgetIds.forEach { widgetId -> appWidgetIds.forEach { widgetId ->
val views = RemoteViews(context.packageName, R.layout.kagi_widget).apply { val views = RemoteViews(context.packageName, R.layout.bang_navigator_widget).apply {
val searchIntent = HomeWidgetLaunchIntent.getActivity( val searchIntent = HomeWidgetLaunchIntent.getActivity(
context, context,
MainActivity::class.java, MainActivity::class.java,
@@ -1,4 +1,4 @@
package me.movenext.kagi_bang_bang package me.movenext.bang_navigator
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.android.FlutterActivity
@@ -1,10 +1,10 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Widget.KagiWidget.AppWidget.Container" style="@style/Widget.BangNavigatorWidget.AppWidget.Container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp" android:padding="16dp"
android:theme="@style/Theme.KagiWidget.AppWidgetContainer"> android:theme="@style/Theme.BangNavigatorWidget.AppWidgetContainer">
<Button <Button
android:id="@+id/search_button" android:id="@+id/search_button"
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> <style name="LaunchTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Show a splash screen on the activity. Automatically removed when <!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame --> the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item> <item name="android:windowBackground">@drawable/launch_background</item>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> <style name="LaunchTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Show a splash screen on the activity. Automatically removed when <!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame --> the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item> <item name="android:windowBackground">@drawable/launch_background</item>
@@ -12,16 +12,16 @@
running. running.
This Theme is only used starting with V2 of Flutter's Android embedding. --> This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> <style name="NormalTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="android:windowBackground">?android:colorBackground</item> <item name="android:windowBackground">?android:colorBackground</item>
</style> </style>
<style name="Widget.KagiWidget.AppWidget.Container" parent="android:Widget"> <style name="Widget.BangNavigatorWidget.AppWidget.Container" parent="android:Widget">
<item name="android:id">@android:id/background</item> <item name="android:id">@android:id/background</item>
<item name="android:background">?android:attr/colorBackground</item> <item name="android:background">?android:attr/colorBackground</item>
</style> </style>
<style name="Widget.KagiWidget.AppWidget.InnerView" parent="android:Widget"> <style name="Widget.BangNavigatorWidget.AppWidget.InnerView" parent="android:Widget">
<item name="android:background">?android:attr/colorBackground</item> <item name="android:background">?android:attr/colorBackground</item>
<item name="android:textColor">?android:attr/textColorPrimary</item> <item name="android:textColor">?android:attr/textColorPrimary</item>
</style> </style>
@@ -1,6 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. --> <!-- Base application theme. -->
<style name="Theme.KagiWidget" parent="@style/Theme.Material3.DayNight.NoActionBar"> <style name="Theme.BangNavigatorWidget" parent="@style/Theme.Material3.DayNight.NoActionBar">
<!-- Primary brand color. --> <!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item> <item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item> <item name="colorPrimaryVariant">@color/purple_700</item>
@@ -14,7 +14,7 @@
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
</style> </style>
<style name="Theme.KagiWidget.AppWidgetContainerParent" parent="@android:style/Theme.DeviceDefault"> <style name="Theme.BangNavigatorWidget.AppWidgetContainerParent" parent="@android:style/Theme.DeviceDefault">
<!-- Radius of the outer bound of widgets to make the rounded corners --> <!-- Radius of the outer bound of widgets to make the rounded corners -->
<item name="appWidgetRadius">16dp</item> <item name="appWidgetRadius">16dp</item>
<!-- <!--
@@ -24,7 +24,7 @@
<item name="appWidgetInnerRadius">8dp</item> <item name="appWidgetInnerRadius">8dp</item>
</style> </style>
<style name="Theme.KagiWidget.AppWidgetContainer" parent="Theme.KagiWidget.AppWidgetContainerParent"> <style name="Theme.BangNavigatorWidget.AppWidgetContainer" parent="Theme.BangNavigatorWidget.AppWidgetContainerParent">
<!-- Apply padding to avoid the content of the widget colliding with the rounded corners --> <!-- Apply padding to avoid the content of the widget colliding with the rounded corners -->
<item name="appWidgetPadding">16dp</item> <item name="appWidgetPadding">16dp</item>
</style> </style>
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/kagi_widget" android:initialLayout="@layout/bang_navigator_widget"
android:resizeMode="none" android:resizeMode="none"
android:previewLayout="@layout/kagi_widget" android:previewLayout="@layout/bang_navigator_widget"
android:targetCellWidth="5" android:targetCellWidth="5"
android:targetCellHeight="2" android:targetCellHeight="2"
android:widgetCategory="home_screen" /> android:widgetCategory="home_screen" />
Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

+6 -6
View File
@@ -368,7 +368,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@@ -384,7 +384,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -401,7 +401,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@@ -416,7 +416,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@@ -547,7 +547,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -569,7 +569,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
+2 -2
View File
@@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>Kagi Bang Bang</string> <string>Bang Navigator</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
@@ -13,7 +13,7 @@
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>kagi_bang_bang</string> <string>bang_navigator</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
+1 -1
View File
@@ -1,5 +1,5 @@
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:kagi_bang_bang/core/routing/routes.dart'; import 'package:bang_navigator/core/routing/routes.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'providers.g.dart'; part 'providers.g.dart';
+3 -3
View File
@@ -1,9 +1,9 @@
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:kagi_bang_bang/features/search_browser/presentation/screens/browser.dart'; import 'package:bang_navigator/features/search_browser/presentation/screens/browser.dart';
import 'package:kagi_bang_bang/features/settings/data/repositories/settings_repository.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:kagi_bang_bang/features/settings/presentation/screens/settings.dart'; import 'package:bang_navigator/features/settings/presentation/screens/settings.dart';
part 'routes.g.dart'; part 'routes.g.dart';
+3 -3
View File
@@ -4,9 +4,9 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:html/dom.dart'; import 'package:html/dom.dart';
import 'package:html/parser.dart' as html_parser; import 'package:html/parser.dart' as html_parser;
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:kagi_bang_bang/core/http_error_handler.dart'; import 'package:bang_navigator/core/http_error_handler.dart';
import 'package:kagi_bang_bang/domain/entities/web_page_info.dart'; import 'package:bang_navigator/domain/entities/web_page_info.dart';
import 'package:kagi_bang_bang/features/web_view/utils/favicon_helper.dart'; import 'package:bang_navigator/features/web_view/utils/favicon_helper.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'generic_website.g.dart'; part 'generic_website.g.dart';
@@ -1,5 +1,5 @@
import 'package:home_widget/home_widget.dart'; import 'package:home_widget/home_widget.dart';
import 'package:kagi_bang_bang/domain/entities/received_parameter.dart'; import 'package:bang_navigator/domain/entities/received_parameter.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:rxdart/rxdart.dart'; import 'package:rxdart/rxdart.dart';
@@ -2,7 +2,7 @@ import 'dart:convert';
import 'package:exceptions/exceptions.dart'; import 'package:exceptions/exceptions.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:kagi_bang_bang/core/http_error_handler.dart'; import 'package:bang_navigator/core/http_error_handler.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'autosuggest.g.dart'; part 'autosuggest.g.dart';
@@ -1,7 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:kagi_bang_bang/features/kagi/data/services/autosuggest.dart'; import 'package:bang_navigator/features/kagi/data/services/autosuggest.dart';
import 'package:kagi_bang_bang/utils/lru_cache.dart'; import 'package:bang_navigator/utils/lru_cache.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:rxdart/rxdart.dart'; import 'package:rxdart/rxdart.dart';
@@ -1,4 +1,4 @@
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
sealed class Sheet {} sealed class Sheet {}
@@ -1,8 +1,8 @@
// ignore_for_file: use_setters_to_change_properties // ignore_for_file: use_setters_to_change_properties
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/sheet.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/services/create_tab.dart'; import 'package:bang_navigator/features/search_browser/domain/services/create_tab.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'providers.g.dart'; part 'providers.g.dart';
@@ -1,11 +1,11 @@
import 'dart:async'; import 'dart:async';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:kagi_bang_bang/domain/entities/received_parameter.dart'; import 'package:bang_navigator/domain/entities/received_parameter.dart';
import 'package:kagi_bang_bang/features/app_widget/domain/services/home_widget.dart'; import 'package:bang_navigator/features/app_widget/domain/services/home_widget.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/sheet.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
import 'package:kagi_bang_bang/features/share_intent/domain/services/sharing_intent.dart'; import 'package:bang_navigator/features/share_intent/domain/services/sharing_intent.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:rxdart/rxdart.dart'; import 'package:rxdart/rxdart.dart';
@@ -5,24 +5,24 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.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:kagi_bang_bang/core/routing/routes.dart'; import 'package:bang_navigator/core/routing/routes.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/sheet.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/providers.dart'; import 'package:bang_navigator/features/search_browser/domain/providers.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/services/create_tab.dart'; import 'package:bang_navigator/features/search_browser/domain/services/create_tab.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/services/session.dart'; import 'package:bang_navigator/features/search_browser/domain/services/session.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/app_bar_title.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/app_bar_title.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/sheets/view_tabs_sheet.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/view_tabs_sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/tabs_action_button.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs_action_button.dart';
import 'package:kagi_bang_bang/features/settings/data/repositories/settings_repository.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:kagi_bang_bang/features/web_view/domain/repositories/web_view.dart'; import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/controllers/switch_new_tab.dart'; import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/web_page_dialog.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/web_page_dialog.dart';
import 'package:kagi_bang_bang/presentation/hooks/listenable_callback.dart'; import 'package:bang_navigator/presentation/hooks/listenable_callback.dart';
import 'package:kagi_bang_bang/presentation/hooks/overlay_portal_controller.dart'; import 'package:bang_navigator/presentation/hooks/overlay_portal_controller.dart';
import 'package:kagi_bang_bang/presentation/widgets/animated_indexed_stack.dart'; import 'package:bang_navigator/presentation/widgets/animated_indexed_stack.dart';
import 'package:kagi_bang_bang/utils/ui_helper.dart' as ui_helper; import 'package:bang_navigator/utils/ui_helper.dart' as ui_helper;
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
@@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/web_view/domain/entities/web_view_page.dart'; import 'package:bang_navigator/features/web_view/domain/entities/web_view_page.dart';
import 'package:kagi_bang_bang/features/web_view/domain/repositories/web_view.dart'; import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/favicon.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/favicon.dart';
import 'package:text_scroll/text_scroll.dart'; import 'package:text_scroll/text_scroll.dart';
class AppBarTitle extends HookConsumerWidget { class AppBarTitle extends HookConsumerWidget {
@@ -3,13 +3,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/sheet.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/tabs/assistant_tab.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/assistant_tab.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/tabs/search_tab.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/search_tab.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/tabs/summarize_tab.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs/summarize_tab.dart';
import 'package:kagi_bang_bang/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
import 'package:kagi_bang_bang/presentation/hooks/sync_page_tab.dart'; import 'package:bang_navigator/presentation/hooks/sync_page_tab.dart';
typedef OnSubmitUri = void Function(Uri url); typedef OnSubmitUri = void Function(Uri url);
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/web_view/domain/repositories/web_view.dart'; import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/controllers/switch_new_tab.dart'; import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/web_view_tab.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/web_view_tab.dart';
class ViewTabsSheet extends HookConsumerWidget { class ViewTabsSheet extends HookConsumerWidget {
final VoidCallback onClose; final VoidCallback onClose;
@@ -3,12 +3,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/utils/url_builder.dart' import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
as uri_builder; as uri_builder;
import 'package:kagi_bang_bang/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
import 'package:kagi_bang_bang/presentation/hooks/sync_page_tab.dart'; import 'package:bang_navigator/presentation/hooks/sync_page_tab.dart';
class AssistantTab extends HookConsumerWidget { class AssistantTab extends HookConsumerWidget {
final SharedContent? sharedContent; final SharedContent? sharedContent;
@@ -2,13 +2,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/kagi/domain/repositories/autosuggest.dart'; import 'package:bang_navigator/features/kagi/domain/repositories/autosuggest.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/utils/url_builder.dart' import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
as uri_builder; as uri_builder;
import 'package:kagi_bang_bang/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
import 'package:kagi_bang_bang/presentation/widgets/autocomplete.dart'; import 'package:bang_navigator/presentation/widgets/autocomplete.dart';
import 'package:kagi_bang_bang/utils/ui_helper.dart' as ui_helper; import 'package:bang_navigator/utils/ui_helper.dart' as ui_helper;
import 'package:speech_to_text_google_dialog/speech_to_text_google_dialog.dart'; import 'package:speech_to_text_google_dialog/speech_to_text_google_dialog.dart';
// The default Material-style Autocomplete options. // The default Material-style Autocomplete options.
@@ -4,13 +4,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:kagi_bang_bang/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/utils/url_builder.dart' import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
as uri_builder; as uri_builder;
import 'package:kagi_bang_bang/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
import 'package:kagi_bang_bang/presentation/widgets/website_title_tile.dart'; import 'package:bang_navigator/presentation/widgets/website_title_tile.dart';
import 'package:kagi_bang_bang/utils/uri_parser.dart' as uri_parser; import 'package:bang_navigator/utils/uri_parser.dart' as uri_parser;
class SummarizeTab extends HookConsumerWidget { class SummarizeTab extends HookConsumerWidget {
final SharedContent? sharedContent; final SharedContent? sharedContent;
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/web_view/domain/repositories/web_view.dart'; import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart';
class TabsActionButton extends HookConsumerWidget { class TabsActionButton extends HookConsumerWidget {
final VoidCallback onTap; final VoidCallback onTap;
@@ -1,5 +1,5 @@
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:kagi_bang_bang/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
final _baseUrl = Uri.https('kagi.com'); final _baseUrl = Uri.https('kagi.com');
@@ -1,5 +1,5 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:kagi_bang_bang/features/settings/data/models/settings.dart'; import 'package:bang_navigator/features/settings/data/models/settings.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
@@ -1,4 +1,4 @@
import 'package:kagi_bang_bang/features/settings/data/repositories/settings_repository.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'save_settings.g.dart'; part 'save_settings.g.dart';
@@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/settings/data/models/settings.dart'; import 'package:bang_navigator/features/settings/data/models/settings.dart';
import 'package:kagi_bang_bang/features/settings/data/repositories/settings_repository.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:kagi_bang_bang/features/settings/presentation/controllers/save_settings.dart'; import 'package:bang_navigator/features/settings/presentation/controllers/save_settings.dart';
import 'package:kagi_bang_bang/features/settings/utils/session_link_extractor.dart'; import 'package:bang_navigator/features/settings/utils/session_link_extractor.dart';
import 'package:kagi_bang_bang/presentation/hooks/listenable_callback.dart'; import 'package:bang_navigator/presentation/hooks/listenable_callback.dart';
class SettingsScreen extends HookConsumerWidget { class SettingsScreen extends HookConsumerWidget {
const SettingsScreen({super.key}); const SettingsScreen({super.key});
@@ -1,4 +1,4 @@
import 'package:kagi_bang_bang/utils/uri_parser.dart' as uri_parser; import 'package:bang_navigator/utils/uri_parser.dart' as uri_parser;
sealed class SharedContent { sealed class SharedContent {
const SharedContent(); const SharedContent();
@@ -3,7 +3,7 @@ import 'dart:async';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:flutter_sharing_intent/flutter_sharing_intent.dart'; import 'package:flutter_sharing_intent/flutter_sharing_intent.dart';
import 'package:flutter_sharing_intent/model/sharing_file.dart'; import 'package:flutter_sharing_intent/model/sharing_file.dart';
import 'package:kagi_bang_bang/domain/entities/received_parameter.dart'; import 'package:bang_navigator/domain/entities/received_parameter.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:rxdart/rxdart.dart'; import 'package:rxdart/rxdart.dart';
@@ -3,7 +3,7 @@ import 'package:fast_equatable/fast_equatable.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:kagi_bang_bang/domain/entities/web_page_info.dart'; import 'package:bang_navigator/domain/entities/web_page_info.dart';
part 'web_view_page.g.dart'; part 'web_view_page.g.dart';
@@ -1,7 +1,7 @@
import 'dart:collection'; import 'dart:collection';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/web_view.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/web_view.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'web_view.g.dart'; part 'web_view.g.dart';
@@ -1,7 +1,7 @@
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:kagi_bang_bang/features/web_view/domain/entities/web_view_page.dart'; import 'package:bang_navigator/features/web_view/domain/entities/web_view_page.dart';
import 'package:kagi_bang_bang/features/web_view/domain/repositories/web_view.dart'; import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/web_view.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/web_view.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'switch_new_tab.g.dart'; part 'switch_new_tab.g.dart';
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:kagi_bang_bang/domain/entities/web_page_info.dart'; import 'package:bang_navigator/domain/entities/web_page_info.dart';
import 'package:kagi_bang_bang/extensions/web_uri_favicon.dart'; import 'package:bang_navigator/extensions/web_uri_favicon.dart';
class FaviconImage extends StatelessWidget { class FaviconImage extends StatelessWidget {
final double size; final double size;
@@ -4,15 +4,15 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/domain/entities/web_page_info.dart'; import 'package:bang_navigator/domain/entities/web_page_info.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:kagi_bang_bang/features/search_browser/utils/url_builder.dart' import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
as uri_builder; as uri_builder;
import 'package:kagi_bang_bang/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/controllers/switch_new_tab.dart'; import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/favicon.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/favicon.dart';
import 'package:kagi_bang_bang/presentation/controllers/website_title.dart'; import 'package:bang_navigator/presentation/controllers/website_title.dart';
import 'package:kagi_bang_bang/utils/ui_helper.dart' as ui_helper; import 'package:bang_navigator/utils/ui_helper.dart' as ui_helper;
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import 'package:skeletonizer/skeletonizer.dart'; import 'package:skeletonizer/skeletonizer.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
@@ -5,19 +5,19 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/core/logger.dart'; import 'package:bang_navigator/core/logger.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/entities/sheet.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/providers.dart'; import 'package:bang_navigator/features/search_browser/domain/providers.dart';
import 'package:kagi_bang_bang/features/search_browser/utils/url_builder.dart' import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
as uri_builder; as uri_builder;
import 'package:kagi_bang_bang/features/settings/data/repositories/settings_repository.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:kagi_bang_bang/features/web_view/domain/entities/web_view_page.dart'; import 'package:bang_navigator/features/web_view/domain/entities/web_view_page.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/controllers/switch_new_tab.dart'; import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/web_page_dialog.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/web_page_dialog.dart';
import 'package:kagi_bang_bang/features/web_view/utils/favicon_helper.dart'; import 'package:bang_navigator/features/web_view/utils/favicon_helper.dart';
import 'package:kagi_bang_bang/utils/platform_util.dart' as platform_util; import 'package:bang_navigator/utils/platform_util.dart' as platform_util;
import 'package:kagi_bang_bang/utils/ui_helper.dart' as ui_helper; import 'package:bang_navigator/utils/ui_helper.dart' as ui_helper;
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
const _webViewSupportedSchemes = [ const _webViewSupportedSchemes = [
@@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/web_view/domain/repositories/web_view.dart'; import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/favicon.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/favicon.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/web_view.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/web_view.dart';
class WebViewTab extends HookConsumerWidget { class WebViewTab extends HookConsumerWidget {
final WebView webView; final WebView webView;
+6 -6
View File
@@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:home_widget/home_widget.dart'; import 'package:home_widget/home_widget.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/core/logger.dart'; import 'package:bang_navigator/core/logger.dart';
import 'package:kagi_bang_bang/core/providers.dart'; import 'package:bang_navigator/core/providers.dart';
import 'package:kagi_bang_bang/features/search_browser/domain/services/session.dart'; import 'package:bang_navigator/features/search_browser/domain/services/session.dart';
import 'package:kagi_bang_bang/features/settings/data/repositories/settings_repository.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:kagi_bang_bang/presentation/hooks/on_initialization.dart'; import 'package:bang_navigator/presentation/hooks/on_initialization.dart';
class _ErrorObserver extends ProviderObserver { class _ErrorObserver extends ProviderObserver {
const _ErrorObserver(); const _ErrorObserver();
@@ -24,7 +24,7 @@ class _ErrorObserver extends ProviderObserver {
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await HomeWidget.setAppGroupId('BANG_BANG'); await HomeWidget.setAppGroupId('bang_navigator');
// if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) { // if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) {
// await InAppWebViewController.setWebContentsDebuggingEnabled(kDebugMode); // await InAppWebViewController.setWebContentsDebuggingEnabled(kDebugMode);
@@ -1,5 +1,5 @@
import 'package:kagi_bang_bang/domain/entities/web_page_info.dart'; import 'package:bang_navigator/domain/entities/web_page_info.dart';
import 'package:kagi_bang_bang/domain/services/generic_website.dart'; import 'package:bang_navigator/domain/services/generic_website.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'website_title.g.dart'; part 'website_title.g.dart';
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:kagi_bang_bang/features/web_view/presentation/widgets/favicon.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/favicon.dart';
import 'package:kagi_bang_bang/presentation/controllers/website_title.dart'; import 'package:bang_navigator/presentation/controllers/website_title.dart';
import 'package:kagi_bang_bang/presentation/widgets/failure_widget.dart'; import 'package:bang_navigator/presentation/widgets/failure_widget.dart';
import 'package:skeletonizer/skeletonizer.dart'; import 'package:skeletonizer/skeletonizer.dart';
class WebsiteTitleTile extends HookConsumerWidget { class WebsiteTitleTile extends HookConsumerWidget {
+2 -2
View File
@@ -4,10 +4,10 @@ project(runner LANGUAGES CXX)
# The name of the executable created for the application. Change this to change # The name of the executable created for the application. Change this to change
# the on-disk name of your application. # the on-disk name of your application.
set(BINARY_NAME "kagi_bang_bang") set(BINARY_NAME "bang_navigator")
# The unique GTK application identifier for this application. See: # The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID # https://wiki.gnome.org/HowDoI/ChooseApplicationID
set(APPLICATION_ID "me.movenext.kagi_bang_bang") set(APPLICATION_ID "me.movenext.bang_navigator")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent # Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake. # versions of CMake.
+2 -2
View File
@@ -40,11 +40,11 @@ static void my_application_activate(GApplication* application) {
if (use_header_bar) { if (use_header_bar) {
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar)); gtk_widget_show(GTK_WIDGET(header_bar));
gtk_header_bar_set_title(header_bar, "kagi_bang_bang"); gtk_header_bar_set_title(header_bar, "bang_navigator");
gtk_header_bar_set_show_close_button(header_bar, TRUE); gtk_header_bar_set_show_close_button(header_bar, TRUE);
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
} else { } else {
gtk_window_set_title(window, "kagi_bang_bang"); gtk_window_set_title(window, "bang_navigator");
} }
gtk_window_set_default_size(window, 1280, 720); gtk_window_set_default_size(window, 1280, 720);
+9 -9
View File
@@ -64,7 +64,7 @@
331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
33CC10ED2044A3C60003C045 /* kagi_bang_bang.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "kagi_bang_bang.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10ED2044A3C60003C045 /* bang_navigator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "bang_navigator.app"; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; }; 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; }; 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
@@ -131,7 +131,7 @@
33CC10EE2044A3C60003C045 /* Products */ = { 33CC10EE2044A3C60003C045 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
33CC10ED2044A3C60003C045 /* kagi_bang_bang.app */, 33CC10ED2044A3C60003C045 /* bang_navigator.app */,
331C80D5294CF71000263BE5 /* RunnerTests.xctest */, 331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
); );
name = Products; name = Products;
@@ -217,7 +217,7 @@
); );
name = Runner; name = Runner;
productName = Runner; productName = Runner;
productReference = 33CC10ED2044A3C60003C045 /* kagi_bang_bang.app */; productReference = 33CC10ED2044A3C60003C045 /* bang_navigator.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
@@ -385,10 +385,10 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/kagi_bang_bang.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/kagi_bang_bang"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/bang_navigator.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/bang_navigator";
}; };
name = Debug; name = Debug;
}; };
@@ -399,10 +399,10 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/kagi_bang_bang.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/kagi_bang_bang"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/bang_navigator.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/bang_navigator";
}; };
name = Release; name = Release;
}; };
@@ -413,10 +413,10 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang.RunnerTests; PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/kagi_bang_bang.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/kagi_bang_bang"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/bang_navigator.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/bang_navigator";
}; };
name = Profile; name = Profile;
}; };
@@ -15,7 +15,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045" BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "kagi_bang_bang.app" BuildableName = "bang_navigator.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
@@ -31,7 +31,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045" BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "kagi_bang_bang.app" BuildableName = "bang_navigator.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
@@ -65,7 +65,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045" BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "kagi_bang_bang.app" BuildableName = "bang_navigator.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
@@ -82,7 +82,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045" BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "kagi_bang_bang.app" BuildableName = "bang_navigator.app"
BlueprintName = "Runner" BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj"> ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference> </BuildableReference>
+2 -2
View File
@@ -5,10 +5,10 @@
// 'flutter create' template. // 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window. // The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = kagi_bang_bang PRODUCT_NAME = bang_navigator
// The application's bundle identifier // The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = me.movenext.kagiBangBang PRODUCT_BUNDLE_IDENTIFIER = me.movenext.bangNavigator
// The copyright displayed in application information // The copyright displayed in application information
PRODUCT_COPYRIGHT = Copyright © 2024 me.movenext. All rights reserved. PRODUCT_COPYRIGHT = Copyright © 2024 me.movenext. All rights reserved.
+8
View File
@@ -257,6 +257,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.6" version: "2.3.6"
dependency_validator:
dependency: "direct dev"
description:
name: dependency_validator
sha256: f727a5627aa405965fab4aef4f468e50a9b632ba0737fd2f98c932fec6d712b9
url: "https://pub.dev"
source: hosted
version: "3.2.3"
exceptions: exceptions:
dependency: "direct main" dependency: "direct main"
description: description:
+6 -1
View File
@@ -1,4 +1,4 @@
name: kagi_bang_bang name: bang_navigator
description: "A new Flutter project." description: "A new Flutter project."
publish_to: 'none' publish_to: 'none'
version: 0.1.0 version: 0.1.0
@@ -41,6 +41,7 @@ dev_dependencies:
build_runner: ^2.4.9 build_runner: ^2.4.9
copy_with_extension_gen: ^5.0.4 copy_with_extension_gen: ^5.0.4
custom_lint: ^0.6.4 custom_lint: ^0.6.4
dependency_validator: ^3.2.3
fast_equatable_lint: ^0.3.0 fast_equatable_lint: ^0.3.0
flutter_launcher_icons: ^0.13.1 flutter_launcher_icons: ^0.13.1
go_router_builder: ^2.4.1 go_router_builder: ^2.4.1
@@ -50,3 +51,7 @@ dev_dependencies:
flutter: flutter:
uses-material-design: true uses-material-design: true
flutter_launcher_icons:
android: "launcher_icon"
image_path: "assets/icon/icon.png"
+2 -2
View File
@@ -23,13 +23,13 @@
<!-- iOS meta tags & icons --> <!-- iOS meta tags & icons -->
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="kagi_bang_bang"> <meta name="apple-mobile-web-app-title" content="bang_navigator">
<link rel="apple-touch-icon" href="icons/Icon-192.png"> <link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon --> <!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/> <link rel="icon" type="image/png" href="favicon.png"/>
<title>kagi_bang_bang</title> <title>bang_navigator</title>
<link rel="manifest" href="manifest.json"> <link rel="manifest" href="manifest.json">
<script> <script>
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "kagi_bang_bang", "name": "bang_navigator",
"short_name": "kagi_bang_bang", "short_name": "bang_navigator",
"start_url": ".", "start_url": ".",
"display": "standalone", "display": "standalone",
"background_color": "#0175C2", "background_color": "#0175C2",
+2 -2
View File
@@ -1,10 +1,10 @@
# Project-level configuration. # Project-level configuration.
cmake_minimum_required(VERSION 3.14) cmake_minimum_required(VERSION 3.14)
project(kagi_bang_bang LANGUAGES CXX) project(bang_navigator LANGUAGES CXX)
# The name of the executable created for the application. Change this to change # The name of the executable created for the application. Change this to change
# the on-disk name of your application. # the on-disk name of your application.
set(BINARY_NAME "kagi_bang_bang") set(BINARY_NAME "bang_navigator")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent # Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake. # versions of CMake.
+4 -4
View File
@@ -90,12 +90,12 @@ BEGIN
BLOCK "040904e4" BLOCK "040904e4"
BEGIN BEGIN
VALUE "CompanyName", "me.movenext" "\0" VALUE "CompanyName", "me.movenext" "\0"
VALUE "FileDescription", "kagi_bang_bang" "\0" VALUE "FileDescription", "bang_navigator" "\0"
VALUE "FileVersion", VERSION_AS_STRING "\0" VALUE "FileVersion", VERSION_AS_STRING "\0"
VALUE "InternalName", "kagi_bang_bang" "\0" VALUE "InternalName", "bang_navigator" "\0"
VALUE "LegalCopyright", "Copyright (C) 2024 me.movenext. All rights reserved." "\0" VALUE "LegalCopyright", "Copyright (C) 2024 me.movenext. All rights reserved." "\0"
VALUE "OriginalFilename", "kagi_bang_bang.exe" "\0" VALUE "OriginalFilename", "bang_navigator.exe" "\0"
VALUE "ProductName", "kagi_bang_bang" "\0" VALUE "ProductName", "bang_navigator" "\0"
VALUE "ProductVersion", VERSION_AS_STRING "\0" VALUE "ProductVersion", VERSION_AS_STRING "\0"
END END
END END
+1 -1
View File
@@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
FlutterWindow window(project); FlutterWindow window(project);
Win32Window::Point origin(10, 10); Win32Window::Point origin(10, 10);
Win32Window::Size size(1280, 720); Win32Window::Size size(1280, 720);
if (!window.Create(L"kagi_bang_bang", origin, size)) { if (!window.Create(L"bang_navigator", origin, size)) {
return EXIT_FAILURE; return EXIT_FAILURE;
} }
window.SetQuitOnClose(true); window.SetQuitOnClose(true);