refactor(client): use setup syntax
This commit is contained in:
		
							parent
							
								
									2c2c7d4966
								
							
						
					
					
						commit
						d9ff2dd471
					
				
					 5 changed files with 110 additions and 191 deletions
				
			
		|  | @ -14,26 +14,15 @@ | ||||||
| </MkA> | </MkA> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script lang="ts"> | <script lang="ts" setup> | ||||||
| import { defineComponent } from 'vue'; | import { } from 'vue'; | ||||||
| import { userName } from '@/filters/user'; | import { userName } from '@/filters/user'; | ||||||
| import ImgWithBlurhash from '@/components/MkImgWithBlurhash.vue'; | import ImgWithBlurhash from '@/components/MkImgWithBlurhash.vue'; | ||||||
| import * as os from '@/os'; | import * as os from '@/os'; | ||||||
| 
 | 
 | ||||||
| export default defineComponent({ | const props = defineProps<{ | ||||||
| 	components: { | 	post: any; | ||||||
| 		ImgWithBlurhash, | }>(); | ||||||
| 	}, |  | ||||||
| 	props: { |  | ||||||
| 		post: { |  | ||||||
| 			type: Object, |  | ||||||
| 			required: true, |  | ||||||
| 		}, |  | ||||||
| 	}, |  | ||||||
| 	methods: { |  | ||||||
| 		userName, |  | ||||||
| 	}, |  | ||||||
| }); |  | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| <template> | <template> | ||||||
| <div v-if="ad" class="qiivuoyo"> | <div v-if="chosen" class="qiivuoyo"> | ||||||
| 	<div v-if="!showMenu" class="main" :class="ad.place"> | 	<div v-if="!showMenu" class="main" :class="chosen.place"> | ||||||
| 		<a :href="ad.url" target="_blank"> | 		<a :href="chosen.url" target="_blank"> | ||||||
| 			<img :src="ad.imageUrl"> | 			<img :src="chosen.imageUrl"> | ||||||
| 			<button class="_button menu" @click.prevent.stop="toggleMenu"><span class="fas fa-info-circle info-circle"></span></button> | 			<button class="_button menu" @click.prevent.stop="toggleMenu"><span class="fas fa-info-circle info-circle"></span></button> | ||||||
| 		</a> | 		</a> | ||||||
| 	</div> | 	</div> | ||||||
|  | @ -10,7 +10,7 @@ | ||||||
| 		<div class="body"> | 		<div class="body"> | ||||||
| 			<div>Ads by {{ host }}</div> | 			<div>Ads by {{ host }}</div> | ||||||
| 			<!--<MkButton class="button" primary>{{ $ts._ad.like }}</MkButton>--> | 			<!--<MkButton class="button" primary>{{ $ts._ad.like }}</MkButton>--> | ||||||
| 			<MkButton v-if="ad.ratio !== 0" class="button" @click="reduceFrequency">{{ $ts._ad.reduceFrequencyOfThisAd }}</MkButton> | 			<MkButton v-if="chosen.ratio !== 0" class="button" @click="reduceFrequency">{{ $ts._ad.reduceFrequencyOfThisAd }}</MkButton> | ||||||
| 			<button class="_textButton" @click="toggleMenu">{{ $ts._ad.back }}</button> | 			<button class="_textButton" @click="toggleMenu">{{ $ts._ad.back }}</button> | ||||||
| 		</div> | 		</div> | ||||||
| 	</div> | 	</div> | ||||||
|  | @ -18,44 +18,34 @@ | ||||||
| <div v-else></div> | <div v-else></div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script lang="ts"> | <script lang="ts" setup> | ||||||
| import { defineComponent, ref } from 'vue'; | import { ref } from 'vue'; | ||||||
| import { instance } from '@/instance'; | import { instance } from '@/instance'; | ||||||
| import { host } from '@/config'; | import { host } from '@/config'; | ||||||
| import MkButton from '@/components/ui/button.vue'; | import MkButton from '@/components/ui/button.vue'; | ||||||
| import { defaultStore } from '@/store'; | import { defaultStore } from '@/store'; | ||||||
| import * as os from '@/os'; | import * as os from '@/os'; | ||||||
| 
 | 
 | ||||||
