wip
This commit is contained in:
parent
0cffc1cac0
commit
42be937fcb
|
@ -490,6 +490,9 @@ const endpoints: Endpoint[] = [
|
||||||
{
|
{
|
||||||
name: 'channels/posts'
|
name: 'channels/posts'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'channels'
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export default endpoints;
|
export default endpoints;
|
||||||
|
|
59
src/api/endpoints/channels.ts
Normal file
59
src/api/endpoints/channels.ts
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
/**
|
||||||
|
* Module dependencies
|
||||||
|
*/
|
||||||
|
import $ from 'cafy';
|
||||||
|
import Channel from '../models/channel';
|
||||||
|
import serialize from '../serializers/channel';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all channels
|
||||||
|
*
|
||||||
|
* @param {any} params
|
||||||
|
* @param {any} me
|
||||||
|
* @return {Promise<any>}
|
||||||
|
*/
|
||||||
|
module.exports = (params, me) => new Promise(async (res, rej) => {
|
||||||
|
// Get 'limit' parameter
|
||||||
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
|
// Get 'since_id' parameter
|
||||||
|
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
||||||
|
if (sinceIdErr) return rej('invalid since_id param');
|
||||||
|
|
||||||
|
// Get 'max_id' parameter
|
||||||
|
const [maxId, maxIdErr] = $(params.max_id).optional.id().$;
|
||||||
|
if (maxIdErr) return rej('invalid max_id param');
|
||||||
|
|
||||||
|
// Check if both of since_id and max_id is specified
|
||||||
|
if (sinceId && maxId) {
|
||||||
|
return rej('cannot set since_id and max_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct query
|
||||||
|
const sort = {
|
||||||
|
_id: -1
|
||||||
|
};
|
||||||
|
const query = {} as any;
|
||||||
|
if (sinceId) {
|
||||||
|
sort._id = 1;
|
||||||
|
query._id = {
|
||||||
|
$gt: sinceId
|
||||||
|
};
|
||||||
|
} else if (maxId) {
|
||||||
|
query._id = {
|
||||||
|
$lt: maxId
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Issue query
|
||||||
|
const channels = await Channel
|
||||||
|
.find(query, {
|
||||||
|
limit: limit,
|
||||||
|
sort: sort
|
||||||
|
});
|
||||||
|
|
||||||
|
// Serialize
|
||||||
|
res(await Promise.all(channels.map(async channel =>
|
||||||
|
await serialize(channel, me))));
|
||||||
|
});
|
|
@ -1,4 +1,6 @@
|
||||||
<mk-channel>
|
<mk-channel>
|
||||||
|
<header><a href={ CONFIG.chUrl }>Misskey Channels</a></header>
|
||||||
|
<hr>
|
||||||
<main if={ !fetching }>
|
<main if={ !fetching }>
|
||||||
<h1>{ channel.title }</h1>
|
<h1>{ channel.title }</h1>
|
||||||
<p if={ postsFetching }>読み込み中<mk-ellipsis/></p>
|
<p if={ postsFetching }>読み込み中<mk-ellipsis/></p>
|
||||||
|
@ -21,10 +23,9 @@
|
||||||
<style>
|
<style>
|
||||||
:scope
|
:scope
|
||||||
display block
|
display block
|
||||||
|
padding 8px
|
||||||
|
|
||||||
main
|
> main
|
||||||
padding 8px
|
|
||||||
|
|
||||||
> h1
|
> h1
|
||||||
color #f00
|
color #f00
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
<mk-index>
|
<mk-index>
|
||||||
<button onclick={ new }>%i18n:ch.tags.mk-index.new%</button>
|
<button onclick={ n }>%i18n:ch.tags.mk-index.new%</button>
|
||||||
|
<hr>
|
||||||
|
<ul if={ channels }>
|
||||||
|
<li each={ channels }><a href={ '/' + this.id }>{ this.title }</a></li>
|
||||||
|
</ul>
|
||||||
<style>
|
<style>
|
||||||
:scope
|
:scope
|
||||||
display block
|
display block
|
||||||
|
@ -9,9 +13,14 @@
|
||||||
this.mixin('api');
|
this.mixin('api');
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
|
this.api('channels').then(channels => {
|
||||||
|
this.update({
|
||||||
|
channels: channels
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.new = () => {
|
this.n = () => {
|
||||||
const title = window.prompt('%i18n:ch.tags.mk-index.channel-title%');
|
const title = window.prompt('%i18n:ch.tags.mk-index.channel-title%');
|
||||||
|
|
||||||
this.api('channels/create', {
|
this.api('channels/create', {
|
||||||
|
|
Loading…
Reference in a new issue