Refactor admin/integrations to use Composition API (#8664)
* refactor(client): refactor admin/integrations to use Composition API * Apply review suggestions from @Johann150 Co-authored-by: Johann150 <johann@qwertqwefsday.eu> Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
This commit is contained in:
		
							parent
							
								
									83ac6742f6
								
							
						
					
					
						commit
						18307c822c
					
				
					 4 changed files with 87 additions and 167 deletions
				
			
		|  | @ -24,57 +24,36 @@ | |||
| </FormSuspense> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| import { defineComponent } from 'vue'; | ||||
| <script lang="ts" setup> | ||||
| import { } from 'vue'; | ||||
| import FormSwitch from '@/components/form/switch.vue'; | ||||
| import FormInput from '@/components/form/input.vue'; | ||||
| import FormButton from '@/components/ui/button.vue'; | ||||
| import FormInfo from '@/components/ui/info.vue'; | ||||
| import FormSuspense from '@/components/form/suspense.vue'; | ||||
| import * as os from '@/os'; | ||||
| import * as symbols from '@/symbols'; | ||||
| import { fetchInstance } from '@/instance'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	components: { | ||||
| 		FormSwitch, | ||||
| 		FormInput, | ||||
| 		FormInfo, | ||||
| 		FormButton, | ||||
| 		FormSuspense, | ||||
| 	}, | ||||
| let uri: string = $ref(''); | ||||
| let enableDiscordIntegration: boolean = $ref(false); | ||||
| let discordClientId: string | null = $ref(null); | ||||
| let discordClientSecret: string | null = $ref(null); | ||||
| 
 | ||||
| 	emits: ['info'], | ||||
| async function init() { | ||||
| 	const meta = await os.api('admin/meta'); | ||||
| 	uri = meta.uri; | ||||
| 	enableDiscordIntegration = meta.enableDiscordIntegration; | ||||
| 	discordClientId = meta.discordClientId; | ||||
| 	discordClientSecret = meta.discordClientSecret; | ||||
| } | ||||
| 
 | ||||
| 	data() { | ||||
| 		return { | ||||
| 			[symbols.PAGE_INFO]: { | ||||
| 				title: 'Discord', | ||||
| 				icon: 'fab fa-discord' | ||||
| 			}, | ||||
| 			enableDiscordIntegration: false, | ||||
| 			discordClientId: null, | ||||
| 			discordClientSecret: null, | ||||
| 		} | ||||
| 	}, | ||||
| 
 | ||||
| 	methods: { | ||||
| 		async init() { | ||||
| 			const meta = await os.api('admin/meta'); | ||||
| 			this.uri = meta.uri; | ||||
| 			this.enableDiscordIntegration = meta.enableDiscordIntegration; | ||||
| 			this.discordClientId = meta.discordClientId; | ||||
| 			this.discordClientSecret = meta.discordClientSecret; | ||||
| 		}, | ||||
| 		save() { | ||||
| 			os.apiWithDialog('admin/update-meta', { | ||||
| 				enableDiscordIntegration: this.enableDiscordIntegration, | ||||
| 				discordClientId: this.discordClientId, | ||||
| 				discordClientSecret: this.discordClientSecret, | ||||
| 			}).then(() => { | ||||
| 				fetchInstance(); | ||||
| 			}); | ||||
| 		} | ||||
| 	} | ||||
| }); | ||||
| function save() { | ||||
| 	os.apiWithDialog('admin/update-meta', { | ||||
| 		enableDiscordIntegration, | ||||
| 		discordClientId, | ||||
| 		discordClientSecret, | ||||
| 	}).then(() => { | ||||
| 		fetchInstance(); | ||||
| 	}); | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -24,57 +24,36 @@ | |||
| </FormSuspense> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| import { defineComponent } from 'vue'; | ||||
| <script lang="ts" setup> | ||||
| import { } from 'vue'; | ||||
| import FormSwitch from '@/components/form/switch.vue'; | ||||
| import FormInput from '@/components/form/input.vue'; | ||||
| import FormButton from '@/components/ui/button.vue'; | ||||
| import FormInfo from '@/components/ui/info.vue'; | ||||
| import FormSuspense from '@/components/form/suspense.vue'; | ||||
| import * as os from '@/os'; | ||||
| import * as symbols from '@/symbols'; | ||||
| import { fetchInstance } from '@/instance'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	components: { | ||||
| 		FormSwitch, | ||||
| 		FormInput, | ||||
| 		FormInfo, | ||||
| 		FormButton, | ||||
| 		FormSuspense, | ||||
| 	}, | ||||
| let uri: string = $ref(''); | ||||
| let enableGithubIntegration: boolean = $ref(false); | ||||
| let githubClientId: string | null = $ref(null); | ||||
| let githubClientSecret: string | null = $ref(null); | ||||
| 
 | ||||
| 	emits: ['info'], | ||||
| async function init() { | ||||
| 	const meta = await os.api('admin/meta'); | ||||
| 	uri = meta.uri; | ||||
| 	enableGithubIntegration = meta.enableGithubIntegration; | ||||
| 	githubClientId = meta.githubClientId; | ||||
| 	githubClientSecret = meta.githubClientSecret; | ||||
| } | ||||
| 
 | ||||
| 	data() { | ||||
| 		return { | ||||
| 			[symbols.PAGE_INFO]: { | ||||
| 				title: 'GitHub', | ||||
| 				icon: 'fab fa-github' | ||||
| 			}, | ||||
| 			enableGithubIntegration: false, | ||||
| 			githubClientId: null, | ||||
| 			githubClientSecret: null, | ||||
| 		} | ||||
| 	}, | ||||
| 
 | ||||
| 	methods: { | ||||
| 		async init() { | ||||
| 			const meta = await os.api('admin/meta'); | ||||
| 			this.uri = meta.uri; | ||||
| 			this.enableGithubIntegration = meta.enableGithubIntegration; | ||||
| 			this.githubClientId = meta.githubClientId; | ||||
| 			this.githubClientSecret = meta.githubClientSecret; | ||||
| 		}, | ||||
| 		save() { | ||||
| 			os.apiWithDialog('admin/update-meta', { | ||||
| 				enableGithubIntegration: this.enableGithubIntegration, | ||||
| 				githubClientId: this.githubClientId, | ||||
| 				githubClientSecret: this.githubClientSecret, | ||||
| 			}).then(() => { | ||||
| 				fetchInstance(); | ||||
| 			}); | ||||
| 		} | ||||
| 	} | ||||
| }); | ||||
| function save() { | ||||
| 	os.apiWithDialog('admin/update-meta', { | ||||
| 		enableGithubIntegration, | ||||
| 		githubClientId, | ||||
| 		githubClientSecret, | ||||
| 	}).then(() => { | ||||
| 		fetchInstance(); | ||||
| 	}); | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ | |||
| </FormSuspense> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| <script lang="ts" setup> | ||||
| import { defineComponent } from 'vue'; | ||||
| import FormSwitch from '@/components/form/switch.vue'; | ||||
| import FormInput from '@/components/form/input.vue'; | ||||
|  | @ -32,49 +32,28 @@ import FormButton from '@/components/ui/button.vue'; | |||
| import FormInfo from '@/components/ui/info.vue'; | ||||
| import FormSuspense from '@/components/form/suspense.vue'; | ||||
| import * as os from '@/os'; | ||||
| import * as symbols from '@/symbols'; | ||||
| import { fetchInstance } from '@/instance'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	components: { | ||||
| 		FormSwitch, | ||||
| 		FormInput, | ||||
| 		FormInfo, | ||||
| 		FormButton, | ||||
| 		FormSuspense, | ||||
| 	}, | ||||
| let uri: string = $ref(''); | ||||
| let enableTwitterIntegration: boolean = $ref(false); | ||||
| let twitterConsumerKey: string | null = $ref(null); | ||||
| let twitterConsumerSecret: string | null = $ref(null); | ||||
| 
 | ||||
| 	emits: ['info'], | ||||
| async function init() { | ||||
| 	const meta = await os.api('admin/meta'); | ||||
| 	uri = meta.uri; | ||||
| 	enableTwitterIntegration = meta.enableTwitterIntegration; | ||||
| 	twitterConsumerKey = meta.twitterConsumerKey; | ||||
| 	twitterConsumerSecret = meta.twitterConsumerSecret; | ||||
| } | ||||
| 
 | ||||
| 	data() { | ||||
| 		return { | ||||
| 			[symbols.PAGE_INFO]: { | ||||
| 				title: 'Twitter', | ||||
| 				icon: 'fab fa-twitter' | ||||
| 			}, | ||||
| 			enableTwitterIntegration: false, | ||||
| 			twitterConsumerKey: null, | ||||
| 			twitterConsumerSecret: null, | ||||
| 		} | ||||
| 	}, | ||||
| 
 | ||||
| 	methods: { | ||||
| 		async init() { | ||||
| 			const meta = await os.api('admin/meta'); | ||||
| 			this.uri = meta.uri; | ||||
| 			this.enableTwitterIntegration = meta.enableTwitterIntegration; | ||||
| 			this.twitterConsumerKey = meta.twitterConsumerKey; | ||||
| 			this.twitterConsumerSecret = meta.twitterConsumerSecret; | ||||
| 		}, | ||||
| 		save() { | ||||
| 			os.apiWithDialog('admin/update-meta', { | ||||
| 				enableTwitterIntegration: this.enableTwitterIntegration, | ||||
| 				twitterConsumerKey: this.twitterConsumerKey, | ||||
| 				twitterConsumerSecret: this.twitterConsumerSecret, | ||||
| 			}).then(() => { | ||||
| 				fetchInstance(); | ||||
| 			}); | ||||
| 		} | ||||
| 	} | ||||
| }); | ||||
| function save() { | ||||
| 	os.apiWithDialog('admin/update-meta', { | ||||
| 		enableTwitterIntegration, | ||||
| 		twitterConsumerKey, | ||||
| 		twitterConsumerSecret, | ||||
| 	}).then(() => { | ||||
| 		fetchInstance(); | ||||
| 	}); | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -4,69 +4,52 @@ | |||
| 		<FormFolder class="_formBlock"> | ||||
| 			<template #icon><i class="fab fa-twitter"></i></template> | ||||
| 			<template #label>Twitter</template> | ||||
| 			<template #suffix>{{ enableTwitterIntegration ? $ts.enabled : $ts.disabled }}</template> | ||||
| 			<template #suffix>{{ enableTwitterIntegration ? i18n.ts.enabled : i18n.ts.disabled }}</template> | ||||
| 			<XTwitter/> | ||||
| 		</FormFolder> | ||||
| 		<FormFolder to="/admin/integrations/github" class="_formBlock"> | ||||
| 		<FormFolder class="_formBlock"> | ||||
| 			<template #icon><i class="fab fa-github"></i></template> | ||||
| 			<template #label>GitHub</template> | ||||
| 			<template #suffix>{{ enableGithubIntegration ? $ts.enabled : $ts.disabled }}</template> | ||||
| 			<template #suffix>{{ enableGithubIntegration ? i18n.ts.enabled : i18n.ts.disabled }}</template> | ||||
| 			<XGithub/> | ||||
| 		</FormFolder> | ||||
| 		<FormFolder to="/admin/integrations/discord" class="_formBlock"> | ||||
| 		<FormFolder class="_formBlock"> | ||||
| 			<template #icon><i class="fab fa-discord"></i></template> | ||||
| 			<template #label>Discord</template> | ||||
| 			<template #suffix>{{ enableDiscordIntegration ? $ts.enabled : $ts.disabled }}</template> | ||||
| 			<template #suffix>{{ enableDiscordIntegration ? i18n.ts.enabled : i18n.ts.disabled }}</template> | ||||
| 			<XDiscord/> | ||||
| 		</FormFolder> | ||||
| 	</FormSuspense> | ||||
| </MkSpacer> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| import { defineComponent } from 'vue'; | ||||
| <script lang="ts" setup> | ||||
| import { } from 'vue'; | ||||
| import FormFolder from '@/components/form/folder.vue'; | ||||
| import FormSecion from '@/components/form/section.vue'; | ||||
| import FormSuspense from '@/components/form/suspense.vue'; | ||||
| import XTwitter from './integrations.twitter.vue'; | ||||
| import XGithub from './integrations.github.vue'; | ||||
| import XDiscord from './integrations.discord.vue'; | ||||
| import * as os from '@/os'; | ||||
| import * as symbols from '@/symbols'; | ||||
| import { fetchInstance } from '@/instance'; | ||||
| import { i18n } from '@/i18n'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	components: { | ||||
| 		FormFolder, | ||||
| 		FormSecion, | ||||
| 		FormSuspense, | ||||
| 		XTwitter, | ||||
| 		XGithub, | ||||
| 		XDiscord, | ||||
| 	}, | ||||
| let enableTwitterIntegration: boolean = $ref(false); | ||||
| let enableGithubIntegration: boolean = $ref(false); | ||||
| let enableDiscordIntegration: boolean = $ref(false); | ||||
| 
 | ||||
| 	emits: ['info'], | ||||
| async function init() { | ||||
| 	const meta = await os.api('admin/meta'); | ||||
| 	enableTwitterIntegration = meta.enableTwitterIntegration; | ||||
| 	enableGithubIntegration = meta.enableGithubIntegration; | ||||
| 	enableDiscordIntegration = meta.enableDiscordIntegration; | ||||
| } | ||||
| 
 | ||||
| 	data() { | ||||
| 		return { | ||||
| 			[symbols.PAGE_INFO]: { | ||||
| 				title: this.$ts.integration, | ||||
| 				icon: 'fas fa-share-alt', | ||||
| 				bg: 'var(--bg)', | ||||
| 			}, | ||||
| 			enableTwitterIntegration: false, | ||||
| 			enableGithubIntegration: false, | ||||
| 			enableDiscordIntegration: false, | ||||
| 		} | ||||
| 	}, | ||||
| 
 | ||||
| 	methods: { | ||||
| 		async init() { | ||||
| 			const meta = await os.api('admin/meta'); | ||||
| 			this.enableTwitterIntegration = meta.enableTwitterIntegration; | ||||
| 			this.enableGithubIntegration = meta.enableGithubIntegration; | ||||
| 			this.enableDiscordIntegration = meta.enableDiscordIntegration; | ||||
| 		}, | ||||
| defineExpose({ | ||||
| 	[symbols.PAGE_INFO]: { | ||||
| 		title: i18n.ts.integration, | ||||
| 		icon: 'fas fa-share-alt', | ||||
| 		bg: 'var(--bg)', | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue