paradigm shift

This commit is contained in:
ImBenji
2024-05-03 14:03:51 +01:00
parent 673891923d
commit 1f48f8f4b0
17 changed files with 2440 additions and 547 deletions

View File

@@ -47,17 +47,37 @@ class CommandModule extends InfoModule {
final databases = appwrite.Databases(client);
if (liveInformation.auth.status == AuthStatus.AUTHENTICATED) {
final document = await databases.createDocument(
databaseId: ApiConstants.INFO_Q_DATABASE_ID,
collectionId: ApiConstants.COMMANDS_COLLECTION_ID,
documentId: appwrite.ID.unique(),
if (true) {
try {
final response = await databases.listDocuments(
databaseId: "6633e85400036415ab0f",
collectionId: "6633e85d0020f52f3771",
queries: [
appwrite.Query.search("SessionID", liveInformation.roomCode!)
]
);
List<String> pastCommands = [];
response.documents.first.data["Commands"].forEach((element) {
pastCommands.add(element);
});
pastCommands.add(command);
final document = await databases.updateDocument(
databaseId: "6633e85400036415ab0f",
collectionId: "6633e85d0020f52f3771",
documentId: liveInformation.roomDocumentID!,
data: {
"session_id": sessionID,
"command": command,
"client_id": clientID,
"Commands": pastCommands,
"LastUpdater": clientID,
}
);
);
} catch (e) {
print("Failed to send command");
}
}
_onCommandReceived(CommandInfo(command, clientID));
@@ -78,6 +98,10 @@ class CommandModule extends InfoModule {
if (command == "Response:") {
}
else if (command == "initroom") {
// initroom <roomCode>
}
else if (command == "announce") {
@@ -166,10 +190,41 @@ class CommandModule extends InfoModule {
BusRoute route = liveInformation.busSequences.routes[routeNumber]!;
BusRouteVariant routeVariant = route.routeVariants.values.toList()[routeVariantIndex];
liveInformation.setRouteVariant_Internal(
liveInformation.setRouteVariant(
routeVariant
);
executeCommand("Response: v \"Client $clientID set its route to ($routeNumber to ${routeVariant.busStops.last.formattedStopName})\"");
// Update the server
if (liveInformation.isHost) {
print("Updating server");
final client = liveInformation.auth.client;
final databases = appwrite.Databases(client);
final response = await databases.listDocuments(
databaseId: "6633e85400036415ab0f",
collectionId: "6633e85d0020f52f3771",
queries: [
appwrite.Query.search("SessionID", liveInformation.roomCode!)
]
);
final document = await databases.updateDocument(
databaseId: "6633e85400036415ab0f",
collectionId: "6633e85d0020f52f3771",
documentId: response.documents.first.$id,
data: {
"CurrentRoute": routeNumber,
"CurrentRouteVariant": routeVariantIndex,
}
);
try {
print("Updated server");
} catch (e) {
print("Failed to update server");
}
}
}
@@ -181,26 +236,26 @@ class CommandModule extends InfoModule {
return;
}
final realtime = appwrite.Realtime(LiveInformation().auth.client);
_subscription = realtime.subscribe(
['databases.${ApiConstants.INFO_Q_DATABASE_ID}.collections.${ApiConstants.COMMANDS_COLLECTION_ID}.documents']
);
_subscription!.stream.listen((event) {
print(jsonEncode(event.payload));
// Only do something if the document was created or updated
if (!(event.events.first.contains("create") || event.events.first.contains("update"))) {
return;
}
final commandInfo = CommandInfo(event.payload['command'], event.payload['client_id']);
if (commandInfo.clientID != clientID) {
_onCommandReceived(commandInfo);
}
});
// final realtime = appwrite.Realtime(LiveInformation().auth.client);
//
// _subscription = realtime.subscribe(
// ['databases.${ApiConstants.INFO_Q_DATABASE_ID}.collections.${ApiConstants.COMMANDS_COLLECTION_ID}.documents']
// );
// _subscription!.stream.listen((event) {
// print(jsonEncode(event.payload));
//
// // Only do something if the document was created or updated
// if (!(event.events.first.contains("create") || event.events.first.contains("update"))) {
// return;
// }
//
// final commandInfo = CommandInfo(event.payload['command'], event.payload['client_id']);
//
// if (commandInfo.clientID != clientID) {
// _onCommandReceived(commandInfo);
// }
//
// });
print("Listening for commands");