Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
docjyJ committed Oct 14, 2024
1 parent 88167b6 commit e35547f
Show file tree
Hide file tree
Showing 15 changed files with 55 additions and 41 deletions.
4 changes: 2 additions & 2 deletions lib/SchemaV1/SchAccount.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
use OCP\DB\Types;

class SchAccount {
public const ID = 'account_id';
public const NAME = 'display_name';
public const ID = 'account';
public const NAME = 'name';
public const HASH = 'hash';
public const QUOTA = 'quota';
public const ROLE = 'role';
Expand Down
4 changes: 2 additions & 2 deletions lib/SchemaV1/SchMember.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
use OCP\DB\Types;

class SchMember {
public const USER_ID = 'user_id';
public const GROUP_ID = 'group_id';
public const USER_ID = 'user';
public const GROUP_ID = 'group';


public const TABLE = 'nextmail_members';
Expand Down
2 changes: 1 addition & 1 deletion lib/SchemaV1/SchServer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use OCP\DB\Types;

class SchServer {
public const ID = 'server_id';
public const ID = 'server';
public const ENDPOINT = 'endpoint';
public const USERNAME = 'username';
public const PASSWORD = 'password';
Expand Down
22 changes: 18 additions & 4 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,37 @@ COMPOSE_CLI=podman compose

run-dev-mysql: start-mysql watch

run-dev-pgsql: start-pgsql watch

build-all: build-api build-js

install:
@npm install
@composer install

start-mysql:
docker compose -f compose.mysql.yml up
docker compose -f compose.mysql.yml -p mysql up

stop-mysql:
docker compose -f compose.mysql.yml down
docker compose -f compose.mysql.yml -p mysql down

remove-mysql:
docker compose -f compose.mysql.yml down --volumes
docker compose -f compose.mysql.yml -p mysql down --volumes

fix-mysql:
docker compose -f compose.mysql.yml exec -u 33 nextcloud php occ config:system:set --type bool --value true allow_local_remote_servers
docker compose -f compose.mysql.yml -p mysql exec -u 33 nextcloud php occ config:system:set --type bool --value true allow_local_remote_servers

start-pgsql:
docker compose -f compose.pgsql.yml -p pgsql up

stop-pgsql:
docker compose -f compose.pgsql.yml -p pgsql down

remove-pgsql:
docker compose -f compose.pgsql.yml -p pgsql down --volumes

fix-pgsql:
docker compose -f compose.pgsql.yml -p pgsql exec -u 33 nextcloud php occ config:system:set --type bool --value true allow_local_remote_servers

watch:
npm run watch
Expand Down
4 changes: 2 additions & 2 deletions src/components/ListItemConfig.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import mdiFingerprintOff from '@mdi/svg/svg/fingerprint-off.svg?raw'
import mdiServerNetworkOff from '@mdi/svg/svg/server-network-off.svg?raw'
import mdiNetworkStrengthOffOutline from '@mdi/svg/svg/network-strength-off-outline.svg?raw'
import mdiTextBoxOutline from '@mdi/svg/svg/text-box-outline.svg?raw'
import type { ServerConfig } from '~/type'
import type { MailServer } from '~/type'
defineProps<{
config: ServerConfig
config: MailServer
}>()
</script>
Expand Down
4 changes: 2 additions & 2 deletions src/components/PageSetting.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import { onMounted } from 'vue'
import ServerSelection from '~/components/ViewSelection.vue'
import ServerView from '~/components/ViewServer.vue'
import { useServerConfigList } from '~/composable'
import { useServerList } from '~/composable'
const { servers, loading, active, to, edit, reload, remove, create } = useServerConfigList()
const { servers, loading, active, to, edit, reload, remove, create } = useServerList()
onMounted(reload)
Expand Down
4 changes: 2 additions & 2 deletions src/components/SectionConfig.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.
import NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'
import mdiContentSave from '@mdi/svg/svg/content-save.svg?raw'
import { useNextmailTranslate } from '~/composable'
import type { ServerConfig, ServerConfigForm } from '~/type'
import type { MailServer, ServerConfigForm } from '~/type'
const { t } = useNextmailTranslate()
const props = defineProps<{
config: ServerConfig,
config: MailServer,
loading: boolean
}>()
Expand Down
4 changes: 2 additions & 2 deletions src/components/SectionDanger.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.
import NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'
import mdiDelete from '@mdi/svg/svg/delete.svg?raw'
import { useNextmailTranslate } from '~/composable'
import type { ServerConfig } from '~/type'
import type { MailServer } from '~/type'
defineProps<{
config: ServerConfig,
config: MailServer,
loading: boolean
}>()
Expand Down
4 changes: 2 additions & 2 deletions src/components/SectionStatus.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import mdiServerNetworkOff from '@mdi/svg/svg/server-network-off.svg?raw'
import mdiNetworkStrengthOffOutline from '@mdi/svg/svg/network-strength-off-outline.svg?raw'
import mdiTextBoxOutline from '@mdi/svg/svg/text-box-outline.svg?raw'
import { useNextmailTranslate } from '~/composable'
import type { ServerConfig } from '~/type'
import type { MailServer } from '~/type'
defineProps<{
config: ServerConfig
config: MailServer
}>()
const { t } = useNextmailTranslate()
Expand Down
6 changes: 3 additions & 3 deletions src/components/ViewSelection.vue
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<script setup lang="ts">
import { defineProps, defineModel } from 'vue'
import type { ServerConfig } from '~/type'
import type { MailServer } from '~/type'
import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
import ListItemConfig from '~/components/ListItemConfig.vue'
defineProps<{
configList: ServerConfig[],
configList: MailServer[],
}>()
const config = defineModel<ServerConfig | null>('config')
const config = defineModel<MailServer | null>('config')
</script>

Expand Down
4 changes: 2 additions & 2 deletions src/components/ViewServer.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script setup lang="ts">
import { defineProps, defineEmits } from 'vue'
import type { ServerConfig, ServerConfigForm } from '~/type'
import type { MailServer, ServerConfigForm } from '~/type'
import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import NcButton, { ButtonType } from '@nextcloud/vue/dist/Components/NcButton.js'
import NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'
Expand All @@ -12,7 +12,7 @@ import SectionStatus from '~/components/SectionStatus.vue'
import SectionUser from '~/components/SectionUser.vue'
defineProps<{
config: ServerConfig | null,
config: MailServer | null,
loading: boolean
}>()
Expand Down
4 changes: 2 additions & 2 deletions src/composable/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import useNextmailTranslate from '~/composable/useNextmailTranslate'
import useServerUserList from '~/composable/useServerUserList'
import useServerConfigList from '~/composable/useServerConfigList'
import useServerList from '~/composable/useServerList'

export { useNextmailTranslate, useServerConfigList, useServerUserList }
export { useNextmailTranslate, useServerList, useServerUserList }
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { ref } from 'vue'
import axios from '@nextcloud/axios'
import { generateOcsUrl } from '@nextcloud/router'
import type { OCSResponse, ServerConfig, ServerConfigForm } from '~/type'
import type { OCSResponse, MailServer, ServerConfigForm } from '~/type'

export default function useServerConfigList() {
export default function useServerList() {
const loading = ref(false)
const servers = ref<ServerConfig[]>([])
const servers = ref<MailServer[]>([])
const configUrl = generateOcsUrl('/apps/nextmail/config')
const configIdUrl = (id: string) => generateOcsUrl(`/apps/nextmail/config/${id}`)
const active = ref<ServerConfig | null>(null)
const active = ref<MailServer | null>(null)

return {
servers,
Expand All @@ -23,7 +23,7 @@ export default function useServerConfigList() {
if (!loading.value) {
loading.value = true
try {
servers.value = await axios.get<OCSResponse<ServerConfig[]>>(configUrl).then(r => r.data.ocs.data)
servers.value = await axios.get<OCSResponse<MailServer[]>>(configUrl).then(r => r.data.ocs.data)
const id = active.value?.id
if (id !== undefined) {
active.value = servers.value.find(a => a.id === id) ?? null
Expand All @@ -40,7 +40,7 @@ export default function useServerConfigList() {
if (!loading.value) {
loading.value = true
try {
const a = await axios.post<OCSResponse<ServerConfig>>(configUrl).then(r => r.data.ocs.data)
const a = await axios.post<OCSResponse<MailServer>>(configUrl).then(r => r.data.ocs.data)
servers.value.push(a)
if (active.value === null || active.value.id === a.id) {
active.value = a
Expand All @@ -57,7 +57,7 @@ export default function useServerConfigList() {
if (!loading.value) {
loading.value = true
try {
const a = await axios.put<OCSResponse<ServerConfig>>(configIdUrl(id), data).then(r => r.data.ocs.data)
const a = await axios.put<OCSResponse<MailServer>>(configIdUrl(id), data).then(r => r.data.ocs.data)
servers.value = servers.value.map(b => b.id === a.id ? a : b)
if (active.value?.id === a.id) {
active.value = a
Expand Down
12 changes: 6 additions & 6 deletions src/composable/useServerUserList.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { computed, ref } from 'vue'
import axios from '@nextcloud/axios'
import { generateOcsUrl } from '@nextcloud/router'
import type { OCSResponse, ServerUser, UserResponse } from '~/type'
import type { OCSResponse, MailUser, UserResponse } from '~/type'

export default function useServerUserList(cid: string) {
const loading = ref(false)
const usersAll = ref<ServerUser[]>([])
const usersRegistered = ref<ServerUser[]>([])
const usersAvailable = computed<ServerUser[]>(() => usersAll.value.filter(user => usersRegistered.value.every(u => u.id !== user.id)))
const usersAll = ref<MailUser[]>([])
const usersRegistered = ref<MailUser[]>([])
const usersAvailable = computed<MailUser[]>(() => usersAll.value.filter(user => usersRegistered.value.every(u => u.id !== user.id)))
const usersUrl = generateOcsUrl(`/apps/nextmail/config/${cid}/users`)
const userUrl = (uid: string) => generateOcsUrl(`/apps/nextmail/config/${cid}/users/${uid}`)

Expand All @@ -21,7 +21,7 @@ export default function useServerUserList(cid: string) {
displayName: user.displayname,
email: user.email,
})))
usersRegistered.value = await axios.get<OCSResponse<ServerUser[]>>(usersUrl).then(r => r.data.ocs.data)
usersRegistered.value = await axios.get<OCSResponse<MailUser[]>>(usersUrl).then(r => r.data.ocs.data)
} catch (error) {
// showError(error)
} finally {
Expand All @@ -34,7 +34,7 @@ export default function useServerUserList(cid: string) {
if (!loading.value) {
loading.value = true
try {
const user = await axios.post<OCSResponse<ServerUser>>(userUrl(uid)).then(r => r.data.ocs.data)
const user = await axios.post<OCSResponse<MailUser>>(userUrl(uid)).then(r => r.data.ocs.data)
usersRegistered.value.push(user)
// showSuccess(t('User added to server'))
} catch (error) {
Expand Down
4 changes: 2 additions & 2 deletions src/type.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ export type ServerConfigForm = {
password: string;
};

export type ServerConfig = {
export type MailServer = {
id: string;
endpoint: string;
username: string;
health: 'bad_network' | 'bad_server' | 'invalid' | 'success' | 'unauthorized';
};

export type ServerUser = {
export type MailUser = {
id: string;
displayName: string;
email: string | null;
Expand Down

0 comments on commit e35547f

Please sign in to comment.