summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2017-10-31 23:11:22 +0900
committersyuilo <syuilotan@yahoo.co.jp>2017-10-31 23:11:22 +0900
commitf87ec61e96a8c1f070abefc6a3b5f7e68e24705d (patch)
treebf0c993b21462bab2845281049783bba081a5165 /src
parentwip (diff)
downloadsharkey-f87ec61e96a8c1f070abefc6a3b5f7e68e24705d.tar.gz
sharkey-f87ec61e96a8c1f070abefc6a3b5f7e68e24705d.tar.bz2
sharkey-f87ec61e96a8c1f070abefc6a3b5f7e68e24705d.zip
wip
Diffstat (limited to 'src')
-rw-r--r--src/api/endpoints.ts3
-rw-r--r--src/api/endpoints/channels/show.ts31
-rw-r--r--src/web/app/desktop/router.js26
-rw-r--r--src/web/app/desktop/tags/index.js1
-rw-r--r--src/web/app/desktop/tags/pages/channel.tag43
-rw-r--r--src/web/app/desktop/tags/pages/channels.tag2
-rw-r--r--src/web/app/desktop/tags/pages/user.tag2
7 files changed, 97 insertions, 11 deletions
diff --git a/src/api/endpoints.ts b/src/api/endpoints.ts
index 26177b8775..45b83fc9e5 100644
--- a/src/api/endpoints.ts
+++ b/src/api/endpoints.ts
@@ -484,6 +484,9 @@ const endpoints: Endpoint[] = [
minInterval: ms('10seconds')
}
},
+ {
+ name: 'channels/show'
+ },
];
export default endpoints;
diff --git a/src/api/endpoints/channels/show.ts b/src/api/endpoints/channels/show.ts
new file mode 100644
index 0000000000..8861e54594
--- /dev/null
+++ b/src/api/endpoints/channels/show.ts
@@ -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));
+});
diff --git a/src/web/app/desktop/router.js b/src/web/app/desktop/router.js
index 51738f3afa..d9300cc69a 100644
--- a/src/web/app/desktop/router.js
+++ b/src/web/app/desktop/router.js
@@ -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');
diff --git a/src/web/app/desktop/tags/index.js b/src/web/app/desktop/tags/index.js
index 6d49006526..7fdeb6884d 100644
--- a/src/web/app/desktop/tags/index.js
+++ b/src/web/app/desktop/tags/index.js
@@ -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');
diff --git a/src/web/app/desktop/tags/pages/channel.tag b/src/web/app/desktop/tags/pages/channel.tag
new file mode 100644
index 0000000000..4fa172f99d
--- /dev/null
+++ b/src/web/app/desktop/tags/pages/channel.tag
@@ -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>
diff --git a/src/web/app/desktop/tags/pages/channels.tag b/src/web/app/desktop/tags/pages/channels.tag
index 03fae3c8d1..220f1ca50e 100644
--- a/src/web/app/desktop/tags/pages/channels.tag
+++ b/src/web/app/desktop/tags/pages/channels.tag
@@ -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;
diff --git a/src/web/app/desktop/tags/pages/user.tag b/src/web/app/desktop/tags/pages/user.tag
index 864fe22735..811ca5c0fd 100644
--- a/src/web/app/desktop/tags/pages/user.tag
+++ b/src/web/app/desktop/tags/pages/user.tag
@@ -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', () => {