1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-30 13:23:58 +02:00

Refactoring

This commit is contained in:
syuilo
2019-05-21 03:07:11 +09:00
parent 262d5ead51
commit 5511b6e013
41 changed files with 764 additions and 1408 deletions

View File

@@ -18,24 +18,24 @@
</div>
</ui-container>
<mk-user-list v-if="tag != null" :make-promise="tagUsers" :key="`${tag}-local`">
<mk-user-list v-if="tag != null" :pagination="tagUsers" :key="`${tag}-local`">
<fa :icon="faHashtag" fixed-width/>{{ tag }}
</mk-user-list>
<mk-user-list v-if="tag != null" :make-promise="tagRemoteUsers" :key="`${tag}-remote`">
<mk-user-list v-if="tag != null" :pagination="tagRemoteUsers" :key="`${tag}-remote`">
<fa :icon="faHashtag" fixed-width/>{{ tag }} ({{ $t('federated') }})
</mk-user-list>
<template v-if="tag == null">
<mk-user-list :make-promise="pinnedUsers">
<mk-user-list :pagination="pinnedUsers">
<fa :icon="faBookmark" fixed-width/>{{ $t('pinned-users') }}
</mk-user-list>
<mk-user-list :make-promise="popularUsers">
<mk-user-list :pagination="popularUsers">
<fa :icon="faChartLine" fixed-width/>{{ $t('popular-users') }}
</mk-user-list>
<mk-user-list :make-promise="recentlyUpdatedUsers">
<mk-user-list :pagination="recentlyUpdatedUsers">
<fa :icon="faCommentAlt" fixed-width/>{{ $t('recently-updated-users') }}
</mk-user-list>
<mk-user-list :make-promise="recentlyRegisteredUsers">
<mk-user-list :pagination="recentlyRegisteredUsers">
<fa :icon="faPlus" fixed-width/>{{ $t('recently-registered-users') }}
</mk-user-list>
</template>
@@ -60,24 +60,21 @@ export default Vue.extend({
data() {
return {
pinnedUsers: () => this.$root.api('pinned-users'),
popularUsers: () => this.$root.api('users', {
pinnedUsers: { endpoint: 'pinned-users' },
popularUsers: { endpoint: 'users', limit: 10, params: {
state: 'alive',
origin: 'local',
sort: '+follower',
limit: 10
}),
recentlyUpdatedUsers: () => this.$root.api('users', {
} },
recentlyUpdatedUsers: { endpoint: 'users', limit: 10, params: {
origin: 'local',
sort: '+updatedAt',
limit: 10
}),
recentlyRegisteredUsers: () => this.$root.api('users', {
} },
recentlyRegisteredUsers: { endpoint: 'users', limit: 10, params: {
origin: 'local',
state: 'alive',
sort: '+createdAt',
limit: 10
}),
} },
tagsLocal: [],
tagsRemote: [],
stats: null,
@@ -88,24 +85,30 @@ export default Vue.extend({
},
computed: {
tagUsers(): () => Promise<any> {
return () => this.$root.api('hashtags/users', {
tag: this.tag,
state: 'alive',
origin: 'local',
sort: '+follower',
limit: 30
});
tagUsers(): any {
return {
endpoint: 'hashtags/users',
limit: 30,
params: {
tag: this.tag,
state: 'alive',
origin: 'local',
sort: '+follower',
}
};
},
tagRemoteUsers(): () => Promise<any> {
return () => this.$root.api('hashtags/users', {
tag: this.tag,
state: 'alive',
origin: 'remote',
sort: '+follower',
limit: 30
});
tagRemoteUsers(): any {
return {
endpoint: 'hashtags/users',
limit: 30,
params: {
tag: this.tag,
state: 'alive',
origin: 'remote',
sort: '+follower',
}
};
},
},

View File

@@ -0,0 +1,44 @@
<template>
<div>
<component :is="notesComponent" :pagination="pagination" :extract="items => items.map(item => item.note)"/>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import { faStar } from '@fortawesome/free-solid-svg-icons';
import i18n from '../../../i18n';
//import Progress from '../../../common/scripts/loading';
export default Vue.extend({
i18n: i18n(),
props: {
platform: {
type: String,
required: true
}
},
data() {
return {
pagination: {
endpoint: 'i/favorites',
limit: 10,
},
notesComponent:
this.platform === 'desktop' ? () => import('../../../desktop/views/components/detail-notes.vue').then(m => m.default) :
this.platform === 'mobile' ? () => import('../../../mobile/views/components/detail-notes.vue').then(m => m.default) :
this.platform === 'deck' ? () => import('../deck/deck.notes.vue').then(m => m.default) : null
};
},
created() {
this.$emit('init', {
title: this.$t('@.favorites'),
icon: faStar
});
},
});
</script>

View File

@@ -0,0 +1,44 @@
<template>
<div>
<component :is="notesComponent" :pagination="pagination"/>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import { faNewspaper } from '@fortawesome/free-solid-svg-icons';
import i18n from '../../../i18n';
//import Progress from '../../../common/scripts/loading';
export default Vue.extend({
i18n: i18n(),
props: {
platform: {
type: String,
required: true
}
},
data() {
return {
pagination: {
endpoint: 'notes/featured',
limit: 30,
},
notesComponent:
this.platform === 'desktop' ? () => import('../../../desktop/views/components/detail-notes.vue').then(m => m.default) :
this.platform === 'mobile' ? () => import('../../../mobile/views/components/detail-notes.vue').then(m => m.default) :
this.platform === 'deck' ? () => import('../deck/deck.notes.vue').then(m => m.default) : null
};
},
created() {
this.$emit('init', {
title: this.$t('@.featured-notes'),
icon: faNewspaper
});
},
});
</script>

View File

@@ -1,7 +1,5 @@
<template>
<div>
<mk-user-list :make-promise="makePromise">{{ $t('@.followers') }}</mk-user-list>
</div>
<mk-user-list :pagination="pagination" :extract="items => items.map(item => item.follower)">{{ $t('@.followers') }}</mk-user-list>
</template>
<script lang="ts">
@@ -9,31 +7,18 @@ import Vue from 'vue';
import parseAcct from '../../../../../misc/acct/parse';
import i18n from '../../../i18n';
const fetchLimit = 30;
export default Vue.extend({
i18n: i18n(),
data() {
return {
makePromise: cursor => this.$root.api('users/followers', {
...parseAcct(this.$route.params.user),
limit: fetchLimit + 1,
untilId: cursor ? cursor : undefined,
}).then(followings => {
if (followings.length == fetchLimit + 1) {
followings.pop();
return {
users: followings.map(following => following.follower),
cursor: followings[followings.length - 1].id
};
} else {
return {
users: followings.map(following => following.follower),
more: false
};
pagination: {
endpoint: 'users/followers',
limit: 30,
params: {
...parseAcct(this.$route.params.user),
}
}),
},
};
},
});

View File

@@ -1,7 +1,5 @@
<template>
<div>
<mk-user-list :make-promise="makePromise">{{ $t('@.following') }}</mk-user-list>
</div>
<mk-user-list :pagination="pagination" :extract="items => items.map(item => item.followee)">{{ $t('@.following') }}</mk-user-list>
</template>
<script lang="ts">
@@ -9,31 +7,18 @@ import Vue from 'vue';
import parseAcct from '../../../../../misc/acct/parse';
import i18n from '../../../i18n';
const fetchLimit = 30;
export default Vue.extend({
i18n: i18n(),
data() {
return {
makePromise: cursor => this.$root.api('users/following', {
...parseAcct(this.$route.params.user),
limit: fetchLimit + 1,
untilId: cursor ? cursor : undefined,
}).then(followings => {
if (followings.length == fetchLimit + 1) {
followings.pop();
return {
users: followings.map(following => following.followee),
cursor: followings[followings.length - 1].id
};
} else {
return {
users: followings.map(following => following.followee),
more: false
};
pagination: {
endpoint: 'users/following',
limit: 30,
params: {
...parseAcct(this.$route.params.user),
}
}),
},
};
},
});