Skip to content

Commit 1168012

Browse files
committed
Workaround for settings routing issue, server update, validation.
1 parent 26f8290 commit 1168012

File tree

7 files changed

+95
-96
lines changed

7 files changed

+95
-96
lines changed

src/components/addServerModal.vue

+13-3
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,22 @@ export default {
100100
};
101101
102102
const onSubmitClicked = () => {
103-
console.log("Submit clicked");
104-
props.modalController.dismiss(dialog.value);
103+
// Validate server data
104+
let errors = [];
105+
if (dialog.value.name.length === 0) errors.push("Name required");
106+
if (dialog.value.host.length === 0) errors.push("Host required");
107+
108+
if (isNaN(dialog.value.port)) errors.push("Port should be number");
109+
else if (dialog.value.port <= 0)
110+
errors.push("Port should be greater than 0");
111+
else if (dialog.value.port > 65535)
112+
errors.push("Port should be smaller than 65535");
113+
114+
if (errors.length > 0) alert(errors.join("\n"));
115+
else props.modalController.dismiss(dialog.value);
105116
};
106117
107118
const onDeleteClicked = () => {
108-
console.log("Delete clicked");
109119
props.modalController.dismiss({ delete: true });
110120
};
111121

src/dbcrud.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,15 @@ export const getServer = async (db, id = null) => {
5252
}
5353
};
5454

