forked from FoundKeyGang/FoundKey
wip
This commit is contained in:
parent
5efb52b9f5
commit
f87ec61e96
7 changed files with 97 additions and 11 deletions
|
@ -484,6 +484,9 @@ const endpoints: Endpoint[] = [
|
|||
minInterval: ms('10seconds')
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'channels/show'
|
||||
},
|
||||
];
|
||||
|
||||
export default endpoints;
|
||||
|
|
31
src/api/endpoints/channels/show.ts
Normal file
31
src/api/endpoints/channels/show.ts
Normal file
|
@ -0,0 +1,31 @@
|
|||
/**
|
||||
* Module dependencies
|
||||
*/
|
||||
import $ from 'cafy';
|
||||
import { default as Channel, IChannel } from '../../models/channel';
|
||||
import serialize from '../../serializers/channel';
|
||||
|
||||
/**
|
||||
* Show a channel
|
||||
*
|
||||
* @param {any} params
|
||||
* @param {any} user
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||
// Get 'channel_id' parameter
|
||||
const [channelId, channelIdErr] = $(params.channel_id).id().$;
|
||||
if (channelIdErr) return rej('invalid channel_id param');
|
||||
|
||||
// Fetch channel
|
||||
const channel: IChannel = await Channel.findOne({
|
||||
_id: channelId
|
||||
});
|
||||
|
||||
if (channel === null) {
|
||||
return rej('channel not found');
|
||||
}
|
||||
|
||||
// Serialize
|
||||
res(await serialize(channel, user));
|
||||
});
|
|
@ -7,15 +7,16 @@ const route = require('page');
|
|||
let page = null;
|
||||
|
||||
export default me => {
|
||||
route('/', index);
|
||||
route('/i>mentions', mentions);
|
||||
route('/channel', channels);
|
||||
route('/post::post', post);
|
||||
route('/search::query', search);
|
||||
route('/:user', user.bind(null, 'home'));
|
||||
route('/:user/graphs', user.bind(null, 'graphs'));
|
||||
route('/:user/:post', post);
|
||||
route('*', notFound);
|
||||
route('/', index);
|
||||
route('/i>mentions', mentions);
|
||||
route('/channel', channels);
|
||||
route('/channel/:channel', channel);
|
||||
route('/post::post', post);
|
||||
route('/search::query', search);
|
||||
route('/:user', user.bind(null, 'home'));
|
||||
route('/:user/graphs', user.bind(null, 'graphs'));
|
||||
route('/:user/:post', post);
|
||||
route('*', notFound);
|
||||
|
||||
function index() {
|
||||
me ? home() : entrance();
|
||||
|
@ -55,6 +56,12 @@ export default me => {
|
|||
mount(el);
|
||||
}
|
||||
|
||||
function channel(ctx) {
|
||||
const el = document.createElement('mk-channel-page');
|
||||
el.setAttribute('id', ctx.params.channel);
|
||||
mount(el);
|
||||
}
|
||||
|
||||
function channels() {
|
||||
mount(document.createElement('mk-channels-page'));
|
||||
}
|
||||
|
@ -72,6 +79,7 @@ export default me => {
|
|||
};
|
||||
|
||||
function mount(content) {
|
||||
document.documentElement.style.background = '#313a42';
|
||||
document.documentElement.removeAttribute('data-page');
|
||||
if (page) page.unmount();
|
||||
const body = document.getElementById('app');
|
||||
|
|
|
@ -61,6 +61,7 @@ require('./pages/user.tag');
|
|||
require('./pages/post.tag');
|
||||
require('./pages/search.tag');
|
||||
require('./pages/not-found.tag');
|
||||
require('./pages/channel.tag');
|
||||
require('./pages/channels.tag');
|
||||
require('./autocomplete-suggestion.tag');
|
||||
require('./progress-dialog.tag');
|
||||
|
|
43
src/web/app/desktop/tags/pages/channel.tag
Normal file
43
src/web/app/desktop/tags/pages/channel.tag
Normal file
|
@ -0,0 +1,43 @@
|
|||
<mk-channel-page>
|
||||
<mk-ui ref="ui">
|
||||
<main if={ !parent.fetching }>
|
||||
<h1>{ parent.channel.title }</h1>
|
||||
</main>
|
||||
</mk-ui>
|
||||
<style>
|
||||
:scope
|
||||
display block
|
||||
|
||||
main
|
||||
> h1
|
||||
color #f00
|
||||
</style>
|
||||
<script>
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
this.mixin('api');
|
||||
|
||||
this.id = this.opts.id;
|
||||
this.fetching = true;
|
||||
this.channel = null;
|
||||
|
||||
this.on('mount', () => {
|
||||
document.documentElement.style.background = '#efefef';
|
||||
|
||||
Progress.start();
|
||||
|
||||
this.api('channels/show', {
|
||||
channel_id: this.id
|
||||
}).then(channel => {
|
||||
Progress.done();
|
||||
|
||||
this.update({
|
||||
fetching: false,
|
||||
channel: channel
|
||||
});
|
||||
|
||||
document.title = channel.title + ' | Misskey'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</mk-channel-page>
|
|
@ -18,7 +18,7 @@
|
|||
this.new = () => {
|
||||
const title = window.prompt('%i18n:desktop.tags.mk-channels-page.channel-title%');
|
||||
|
||||
this.api('bbs/channels/create', {
|
||||
this.api('channels/create', {
|
||||
title: title
|
||||
}).then(channel => {
|
||||
location.href = '/channel/' + channel.id;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
this.refs.ui.refs.user.on('user-fetched', user => {
|
||||
Progress.set(0.5);
|
||||
document.title = user.name + ' | Misskey'
|
||||
document.title = user.name + ' | Misskey';
|
||||
});
|
||||
|
||||
this.refs.ui.refs.user.on('loaded', () => {
|
||||
|
|
Loading…
Reference in a new issue