Fix Virtual Controller Remapper's bug (contd)

This commit is contained in:
redphx 2024-10-23 20:51:04 +07:00
parent 5b67b4c37d
commit 53442557e1
4 changed files with 37 additions and 33 deletions

View File

@ -2381,7 +2381,7 @@ class MouseDataProvider {
class MkbHandler {} class MkbHandler {}
class LocalDb { class LocalDb {
static DB_NAME = "BetterXcloud"; static DB_NAME = "BetterXcloud";
static DB_VERSION = 1; static DB_VERSION = 2;
db; db;
open() { open() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -2438,17 +2438,16 @@ class MkbPresetsDb extends LocalDb {
super(); super();
BxLogger.info(this.LOG_TAG, "constructor()"); BxLogger.info(this.LOG_TAG, "constructor()");
} }
onUpgradeNeeded(e) { createTable(db) {
let db = e.target.result;
switch (e.oldVersion) {
case 0: {
db.createObjectStore(this.TABLE_PRESETS, { db.createObjectStore(this.TABLE_PRESETS, {
keyPath: "id", keyPath: "id",
autoIncrement: !0 autoIncrement: !0
}).createIndex("name_idx", "name"); }).createIndex("name_idx", "name");
break;
}
} }
onUpgradeNeeded(e) {
let db = e.target.result;
if (db.objectStoreNames.contains("undefined")) db.deleteObjectStore("undefined");
if (!db.objectStoreNames.contains(this.TABLE_PRESETS)) this.createTable(db);
} }
async presetsTable() { async presetsTable() {
return await this.open(), await this.table(this.TABLE_PRESETS, "readwrite"); return await this.open(), await this.table(this.TABLE_PRESETS, "readwrite");

View File

@ -2656,7 +2656,7 @@ class NativeMkbHandler extends MkbHandler {
} }
class LocalDb { class LocalDb {
static DB_NAME = "BetterXcloud"; static DB_NAME = "BetterXcloud";
static DB_VERSION = 1; static DB_VERSION = 2;
db; db;
open() { open() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -2713,17 +2713,16 @@ class MkbPresetsDb extends LocalDb {
super(); super();
BxLogger.info(this.LOG_TAG, "constructor()"); BxLogger.info(this.LOG_TAG, "constructor()");
} }
onUpgradeNeeded(e) { createTable(db) {
let db = e.target.result;
switch (e.oldVersion) {
case 0: {
db.createObjectStore(this.TABLE_PRESETS, { db.createObjectStore(this.TABLE_PRESETS, {
keyPath: "id", keyPath: "id",
autoIncrement: !0 autoIncrement: !0
}).createIndex("name_idx", "name"); }).createIndex("name_idx", "name");
break;
}
} }
onUpgradeNeeded(e) {
let db = e.target.result;
if (db.objectStoreNames.contains("undefined")) db.deleteObjectStore("undefined");
if (!db.objectStoreNames.contains(this.TABLE_PRESETS)) this.createTable(db);
} }
async presetsTable() { async presetsTable() {
return await this.open(), await this.table(this.TABLE_PRESETS, "readwrite"); return await this.open(), await this.table(this.TABLE_PRESETS, "readwrite");

View File

@ -1,8 +1,8 @@
export abstract class LocalDb { export abstract class LocalDb {
static readonly DB_NAME = 'BetterXcloud'; static readonly DB_NAME = 'BetterXcloud';
static readonly DB_VERSION = 1; static readonly DB_VERSION = 2;
private db: any; protected db!: IDBDatabase;
protected open() { protected open() {
return new Promise<void>((resolve, reject) => { return new Promise<void>((resolve, reject) => {
@ -29,7 +29,7 @@ export abstract class LocalDb {
protected abstract onUpgradeNeeded(e: IDBVersionChangeEvent): void; protected abstract onUpgradeNeeded(e: IDBVersionChangeEvent): void;
protected table(name: string, type: string): Promise<IDBObjectStore> { protected table(name: string, type: IDBTransactionMode): Promise<IDBObjectStore> {
const transaction = this.db.transaction(name, type || 'readonly'); const transaction = this.db.transaction(name, type || 'readonly');
const table = transaction.objectStore(name); const table = transaction.objectStore(name);

View File

@ -18,17 +18,23 @@ export class MkbPresetsDb extends LocalDb {
BxLogger.info(this.LOG_TAG, 'constructor()'); BxLogger.info(this.LOG_TAG, 'constructor()');
} }
protected onUpgradeNeeded(e: IDBVersionChangeEvent): void { private createTable(db: IDBDatabase) {
const db = (e.target! as any).result;
switch (e.oldVersion) {
case 0: {
const presets = db.createObjectStore(this.TABLE_PRESETS, { const presets = db.createObjectStore(this.TABLE_PRESETS, {
keyPath: 'id', keyPath: 'id',
autoIncrement: true, autoIncrement: true,
}); });
presets.createIndex('name_idx', 'name'); presets.createIndex('name_idx', 'name');
break;
} }
protected onUpgradeNeeded(e: IDBVersionChangeEvent): void {
const db = (e.target! as any).result as IDBDatabase;
if (db.objectStoreNames.contains('undefined')) {
db.deleteObjectStore('undefined');
}
if (!db.objectStoreNames.contains(this.TABLE_PRESETS)) {
this.createTable(db);
} }
} }