message: Use transactions on Dexie write operations
  This is an attempt to avoid the corruption of settings stored in
  IndexedDB, which sometimes occurs when users update the manager.
  Refs
diff: @@ -87,12 +87,16 @@ export default class SettingsDexieStore extends Dexie {
  }
  public async getLatest(): Promise<ManagerSettingsInterfaceHolder> {
  + const get = async () => {
  const latestGlobal = await this.getLatestGlobal();
  const latestGameSpecific = await this.getLatestGameSpecific();
  return {
  global: latestGlobal,
  gameSpecific: latestGameSpecific
  };
  + };
  +
  + return await this.transaction("rw!", this.global, this.gameSpecific, get);
  }
  private createNewSettingsInstance(): ManagerSettingsInterfaceHolder {
  @@ -125,6 +129,7 @@ export default class SettingsDexieStore extends Dexie {
  }
  public async save(holder: ManagerSettingsInterfaceHolder) {
  + const update = async () => {
  await this.global.toArray().then(async result => {
  for (let settingsInterface of result) {
  await this.global.update(settingsInterface.id!, {settings: JSON.stringify(holder.global)});
  @@ -137,6 +142,9 @@ export default class SettingsDexieStore extends Dexie {
  });
  }
  + await this.transaction("rw!", this.global, this.gameSpecific, update);
  + }
  +
  private mapLegacyToV2(itf: ManagerSettingsInterface_Legacy, game: Game): ManagerSettingsInterfaceHolder {
  return {
  global: {
  