paradigm shift
This commit is contained in:
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user