| export default defineComponent({ | type Ad = (typeof instance)['ads'][number]; | ||||||
| 	components: { |  | ||||||
| 		MkButton |  | ||||||
| 	}, |  | ||||||
| 
 | 
 | ||||||
| 	props: { | const props = defineProps<{ | ||||||
| 		prefer: { | 	prefer: string[]; | ||||||
| 			type: Array, | 	specify?: Ad; | ||||||
| 			required: true | }>(); | ||||||
| 		}, |  | ||||||
| 		specify: { |  | ||||||
| 			type: Object, |  | ||||||
| 			required: false |  | ||||||
| 		}, |  | ||||||
| 	}, |  | ||||||
| 
 | 
 | ||||||
| 	setup(props) { | const showMenu = ref(false); | ||||||
| 		const showMenu = ref(false); | const toggleMenu = (): void => { | ||||||
| 		const toggleMenu = () => { |  | ||||||
| 	showMenu.value = !showMenu.value; | 	showMenu.value = !showMenu.value; | ||||||
| 		}; | }; | ||||||
| 
 | 
 | ||||||
| 		const choseAd = (): (typeof instance)['ads'][number] | null => { | const choseAd = (): Ad | null => { | ||||||
| 	if (props.specify) { | 	if (props.specify) { | ||||||
| 				return props.specify as (typeof instance)['ads'][number]; | 		return props.specify; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	const allAds = instance.ads.map(ad => defaultStore.state.mutedAds.includes(ad.id) ? { | 	const allAds = instance.ads.map(ad => defaultStore.state.mutedAds.includes(ad.id) ? { | ||||||
| 		...ad, | 		...ad, | ||||||
| 				ratio: 0 | 		ratio: 0, | ||||||
| 	} : ad); | 	} : ad); | ||||||
| 
 | 
 | ||||||
| 	let ads = allAds.filter(ad => props.prefer.includes(ad.place)); | 	let ads = allAds.filter(ad => props.prefer.includes(ad.place)); | ||||||
|  | @ -88,28 +78,18 @@ export default defineComponent({ | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return null; | 	return null; | ||||||
| 		}; | }; | ||||||
| 
 | 
 | ||||||
| 		const chosen = ref(choseAd()); | const chosen = ref(choseAd()); | ||||||
| 
 | 
 | ||||||
| 		const reduceFrequency = () => { | function reduceFrequency(): void { | ||||||
| 	if (chosen.value == null) return; | 	if (chosen.value == null) return; | ||||||
| 	if (defaultStore.state.mutedAds.includes(chosen.value.id)) return; | 	if (defaultStore.state.mutedAds.includes(chosen.value.id)) return; | ||||||
| 	defaultStore.push('mutedAds', chosen.value.id); | 	defaultStore.push('mutedAds', chosen.value.id); | ||||||
| 	os.success(); | 	os.success(); | ||||||
| 	chosen.value = choseAd(); | 	chosen.value = choseAd(); | ||||||
| 	showMenu.value = false; | 	showMenu.value = false; | ||||||
| 		}; | } | ||||||
| 
 |  | ||||||
| 		return { |  | ||||||
| 			ad: chosen, |  | ||||||
| 			showMenu, |  | ||||||
| 			toggleMenu, |  | ||||||
| 			host, |  | ||||||
| 			reduceFrequency, |  | ||||||
| 		}; |  | ||||||
| 	} |  | ||||||
| }); |  | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|  |  | ||||||
|  | @ -18,54 +18,39 @@ | ||||||
| </component> | </component> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script lang="ts"> | <script lang="ts" setup> | ||||||
| import { defineAsyncComponent, defineComponent, ref } from 'vue'; | import { defineAsyncComponent, ref } from 'vue'; | ||||||
| import { toUnicode as decodePunycode } from 'punycode/'; | import { toUnicode as decodePunycode } from 'punycode/'; | ||||||
| import { url as local } from '@/config'; | import { url as local } from '@/config'; | ||||||
| import * as os from '@/os'; | import * as os from '@/os'; | ||||||
| import { useTooltip } from '@/scripts/use-tooltip'; | import { useTooltip } from '@/scripts/use-tooltip'; | ||||||
| import { safeURIDecode } from '@/scripts/safe-uri-decode'; | import { safeURIDecode } from '@/scripts/safe-uri-decode'; | ||||||
| 
 | 
 | ||||||
| export default defineComponent({ | const props = defineProps<{ | ||||||
| 	props: { | 	url: string; | ||||||
| 		url: { | 	rel?: string; | ||||||
| 			type: String, | }>(); | ||||||
| 			required: true, |  | ||||||
| 		}, |  | ||||||
| 		rel: { |  | ||||||
| 			type: String, |  | ||||||
| 			required: false, |  | ||||||
| 			default: null, |  | ||||||
| 		}, |  | ||||||
| 	}, |  | ||||||
| 	setup(props) { |  | ||||||
| 		const self = props.url.startsWith(local); |  | ||||||
| 		const url = new URL(props.url); |  | ||||||
| 		const el = ref(); |  | ||||||
| 
 | 
 | ||||||
| 		useTooltip(el, (showing) => { | const self = props.url.startsWith(local); | ||||||
|  | const url = new URL(props.url); | ||||||
|  | const el = ref(); | ||||||
|  | 
 | ||||||
|  | useTooltip(el, (showing) => { | ||||||
| 	os.popup(defineAsyncComponent(() => import('@/components/MkUrlPreviewPopup.vue')), { | 	os.popup(defineAsyncComponent(() => import('@/components/MkUrlPreviewPopup.vue')), { | ||||||
| 		showing, | 		showing, | ||||||
| 		url: props.url, | 		url: props.url, | ||||||
| 		source: el.value, | 		source: el.value, | ||||||
| 	}, {}, 'closed'); | 	}, {}, 'closed'); | ||||||
| 		}); |  | ||||||
| 
 |  | ||||||
| 		return { |  | ||||||
| 			local, |  | ||||||
| 			schema: url.protocol, |  | ||||||
| 			hostname: decodePunycode(url.hostname), |  | ||||||
| 			port: url.port, |  | ||||||
| 			pathname: safeURIDecode(url.pathname), |  | ||||||
| 			query: safeURIDecode(url.search), |  | ||||||
| 			hash: safeURIDecode(url.hash), |  | ||||||
| 			self: self, |  | ||||||
| 			attr: self ? 'to' : 'href', |  | ||||||
| 			target: self ? null : '_blank', |  | ||||||
| 			el, |  | ||||||
| 		}; |  | ||||||
| 	}, |  | ||||||
| }); | }); | ||||||
|  | 
 | ||||||
|  | const schema = url.protocol; | ||||||
|  | const hostname = decodePunycode(url.hostname); | ||||||
|  | const port = url.port; | ||||||
|  | const pathname = safeURIDecode(url.pathname); | ||||||
|  | const query = safeURIDecode(url.search); | ||||||
|  | const hash = safeURIDecode(url.hash); | ||||||
|  | const attr = self ? 'to' : 'href'; | ||||||
|  | const target = self ? null : '_blank'; | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|  |  | ||||||
|  | @ -1,17 +0,0 @@ | ||||||
| <template> |  | ||||||
| <div class="evrzpitu"></div> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <script lang="ts"> |  | ||||||
| import { defineComponent } from 'vue'; |  | ||||||
| import * as os from '@/os'; |  | ||||||
| 
 |  | ||||||
| export default defineComponent({}); |  | ||||||
| </script> |  | ||||||
| 
 |  | ||||||
| <style lang="scss" scoped> |  | ||||||
| .evrzpitu |  | ||||||
| 	margin 16px 0 |  | ||||||
| 	border-bottom solid var(--lineWidth) var(--faceDivider) |  | ||||||
| 
 |  | ||||||
| </style> |  | ||||||
|  | @ -9,40 +9,22 @@ | ||||||
| </div> | </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script lang="ts"> | <script lang="ts" setup> | ||||||
| import { defineComponent } from 'vue'; | import { computed } from 'vue'; | ||||||
|  | import * as misskey from 'misskey-js'; | ||||||
| import MkPagination from '@/components/ui/pagination.vue'; | import MkPagination from '@/components/ui/pagination.vue'; | ||||||
| 
 | 
 | ||||||
| export default defineComponent({ | const props = defineProps<{ | ||||||
| 	components: { | 	user: misskey.entities.User; | ||||||
| 		MkPagination, | }>(); | ||||||
| 	}, |  | ||||||
| 
 | 
 | ||||||
| 	props: { | const pagination = { | ||||||
| 		user: { |  | ||||||
| 			type: Object, |  | ||||||
| 			required: true |  | ||||||
| 		}, |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	data() { |  | ||||||
| 		return { |  | ||||||
| 			pagination: { |  | ||||||
| 	endpoint: 'users/clips' as const, | 	endpoint: 'users/clips' as const, | ||||||
| 	limit: 20, | 	limit: 20, | ||||||
| 				params: { | 	params: computed(() => ({ | ||||||
| 					userId: this.user.id, | 		userId: props.user.id, | ||||||
| 				} | 	})), | ||||||
| 			}, | }; | ||||||
| 		}; |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	watch: { |  | ||||||
| 		user() { |  | ||||||
| 			this.$refs.list.reload(); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| }); |  | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue