From 0b22773e957d2f41a4858f93357d8c8cf9b97d38 Mon Sep 17 00:00:00 2001 From: tangenta Date: Fri, 21 Jul 2023 14:08:48 +0800 Subject: [PATCH] connect chat_room to repository --- lib/components/chat.dart | 2 +- lib/components/chat_room.dart | 4 ++-- lib/main.dart | 6 +++++- lib/repository/chat_room.dart | 15 ++++++++------- lib/repository/conversation.dart | 10 +++++----- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/lib/components/chat.dart b/lib/components/chat.dart index a790f66..7fce47c 100644 --- a/lib/components/chat.dart +++ b/lib/components/chat.dart @@ -98,7 +98,7 @@ class _ChatWindowState extends State { height: 48, child: ElevatedButton( onPressed: () { - _sendMessage(); + // _sendMessage(); }, style: ElevatedButton.styleFrom( shape: const RoundedRectangleBorder( diff --git a/lib/components/chat_room.dart b/lib/components/chat_room.dart index ba98411..abd9478 100644 --- a/lib/components/chat_room.dart +++ b/lib/components/chat_room.dart @@ -178,10 +178,10 @@ class NewChatButton extends StatelessWidget { _addNewChatRoom() { final comp.ChatRoomController chatRoomController = Get.find(); - var uuid = const Uuid().toString(); + const uuid = Uuid(); var createTime = DateTime.now(); repo.ChatRoom chatRoom = repo.ChatRoom( - uuid: uuid, + uuid: uuid.v4(), name: "New Chat Room", createTime: createTime, connectionToken: ""); diff --git a/lib/main.dart b/lib/main.dart index b421bb7..b689b04 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,6 +18,7 @@ import 'package:moyubie/configs/translations.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:webview_flutter/webview_flutter.dart'; import 'dart:io' show Platform; +import 'package:path/path.dart'; import 'components/chat_room.dart'; import 'controller/chat_room.dart'; @@ -28,6 +29,9 @@ void main() async { if (kIsWeb) { // Change default factory on the web databaseFactory = databaseFactoryFfiWeb; + // TODO(tangenta): only used for debug, remove it later. + String path = join(await getDatabasesPath(), 'chatgpt.db'); + await deleteDatabase(path); } else if (Platform.isWindows || Platform.isLinux) { sqfliteFfiInit(); databaseFactory = databaseFactoryFfi; @@ -92,7 +96,7 @@ class MyApp extends StatelessWidget { final ChatRoomType type = shortestSide < 600 ? ChatRoomType.phone : ChatRoomType.tablet; Get.put(SettingsController()); - Get.put(ConversationController()); + // Get.put(ConversationController()); Get.put(MessageController()); Get.put(PromptController()); Get.put(ChatRoomController()); diff --git a/lib/repository/chat_room.dart b/lib/repository/chat_room.dart index b79908b..62fae3c 100644 --- a/lib/repository/chat_room.dart +++ b/lib/repository/chat_room.dart @@ -85,11 +85,12 @@ class ChatRoomRepository { final String path = join(await getDatabasesPath(), 'chatgpt.db'); _database = await openDatabase(path, version: 1, onCreate: (Database db, int version) async { + print("on create!"); await db.execute(''' CREATE TABLE $_tableChatRoom ( $_columnChatRoomUuid VARCHAR(36) PRIMARY KEY, - $_columnChatRoomName TEXT - $_columnChatRoomCreateTime TEXT + $_columnChatRoomName TEXT, + $_columnChatRoomCreateTime TEXT, $_columnChatRoomConnectionToken TEXT ) '''); @@ -119,11 +120,11 @@ class ChatRoomRepository { conflictAlgorithm: ConflictAlgorithm.replace, ); await db.execute(''' - CREATE TABLE IF NOT EXISTS $chatRoom.uuid ( + CREATE TABLE IF NOT EXISTS `${chatRoom.uuid}` ( $_columnMessageUuid VARCHAR(36) PRIMARY KEY, - $_columnMessageUserName TEXT - $_columnMessageCreateTime TEXT - $_columnMessageMessage TEXT + $_columnMessageUserName TEXT, + $_columnMessageCreateTime TEXT, + $_columnMessageMessage TEXT, $_columnMessageSource TEXT ) '''); @@ -148,7 +149,7 @@ class ChatRoomRepository { whereArgs: [uuid], ); }); - await db.execute('DROP TABLE IF EXISTS $uuid'); + await db.execute('DROP TABLE IF EXISTS `$uuid`'); } Future> getMessagesByChatRoomUUid(String uuid) async { diff --git a/lib/repository/conversation.dart b/lib/repository/conversation.dart index 5224d75..c961c47 100644 --- a/lib/repository/conversation.dart +++ b/lib/repository/conversation.dart @@ -73,12 +73,12 @@ class ConversationRepository { static Database? _database; static ConversationRepository? _instance; - ConversationRepository._internal(); + // ConversationRepository._internal(); - factory ConversationRepository() { - _instance ??= ConversationRepository._internal(); - return _instance!; - } + // factory ConversationRepository() { + // _instance ??= ConversationRepository._internal(); + // return _instance!; + // } Future _getDb() async { if (_database == null) {