モバイルでもハッシュタグを検索できるように
This commit is contained in:
		
							parent
							
								
									8bc47baf4f
								
							
						
					
					
						commit
						413fbb3d0c
					
				
					 2 changed files with 83 additions and 0 deletions
				
			
		| 
						 | 
					@ -42,6 +42,7 @@ import MkUserLists from './views/pages/user-lists.vue';
 | 
				
			||||||
import MkUserList from './views/pages/user-list.vue';
 | 
					import MkUserList from './views/pages/user-list.vue';
 | 
				
			||||||
import MkSettings from './views/pages/settings.vue';
 | 
					import MkSettings from './views/pages/settings.vue';
 | 
				
			||||||
import MkOthello from './views/pages/othello.vue';
 | 
					import MkOthello from './views/pages/othello.vue';
 | 
				
			||||||
 | 
					import MkTag from './views/pages/tag.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Vue.use(MdCard);
 | 
					Vue.use(MdCard);
 | 
				
			||||||
Vue.use(MdButton);
 | 
					Vue.use(MdButton);
 | 
				
			||||||
| 
						 | 
					@ -88,6 +89,7 @@ init((launch) => {
 | 
				
			||||||
			{ path: '/i/drive/file/:file', component: MkDrive },
 | 
								{ path: '/i/drive/file/:file', component: MkDrive },
 | 
				
			||||||
			{ path: '/selectdrive', component: MkSelectDrive },
 | 
								{ path: '/selectdrive', component: MkSelectDrive },
 | 
				
			||||||
			{ path: '/search', component: MkSearch },
 | 
								{ path: '/search', component: MkSearch },
 | 
				
			||||||
 | 
								{ path: '/tags/:tag', component: MkTag },
 | 
				
			||||||
			{ path: '/othello', name: 'othello', component: MkOthello },
 | 
								{ path: '/othello', name: 'othello', component: MkOthello },
 | 
				
			||||||
			{ path: '/othello/:game', component: MkOthello },
 | 
								{ path: '/othello/:game', component: MkOthello },
 | 
				
			||||||
			{ path: '/@:user', component: MkUser },
 | 
								{ path: '/@:user', component: MkUser },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										81
									
								
								src/client/app/mobile/views/pages/tag.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								src/client/app/mobile/views/pages/tag.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,81 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					<mk-ui>
 | 
				
			||||||
 | 
						<span slot="header">%fa:hashtag%{{ $route.params.tag }}</span>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<main>
 | 
				
			||||||
 | 
							<p v-if="!fetching && empty">%fa:search%「{{ q }}」に関する投稿は見つかりませんでした。</p>
 | 
				
			||||||
 | 
							<mk-notes ref="timeline" :more="existMore ? more : null"/>
 | 
				
			||||||
 | 
						</main>
 | 
				
			||||||
 | 
					</mk-ui>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					import Progress from '../../../common/scripts/loading';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const limit = 20;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default Vue.extend({
 | 
				
			||||||
 | 
						data() {
 | 
				
			||||||
 | 
							return {
 | 
				
			||||||
 | 
								fetching: true,
 | 
				
			||||||
 | 
								moreFetching: false,
 | 
				
			||||||
 | 
								existMore: false,
 | 
				
			||||||
 | 
								offset: 0,
 | 
				
			||||||
 | 
								empty: false
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						watch: {
 | 
				
			||||||
 | 
							$route: 'fetch'
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						mounted() {
 | 
				
			||||||
 | 
							this.$nextTick(() => {
 | 
				
			||||||
 | 
								this.fetch();
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						methods: {
 | 
				
			||||||
 | 
							fetch() {
 | 
				
			||||||
 | 
								this.fetching = true;
 | 
				
			||||||
 | 
								Progress.start();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								(this.$refs.timeline as any).init(() => new Promise((res, rej) => {
 | 
				
			||||||
 | 
									(this as any).api('notes/search_by_tag', {
 | 
				
			||||||
 | 
										limit: limit + 1,
 | 
				
			||||||
 | 
										offset: this.offset,
 | 
				
			||||||
 | 
										tag: this.$route.params.tag
 | 
				
			||||||
 | 
									}).then(notes => {
 | 
				
			||||||
 | 
										if (notes.length == 0) this.empty = true;
 | 
				
			||||||
 | 
										if (notes.length == limit + 1) {
 | 
				
			||||||
 | 
											notes.pop();
 | 
				
			||||||
 | 
											this.existMore = true;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										res(notes);
 | 
				
			||||||
 | 
										this.fetching = false;
 | 
				
			||||||
 | 
										Progress.done();
 | 
				
			||||||
 | 
									}, rej);
 | 
				
			||||||
 | 
								}));
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							more() {
 | 
				
			||||||
 | 
								this.offset += limit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								const promise = (this as any).api('notes/search_by_tag', {
 | 
				
			||||||
 | 
									limit: limit + 1,
 | 
				
			||||||
 | 
									offset: this.offset,
 | 
				
			||||||
 | 
									tag: this.$route.params.tag
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								promise.then(notes => {
 | 
				
			||||||
 | 
									if (notes.length == limit + 1) {
 | 
				
			||||||
 | 
										notes.pop();
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										this.existMore = false;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									notes.forEach(n => (this.$refs.timeline as any).append(n));
 | 
				
			||||||
 | 
									this.moreFetching = false;
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return promise;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue