diff --git a/sojorn_app/lib/services/api_service.dart b/sojorn_app/lib/services/api_service.dart index 1e24f45..3a036d4 100644 --- a/sojorn_app/lib/services/api_service.dart +++ b/sojorn_app/lib/services/api_service.dart @@ -1062,22 +1062,6 @@ class ApiService { // Social Actions // ========================================================================= - Future followUser(String userId) async { - final data = await _callGoApi( - '/users/$userId/follow', - method: 'POST', - ); - // Prefer explicit status, fallback to message if legacy - return (data['status'] as String?) ?? (data['message'] as String?); - } - - Future unfollowUser(String userId) async { - await _callGoApi( - '/users/$userId/follow', - method: 'DELETE', - ); - } - Future> getFollowRequests() async { final data = await _callGoApi('/users/requests'); final requests = data['requests'] as List? ?? []; diff --git a/sojorn_app/lib/widgets/follow_button.dart b/sojorn_app/lib/widgets/follow_button.dart index b3ca5fd..0667e82 100644 --- a/sojorn_app/lib/widgets/follow_button.dart +++ b/sojorn_app/lib/widgets/follow_button.dart @@ -1,9 +1,10 @@ import 'package:flutter/material.dart'; -import '../services/api_service.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../providers/api_provider.dart'; import '../theme/app_theme.dart'; /// Follow/Unfollow button with loading state and animations -class FollowButton extends StatefulWidget { +class FollowButton extends ConsumerStatefulWidget { final String targetUserId; final bool initialIsFollowing; final Function(bool)? onFollowChanged; @@ -18,10 +19,10 @@ class FollowButton extends StatefulWidget { }); @override - State createState() => _FollowButtonState(); + ConsumerState createState() => _FollowButtonState(); } -class _FollowButtonState extends State { +class _FollowButtonState extends ConsumerState { late bool _isFollowing; bool _isLoading = false; @@ -45,7 +46,7 @@ class _FollowButtonState extends State { setState(() => _isLoading = true); try { - final api = ApiService(); + final api = ref.read(apiServiceProvider); if (_isFollowing) { await api.unfollowUser(widget.targetUserId); } else { diff --git a/sojorn_app/pubspec.lock b/sojorn_app/pubspec.lock index 499bca5..3b07f1c 100644 --- a/sojorn_app/pubspec.lock +++ b/sojorn_app/pubspec.lock @@ -233,6 +233,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.19.1" + connectivity_plus: + dependency: "direct main" + description: + name: connectivity_plus + sha256: b5e72753cf63becce2c61fd04dfe0f1c430cc5278b53a1342dc5ad839eab29ec + url: "https://pub.dev" + source: hosted + version: "6.1.5" + connectivity_plus_platform_interface: + dependency: transitive + description: + name: connectivity_plus_platform_interface + sha256: "42657c1715d48b167930d5f34d00222ac100475f73d10162ddf43e714932f204" + url: "https://pub.dev" + source: hosted + version: "2.0.1" convert: dependency: "direct main" description: @@ -1253,6 +1269,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + nm: + dependency: transitive + description: + name: nm + sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" + url: "https://pub.dev" + source: hosted + version: "0.5.0" node_preamble: dependency: transitive description: diff --git a/sojorn_app/windows/flutter/generated_plugin_registrant.cc b/sojorn_app/windows/flutter/generated_plugin_registrant.cc index 4a7cda6..6debdf6 100644 --- a/sojorn_app/windows/flutter/generated_plugin_registrant.cc +++ b/sojorn_app/windows/flutter/generated_plugin_registrant.cc @@ -7,6 +7,7 @@ #include "generated_plugin_registrant.h" #include +#include #include #include #include @@ -21,6 +22,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { AppLinksPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("AppLinksPluginCApi")); + ConnectivityPlusWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); FirebaseCorePluginCApiRegisterWithRegistrar( diff --git a/sojorn_app/windows/flutter/generated_plugins.cmake b/sojorn_app/windows/flutter/generated_plugins.cmake index 56056e3..829a900 100644 --- a/sojorn_app/windows/flutter/generated_plugins.cmake +++ b/sojorn_app/windows/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST app_links + connectivity_plus file_selector_windows firebase_core flutter_inappwebview_windows