diff options
| author | frosty <frostinator33@airmail.cc> | 2026-10-26 10:21:57 -0400 |
|---|---|---|
| committer | frosty <frostinator33@airmail.cc> | 2026-10-26 10:21:57 -0400 |
| commit | 74aecd8b0986d07b50b7ce310d64e645b8b54e38 (patch) | |
| tree | 560e6434f183eb54cd779936f3a4c9575146a066 /libdino/src/entity/file_transfer_group.vala | |
| parent | 3d7e90d401da02d430a87db0ec7e1db3a6f1a68f (diff) | |
| parent | 4436001bb361ad4f9e4e05819214ecf0ea77c063 (diff) | |
Merge 'upstream/master'
Diffstat (limited to 'libdino/src/entity/file_transfer_group.vala')
| -rw-r--r-- | libdino/src/entity/file_transfer_group.vala | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libdino/src/entity/file_transfer_group.vala b/libdino/src/entity/file_transfer_group.vala new file mode 100644 index 00000000..94b9ccb6 --- /dev/null +++ b/libdino/src/entity/file_transfer_group.vala @@ -0,0 +1,53 @@ +using Xmpp; + +namespace Dino.Entities { + + public class FileTransferGroup : Object { + public Gee.ArrayList<FileTransfer> file_transfers = new Gee.ArrayList<FileTransfer>(); + + public int id { get; set; default=-1; } + public int message_id { get; set; default=-1; } + + private Database? db; + + public FileTransferGroup.from_row(Database db, Qlite.Row row, Gee.ArrayList<FileTransfer> file_transfers) throws InvalidJidError { + this.db = db; + this.file_transfers = file_transfers; + + id = row[db.file_transfer_group.id]; + message_id = row[db.file_transfer_group.message_id]; + + notify.connect(on_update); + } + + public void persist(Database db) { + if (id != -1) return; + + this.db = db; + + id = (int) db.file_transfer_group.insert() + .value(db.file_transfer_group.message_id, message_id) + .perform(); + + + Qlite.InsertBuilder builder = db.file_transfer_group_file_transfer.insert(); + foreach (FileTransfer file_transfer in file_transfers) { + db.file_transfer_group_file_transfer.insert() + .value(db.file_transfer_group_file_transfer.file_transfer_group_id, id) + .value(db.file_transfer_group_file_transfer.file_transfer_id, file_transfer.id) + .perform(); + } + + notify.connect(on_update); + } + + private void on_update(Object o, ParamSpec sp) { + Qlite.UpdateBuilder update_builder = db.file_transfer_group.update().with(db.file_transfer_group.id, "=", id); + switch (sp.name) { + case "message-id": + update_builder.set(db.file_transfer_group.message_id, message_id); break; + } + update_builder.perform(); + } + } +}
\ No newline at end of file |
