diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-01-17 02:05:45 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-01-22 14:34:25 +0100 |
| commit | efdc2359ff10ec8baf377704ef7f698aaef1ff0f (patch) | |
| tree | 17bcd8c729350e5481efa1ed03119ae50f81a159 | |
| parent | 9f57dd094f0989d13608bcd2abd06a5a083a12ee (diff) | |
Fix updating of screens with new/different trusted devices.
| -rw-r--r-- | src/lib/cinema_list.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/cinema_list.cc b/src/lib/cinema_list.cc index b1aa78fca..ffa11a36c 100644 --- a/src/lib/cinema_list.cc +++ b/src/lib/cinema_list.cc @@ -425,6 +425,8 @@ CinemaList::cinema_by_name_or_email(std::string const& text) const void CinemaList::update_screen(CinemaID cinema_id, ScreenID screen_id, dcpomatic::Screen const& screen) { + SQLiteTransaction transaction(_db); + SQLiteStatement statement(_db, _screens.update("WHERE id=?")); statement.bind_int64(1, cinema_id.get()); @@ -433,8 +435,20 @@ CinemaList::update_screen(CinemaID cinema_id, ScreenID screen_id, dcpomatic::Scr statement.bind_text(4, screen.recipient()->certificate(true)); statement.bind_text(5, screen.recipient_file.get_value_or("")); statement.bind_int64(6, screen_id.get()); - statement.execute(); + + SQLiteStatement remove_existing(_db, "DELETE FROM trusted_devices WHERE screen=?"); + remove_existing.bind_int64(1, screen_id.get()); + remove_existing.execute(); + + for (auto device: screen.trusted_devices) { + SQLiteStatement add_device(_db, _trusted_devices.insert()); + add_device.bind_int64(1, screen_id.get()); + add_device.bind_text(2, device.as_string()); + add_device.execute(); + } + + transaction.commit(); } |
