Change default status to none, switch to rest from ws
All checks were successful
Build Flutter Web and Docker Image for Local Registry / Build Flutter Web App (push) Successful in 3m13s
All checks were successful
Build Flutter Web and Docker Image for Local Registry / Build Flutter Web App (push) Successful in 3m13s
This commit is contained in:
parent
1413ba7263
commit
b3a43c9fa5
@ -21,6 +21,7 @@ class SharedPreferencesProvider extends ChangeNotifier {
|
|||||||
List<int> imageBytes = bytes.buffer.asUint8List();
|
List<int> imageBytes = bytes.buffer.asUint8List();
|
||||||
prefs.setString('userLogo', base64Encode(imageBytes));
|
prefs.setString('userLogo', base64Encode(imageBytes));
|
||||||
prefs.setString('id', const Uuid().v4());
|
prefs.setString('id', const Uuid().v4());
|
||||||
|
prefs.setString('currentStatus', 'none');
|
||||||
}
|
}
|
||||||
_initCompleter.complete();
|
_initCompleter.complete();
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
@ -53,7 +54,7 @@ class SharedPreferencesProvider extends ChangeNotifier {
|
|||||||
|
|
||||||
// New methods to get and set the current status
|
// New methods to get and set the current status
|
||||||
String getCurrentStatus() {
|
String getCurrentStatus() {
|
||||||
return prefs.getString('currentStatus') ?? '';
|
return prefs.getString('currentStatus') ?? 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> setCurrentStatus(String status) async {
|
Future<void> setCurrentStatus(String status) async {
|
||||||
|
@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:web_socket_channel/web_socket_channel.dart';
|
import 'package:web_socket_channel/web_socket_channel.dart';
|
||||||
import 'package:fluttertoast/fluttertoast.dart';
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
import 'shared_preferences_provider.dart';
|
import 'shared_preferences_provider.dart';
|
||||||
|
|
||||||
@ -33,8 +34,8 @@ class StatusPageState extends State<StatusPage> with WidgetsBindingObserver {
|
|||||||
|
|
||||||
void _initializeWebSocket() {
|
void _initializeWebSocket() {
|
||||||
channel = WebSocketChannel.connect(
|
channel = WebSocketChannel.connect(
|
||||||
Uri.parse('wss://api.pogdark.com:8889/ws'),
|
//Uri.parse('wss://api.pogdark.com:8889/ws'),
|
||||||
//Uri.parse('ws://localhost:8080/ws'),
|
Uri.parse('ws://localhost:8080/ws'),
|
||||||
);
|
);
|
||||||
|
|
||||||
controller = StreamController<dynamic>.broadcast();
|
controller = StreamController<dynamic>.broadcast();
|
||||||
@ -75,30 +76,66 @@ class StatusPageState extends State<StatusPage> with WidgetsBindingObserver {
|
|||||||
if (!mounted) return;
|
if (!mounted) return;
|
||||||
|
|
||||||
final isStatusActive = prefsProvider.getCurrentStatus() == status;
|
final isStatusActive = prefsProvider.getCurrentStatus() == status;
|
||||||
final newStatus = isStatusActive ? '' : status;
|
final newStatus = isStatusActive ? 'none' : status;
|
||||||
|
|
||||||
await prefsProvider.setCurrentStatus(newStatus);
|
await prefsProvider.setCurrentStatus(newStatus);
|
||||||
|
|
||||||
final message = jsonEncode({
|
final message = {
|
||||||
'Id': id,
|
'Id': id,
|
||||||
'Name': name,
|
'Name': name,
|
||||||
'Image': image,
|
'Image': image,
|
||||||
'Status': newStatus.isEmpty ? 'expired' : newStatus,
|
'Status': newStatus.isEmpty ? 'none' : newStatus,
|
||||||
'Timestamp': DateTime.now().toIso8601String(),
|
'Timestamp': DateTime.now().toIso8601String(),
|
||||||
});
|
};
|
||||||
channel!.sink.add(message);
|
|
||||||
|
|
||||||
if (mounted) {
|
final url = Uri.parse('http://localhost:8080/set');
|
||||||
|
try {
|
||||||
|
final response = await http.post(
|
||||||
|
url,
|
||||||
|
headers: {'Content-Type': 'application/json'},
|
||||||
|
body: jsonEncode(message),
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!mounted) return; // Check if widget is still in the tree
|
||||||
|
|
||||||
|
if (response.statusCode == 200) {
|
||||||
Fluttertoast.showToast(
|
Fluttertoast.showToast(
|
||||||
msg: 'Status "${newStatus.isEmpty ? 'cleared' : newStatus}" sent!',
|
msg: 'Status "${newStatus == 'none' ? 'cleared' : newStatus}" sent!',
|
||||||
toastLength: Toast.LENGTH_SHORT,
|
toastLength: Toast.LENGTH_SHORT,
|
||||||
gravity: ToastGravity.BOTTOM,
|
gravity: ToastGravity.BOTTOM,
|
||||||
backgroundColor: Colors.blueAccent,
|
backgroundColor: Colors.blueAccent,
|
||||||
webBgColor: Colors.blueAccent.value.toString(),
|
webBgColor: "#0000FF", // Only use hex values for web
|
||||||
textColor: Colors.white,
|
textColor: Colors.white,
|
||||||
fontSize: 16.0,
|
fontSize: 16.0,
|
||||||
timeInSecForIosWeb: 1,
|
timeInSecForIosWeb: 1,
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
Fluttertoast.showToast(
|
||||||
|
msg: 'Failed to send status. Please try again.',
|
||||||
|
toastLength: Toast.LENGTH_SHORT,
|
||||||
|
gravity: ToastGravity.BOTTOM,
|
||||||
|
backgroundColor: Colors.redAccent,
|
||||||
|
webBgColor: "#FF0000", // Only use hex values for web
|
||||||
|
textColor: Colors.white,
|
||||||
|
fontSize: 16.0,
|
||||||
|
timeInSecForIosWeb: 1,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
if (!mounted) return;
|
||||||
|
|
||||||
|
Fluttertoast.showToast(
|
||||||
|
msg: 'Error sending status. Please check your connection.',
|
||||||
|
toastLength: Toast.LENGTH_SHORT,
|
||||||
|
gravity: ToastGravity.BOTTOM,
|
||||||
|
backgroundColor: Colors.redAccent,
|
||||||
|
webBgColor: "#FF0000",
|
||||||
|
textColor: Colors.white,
|
||||||
|
fontSize: 16.0,
|
||||||
|
timeInSecForIosWeb: 1,
|
||||||
|
);
|
||||||
|
debugPrint(
|
||||||
|
"Error in _sendStatus: $e"); // Use debugPrint instead of exposing error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +150,7 @@ class StatusPageState extends State<StatusPage> with WidgetsBindingObserver {
|
|||||||
messages.removeWhere((msg) => msg['Id'] == incomingId);
|
messages.removeWhere((msg) => msg['Id'] == incomingId);
|
||||||
|
|
||||||
if (status == 'expired' && incomingId == prefsProvider.getUserId()) {
|
if (status == 'expired' && incomingId == prefsProvider.getUserId()) {
|
||||||
await prefsProvider.setCurrentStatus('');
|
await prefsProvider.setCurrentStatus('none');
|
||||||
} else {
|
} else {
|
||||||
messages.add(message);
|
messages.add(message);
|
||||||
_cacheImage(incomingId, image);
|
_cacheImage(incomingId, image);
|
||||||
|
@ -37,6 +37,7 @@ dependencies:
|
|||||||
image_picker: ^1.1.2
|
image_picker: ^1.1.2
|
||||||
uuid: ^4.4.2
|
uuid: ^4.4.2
|
||||||
fluttertoast: ^8.2.8
|
fluttertoast: ^8.2.8
|
||||||
|
http: ^1.2.2
|
||||||
|
|
||||||
|
|
||||||
# The following adds the Cupertino Icons font to your application.
|
# The following adds the Cupertino Icons font to your application.
|
||||||
|
Loading…
Reference in New Issue
Block a user