55-
export const updateServer = async (db, id, data) => {
55+
export const updateServerSQL = async (db, id, data) => {
5656
const res = await db.run(
5757
"UPDATE server SET name=COALESCE(?, name), host=COALESCE(?, host), port=COALESCE(?, port) WHERE id=?",
5858
[data.name, data.host, data.port, id]
5959
);
6060
if (res.changes && res.changes.changes && res.changes.changes < 0) {
6161
throw new Error(`Error: execute failed`);
6262
}
63+
return res;
6364
};
6465

6566
export const deleteServer = async (db, id) => {

src/router/index.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ const routes = [
1919
path: "/folder/settings",
2020
component: () => import("../views/Settings.vue"),
2121
},
22-
{
23-
name: "folder.collections",
24-
path: "/folder/collections",
25-
component: () => import("../views/Collections.vue"),
26-
},
27-
{
28-
name: "folder.servers",
29-
path: "/folder/servers",
30-
component: () => import("../views/Servers.vue"),
31-
},
22+
// {
23+
// name: "folder.collections",
24+
// path: "/folder/collections",
25+
// component: () => import("../views/Collections.vue"),
26+
// },
27+
// {
28+
// name: "folder.servers",
29+
// path: "/folder/servers",
30+
// component: () => import("../views/Servers.vue"),
31+
// },
3232
{
3333
name: "folder.about",
3434
path: "/folder/about",

src/store/settings.module.js

+19-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import { Storage } from "@capacitor/storage";
22

3-
import { createServer, deleteServer, getServer, initDBTables } from "../dbcrud";
3+
import {
4+
createServer,
5+
deleteServer,
6+
getServer,
7+
initDBTables,
8+
updateServerSQL,
9+
} from "../dbcrud";
410
import { Capacitor } from "@capacitor/core";
511
import { CapacitorSQLite, SQLiteConnection } from "@capacitor-community/sqlite";
612
import { useSQLite } from "vue-sqlite-hook";
@@ -77,6 +83,12 @@ export const settings = {
7783
const index = state.settings.servers.findIndex((el) => el.id === value);
7884
if (index > -1) state.settings.servers.splice(index, 1);
7985
},
86+
updateServerEntry(state, value) {
87+
const index = state.settings.servers.findIndex(
88+
(el) => el.id === value.id
89+
);
90+
if (index > -1) state.settings.servers[index] = value;
91+
},
8092
},
8193
actions: {
8294
loadSettings: async function ({ commit, state }) {
@@ -221,5 +233,11 @@ export const settings = {
221233
await deleteServer(state.dbSession, serverId);
222234
commit("removeFromServers", serverId);
223235
},
236+
updateServer: async function ({ state, commit, dispatch }, payload) {
237+
if (!state.dbSession || !state.dbSession.isDBOpen("remote_db"))
238+
await dispatch("initDbSession");
239+
await updateServerSQL(state.dbSession, payload.id, payload);
240+
commit("updateServerEntry", payload);
241+
},
224242
},
225243
};

src/views/Collections.vue

+12-8
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
<ion-header :translucent="true">
44
<ion-toolbar>
55
<ion-buttons slot="start">
6-
<ion-back-button></ion-back-button>
6+
<ion-button @click="onBackClicked">
7+
<ion-icon :icon="arrowBack"></ion-icon>
8+
</ion-button>
79
</ion-buttons>
810
<ion-title>Media collections</ion-title>
911
</ion-toolbar>
@@ -25,7 +27,7 @@
2527
<ion-icon :icon="add"></ion-icon>
2628
</ion-fab-button>
2729
</ion-fab>
28-
<ion-list v-if="collections.length > 0">
30+
<ion-list>
2931
<ion-item v-for="collection in collections" :key="collection.id">
3032
<ion-label class="ion-text-wrap">
3133
<h2>{{ collection.name }}</h2>
@@ -44,9 +46,8 @@
4446
<ion-icon slot="icon-only" :icon="trashBin"></ion-icon>
4547
</ion-button>
4648
</ion-item>
47-
</ion-list>
48-
<ion-list v-else>
49-
<ion-item>No collections</ion-item>
49+
50+
<ion-item v-if="collections.length == 0"> I'm empty </ion-item>
5051
</ion-list>
5152
</ion-content>
5253
</ion-page>
@@ -63,15 +64,14 @@ import {
6364
IonToolbar,
6465
IonList,
6566
IonItem,
66-
IonBackButton,
6767
IonIcon,
6868
IonLabel,
6969
IonFab,
7070
IonFabButton,
7171
IonButton,
7272
modalController,
7373
} from "@ionic/vue";
74-
import { add, trashBin, options } from "ionicons/icons";
74+
import { add, trashBin, options, arrowBack } from "ionicons/icons";
7575
import { apiInstance } from "../api";
7676
import { useStore } from "vuex";
7777
import addCollectionModal from "../components/addCollectionModal.vue";
@@ -135,6 +135,9 @@ export default {
135135
await modal.present();
136136
};
137137
138+
const onBackClicked = () => {
139+
modalController.dismiss();
140+
};
138141
const getCollectionType = (value) => {
139142
switch (value) {
140143
case 1:
@@ -152,11 +155,13 @@ export default {
152155
onDeleteCollectionClicked,
153156
getCollectionType,
154157
onEditCollectionClicked,
158+
onBackClicked,
155159
connectedState,
156160
collections,
157161
add,
158162
trashBin,
159163
options,
164+
arrowBack,
160165
};
161166
},
162167
components: {
@@ -168,7 +173,6 @@ export default {
168173
IonContent,
169174
IonList,
170175
IonItem,
171-
IonBackButton,
172176
IonIcon,
173177
IonLabel,
174178
IonFab,

src/views/Servers.vue

+14-58
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
<ion-header :translucent="true">
44
<ion-toolbar>
55
<ion-buttons slot="start">
6-
<ion-back-button></ion-back-button>
6+
<ion-button @click="onBackClicked">
7+
<ion-icon :icon="arrowBack"></ion-icon>
8+
</ion-button>
79
</ion-buttons>
810
<ion-title>Servers</ion-title>
911
</ion-toolbar>
@@ -35,6 +37,7 @@
3537
<p>{{ item.host }}:{{ item.port }}</p>
3638
</ion-label>
3739
</ion-item>
40+
<ion-item v-if="servers.length == 0"> I'm empty </ion-item>
3841
</ion-list>
3942
</ion-content>
4043
</ion-page>
@@ -44,7 +47,7 @@
4447
import { computed } from "vue";
4548
4649
import { useStore } from "vuex";
47-
import { add } from "ionicons/icons";
50+
import { add, arrowBack } from "ionicons/icons";
4851
import {
4952
IonPage,
5053
IonToolbar,
@@ -55,12 +58,12 @@ import {
5558
IonList,
5659
IonItem,
5760
IonIcon,
58-
IonBackButton,
5961
IonLabel,
6062
IonFab,
6163
IonFabButton,
6264
modalController,
6365
} from "@ionic/vue";
66+
6467
import addServerModal from "../components/addServerModal.vue";
6568
6669
export default {
@@ -74,15 +77,12 @@ export default {
7477
IonList,
7578
IonItem,
7679
IonIcon,
77-
IonBackButton,
7880
IonLabel,
7981
IonFab,
8082
IonFabButton,
8183
},
8284
8385
setup() {
84-
// Capacitor SQLite and Jeep init
85-
// const app = getCurrentInstance();
8686
const store = useStore();
8787
const servers = computed(() => store.getters["settings/servers"]);
8888
@@ -95,12 +95,9 @@ export default {
9595
},
9696
});
9797
modal.onDidDismiss().then(async (response) => {
98-
if (response.data) {
99-
// servers.value.push(response.data);
98+
if (response.data)
10099
await store.dispatch("settings/addServer", response.data);
101-
}
102100
});
103-
104101
await modal.present();
105102
};
106103
@@ -114,66 +111,25 @@ export default {
114111
});
115112
modal.onDidDismiss().then(async (response) => {
116113
if (response.data) {
117-
// Deletes server
118-
if (response.data.delete) {
119-
console.log("Delete server");
114+
if (response.data.delete)
120115
await store.dispatch("settings/removeServer", server.id);
121-
} else {
122-
console.log("Update server");
123-
}
116+
else await store.dispatch("settings/updateServer", response.data);
124117
}
125118
});
126119
await modal.present();
127120
};
128-
// const onUpdateServerClicked = async (server) => {
129-
// const modal = await modalController.create({
130-
// component: addServerModal,
131-
// componentProps: {
132-
// modalController,
133-
// server,
134-
// },
135-
// });
136-
// modal.onDidDismiss().then(async (response) => {
137-
// if (response.data) {
138-
// const index = servers.value.findIndex((el) => el.id === server.id);
139-
140-
// if (!response.data.delete) {
141-
// await updateServer(db.value, server.id, response.data);
142-
// servers.value[index] = Object.assign(
143-
// servers.value[index],
144-
// response.data
145-
// );
146-
// }
147-
// }
148-
// }
149-
// }
150-
// // Update server
151-
// // if (!response.data.delete) {
152-
// // servers.value[index] = Object.assign(
153-
// // servers.value[index],
154-
// // response.data
155-
// // );
156-
// // } else {
157-
// // // Delete server
158-
// // servers.value.splice(index, 1);
159-
// // }
160-
// // await store.dispatch("settings/setSetting", {
161-
// // key: "servers",
162-
// // value: JSON.stringify(servers.value),
163-
// // });
164-
// // Reload settings
165-
// // store.dispatch("settings/loadSettings");
166-
// }
167-
// });
168121
169-
// await modal.present();
170-
// };
122+
const onBackClicked = () => {
123+
modalController.dismiss();
124+
};
171125
172126
return {
173127
servers,
174128
addNewserver,
175129
onUpdateServerClicked,
130+
onBackClicked,
176131
add,
132+
arrowBack,
177133
};
178134
},
179135
};

0 commit comments

Comments
 (0)