diff --git a/lib/app/di.dart b/lib/app/di.dart deleted file mode 100644 index 02723da..0000000 --- a/lib/app/di.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:get_it/get_it.dart'; -import 'package:olpaka/chat/di.dart'; -import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/home/di.dart'; -import 'package:olpaka/models/di.dart'; -import 'package:olpaka/ollama/di.dart'; -import 'package:olpaka/onboarding/di.dart'; -import 'package:olpaka/preferences/preferences.dart'; -import 'package:olpaka/settings/ThemeManager.dart'; -import 'package:olpaka/settings/di.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -void registerModules() { - final l = GetIt.instance; - l.registerSingletonAsync( - () async => PreferenceDefault(await SharedPreferences.getInstance())); - l.registerLazySingleton(() => ThemeManager(l.get())); - l.registerFactory(() => S.current); - registerOllama(); - registerOnboarding(); - registerHome(); - registerChat(); - registerModels(); - registerSettings(); -} diff --git a/lib/app/olpaka_app.dart b/lib/app/olpaka_app.dart index b68b560..04144a2 100644 --- a/lib/app/olpaka_app.dart +++ b/lib/app/olpaka_app.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; -import 'package:olpaka/app/router.dart'; +import 'package:olpaka/core/router.dart'; +import 'package:olpaka/core/state/theme_manager.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/settings/ThemeManager.dart'; -import 'package:olpaka/settings/view_model.dart'; import 'package:stacked/stacked.dart'; class OlpakaApp extends StatelessWidget { diff --git a/lib/core/di.dart b/lib/core/di.dart new file mode 100644 index 0000000..dff3fe3 --- /dev/null +++ b/lib/core/di.dart @@ -0,0 +1,48 @@ +import 'package:dio/dio.dart'; +import 'package:get_it/get_it.dart'; +import 'package:olpaka/core/http_client.dart'; +import 'package:olpaka/core/state/model_manager.dart'; +import 'package:olpaka/core/state/theme_manager.dart'; +import 'package:olpaka/feature/chat/di.dart'; +import 'package:olpaka/feature/home/di.dart'; +import 'package:olpaka/feature/models/di.dart'; +import 'package:olpaka/feature/onboarding/di.dart'; +import 'package:olpaka/feature/settings/di.dart'; +import 'package:olpaka/generated/l10n.dart'; +import 'package:olpaka/core/preferences.dart'; +import 'package:pretty_dio_logger/pretty_dio_logger.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'ollama/repository.dart'; + +void registerModules() { + final l = GetIt.instance; + l.registerSingletonAsync( + () async => PreferenceDefault(await SharedPreferences.getInstance())); + l.registerLazySingleton(() => ThemeManager(l.get())); + l.registerFactory(() => S.current); + + l.registerFactory(() { + final client = Dio(); + client.options.baseUrl = "http://localhost:11434/api"; + client.interceptors.add( + PrettyDioLogger( + requestHeader: true, + requestBody: true, + responseBody: true, + responseHeader: true, + error: true, + compact: true, + maxWidth: 90), + ); + return client; + }); + l.registerFactory(() => HttpClient(l.get())); + l.registerFactory(() => OllamaRepository(l.get())); + l.registerLazySingleton(() => ModelManager(l.get())); + registerOnboarding(); + registerHome(); + registerChat(); + registerModels(); + registerSettings(); +} diff --git a/lib/app/http_client.dart b/lib/core/http_client.dart similarity index 100% rename from lib/app/http_client.dart rename to lib/core/http_client.dart diff --git a/lib/app/logger.dart b/lib/core/logger.dart similarity index 100% rename from lib/app/logger.dart rename to lib/core/logger.dart diff --git a/lib/ollama/model.dart b/lib/core/ollama/model.dart similarity index 100% rename from lib/ollama/model.dart rename to lib/core/ollama/model.dart diff --git a/lib/ollama/repository.dart b/lib/core/ollama/repository.dart similarity index 96% rename from lib/ollama/repository.dart rename to lib/core/ollama/repository.dart index 7cd3abd..65a5f4c 100644 --- a/lib/ollama/repository.dart +++ b/lib/core/ollama/repository.dart @@ -1,9 +1,10 @@ import 'dart:convert'; import 'dart:core'; -import 'package:olpaka/app/http_client.dart'; -import 'package:olpaka/app/logger.dart'; -import 'package:olpaka/ollama/model.dart'; +import 'package:olpaka/core/http_client.dart'; +import 'package:olpaka/core/logger.dart'; + +import 'model.dart'; class OllamaRepository { final HttpClient _client; diff --git a/lib/preferences/preferences.dart b/lib/core/preferences.dart similarity index 97% rename from lib/preferences/preferences.dart rename to lib/core/preferences.dart index 2c92c49..68dcd5d 100644 --- a/lib/preferences/preferences.dart +++ b/lib/core/preferences.dart @@ -1,4 +1,4 @@ -import 'package:olpaka/settings/view_model.dart'; +import 'package:olpaka/core/state/theme_manager.dart'; import 'package:shared_preferences/shared_preferences.dart'; abstract class Preferences { diff --git a/lib/app/router.dart b/lib/core/router.dart similarity index 74% rename from lib/app/router.dart rename to lib/core/router.dart index 701e317..a948a08 100644 --- a/lib/app/router.dart +++ b/lib/core/router.dart @@ -1,6 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:olpaka/home/view.dart'; -import 'package:olpaka/onboarding/view.dart'; +import 'package:olpaka/feature/home/view.dart'; +import 'package:olpaka/feature/onboarding/view.dart'; final router = GoRouter( routes: [ diff --git a/lib/ollama/model_manager.dart b/lib/core/state/model_manager.dart similarity index 95% rename from lib/ollama/model_manager.dart rename to lib/core/state/model_manager.dart index 09ca330..a8e3814 100644 --- a/lib/ollama/model_manager.dart +++ b/lib/core/state/model_manager.dart @@ -2,8 +2,8 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; -import 'package:olpaka/ollama/model.dart'; -import 'package:olpaka/ollama/repository.dart'; +import 'package:olpaka/core/ollama/model.dart'; +import 'package:olpaka/core/ollama/repository.dart'; class ModelManager with ChangeNotifier{ diff --git a/lib/settings/ThemeManager.dart b/lib/core/state/theme_manager.dart similarity index 75% rename from lib/settings/ThemeManager.dart rename to lib/core/state/theme_manager.dart index 04d264a..241cf8c 100644 --- a/lib/settings/ThemeManager.dart +++ b/lib/core/state/theme_manager.dart @@ -1,6 +1,5 @@ import 'package:flutter/cupertino.dart'; -import 'package:olpaka/preferences/preferences.dart'; -import 'package:olpaka/settings/view_model.dart'; +import 'package:olpaka/core/preferences.dart'; class ThemeManager with ChangeNotifier { final Preferences _preferences; @@ -21,3 +20,7 @@ class ThemeManager with ChangeNotifier { notifyListeners(); } } + +enum OlpakaThemeMode { system, dark, light } + +enum OlpakaThemeColor { olpaka, blue, green, orange, red, purple, grey } diff --git a/lib/chat/di.dart b/lib/feature/chat/di.dart similarity index 73% rename from lib/chat/di.dart rename to lib/feature/chat/di.dart index 46a06fc..0912ad7 100644 --- a/lib/chat/di.dart +++ b/lib/feature/chat/di.dart @@ -1,5 +1,5 @@ import 'package:get_it/get_it.dart'; -import 'package:olpaka/chat/view_model.dart'; +import 'package:olpaka/feature/chat/view_model.dart'; registerChat() { final l = GetIt.instance; diff --git a/lib/chat/view.dart b/lib/feature/chat/view.dart similarity index 99% rename from lib/chat/view.dart rename to lib/feature/chat/view.dart index e5e55ad..dbf2de5 100644 --- a/lib/chat/view.dart +++ b/lib/feature/chat/view.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:get_it/get_it.dart'; import 'package:markdown_widget/markdown_widget.dart'; -import 'package:olpaka/chat/view_model.dart'; +import 'package:olpaka/feature/chat/view_model.dart'; import 'package:olpaka/generated/l10n.dart'; import 'package:stacked/stacked.dart'; diff --git a/lib/chat/view_model.dart b/lib/feature/chat/view_model.dart similarity index 97% rename from lib/chat/view_model.dart rename to lib/feature/chat/view_model.dart index 2d88b4f..6f28fb2 100644 --- a/lib/chat/view_model.dart +++ b/lib/feature/chat/view_model.dart @@ -1,8 +1,8 @@ import 'dart:async'; +import 'package:olpaka/core/ollama/repository.dart'; +import 'package:olpaka/core/state/model_manager.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/ollama/model_manager.dart'; -import 'package:olpaka/ollama/repository.dart'; import 'package:stacked/stacked.dart'; class ChatViewModel extends BaseViewModel { diff --git a/lib/home/di.dart b/lib/feature/home/di.dart similarity index 70% rename from lib/home/di.dart rename to lib/feature/home/di.dart index 371b568..d5c8905 100644 --- a/lib/home/di.dart +++ b/lib/feature/home/di.dart @@ -1,6 +1,5 @@ - import 'package:get_it/get_it.dart'; -import 'package:olpaka/home/view_model.dart'; +import 'package:olpaka/feature/home/view_model.dart'; registerHome(){ final l = GetIt.instance; diff --git a/lib/home/view.dart b/lib/feature/home/view.dart similarity index 91% rename from lib/home/view.dart rename to lib/feature/home/view.dart index 2707154..a8aa019 100644 --- a/lib/home/view.dart +++ b/lib/feature/home/view.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; -import 'package:olpaka/chat/view.dart'; +import 'package:olpaka/feature/chat/view.dart'; +import 'package:olpaka/feature/home/view_model.dart'; +import 'package:olpaka/feature/models/view.dart'; +import 'package:olpaka/feature/settings/view.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/home/view_model.dart'; -import 'package:olpaka/models/view.dart'; -import 'package:olpaka/settings/view.dart'; import 'package:stacked/stacked.dart'; class HomeView extends StatelessWidget { diff --git a/lib/home/view_model.dart b/lib/feature/home/view_model.dart similarity index 100% rename from lib/home/view_model.dart rename to lib/feature/home/view_model.dart diff --git a/lib/models/di.dart b/lib/feature/models/di.dart similarity index 71% rename from lib/models/di.dart rename to lib/feature/models/di.dart index 6f6daed..9ebc53c 100644 --- a/lib/models/di.dart +++ b/lib/feature/models/di.dart @@ -1,6 +1,5 @@ - import 'package:get_it/get_it.dart'; -import 'package:olpaka/models/view_model.dart'; +import 'package:olpaka/feature/models/view_model.dart'; registerModels() { final l = GetIt.instance; diff --git a/lib/models/view.dart b/lib/feature/models/view.dart similarity index 99% rename from lib/models/view.dart rename to lib/feature/models/view.dart index 904adac..1b0b38a 100644 --- a/lib/models/view.dart +++ b/lib/feature/models/view.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; +import 'package:olpaka/feature/models/view_model.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/models/view_model.dart'; import 'package:stacked/stacked.dart'; class ModelsScreen extends StatelessWidget { diff --git a/lib/models/view_model.dart b/lib/feature/models/view_model.dart similarity index 97% rename from lib/models/view_model.dart rename to lib/feature/models/view_model.dart index d256a1c..b59d528 100644 --- a/lib/models/view_model.dart +++ b/lib/feature/models/view_model.dart @@ -2,9 +2,9 @@ import 'dart:async'; import 'dart:math'; import 'package:intl/intl.dart'; +import 'package:olpaka/core/ollama/repository.dart'; +import 'package:olpaka/core/state/model_manager.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/ollama/model_manager.dart'; -import 'package:olpaka/ollama/repository.dart'; import 'package:stacked/stacked.dart'; class ModelsViewModel extends BaseViewModel { diff --git a/lib/onboarding/di.dart b/lib/feature/onboarding/di.dart similarity index 71% rename from lib/onboarding/di.dart rename to lib/feature/onboarding/di.dart index 658ab7a..89f735e 100644 --- a/lib/onboarding/di.dart +++ b/lib/feature/onboarding/di.dart @@ -1,5 +1,5 @@ import 'package:get_it/get_it.dart'; -import 'package:olpaka/onboarding/view_model.dart'; +import 'package:olpaka/feature/onboarding/view_model.dart'; registerOnboarding() { final l = GetIt.instance; diff --git a/lib/onboarding/view.dart b/lib/feature/onboarding/view.dart similarity index 99% rename from lib/onboarding/view.dart rename to lib/feature/onboarding/view.dart index 647e9fa..75e78fa 100644 --- a/lib/onboarding/view.dart +++ b/lib/feature/onboarding/view.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:go_router/go_router.dart'; import 'package:markdown_widget/markdown_widget.dart'; +import 'package:olpaka/feature/onboarding/view_model.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/onboarding/view_model.dart'; import 'package:stacked/stacked.dart'; import 'package:url_launcher/url_launcher_string.dart'; diff --git a/lib/onboarding/view_model.dart b/lib/feature/onboarding/view_model.dart similarity index 98% rename from lib/onboarding/view_model.dart rename to lib/feature/onboarding/view_model.dart index fdc5a3c..30769bf 100644 --- a/lib/onboarding/view_model.dart +++ b/lib/feature/onboarding/view_model.dart @@ -1,7 +1,7 @@ import 'dart:async'; +import 'package:olpaka/core/ollama/repository.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/ollama/repository.dart'; import 'package:stacked/stacked.dart'; class OnboardingViewModel extends BaseViewModel { diff --git a/lib/settings/di.dart b/lib/feature/settings/di.dart similarity index 71% rename from lib/settings/di.dart rename to lib/feature/settings/di.dart index 0b6b29b..bb8328e 100644 --- a/lib/settings/di.dart +++ b/lib/feature/settings/di.dart @@ -1,5 +1,5 @@ import 'package:get_it/get_it.dart'; -import 'package:olpaka/settings/view_model.dart'; +import 'package:olpaka/feature/settings/view_model.dart'; registerSettings() { final l = GetIt.instance; diff --git a/lib/settings/view.dart b/lib/feature/settings/view.dart similarity index 97% rename from lib/settings/view.dart rename to lib/feature/settings/view.dart index 67e67bb..f688793 100644 --- a/lib/settings/view.dart +++ b/lib/feature/settings/view.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; +import 'package:olpaka/core/state/theme_manager.dart'; +import 'package:olpaka/feature/settings/view_model.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/settings/view_model.dart'; import 'package:stacked/stacked.dart'; class SettingsScreen extends StatelessWidget { diff --git a/lib/settings/view_model.dart b/lib/feature/settings/view_model.dart similarity index 83% rename from lib/settings/view_model.dart rename to lib/feature/settings/view_model.dart index 9ffc6b7..64e8dcb 100644 --- a/lib/settings/view_model.dart +++ b/lib/feature/settings/view_model.dart @@ -1,4 +1,4 @@ -import 'package:olpaka/settings/ThemeManager.dart'; +import 'package:olpaka/core/state/theme_manager.dart'; import 'package:stacked/stacked.dart'; class SettingsViewModel extends BaseViewModel { @@ -34,7 +34,3 @@ class SettingsState { this.themeColor = OlpakaThemeColor.olpaka, ]); } - -enum OlpakaThemeMode { system, dark, light } - -enum OlpakaThemeColor { olpaka, blue, green, orange, red, purple, grey } diff --git a/lib/main.dart b/lib/main.dart index 63040bb..27ffc09 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:olpaka/generated/l10n.dart'; -import 'package:olpaka/app/di.dart'; +import 'package:olpaka/core/di.dart'; import 'package:olpaka/app/olpaka_app.dart'; void main() async { diff --git a/lib/ollama/di.dart b/lib/ollama/di.dart deleted file mode 100644 index 3402f9d..0000000 --- a/lib/ollama/di.dart +++ /dev/null @@ -1,29 +0,0 @@ -import 'package:dio/dio.dart'; -import 'package:get_it/get_it.dart'; -import 'package:olpaka/app/http_client.dart'; -import 'package:olpaka/ollama/model_manager.dart'; -import 'package:olpaka/ollama/repository.dart'; -import 'package:pretty_dio_logger/pretty_dio_logger.dart'; - -registerOllama() { - final l = GetIt.instance; - - l.registerFactory(() { - final client = Dio(); - client.options.baseUrl = "http://localhost:11434/api"; - client.interceptors.add( - PrettyDioLogger( - requestHeader: true, - requestBody: true, - responseBody: true, - responseHeader: true, - error: true, - compact: true, - maxWidth: 90), - ); - return client; - }); - l.registerFactory(() => HttpClient(l.get())); - l.registerFactory(() => OllamaRepository(l.get())); - l.registerLazySingleton(() => ModelManager(l.get())); -}