mirror of
https://git.joinsharkey.org/Sharkey/Sharkey.git
synced 2024-11-30 17:23:08 +02:00
wip
This commit is contained in:
parent
4c43573c1e
commit
c05abf4da7
80 changed files with 400 additions and 366 deletions
|
@ -112,13 +112,13 @@
|
||||||
this.app = @session.app
|
this.app = @session.app
|
||||||
|
|
||||||
this.cancel = () => {
|
this.cancel = () => {
|
||||||
this.api 'auth/deny' do
|
this.api('auth/deny', {
|
||||||
token: @session.token
|
token: @session.token
|
||||||
.then =>
|
.then =>
|
||||||
this.trigger('denied');
|
this.trigger('denied');
|
||||||
|
|
||||||
this.accept = () => {
|
this.accept = () => {
|
||||||
this.api 'auth/accept' do
|
this.api('auth/accept', {
|
||||||
token: @session.token
|
token: @session.token
|
||||||
.then =>
|
.then =>
|
||||||
this.trigger('accepted');
|
this.trigger('accepted');
|
||||||
|
|
|
@ -100,15 +100,15 @@
|
||||||
if not this.SIGNIN then return
|
if not this.SIGNIN then return
|
||||||
|
|
||||||
// Fetch session
|
// Fetch session
|
||||||
this.api 'auth/session/show' do
|
this.api('auth/session/show', {
|
||||||
token: @token
|
token: @token
|
||||||
.then (session) =>
|
}).then((session) => {
|
||||||
this.session = session
|
this.session = session
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
|
|
||||||
// 既に連携していた場合
|
// 既に連携していた場合
|
||||||
if @session.app.is_authorized
|
if @session.app.is_authorized
|
||||||
this.api 'auth/accept' do
|
this.api('auth/accept', {
|
||||||
token: @session.token
|
token: @session.token
|
||||||
.then =>
|
.then =>
|
||||||
@accepted!
|
@accepted!
|
||||||
|
|
|
@ -310,10 +310,10 @@
|
||||||
if (q == '') {
|
if (q == '') {
|
||||||
this.searchResult = [];
|
this.searchResult = [];
|
||||||
} else {
|
} else {
|
||||||
this.api 'users/search' do
|
this.api('users/search', {
|
||||||
query: q
|
query: q
|
||||||
max: 5
|
max: 5
|
||||||
.then (users) =>
|
}).then((users) => {
|
||||||
users.forEach (user) =>
|
users.forEach (user) =>
|
||||||
user._click = =>
|
user._click = =>
|
||||||
this.trigger 'navigate-user' user
|
this.trigger 'navigate-user' user
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'i/signin_history'
|
this.api 'i/signin_history'
|
||||||
.then (history) =>
|
}).then((history) => {
|
||||||
this.history = history
|
this.history = history
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -103,9 +103,9 @@
|
||||||
this.signing = false;
|
this.signing = false;
|
||||||
|
|
||||||
this.oninput = () => {
|
this.oninput = () => {
|
||||||
this.api 'users/show' do
|
this.api('users/show', {
|
||||||
username: this.refs.username.value
|
username: this.refs.username.value
|
||||||
.then (user) =>
|
}).then((user) => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.trigger 'user' user
|
this.trigger 'user' user
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -123,7 +123,7 @@
|
||||||
this.signing = true
|
this.signing = true
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'signin' do
|
this.api('signin', {
|
||||||
username: this.refs.username.value
|
username: this.refs.username.value
|
||||||
password: this.refs.password.value
|
password: this.refs.password.value
|
||||||
.then =>
|
.then =>
|
||||||
|
|
|
@ -220,9 +220,9 @@
|
||||||
this.username-state = 'wait'
|
this.username-state = 'wait'
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'username/available' do
|
this.api('username/available', {
|
||||||
username: username
|
username: username
|
||||||
.then (result) =>
|
}).then((result) => {
|
||||||
if result.available
|
if result.available
|
||||||
this.username-state = 'ok'
|
this.username-state = 'ok'
|
||||||
else
|
else
|
||||||
|
@ -271,14 +271,14 @@
|
||||||
const username = this.refs.username.value;
|
const username = this.refs.username.value;
|
||||||
const password = this.refs.password.value;
|
const password = this.refs.password.value;
|
||||||
|
|
||||||
locker = document.body.appendChild document.createElement 'mk-locker'
|
locker = document.body.appendChild(document.createElement('mk-locker'));
|
||||||
|
|
||||||
this.api 'signup' do
|
this.api('signup', {
|
||||||
username: username,
|
username: username,
|
||||||
password: password,
|
password: password,
|
||||||
'g-recaptcha-response': grecaptcha.getResponse()
|
'g-recaptcha-response': grecaptcha.getResponse()
|
||||||
.then =>
|
.then =>
|
||||||
this.api 'signin' do
|
this.api('signin', {
|
||||||
username: username
|
username: username
|
||||||
password: password
|
password: password
|
||||||
.then =>
|
.then =>
|
||||||
|
|
|
@ -95,10 +95,10 @@
|
||||||
Array.prototype.forEach.call all, (el) =>
|
Array.prototype.forEach.call all, (el) =>
|
||||||
el.addEventListener 'mousedown' @mousedown
|
el.addEventListener 'mousedown' @mousedown
|
||||||
|
|
||||||
this.api 'users/search_by_username' do
|
this.api('users/search_by_username', {
|
||||||
query: @q
|
query: @q
|
||||||
limit: 30users
|
limit: 30users
|
||||||
.then (users) =>
|
}).then((users) => {
|
||||||
this.users = users
|
this.users = users
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -114,7 +114,7 @@
|
||||||
|
|
||||||
this.mousedown = (e) => {
|
this.mousedown = (e) => {
|
||||||
if (!contains this.root, e.target) and (this.root != e.target)
|
if (!contains this.root, e.target) and (this.root != e.target)
|
||||||
@close!
|
@close();
|
||||||
|
|
||||||
this.on-click = (e) => {
|
this.on-click = (e) => {
|
||||||
@complete e.item
|
@complete e.item
|
||||||
|
@ -128,24 +128,24 @@
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@complete this.users[@select]
|
@complete this.users[@select]
|
||||||
else
|
else
|
||||||
@close!
|
@close();
|
||||||
| 27 => // Key[ESC]
|
| 27 => // Key[ESC]
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@close!
|
@close();
|
||||||
| 38 => // Key[↑]
|
| 38 => // Key[↑]
|
||||||
if @select != -1
|
if @select != -1
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@select-prev!
|
@select-prev!
|
||||||
else
|
else
|
||||||
@close!
|
@close();
|
||||||
| 9, 40 => // Key[TAB] or Key[↓]
|
| 9, 40 => // Key[TAB] or Key[↓]
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@select-next!
|
@select-next!
|
||||||
| _ =>
|
| _ =>
|
||||||
@close!
|
@close();
|
||||||
|
|
||||||
this.select-next = () => {
|
this.select-next = () => {
|
||||||
@select++
|
@select++
|
||||||
|
@ -174,7 +174,7 @@
|
||||||
this.opts.complete user
|
this.opts.complete user
|
||||||
|
|
||||||
this.close = () => {
|
this.close = () => {
|
||||||
this.opts.close!
|
this.opts.close();
|
||||||
|
|
||||||
function contains(parent, child)
|
function contains(parent, child)
|
||||||
node = child.parentNode
|
node = child.parentNode
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
this.wait = false
|
this.wait = false
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.user-promise.then (user) =>
|
this.user-promise}).then((user) => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.init = false
|
this.init = false
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
this.onclick = () => {
|
this.onclick = () => {
|
||||||
this.wait = true
|
this.wait = true
|
||||||
if this.user.is_following
|
if this.user.is_following
|
||||||
this.api 'following/delete' do
|
this.api('following/delete', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
.then =>
|
.then =>
|
||||||
this.user.is_following = false
|
this.user.is_following = false
|
||||||
|
@ -114,7 +114,7 @@
|
||||||
this.wait = false
|
this.wait = false
|
||||||
this.update();
|
this.update();
|
||||||
else
|
else
|
||||||
this.api 'following/create' do
|
this.api('following/create', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
.then =>
|
.then =>
|
||||||
this.user.is_following = true
|
this.user.is_following = true
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
this.mousedown = (e) => {
|
this.mousedown = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (!contains this.root, e.target) and (this.root != e.target)
|
if (!contains this.root, e.target) and (this.root != e.target)
|
||||||
@close!
|
@close();
|
||||||
return false
|
return false
|
||||||
|
|
||||||
this.open = (pos) => {
|
this.open = (pos) => {
|
||||||
|
|
|
@ -175,14 +175,14 @@
|
||||||
this.ok = () => {
|
this.ok = () => {
|
||||||
@cropper.get-cropped-canvas!.to-blob (blob) =>
|
@cropper.get-cropped-canvas!.to-blob (blob) =>
|
||||||
this.trigger 'cropped' blob
|
this.trigger 'cropped' blob
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
this.skip = () => {
|
this.skip = () => {
|
||||||
this.trigger('skiped');
|
this.trigger('skiped');
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
this.cancel = () => {
|
this.cancel = () => {
|
||||||
this.trigger('canceled');
|
this.trigger('canceled');
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
</script>
|
</script>
|
||||||
</mk-crop-window>
|
</mk-crop-window>
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
button._onclick = =>
|
button._onclick = =>
|
||||||
if button.onclick?
|
if button.onclick?
|
||||||
button.onclick();
|
button.onclick();
|
||||||
@close!
|
@close();
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.refs.header.innerHTML = this.opts.title
|
this.refs.header.innerHTML = this.opts.title
|
||||||
|
@ -142,6 +142,6 @@
|
||||||
if @can-through
|
if @can-through
|
||||||
if this.opts.on-through?
|
if this.opts.on-through?
|
||||||
this.opts.on-through!
|
this.opts.on-through!
|
||||||
@close!
|
@close();
|
||||||
</script>
|
</script>
|
||||||
</mk-dialog>
|
</mk-dialog>
|
||||||
|
|
|
@ -54,11 +54,13 @@
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
this.I.data.no_donation = true
|
this.I.data.no_donation = true;
|
||||||
this.I.update!
|
this.I.update();
|
||||||
this.api 'i/appdata/set' do
|
this.api('i/appdata/set', {
|
||||||
data: JSON.stringify do
|
data: JSON.stringify({
|
||||||
no_donation: this.I.data.no_donation
|
no_donation: this.I.data.no_donation
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
this.unmount();
|
this.unmount();
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,16 +23,16 @@
|
||||||
this.open = (pos) => {
|
this.open = (pos) => {
|
||||||
this.refs.ctx.open pos
|
this.refs.ctx.open pos
|
||||||
|
|
||||||
this.create-folder = () => {
|
this.createFolder = () => {
|
||||||
this.browser.create-folder!
|
this.browser.createFolder!
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
|
|
||||||
this.upload = () => {
|
this.upload = () => {
|
||||||
this.browser.select-local-file!
|
this.browser.select-local-file!
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
|
|
||||||
this.url-upload = () => {
|
this.url-upload = () => {
|
||||||
this.browser.url-upload!
|
this.browser.url-upload!
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
</script>
|
</script>
|
||||||
</mk-drive-browser-base-contextmenu>
|
</mk-drive-browser-base-contextmenu>
|
||||||
|
|
|
@ -36,11 +36,11 @@
|
||||||
this.refs.window.on('closed', () => {
|
this.refs.window.on('closed', () => {
|
||||||
this.unmount();
|
this.unmount();
|
||||||
|
|
||||||
this.api 'drive' .then (info) =>
|
this.api 'drive' }).then((info) => {
|
||||||
@update do
|
@update do
|
||||||
usage: info.usage / info.capacity * 100
|
usage: info.usage / info.capacity * 100
|
||||||
|
|
||||||
this.close = () => {
|
this.close = () => {
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
</script>
|
</script>
|
||||||
</mk-drive-browser-window>
|
</mk-drive-browser-window>
|
||||||
|
|
|
@ -405,7 +405,7 @@
|
||||||
if (this.files.some (f) => f.id == file)
|
if (this.files.some (f) => f.id == file)
|
||||||
return false
|
return false
|
||||||
@remove-file file
|
@remove-file file
|
||||||
this.api 'drive/files/update' do
|
this.api('drive/files/update', {
|
||||||
file_id: file
|
file_id: file
|
||||||
folder_id: if this.folder? then this.folder.id else null
|
folder_id: if this.folder? then this.folder.id else null
|
||||||
.then =>
|
.then =>
|
||||||
|
@ -422,7 +422,7 @@
|
||||||
if (this.folders.some (f) => f.id == folder)
|
if (this.folders.some (f) => f.id == folder)
|
||||||
return false
|
return false
|
||||||
@remove-folder folder
|
@remove-folder folder
|
||||||
this.api 'drive/folders/update' do
|
this.api('drive/folders/update', {
|
||||||
folder_id: folder
|
folder_id: folder
|
||||||
parent_id: if this.folder? then this.folder.id else null
|
parent_id: if this.folder? then this.folder.id else null
|
||||||
.then =>
|
.then =>
|
||||||
|
@ -442,8 +442,8 @@
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
|
|
||||||
ctx = document.body.appendChild document.createElement 'mk-drive-browser-base-contextmenu'
|
ctx = document.body.appendChild(document.createElement('mk-drive-browser-base-contextmenu'));
|
||||||
ctx = riot.mount ctx, do
|
ctx = riot.mount ctx, do
|
||||||
browser: this
|
browser: this
|
||||||
ctx = ctx.0
|
ctx = ctx.0
|
||||||
ctx.open do
|
ctx.open do
|
||||||
|
@ -462,7 +462,7 @@
|
||||||
null
|
null
|
||||||
|
|
||||||
if url? and url != ''
|
if url? and url != ''
|
||||||
this.api 'drive/files/upload_from_url' do
|
this.api('drive/files/upload_from_url', {
|
||||||
url: url
|
url: url
|
||||||
folder_id: if this.folder? then this.folder.id else undefined
|
folder_id: if this.folder? then this.folder.id else undefined
|
||||||
|
|
||||||
|
@ -473,16 +473,16 @@
|
||||||
text: 'OK'
|
text: 'OK'
|
||||||
]
|
]
|
||||||
|
|
||||||
this.create-folder = () => {
|
this.createFolder = () => {
|
||||||
name <~ @input-dialog do
|
name <~ @input-dialog do
|
||||||
'フォルダー作成'
|
'フォルダー作成'
|
||||||
'フォルダー名'
|
'フォルダー名'
|
||||||
null
|
null
|
||||||
|
|
||||||
this.api 'drive/folders/create' do
|
this.api('drive/folders/create', {
|
||||||
name: name
|
name: name
|
||||||
folder_id: if this.folder? then this.folder.id else undefined
|
folder_id: if this.folder? then this.folder.id else undefined
|
||||||
.then (folder) =>
|
}).then((folder) => {
|
||||||
@add-folder folder, true
|
@add-folder folder, true
|
||||||
this.update();
|
this.update();
|
||||||
.catch (err) =>
|
.catch (err) =>
|
||||||
|
@ -502,9 +502,9 @@
|
||||||
this.get-selection = () => {
|
this.get-selection = () => {
|
||||||
this.files.filter (file) -> file._selected
|
this.files.filter (file) -> file._selected
|
||||||
|
|
||||||
this.new-window = (folder-id) => {
|
this.newWindow = (folder-id) => {
|
||||||
browser = document.body.appendChild document.createElement 'mk-drive-browser-window'
|
browser = document.body.appendChild(document.createElement('mk-drive-browser-window'));
|
||||||
riot.mount browser, do
|
riot.mount browser, do
|
||||||
folder: folder-id
|
folder: folder-id
|
||||||
|
|
||||||
this.move = (target-folder) => {
|
this.move = (target-folder) => {
|
||||||
|
@ -518,9 +518,9 @@
|
||||||
this.loading = true
|
this.loading = true
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'drive/folders/show' do
|
this.api('drive/folders/show', {
|
||||||
folder_id: target-folder
|
folder_id: target-folder
|
||||||
.then (folder) =>
|
}).then((folder) => {
|
||||||
this.folder = folder
|
this.folder = folder
|
||||||
this.hierarchyFolders = []
|
this.hierarchyFolders = []
|
||||||
|
|
||||||
|
@ -607,10 +607,10 @@
|
||||||
files-max = 30
|
files-max = 30
|
||||||
|
|
||||||
// フォルダ一覧取得
|
// フォルダ一覧取得
|
||||||
this.api 'drive/folders' do
|
this.api('drive/folders', {
|
||||||
folder_id: if this.folder? then this.folder.id else null
|
folder_id: if this.folder? then this.folder.id else null
|
||||||
limit: folders-max + 1
|
limit: folders-max + 1
|
||||||
.then (folders) =>
|
}).then((folders) => {
|
||||||
if folders.length == folders-max + 1
|
if folders.length == folders-max + 1
|
||||||
this.more-folders = true
|
this.more-folders = true
|
||||||
folders.pop!
|
folders.pop!
|
||||||
|
@ -620,10 +620,10 @@
|
||||||
console.error err
|
console.error err
|
||||||
|
|
||||||
// ファイル一覧取得
|
// ファイル一覧取得
|
||||||
this.api 'drive/files' do
|
this.api('drive/files', {
|
||||||
folder_id: if this.folder? then this.folder.id else null
|
folder_id: if this.folder? then this.folder.id else null
|
||||||
limit: files-max + 1
|
limit: files-max + 1
|
||||||
.then (files) =>
|
}).then((files) => {
|
||||||
if files.length == files-max + 1
|
if files.length == files-max + 1
|
||||||
this.more-files = true
|
this.more-files = true
|
||||||
files.pop!
|
files.pop!
|
||||||
|
|
|
@ -58,14 +58,14 @@
|
||||||
this.refs.ctx.open pos
|
this.refs.ctx.open pos
|
||||||
|
|
||||||
this.rename = () => {
|
this.rename = () => {
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
|
|
||||||
name <~ @input-dialog do
|
name <~ @input-dialog do
|
||||||
'ファイル名の変更'
|
'ファイル名の変更'
|
||||||
'新しいファイル名を入力してください'
|
'新しいファイル名を入力してください'
|
||||||
this.file.name
|
this.file.name
|
||||||
|
|
||||||
this.api 'drive/files/update' do
|
this.api('drive/files/update', {
|
||||||
file_id: this.file.id
|
file_id: this.file.id
|
||||||
name: name
|
name: name
|
||||||
.then =>
|
.then =>
|
||||||
|
@ -77,18 +77,18 @@
|
||||||
@NotImplementedException!
|
@NotImplementedException!
|
||||||
|
|
||||||
this.download = () => {
|
this.download = () => {
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
|
|
||||||
this.set-avatar = () => {
|
this.set-avatar = () => {
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
@update-avatar this.I, null, this.file
|
@update-avatar this.I, null, this.file
|
||||||
|
|
||||||
this.set-banner = () => {
|
this.set-banner = () => {
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
@update-banner this.I, null, this.file
|
@update-banner this.I, null, this.file
|
||||||
|
|
||||||
this.set-wallpaper = () => {
|
this.set-wallpaper = () => {
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
@update-wallpaper this.I, null, this.file
|
@update-wallpaper this.I, null, this.file
|
||||||
|
|
||||||
this.add-app = () => {
|
this.add-app = () => {
|
||||||
|
|
|
@ -177,8 +177,8 @@
|
||||||
|
|
||||||
this.is-contextmenu-showing = true
|
this.is-contextmenu-showing = true
|
||||||
this.update();
|
this.update();
|
||||||
ctx = document.body.appendChild document.createElement 'mk-drive-browser-file-contextmenu'
|
ctx = document.body.appendChild(document.createElement('mk-drive-browser-file-contextmenu'));
|
||||||
ctx = riot.mount ctx, do
|
ctx = riot.mount ctx, do
|
||||||
browser: this.browser
|
browser: this.browser
|
||||||
file: this.file
|
file: this.file
|
||||||
ctx = ctx.0
|
ctx = ctx.0
|
||||||
|
|
|
@ -21,11 +21,11 @@
|
||||||
this.mixin('api');
|
this.mixin('api');
|
||||||
this.mixin('input-dialog');
|
this.mixin('input-dialog');
|
||||||
|
|
||||||
this.browser = this.opts.browser
|
this.browser = this.opts.browser;
|
||||||
this.folder = this.opts.folder
|
this.folder = this.opts.folder;
|
||||||
|
|
||||||
this.open = (pos) => {
|
this.open = pos => {
|
||||||
this.refs.ctx.open pos
|
this.refs.ctx.open(pos);
|
||||||
|
|
||||||
this.refs.ctx.on('closed', () => {
|
this.refs.ctx.on('closed', () => {
|
||||||
this.trigger('closed');
|
this.trigger('closed');
|
||||||
|
@ -33,29 +33,25 @@
|
||||||
|
|
||||||
this.move = () => {
|
this.move = () => {
|
||||||
this.browser.move this.folder.id
|
this.browser.move this.folder.id
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
|
|
||||||
this.new-window = () => {
|
this.newWindow = () => {
|
||||||
this.browser.new-window this.folder.id
|
this.browser.newWindow this.folder.id
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
|
|
||||||
this.create-folder = () => {
|
this.createFolder = () => {
|
||||||
this.browser.create-folder!
|
this.browser.createFolder();
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
|
|
||||||
this.upload = () => {
|
|
||||||
this.browser.select-lcoal-file!
|
|
||||||
this.refs.ctx.close!
|
|
||||||
|
|
||||||
this.rename = () => {
|
this.rename = () => {
|
||||||
this.refs.ctx.close!
|
this.refs.ctx.close();
|
||||||
|
|
||||||
name <~ @input-dialog do
|
name <~ @input-dialog do
|
||||||
'フォルダ名の変更'
|
'フォルダ名の変更'
|
||||||
'新しいフォルダ名を入力してください'
|
'新しいフォルダ名を入力してください'
|
||||||
this.folder.name
|
this.folder.name
|
||||||
|
|
||||||
this.api 'drive/folders/update' do
|
this.api('drive/folders/update', {
|
||||||
folder_id: this.folder.id
|
folder_id: this.folder.id
|
||||||
name: name
|
name: name
|
||||||
.then =>
|
.then =>
|
||||||
|
|
|
@ -115,7 +115,7 @@
|
||||||
if obj.type == 'file'
|
if obj.type == 'file'
|
||||||
file = obj.id
|
file = obj.id
|
||||||
this.browser.remove-file file
|
this.browser.remove-file file
|
||||||
this.api 'drive/files/update' do
|
this.api('drive/files/update', {
|
||||||
file_id: file
|
file_id: file
|
||||||
folder_id: this.folder.id
|
folder_id: this.folder.id
|
||||||
.then =>
|
.then =>
|
||||||
|
@ -130,7 +130,7 @@
|
||||||
if folder == this.folder.id
|
if folder == this.folder.id
|
||||||
return false
|
return false
|
||||||
this.browser.remove-folder folder
|
this.browser.remove-folder folder
|
||||||
this.api 'drive/folders/update' do
|
this.api('drive/folders/update', {
|
||||||
folder_id: folder
|
folder_id: folder
|
||||||
parent_id: this.folder.id
|
parent_id: this.folder.id
|
||||||
.then =>
|
.then =>
|
||||||
|
@ -167,8 +167,8 @@
|
||||||
|
|
||||||
this.is-contextmenu-showing = true
|
this.is-contextmenu-showing = true
|
||||||
this.update();
|
this.update();
|
||||||
ctx = document.body.appendChild document.createElement 'mk-drive-browser-folder-contextmenu'
|
ctx = document.body.appendChild(document.createElement('mk-drive-browser-folder-contextmenu'));
|
||||||
ctx = riot.mount ctx, do
|
ctx = riot.mount ctx, do
|
||||||
browser: this.browser
|
browser: this.browser
|
||||||
folder: this.folder
|
folder: this.folder
|
||||||
ctx = ctx.0
|
ctx = ctx.0
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
if obj.type == 'file'
|
if obj.type == 'file'
|
||||||
file = obj.id
|
file = obj.id
|
||||||
this.browser.remove-file file
|
this.browser.remove-file file
|
||||||
this.api 'drive/files/update' do
|
this.api('drive/files/update', {
|
||||||
file_id: file
|
file_id: file
|
||||||
folder_id: if this.folder? then this.folder.id else null
|
folder_id: if this.folder? then this.folder.id else null
|
||||||
.then =>
|
.then =>
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
if this.folder? and folder == this.folder.id
|
if this.folder? and folder == this.folder.id
|
||||||
return false
|
return false
|
||||||
this.browser.remove-folder folder
|
this.browser.remove-folder folder
|
||||||
this.api 'drive/folders/update' do
|
this.api('drive/folders/update', {
|
||||||
folder_id: folder
|
folder_id: folder
|
||||||
parent_id: if this.folder? then this.folder.id else null
|
parent_id: if this.folder? then this.folder.id else null
|
||||||
.then =>
|
.then =>
|
||||||
|
|
|
@ -77,7 +77,7 @@
|
||||||
this.wait = false
|
this.wait = false
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.user-promise.then (user) =>
|
this.user-promise}).then((user) => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.init = false
|
this.init = false
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -101,7 +101,7 @@
|
||||||
this.onclick = () => {
|
this.onclick = () => {
|
||||||
this.wait = true
|
this.wait = true
|
||||||
if this.user.is_following
|
if this.user.is_following
|
||||||
this.api 'following/delete' do
|
this.api('following/delete', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
.then =>
|
.then =>
|
||||||
this.user.is_following = false
|
this.user.is_following = false
|
||||||
|
@ -111,7 +111,7 @@
|
||||||
this.wait = false
|
this.wait = false
|
||||||
this.update();
|
this.update();
|
||||||
else
|
else
|
||||||
this.api 'following/create' do
|
this.api('following/create', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
.then =>
|
.then =>
|
||||||
this.user.is_following = true
|
this.user.is_following = true
|
||||||
|
|
|
@ -140,10 +140,10 @@
|
||||||
this.users = null
|
this.users = null
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'users/recommendation' do
|
this.api('users/recommendation', {
|
||||||
limit: @limit
|
limit: @limit
|
||||||
offset: @limit * this.page
|
offset: @limit * this.page
|
||||||
.then (users) =>
|
}).then((users) => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.users = users
|
this.users = users
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -72,9 +72,9 @@
|
||||||
this.refs.timeline.focus();
|
this.refs.timeline.focus();
|
||||||
|
|
||||||
this.fetch = (cb) => {
|
this.fetch = (cb) => {
|
||||||
this.api 'posts/mentions' do
|
this.api('posts/mentions', {
|
||||||
following: this.mode == 'following'
|
following: this.mode == 'following'
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.is-loading = false
|
this.is-loading = false
|
||||||
this.is-empty = posts.length == 0
|
this.is-empty = posts.length == 0
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -89,10 +89,10 @@
|
||||||
return
|
return
|
||||||
this.more-loading = true
|
this.more-loading = true
|
||||||
this.update();
|
this.update();
|
||||||
this.api 'posts/mentions' do
|
this.api('posts/mentions', {
|
||||||
following: this.mode == 'following'
|
following: this.mode == 'following'
|
||||||
max_id: this.refs.timeline.tail!.id
|
max_id: this.refs.timeline.tail!.id
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.more-loading = false
|
this.more-loading = false
|
||||||
this.update();
|
this.update();
|
||||||
this.refs.timeline.prepend-posts posts
|
this.refs.timeline.prepend-posts posts
|
||||||
|
|
|
@ -66,10 +66,10 @@
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.stream.on 'drive_file_created' this.on-stream-drive-file-created
|
this.stream.on 'drive_file_created' this.on-stream-drive-file-created
|
||||||
|
|
||||||
this.api 'drive/stream' do
|
this.api('drive/stream', {
|
||||||
type: 'image/*'
|
type: 'image/*'
|
||||||
limit: 9images
|
limit: 9images
|
||||||
.then (images) =>
|
}).then((images) => {
|
||||||
this.initializing = false
|
this.initializing = false
|
||||||
this.images = images
|
this.images = images
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
this.fetch = () => {
|
this.fetch = () => {
|
||||||
this.api CONFIG.url + '/api:rss' do
|
this.api CONFIG.url + '/api:rss' do
|
||||||
url: @url
|
url: @url
|
||||||
.then (feed) =>
|
}).then((feed) => {
|
||||||
this.items = feed.rss.channel.item
|
this.items = feed.rss.channel.item
|
||||||
this.initializing = false
|
this.initializing = false
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
|
|
||||||
this.load = (cb) => {
|
this.load = (cb) => {
|
||||||
this.api 'posts/timeline'
|
this.api 'posts/timeline'
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.is-loading = false
|
this.is-loading = false
|
||||||
this.is-empty = posts.length == 0
|
this.is-empty = posts.length == 0
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -83,9 +83,9 @@
|
||||||
return
|
return
|
||||||
this.more-loading = true
|
this.more-loading = true
|
||||||
this.update();
|
this.update();
|
||||||
this.api 'posts/timeline' do
|
this.api('posts/timeline', {
|
||||||
max_id: this.refs.timeline.tail!.id
|
max_id: this.refs.timeline.tail!.id
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.more-loading = false
|
this.more-loading = false
|
||||||
this.update();
|
this.update();
|
||||||
this.refs.timeline.prepend-posts posts
|
this.refs.timeline.prepend-posts posts
|
||||||
|
|
|
@ -132,10 +132,10 @@
|
||||||
this.loading = true
|
this.loading = true
|
||||||
this.users = null
|
this.users = null
|
||||||
if not quiet then this.update();
|
if not quiet then this.update();
|
||||||
this.api 'users/recommendation' do
|
this.api('users/recommendation', {
|
||||||
limit: @limit
|
limit: @limit
|
||||||
offset: @limit * this.page
|
offset: @limit * this.page
|
||||||
.then (users) =>
|
}).then((users) => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.users = users
|
this.users = users
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -38,8 +38,8 @@
|
||||||
this.refs.view.style.background-position = xp + '% ' + yp + '%'
|
this.refs.view.style.background-position = xp + '% ' + yp + '%'
|
||||||
|
|
||||||
this.click = () => {
|
this.click = () => {
|
||||||
dialog = document.body.appendChild document.createElement 'mk-image-dialog'
|
dialog = document.body.appendChild(document.createElement('mk-image-dialog'));
|
||||||
riot.mount dialog, do
|
riot.mount dialog, do
|
||||||
image: @image
|
image: @image
|
||||||
</script>
|
</script>
|
||||||
</mk-images-viewer>
|
</mk-images-viewer>
|
||||||
|
|
|
@ -141,12 +141,12 @@
|
||||||
|
|
||||||
this.cancel = () => {
|
this.cancel = () => {
|
||||||
this.done = false
|
this.done = false
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
this.ok = () => {
|
this.ok = () => {
|
||||||
if not @allow-empty and @text.value == '' then return
|
if not @allow-empty and @text.value == '' then return
|
||||||
this.done = true
|
this.done = true
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
this.on-keydown = (e) => {
|
this.on-keydown = (e) => {
|
||||||
if e.which == 13 // Enter
|
if e.which == 13 // Enter
|
||||||
|
|
|
@ -24,8 +24,8 @@
|
||||||
this.unmount();
|
this.unmount();
|
||||||
|
|
||||||
this.refs.window.refs.index.on('navigate-user', user => {
|
this.refs.window.refs.index.on('navigate-user', user => {
|
||||||
w = document.body.appendChild document.createElement 'mk-messaging-room-window'
|
w = document.body.appendChild(document.createElement('mk-messaging-room-window'));
|
||||||
riot.mount w, do
|
riot.mount w, do
|
||||||
user: user
|
user: user
|
||||||
</script>
|
</script>
|
||||||
</mk-messaging-window>
|
</mk-messaging-window>
|
||||||
|
|
|
@ -187,7 +187,7 @@
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'i/notifications'
|
this.api 'i/notifications'
|
||||||
.then (notifications) =>
|
}).then((notifications) => {
|
||||||
this.notifications = notifications
|
this.notifications = notifications
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -125,13 +125,13 @@
|
||||||
|
|
||||||
this.like = () => {
|
this.like = () => {
|
||||||
if this.post.is_liked
|
if this.post.is_liked
|
||||||
this.api 'posts/likes/delete' do
|
this.api('posts/likes/delete', {
|
||||||
post_id: this.post.id
|
post_id: this.post.id
|
||||||
.then =>
|
.then =>
|
||||||
this.post.is_liked = false
|
this.post.is_liked = false
|
||||||
this.update();
|
this.update();
|
||||||
else
|
else
|
||||||
this.api 'posts/likes/create' do
|
this.api('posts/likes/create', {
|
||||||
post_id: this.post.id
|
post_id: this.post.id
|
||||||
.then =>
|
.then =>
|
||||||
this.post.is_liked = true
|
this.post.is_liked = true
|
||||||
|
|
|
@ -342,9 +342,9 @@
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
|
|
||||||
this.api 'posts/show' do
|
this.api('posts/show', {
|
||||||
post_id: this.opts.post
|
post_id: this.opts.post
|
||||||
.then (post) =>
|
}).then((post) => {
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
this.post = post
|
this.post = post
|
||||||
this.trigger('loaded');
|
this.trigger('loaded');
|
||||||
|
@ -368,55 +368,55 @@
|
||||||
tokens
|
tokens
|
||||||
.filter (t) -> t.type == 'link'
|
.filter (t) -> t.type == 'link'
|
||||||
.map (t) =>
|
.map (t) =>
|
||||||
this.preview = this.refs.text.appendChild document.createElement 'mk-url-preview'
|
this.preview = this.refs.text.appendChild(document.createElement('mk-url-preview'));
|
||||||
riot.mount this.preview, do
|
riot.mount this.preview, do
|
||||||
url: t.content
|
url: t.content
|
||||||
|
|
||||||
// Get likes
|
// Get likes
|
||||||
this.api 'posts/likes' do
|
this.api('posts/likes', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
limit: 8
|
limit: 8
|
||||||
.then (likes) =>
|
}).then((likes) => {
|
||||||
this.likes = likes
|
this.likes = likes
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
// Get reposts
|
// Get reposts
|
||||||
this.api 'posts/reposts' do
|
this.api('posts/reposts', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
limit: 8
|
limit: 8
|
||||||
.then (reposts) =>
|
}).then((reposts) => {
|
||||||
this.reposts = reposts
|
this.reposts = reposts
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
// Get replies
|
// Get replies
|
||||||
this.api 'posts/replies' do
|
this.api('posts/replies', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
limit: 8
|
limit: 8
|
||||||
.then (replies) =>
|
}).then((replies) => {
|
||||||
this.replies = replies
|
this.replies = replies
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.reply = () => {
|
this.reply = () => {
|
||||||
form = document.body.appendChild document.createElement 'mk-post-form-window'
|
form = document.body.appendChild(document.createElement('mk-post-form-window'));
|
||||||
riot.mount form, do
|
riot.mount form, do
|
||||||
reply: this.p
|
reply: this.p
|
||||||
|
|
||||||
this.repost = () => {
|
this.repost = () => {
|
||||||
form = document.body.appendChild document.createElement 'mk-repost-form-window'
|
form = document.body.appendChild(document.createElement('mk-repost-form-window'));
|
||||||
riot.mount form, do
|
riot.mount form, do
|
||||||
post: this.p
|
post: this.p
|
||||||
|
|
||||||
this.like = () => {
|
this.like = () => {
|
||||||
if this.p.is_liked
|
if this.p.is_liked
|
||||||
this.api 'posts/likes/delete' do
|
this.api('posts/likes/delete', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
.then =>
|
.then =>
|
||||||
this.p.is_liked = false
|
this.p.is_liked = false
|
||||||
this.update();
|
this.update();
|
||||||
else
|
else
|
||||||
this.api 'posts/likes/create' do
|
this.api('posts/likes/create', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
.then =>
|
.then =>
|
||||||
this.p.is_liked = true
|
this.p.is_liked = true
|
||||||
|
@ -426,9 +426,9 @@
|
||||||
this.loading-context = true
|
this.loading-context = true
|
||||||
|
|
||||||
// Get context
|
// Get context
|
||||||
this.api 'posts/context' do
|
this.api('posts/context', {
|
||||||
post_id: this.p.reply_to_id
|
post_id: this.p.reply_to_id
|
||||||
.then (context) =>
|
}).then((context) => {
|
||||||
this.context = context.reverse!
|
this.context = context.reverse!
|
||||||
this.loading-context = false
|
this.loading-context = false
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
this.unmount();
|
this.unmount();
|
||||||
|
|
||||||
this.refs.window.refs.form.on('post', () => {
|
this.refs.window.refs.form.on('post', () => {
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
this.refs.window.refs.form.on('change-uploading-files', (files) => {
|
this.refs.window.refs.form.on('change-uploading-files', (files) => {
|
||||||
this.uploading-files = files
|
this.uploading-files = files
|
||||||
|
|
|
@ -405,8 +405,8 @@
|
||||||
this.refs.file.click();
|
this.refs.file.click();
|
||||||
|
|
||||||
this.select-file-from-drive = () => {
|
this.select-file-from-drive = () => {
|
||||||
browser = document.body.appendChild document.createElement 'mk-select-file-from-drive-window'
|
browser = document.body.appendChild(document.createElement('mk-select-file-from-drive-window'));
|
||||||
i = riot.mount browser, do
|
i = riot.mount browser, do
|
||||||
multiple: true
|
multiple: true
|
||||||
i[0].one 'selected' (files) =>
|
i[0].one 'selected' (files) =>
|
||||||
files.forEach @add-file
|
files.forEach @add-file
|
||||||
|
@ -444,12 +444,12 @@
|
||||||
then this.files.map (f) -> f.id
|
then this.files.map (f) -> f.id
|
||||||
else undefined
|
else undefined
|
||||||
|
|
||||||
this.api 'posts/create' do
|
this.api('posts/create', {
|
||||||
text: this.refs.text.value
|
text: this.refs.text.value
|
||||||
media_ids: files
|
media_ids: files
|
||||||
reply_to_id: if @in-reply-to-post? then @in-reply-to-post.id else undefined
|
reply_to_id: if @in-reply-to-post? then @in-reply-to-post.id else undefined
|
||||||
poll: if this.poll then this.refs.poll.get! else undefined
|
poll: if this.poll then this.refs.poll.get! else undefined
|
||||||
.then (data) =>
|
}).then((data) => {
|
||||||
this.trigger('post');
|
this.trigger('post');
|
||||||
@notify if @in-reply-to-post? then '返信しました!' else '投稿しました!'
|
@notify if @in-reply-to-post? then '返信しました!' else '投稿しました!'
|
||||||
.catch (err) =>
|
.catch (err) =>
|
||||||
|
|
|
@ -20,22 +20,22 @@
|
||||||
this.post = post
|
this.post = post
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'aggregation/posts/like' do
|
this.api('aggregation/posts/like', {
|
||||||
post_id: this.post.id
|
post_id: this.post.id
|
||||||
limit: 30days
|
limit: 30days
|
||||||
.then (likes) =>
|
}).then((likes) => {
|
||||||
likes = likes.reverse!
|
likes = likes.reverse!
|
||||||
|
|
||||||
this.api 'aggregation/posts/repost' do
|
this.api('aggregation/posts/repost', {
|
||||||
post_id: this.post.id
|
post_id: this.post.id
|
||||||
limit: 30days
|
limit: 30days
|
||||||
.then (repost) =>
|
}).then((repost) => {
|
||||||
repost = repost.reverse!
|
repost = repost.reverse!
|
||||||
|
|
||||||
this.api 'aggregation/posts/reply' do
|
this.api('aggregation/posts/reply', {
|
||||||
post_id: this.post.id
|
post_id: this.post.id
|
||||||
limit: 30days
|
limit: 30days
|
||||||
.then (replies) =>
|
}).then((replies) => {
|
||||||
replies = replies.reverse!
|
replies = replies.reverse!
|
||||||
|
|
||||||
new Chart this.refs.canv, do
|
new Chart this.refs.canv, do
|
||||||
|
|
|
@ -89,6 +89,6 @@
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.close = () => {
|
this.close = () => {
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
</script>
|
</script>
|
||||||
</mk-progress-dialog>
|
</mk-progress-dialog>
|
||||||
|
|
|
@ -16,14 +16,14 @@
|
||||||
tag = e.target.tag-name.to-lower-case!
|
tag = e.target.tag-name.to-lower-case!
|
||||||
if tag != 'input' and tag != 'textarea'
|
if tag != 'input' and tag != 'textarea'
|
||||||
if e.which == 27 // Esc
|
if e.which == 27 // Esc
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.refs.window.refs.form.on('cancel', () => {
|
this.refs.window.refs.form.on('cancel', () => {
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
this.refs.window.refs.form.on('posted', () => {
|
this.refs.window.refs.form.on('posted', () => {
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
document.addEventListener 'keydown' this.on-document-keydown
|
document.addEventListener 'keydown' this.on-document-keydown
|
||||||
|
|
||||||
|
|
|
@ -125,10 +125,10 @@
|
||||||
|
|
||||||
this.ok = () => {
|
this.ok = () => {
|
||||||
this.wait = true
|
this.wait = true
|
||||||
this.api 'posts/create' do
|
this.api('posts/create', {
|
||||||
repost_id: this.opts.post.id
|
repost_id: this.opts.post.id
|
||||||
text: if @quote then this.refs.text.value else undefined
|
text: if @quote then this.refs.text.value else undefined
|
||||||
.then (data) =>
|
}).then((data) => {
|
||||||
this.trigger('posted');
|
this.trigger('posted');
|
||||||
@notify 'Repostしました!'
|
@notify 'Repostしました!'
|
||||||
.catch (err) =>
|
.catch (err) =>
|
||||||
|
|
|
@ -41,9 +41,9 @@
|
||||||
document.addEventListener 'keydown' this.on-document-keydown
|
document.addEventListener 'keydown' this.on-document-keydown
|
||||||
window.addEventListener 'scroll' this.on-scroll
|
window.addEventListener 'scroll' this.on-scroll
|
||||||
|
|
||||||
this.api 'posts/search' do
|
this.api('posts/search', {
|
||||||
query: @query
|
query: @query
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.is-loading = false
|
this.is-loading = false
|
||||||
this.is-empty = posts.length == 0
|
this.is-empty = posts.length == 0
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -67,10 +67,10 @@
|
||||||
return
|
return
|
||||||
this.more-loading = true
|
this.more-loading = true
|
||||||
this.update();
|
this.update();
|
||||||
this.api 'posts/search' do
|
this.api('posts/search', {
|
||||||
query: @query
|
query: @query
|
||||||
page: this.page + 1
|
page: this.page + 1
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.more-loading = false
|
this.more-loading = false
|
||||||
this.page++
|
this.page++
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -149,13 +149,13 @@
|
||||||
this.unmount();
|
this.unmount();
|
||||||
|
|
||||||
this.close = () => {
|
this.close = () => {
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
|
|
||||||
this.upload = () => {
|
this.upload = () => {
|
||||||
this.refs.window.refs.browser.select-local-file!
|
this.refs.window.refs.browser.select-local-file!
|
||||||
|
|
||||||
this.ok = () => {
|
this.ok = () => {
|
||||||
this.trigger 'selected' this.file
|
this.trigger 'selected' this.file
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
</script>
|
</script>
|
||||||
</mk-select-file-from-drive-window>
|
</mk-select-file-from-drive-window>
|
||||||
|
|
|
@ -20,6 +20,6 @@
|
||||||
this.unmount();
|
this.unmount();
|
||||||
|
|
||||||
this.close = () => {
|
this.close = () => {
|
||||||
this.refs.window.close!
|
this.refs.window.close();
|
||||||
</script>
|
</script>
|
||||||
</mk-settings-window>
|
</mk-settings-window>
|
||||||
|
|
|
@ -212,31 +212,31 @@
|
||||||
@update-avatar this.I
|
@update-avatar this.I
|
||||||
|
|
||||||
this.update-account = () => {
|
this.update-account = () => {
|
||||||
this.api 'i/update' do
|
this.api('i/update', {
|
||||||
name: this.refs.account-name.value
|
name: this.refs.account-name.value
|
||||||
location: this.refs.account-location.value
|
location: this.refs.account-location.value
|
||||||
bio: this.refs.account-bio.value
|
bio: this.refs.account-bio.value
|
||||||
birthday: this.refs.account-birthday.value
|
birthday: this.refs.account-birthday.value
|
||||||
.then (i) =>
|
}).then((i) => {
|
||||||
alert 'ok'
|
alert 'ok'
|
||||||
.catch (err) =>
|
.catch (err) =>
|
||||||
console.error err
|
console.error err
|
||||||
|
|
||||||
this.update-cache = () => {
|
this.update-cache = () => {
|
||||||
this.I.data.cache = !this.I.data.cache
|
this.I.data.cache = !this.I.data.cache
|
||||||
this.api 'i/appdata/set' do
|
this.api('i/appdata/set', {
|
||||||
data: JSON.stringify do
|
data: JSON.stringify do
|
||||||
cache: this.I.data.cache
|
cache: this.I.data.cache
|
||||||
|
|
||||||
this.update-debug = () => {
|
this.update-debug = () => {
|
||||||
this.I.data.debug = !this.I.data.debug
|
this.I.data.debug = !this.I.data.debug
|
||||||
this.api 'i/appdata/set' do
|
this.api('i/appdata/set', {
|
||||||
data: JSON.stringify do
|
data: JSON.stringify do
|
||||||
debug: this.I.data.debug
|
debug: this.I.data.debug
|
||||||
|
|
||||||
this.update-nya = () => {
|
this.update-nya = () => {
|
||||||
this.I.data.nya = !this.I.data.nya
|
this.I.data.nya = !this.I.data.nya
|
||||||
this.api 'i/appdata/set' do
|
this.api('i/appdata/set', {
|
||||||
data: JSON.stringify do
|
data: JSON.stringify do
|
||||||
nya: this.I.data.nya
|
nya: this.I.data.nya
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -55,8 +55,13 @@
|
||||||
<button class={ liked: p.is_liked } onclick={ like } title="善哉"><i class="fa fa-thumbs-o-up"></i>
|
<button class={ liked: p.is_liked } onclick={ like } title="善哉"><i class="fa fa-thumbs-o-up"></i>
|
||||||
<p class="count" if={ p.likes_count > 0 }>{ p.likes_count }</p>
|
<p class="count" if={ p.likes_count > 0 }>{ p.likes_count }</p>
|
||||||
</button>
|
</button>
|
||||||
<button onclick={ NotImplementedException }><i class="fa fa-ellipsis-h"></i></button>
|
<button onclick={ NotImplementedException }>
|
||||||
<button onclick={ toggleDetail } title="詳細"><i class="fa fa-caret-down" if={ !isDetailOpened }></i><i class="fa fa-caret-up" if={ isDetailOpened }></i></button>
|
<i class="fa fa-ellipsis-h"></i>
|
||||||
|
</button>
|
||||||
|
<button onclick={ toggleDetail } title="詳細">
|
||||||
|
<i class="fa fa-caret-down" if={ !isDetailOpened }></i>
|
||||||
|
<i class="fa fa-caret-up" if={ isDetailOpened }></i>
|
||||||
|
</button>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
@ -328,46 +333,45 @@
|
||||||
this.isDetailOpened = false;
|
this.isDetailOpened = false;
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
if this.p.text?
|
if (this.p.text) {
|
||||||
tokens = if this.p._highlight?
|
const tokens = this.analyze(this.p.text);
|
||||||
then @analyze this.p._highlight
|
|
||||||
else @analyze this.p.text
|
|
||||||
|
|
||||||
this.refs.text.innerHTML = this.refs.text.innerHTML.replace '<p class="dummy"></p>' if this.p._highlight?
|
this.refs.text.innerHTML = this.refs.text.innerHTML.replace('<p class="dummy"></p>', this.compile(tokens));
|
||||||
then @compile tokens, true, false
|
|
||||||
else @compile tokens
|
|
||||||
|
|
||||||
this.refs.text.children.forEach (e) =>
|
this.refs.text.children.forEach(e => {
|
||||||
if e.tag-name == 'MK-URL'
|
if (e.tagName == 'MK-URL') riot.mount(e);
|
||||||
riot.mount e
|
});
|
||||||
|
|
||||||
// URLをプレビュー
|
// URLをプレビュー
|
||||||
tokens
|
tokens
|
||||||
.filter (t) -> t.type == 'link'
|
.filter(t => t.type == 'link')
|
||||||
.map (t) =>
|
.map(t => {
|
||||||
this.preview = this.refs.text.appendChild document.createElement 'mk-url-preview'
|
riot.mount(this.refs.text.appendChild(document.createElement('mk-url-preview')), {
|
||||||
riot.mount this.preview, do
|
url: t.content
|
||||||
url: t.content
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.reply = () => {
|
this.reply = () => {
|
||||||
form = document.body.appendChild document.createElement 'mk-post-form-window'
|
form = document.body.appendChild(document.createElement('mk-post-form-window'));
|
||||||
riot.mount form, do
|
riot.mount form, do
|
||||||
reply: this.p
|
reply: this.p
|
||||||
|
|
||||||
this.repost = () => {
|
this.repost = () => {
|
||||||
form = document.body.appendChild document.createElement 'mk-repost-form-window'
|
form = document.body.appendChild(document.createElement('mk-repost-form-window'));
|
||||||
riot.mount form, do
|
riot.mount form, do
|
||||||
post: this.p
|
post: this.p
|
||||||
|
|
||||||
this.like = () => {
|
this.like = () => {
|
||||||
if this.p.is_liked
|
if this.p.is_liked
|
||||||
this.api 'posts/likes/delete' do
|
this.api('posts/likes/delete', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
.then =>
|
.then =>
|
||||||
this.p.is_liked = false
|
this.p.is_liked = false
|
||||||
this.update();
|
this.update();
|
||||||
else
|
else
|
||||||
this.api 'posts/likes/create' do
|
this.api('posts/likes/create', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
.then =>
|
.then =>
|
||||||
this.p.is_liked = true
|
this.p.is_liked = true
|
||||||
|
|
|
@ -165,11 +165,11 @@
|
||||||
this.is-open = false
|
this.is-open = false
|
||||||
|
|
||||||
this.on('before-unmount', () => {
|
this.on('before-unmount', () => {
|
||||||
@close!
|
@close();
|
||||||
|
|
||||||
this.toggle = () => {
|
this.toggle = () => {
|
||||||
if @is-open
|
if @is-open
|
||||||
@close!
|
@close();
|
||||||
else
|
else
|
||||||
@open!
|
@open!
|
||||||
|
|
||||||
|
@ -190,16 +190,16 @@
|
||||||
this.mousedown = (e) => {
|
this.mousedown = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (!contains this.root, e.target) and (this.root != e.target)
|
if (!contains this.root, e.target) and (this.root != e.target)
|
||||||
@close!
|
@close();
|
||||||
return false
|
return false
|
||||||
|
|
||||||
this.drive = () => {
|
this.drive = () => {
|
||||||
@close!
|
@close();
|
||||||
riot.mount document.body.appendChild document.createElement 'mk-drive-browser-window'
|
riot.mount document.body.appendChild(document.createElement('mk-drive-browser-window'));
|
||||||
|
|
||||||
this.settings = () => {
|
this.settings = () => {
|
||||||
@close!
|
@close();
|
||||||
riot.mount document.body.appendChild document.createElement 'mk-settings-window'
|
riot.mount document.body.appendChild(document.createElement('mk-settings-window'));
|
||||||
|
|
||||||
function contains(parent, child)
|
function contains(parent, child)
|
||||||
node = child.parentNode
|
node = child.parentNode
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
|
|
||||||
// Fetch count of unread messaging messages
|
// Fetch count of unread messaging messages
|
||||||
this.api 'messaging/unread'
|
this.api 'messaging/unread'
|
||||||
.then (count) =>
|
}).then((count) => {
|
||||||
if count.count > 0
|
if count.count > 0
|
||||||
this.has-unread-messaging-messages = true
|
this.has-unread-messaging-messages = true
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.messaging = () => {
|
this.messaging = () => {
|
||||||
riot.mount document.body.appendChild document.createElement 'mk-messaging-window'
|
riot.mount document.body.appendChild(document.createElement('mk-messaging-window'));
|
||||||
</script>
|
</script>
|
||||||
</ul>
|
</ul>
|
||||||
</mk-ui-header-nav>
|
</mk-ui-header-nav>
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
|
|
||||||
this.toggle = () => {
|
this.toggle = () => {
|
||||||
if @is-open
|
if @is-open
|
||||||
@close!
|
@close();
|
||||||
else
|
else
|
||||||
@open!
|
@open!
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@
|
||||||
this.mousedown = (e) => {
|
this.mousedown = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (!contains this.root, e.target) and (this.root != e.target)
|
if (!contains this.root, e.target) and (this.root != e.target)
|
||||||
@close!
|
@close();
|
||||||
return false
|
return false
|
||||||
|
|
||||||
function contains(parent, child)
|
function contains(parent, child)
|
||||||
|
|
|
@ -35,7 +35,8 @@
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
this.post = (e) => {
|
this.post = e => {
|
||||||
this.parent.parent.open-post-form!
|
this.parent.parent.openPostForm();
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
</mk-ui-header-post-button>
|
</mk-ui-header-post-button>
|
||||||
|
|
|
@ -80,6 +80,5 @@
|
||||||
display none
|
display none
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>this.mixin('i');</script>
|
<script>this.mixin('i');</script>
|
||||||
</mk-ui-header>
|
</mk-ui-header>
|
||||||
|
|
|
@ -19,16 +19,16 @@
|
||||||
this.user = user
|
this.user = user
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'aggregation/users/followers' do
|
this.api('aggregation/users/followers', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
limit: 30days
|
limit: 30days
|
||||||
.then (followers) =>
|
}).then((followers) => {
|
||||||
followers = followers.reverse!
|
followers = followers.reverse!
|
||||||
|
|
||||||
this.api 'aggregation/users/following' do
|
this.api('aggregation/users/following', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
limit: 30days
|
limit: 30days
|
||||||
.then (following) =>
|
}).then((following) => {
|
||||||
following = following.reverse!
|
following = following.reverse!
|
||||||
|
|
||||||
new Chart this.refs.canv, do
|
new Chart this.refs.canv, do
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
this.user = user
|
this.user = user
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'aggregation/users/like' do
|
this.api('aggregation/users/like', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
limit: 30days
|
limit: 30days
|
||||||
.then (likes) =>
|
}).then((likes) => {
|
||||||
likes = likes.reverse!
|
likes = likes.reverse!
|
||||||
|
|
||||||
new Chart this.refs.canv, do
|
new Chart this.refs.canv, do
|
||||||
|
|
|
@ -67,15 +67,15 @@
|
||||||
this.user-promise = if @is-promise this.opts.user then this.opts.user else Promise.resolve this.opts.user
|
this.user-promise = if @is-promise this.opts.user then this.opts.user else Promise.resolve this.opts.user
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.user-promise.then (user) =>
|
this.user-promise}).then((user) => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'users/posts' do
|
this.api('users/posts', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
with_media: true
|
with_media: true
|
||||||
limit: 9posts
|
limit: 9posts
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.initializing = false
|
this.initializing = false
|
||||||
posts.forEach (post) =>
|
posts.forEach (post) =>
|
||||||
post.media.forEach (image) =>
|
post.media.forEach (image) =>
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
this.user = user
|
this.user = user
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'aggregation/users/post' do
|
this.api('aggregation/users/post', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
limit: 30days
|
limit: 30days
|
||||||
.then (data) =>
|
}).then((data) => {
|
||||||
data = data.reverse!
|
data = data.reverse!
|
||||||
new Chart this.refs.canv, do
|
new Chart this.refs.canv, do
|
||||||
type: 'line'
|
type: 'line'
|
||||||
|
|
|
@ -105,16 +105,16 @@
|
||||||
this.user-promise =
|
this.user-promise =
|
||||||
if typeof @u == 'string'
|
if typeof @u == 'string'
|
||||||
new Promise (resolve, reject) =>
|
new Promise (resolve, reject) =>
|
||||||
this.api 'users/show' do
|
this.api('users/show', {
|
||||||
user_id: if @u.0 == '@' then undefined else @u
|
user_id: if @u.0 == '@' then undefined else @u
|
||||||
username: if @u.0 == '@' then @u.substr 1 else undefined
|
username: if @u.0 == '@' then @u.substr 1 else undefined
|
||||||
.then (user) =>
|
}).then((user) => {
|
||||||
resolve user
|
resolve user
|
||||||
else
|
else
|
||||||
Promise.resolve @u
|
Promise.resolve @u
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.user-promise.then (user) =>
|
this.user-promise}).then((user) => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
|
|
|
@ -87,13 +87,13 @@
|
||||||
this.user = this.opts.user
|
this.user = this.opts.user
|
||||||
|
|
||||||
this.show-following = () => {
|
this.show-following = () => {
|
||||||
window = document.body.appendChild document.createElement 'mk-user-following-window'
|
window = document.body.appendChild(document.createElement('mk-user-following-window'));
|
||||||
riot.mount window, do
|
riot.mount window, do
|
||||||
user: this.user
|
user: this.user
|
||||||
|
|
||||||
this.show-followers = () => {
|
this.show-followers = () => {
|
||||||
window = document.body.appendChild document.createElement 'mk-user-followers-window'
|
window = document.body.appendChild(document.createElement('mk-user-followers-window'));
|
||||||
riot.mount window, do
|
riot.mount window, do
|
||||||
user: this.user
|
user: this.user
|
||||||
</script>
|
</script>
|
||||||
</mk-user-profile>
|
</mk-user-profile>
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
document.addEventListener 'keydown' this.on-document-keydown
|
document.addEventListener 'keydown' this.on-document-keydown
|
||||||
window.addEventListener 'scroll' this.on-scroll
|
window.addEventListener 'scroll' this.on-scroll
|
||||||
|
|
||||||
this.user-promise.then (user) =>
|
this.user-promise}).then((user) => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
|
@ -82,10 +82,10 @@
|
||||||
this.refs.timeline.focus();
|
this.refs.timeline.focus();
|
||||||
|
|
||||||
this.fetch = (cb) => {
|
this.fetch = (cb) => {
|
||||||
this.api 'users/posts' do
|
this.api('users/posts', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
with_replies: this.mode == 'with-replies'
|
with_replies: this.mode == 'with-replies'
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.is-loading = false
|
this.is-loading = false
|
||||||
this.is-empty = posts.length == 0
|
this.is-empty = posts.length == 0
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -100,11 +100,11 @@
|
||||||
return
|
return
|
||||||
this.more-loading = true
|
this.more-loading = true
|
||||||
this.update();
|
this.update();
|
||||||
this.api 'users/posts' do
|
this.api('users/posts', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
with_replies: this.mode == 'with-replies'
|
with_replies: this.mode == 'with-replies'
|
||||||
max_id: this.refs.timeline.tail!.id
|
max_id: this.refs.timeline.tail!.id
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
this.more-loading = false
|
this.more-loading = false
|
||||||
this.update();
|
this.update();
|
||||||
this.refs.timeline.prepend-posts posts
|
this.refs.timeline.prepend-posts posts
|
||||||
|
|
|
@ -40,9 +40,9 @@
|
||||||
this.user = null
|
this.user = null
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'users/show' do
|
this.api('users/show', {
|
||||||
username: this.username
|
username: this.username
|
||||||
.then (user) =>
|
}).then((user) => {
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
this.user = user
|
this.user = user
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -320,7 +320,7 @@
|
||||||
|
|
||||||
this.bg-click = () => {
|
this.bg-click = () => {
|
||||||
if @can-close
|
if @can-close
|
||||||
@close!
|
@close();
|
||||||
|
|
||||||
this.on-body-mousedown = (e) => {
|
this.on-body-mousedown = (e) => {
|
||||||
@top!
|
@top!
|
||||||
|
@ -506,7 +506,7 @@
|
||||||
if @can-close
|
if @can-close
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@close!
|
@close();
|
||||||
|
|
||||||
function contains(parent, child)
|
function contains(parent, child)
|
||||||
node = child.parentNode
|
node = child.parentNode
|
||||||
|
|
|
@ -203,9 +203,9 @@
|
||||||
this.nid-state = 'wait'
|
this.nid-state = 'wait'
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'app/name_id/available' do
|
this.api('app/name_id/available', {
|
||||||
name_id: nid
|
name_id: nid
|
||||||
.then (result) =>
|
}).then((result) => {
|
||||||
if result.available
|
if result.available
|
||||||
this.nid-state = 'ok'
|
this.nid-state = 'ok'
|
||||||
else
|
else
|
||||||
|
@ -225,9 +225,9 @@
|
||||||
this.refs.permission.query-selector-all 'input' .forEach (el) =>
|
this.refs.permission.query-selector-all 'input' .forEach (el) =>
|
||||||
if el.checked then permission.push el.value
|
if el.checked then permission.push el.value
|
||||||
|
|
||||||
locker = document.body.appendChild document.createElement 'mk-locker'
|
locker = document.body.appendChild(document.createElement('mk-locker'));
|
||||||
|
|
||||||
this.api 'app/create' do
|
this.api('app/create', {
|
||||||
name: name
|
name: name
|
||||||
name_id: nid
|
name_id: nid
|
||||||
description: description
|
description: description
|
||||||
|
|
|
@ -20,9 +20,9 @@
|
||||||
this.fetching = true
|
this.fetching = true
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'app/show' do
|
this.api('app/show', {
|
||||||
app_id: this.opts.app
|
app_id: this.opts.app
|
||||||
.then (app) =>
|
}).then((app) => {
|
||||||
this.app = app
|
this.app = app
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'my/apps'
|
this.api 'my/apps'
|
||||||
.then (apps) =>
|
}).then((apps) => {
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
this.apps = apps
|
this.apps = apps
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -206,9 +206,9 @@
|
||||||
this.loading = true
|
this.loading = true
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'drive/folders/show' do
|
this.api('drive/folders/show', {
|
||||||
folder_id: target-folder
|
folder_id: target-folder
|
||||||
.then (folder) =>
|
}).then((folder) => {
|
||||||
this.folder = folder
|
this.folder = folder
|
||||||
this.hierarchyFolders = []
|
this.hierarchyFolders = []
|
||||||
|
|
||||||
|
@ -297,10 +297,10 @@
|
||||||
files-max = 20
|
files-max = 20
|
||||||
|
|
||||||
// フォルダ一覧取得
|
// フォルダ一覧取得
|
||||||
this.api 'drive/folders' do
|
this.api('drive/folders', {
|
||||||
folder_id: if this.folder? then this.folder.id else null
|
folder_id: if this.folder? then this.folder.id else null
|
||||||
limit: folders-max + 1
|
limit: folders-max + 1
|
||||||
.then (folders) =>
|
}).then((folders) => {
|
||||||
if folders.length == folders-max + 1
|
if folders.length == folders-max + 1
|
||||||
this.more-folders = true
|
this.more-folders = true
|
||||||
folders.pop!
|
folders.pop!
|
||||||
|
@ -310,10 +310,10 @@
|
||||||
console.error err
|
console.error err
|
||||||
|
|
||||||
// ファイル一覧取得
|
// ファイル一覧取得
|
||||||
this.api 'drive/files' do
|
this.api('drive/files', {
|
||||||
folder_id: if this.folder? then this.folder.id else null
|
folder_id: if this.folder? then this.folder.id else null
|
||||||
limit: files-max + 1
|
limit: files-max + 1
|
||||||
.then (files) =>
|
}).then((files) => {
|
||||||
if files.length == files-max + 1
|
if files.length == files-max + 1
|
||||||
this.more-files = true
|
this.more-files = true
|
||||||
files.pop!
|
files.pop!
|
||||||
|
@ -356,9 +356,9 @@
|
||||||
this.loading = true
|
this.loading = true
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.api 'drive/files/show' do
|
this.api('drive/files/show', {
|
||||||
file_id: file
|
file_id: file
|
||||||
.then (file) =>
|
}).then((file) => {
|
||||||
this.file = file
|
this.file = file
|
||||||
this.folder = null
|
this.folder = null
|
||||||
this.hierarchyFolders = []
|
this.hierarchyFolders = []
|
||||||
|
|
|
@ -191,7 +191,7 @@
|
||||||
this.rename = () => {
|
this.rename = () => {
|
||||||
name = window.prompt '名前を変更' this.file.name
|
name = window.prompt '名前を変更' this.file.name
|
||||||
if name? and name != '' and name != this.file.name
|
if name? and name != '' and name != this.file.name
|
||||||
this.api 'drive/files/update' do
|
this.api('drive/files/update', {
|
||||||
file_id: this.file.id
|
file_id: this.file.id
|
||||||
name: name
|
name: name
|
||||||
.then =>
|
.then =>
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
this.wait = false
|
this.wait = false
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.user-promise.then (user) =>
|
this.user-promise}).then((user) => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.init = false
|
this.init = false
|
||||||
this.update();
|
this.update();
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
this.onclick = () => {
|
this.onclick = () => {
|
||||||
this.wait = true
|
this.wait = true
|
||||||
if this.user.is_following
|
if this.user.is_following
|
||||||
this.api 'following/delete' do
|
this.api('following/delete', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
.then =>
|
.then =>
|
||||||
this.user.is_following = false
|
this.user.is_following = false
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
this.wait = false
|
this.wait = false
|
||||||
this.update();
|
this.update();
|
||||||
else
|
else
|
||||||
this.api 'following/create' do
|
this.api('following/create', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
.then =>
|
.then =>
|
||||||
this.user.is_following = true
|
this.user.is_following = true
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
this.init = new Promise (res, rej) =>
|
this.init = new Promise (res, rej) =>
|
||||||
this.api 'posts/timeline'
|
this.api 'posts/timeline'
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
res posts
|
res posts
|
||||||
this.trigger('loaded');
|
this.trigger('loaded');
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
this.stream.off 'unfollow' this.on-stream-unfollow
|
this.stream.off 'unfollow' this.on-stream-unfollow
|
||||||
|
|
||||||
this.more = () => {
|
this.more = () => {
|
||||||
this.api 'posts/timeline' do
|
this.api('posts/timeline', {
|
||||||
max_id: this.refs.timeline.tail!.id
|
max_id: this.refs.timeline.tail!.id
|
||||||
|
|
||||||
this.on-stream-post = (post) => {
|
this.on-stream-post = (post) => {
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'i/notifications'
|
this.api 'i/notifications'
|
||||||
.then (notifications) =>
|
}).then((notifications) => {
|
||||||
this.notifications = notifications
|
this.notifications = notifications
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -13,9 +13,9 @@
|
||||||
this.fetching = true
|
this.fetching = true
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'users/show' do
|
this.api('users/show', {
|
||||||
username: this.opts.username
|
username: this.opts.username
|
||||||
.then (user) =>
|
}).then(user => {
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
this.user = user
|
this.user = user
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.Progress.start();
|
this.Progress.start();
|
||||||
|
|
||||||
this.api 'users/show' do
|
this.api('users/show', {
|
||||||
username: this.opts.user
|
username: this.opts.user
|
||||||
.then (user) =>
|
}).then(user => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
|
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.Progress.start();
|
this.Progress.start();
|
||||||
|
|
||||||
this.api 'users/show' do
|
this.api('users/show', {
|
||||||
username: this.opts.user
|
username: this.opts.user
|
||||||
.then (user) =>
|
}).then(user => {
|
||||||
this.user = user
|
this.user = user
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
|
|
||||||
|
|
|
@ -334,15 +334,15 @@
|
||||||
this.mixin('get-post-summary');
|
this.mixin('get-post-summary');
|
||||||
this.mixin('open-post-form');
|
this.mixin('open-post-form');
|
||||||
|
|
||||||
this.fetching = true
|
this.fetching = true;
|
||||||
this.loading-context = false
|
this.loadingContext = false;
|
||||||
this.content = null
|
this.content = null;
|
||||||
this.post = null
|
this.post = null;
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'posts/show' do
|
this.api('posts/show', {
|
||||||
post_id: this.opts.post
|
post_id: this.opts.post
|
||||||
.then (post) =>
|
}).then((post) => {
|
||||||
this.post = post
|
this.post = post
|
||||||
this.is-repost = this.post.repost?
|
this.is-repost = this.post.repost?
|
||||||
this.p = if @is-repost then this.post.repost else this.post
|
this.p = if @is-repost then this.post.repost else this.post
|
||||||
|
@ -363,54 +363,54 @@
|
||||||
tokens
|
tokens
|
||||||
.filter (t) -> t.type == 'link'
|
.filter (t) -> t.type == 'link'
|
||||||
.map (t) =>
|
.map (t) =>
|
||||||
this.preview = this.refs.text.appendChild document.createElement 'mk-url-preview'
|
this.preview = this.refs.text.appendChild(document.createElement('mk-url-preview'));
|
||||||
riot.mount this.preview, do
|
riot.mount this.preview, do
|
||||||
url: t.content
|
url: t.content
|
||||||
|
|
||||||
// Get likes
|
// Get likes
|
||||||
this.api 'posts/likes' do
|
this.api('posts/likes', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
limit: 8
|
limit: 8
|
||||||
.then (likes) =>
|
}).then((likes) => {
|
||||||
this.likes = likes
|
this.likes = likes
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
// Get reposts
|
// Get reposts
|
||||||
this.api 'posts/reposts' do
|
this.api('posts/reposts', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
limit: 8
|
limit: 8
|
||||||
.then (reposts) =>
|
}).then((reposts) => {
|
||||||
this.reposts = reposts
|
this.reposts = reposts
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
// Get replies
|
// Get replies
|
||||||
this.api 'posts/replies' do
|
this.api('posts/replies', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
limit: 8
|
limit: 8
|
||||||
.then (replies) =>
|
}).then((replies) => {
|
||||||
this.replies = replies
|
this.replies = replies
|
||||||
this.update();
|
this.update();
|
||||||
|
|
||||||
this.reply = () => {
|
this.reply = () => {
|
||||||
@open-post-form do
|
this.openPostForm do
|
||||||
reply: this.p
|
reply: this.p
|
||||||
|
|
||||||
this.repost = () => {
|
this.repost = () => {
|
||||||
text = window.prompt '「' + @summary + '」をRepost'
|
text = window.prompt '「' + @summary + '」をRepost'
|
||||||
if text?
|
if text?
|
||||||
this.api 'posts/create' do
|
this.api('posts/create', {
|
||||||
repost_id: this.p.id
|
repost_id: this.p.id
|
||||||
text: if text == '' then undefined else text
|
text: if text == '' then undefined else text
|
||||||
|
|
||||||
this.like = () => {
|
this.like = () => {
|
||||||
if this.p.is_liked
|
if this.p.is_liked
|
||||||
this.api 'posts/likes/delete' do
|
this.api('posts/likes/delete', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
.then =>
|
.then =>
|
||||||
this.p.is_liked = false
|
this.p.is_liked = false
|
||||||
this.update();
|
this.update();
|
||||||
else
|
else
|
||||||
this.api 'posts/likes/create' do
|
this.api('posts/likes/create', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
.then =>
|
.then =>
|
||||||
this.p.is_liked = true
|
this.p.is_liked = true
|
||||||
|
@ -420,9 +420,9 @@
|
||||||
this.loading-context = true
|
this.loading-context = true
|
||||||
|
|
||||||
// Get context
|
// Get context
|
||||||
this.api 'posts/context' do
|
this.api('posts/context', {
|
||||||
post_id: this.p.reply_to_id
|
post_id: this.p.reply_to_id
|
||||||
.then (context) =>
|
}).then((context) => {
|
||||||
this.context = context.reverse!
|
this.context = context.reverse!
|
||||||
this.loading-context = false
|
this.loading-context = false
|
||||||
this.update();
|
this.update();
|
||||||
|
|
|
@ -220,8 +220,8 @@
|
||||||
this.refs.file.click();
|
this.refs.file.click();
|
||||||
|
|
||||||
this.select-file-from-drive = () => {
|
this.select-file-from-drive = () => {
|
||||||
browser = document.body.appendChild document.createElement 'mk-drive-selector'
|
browser = document.body.appendChild(document.createElement('mk-drive-selector'));
|
||||||
browser = riot.mount browser, do
|
browser = riot.mount browser, do
|
||||||
multiple: true
|
multiple: true
|
||||||
.0
|
.0
|
||||||
browser.on('selected', (files) => {
|
browser.on('selected', (files) => {
|
||||||
|
@ -260,12 +260,12 @@
|
||||||
then this.files.map (f) -> f.id
|
then this.files.map (f) -> f.id
|
||||||
else undefined
|
else undefined
|
||||||
|
|
||||||
this.api 'posts/create' do
|
this.api('posts/create', {
|
||||||
text: this.refs.text.value
|
text: this.refs.text.value
|
||||||
media_ids: files
|
media_ids: files
|
||||||
reply_to_id: if this.opts.reply? then this.opts.reply.id else undefined
|
reply_to_id: if this.opts.reply? then this.opts.reply.id else undefined
|
||||||
poll: if this.poll then this.refs.poll.get! else undefined
|
poll: if this.poll then this.refs.poll.get! else undefined
|
||||||
.then (data) =>
|
}).then((data) => {
|
||||||
this.trigger('post');
|
this.trigger('post');
|
||||||
this.unmount();
|
this.unmount();
|
||||||
.catch (err) =>
|
.catch (err) =>
|
||||||
|
|
|
@ -16,15 +16,15 @@
|
||||||
this.with-media = this.opts.with-media
|
this.with-media = this.opts.with-media
|
||||||
|
|
||||||
this.init = new Promise (res, rej) =>
|
this.init = new Promise (res, rej) =>
|
||||||
this.api 'posts/search' do
|
this.api('posts/search', {
|
||||||
query: @query
|
query: @query
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
res posts
|
res posts
|
||||||
this.trigger('loaded');
|
this.trigger('loaded');
|
||||||
|
|
||||||
this.more = () => {
|
this.more = () => {
|
||||||
@offset += @max
|
@offset += @max
|
||||||
this.api 'posts/search' do
|
this.api('posts/search', {
|
||||||
query: @query
|
query: @query
|
||||||
max: @max
|
max: @max
|
||||||
offset: @offset
|
offset: @offset
|
||||||
|
|
|
@ -3,10 +3,19 @@
|
||||||
<mk-timeline-post-sub post={ p.reply_to }></mk-timeline-post-sub>
|
<mk-timeline-post-sub post={ p.reply_to }></mk-timeline-post-sub>
|
||||||
</div>
|
</div>
|
||||||
<div class="repost" if={ isRepost }>
|
<div class="repost" if={ isRepost }>
|
||||||
<p><a class="avatar-anchor" href={ CONFIG.url + '/' + post.user.username }><img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/></a><i class="fa fa-retweet"></i><a class="name" href={ CONFIG.url + '/' + post.user.username }>{ post.user.name }</a>がRepost</p>
|
<p>
|
||||||
|
<a class="avatar-anchor" href={ CONFIG.url + '/' + post.user.username }>
|
||||||
|
<img class="avatar" src={ post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/>
|
||||||
|
</a>
|
||||||
|
<i class="fa fa-retweet"></i>
|
||||||
|
<a class="name" href={ CONFIG.url + '/' + post.user.username }>{ post.user.name }</a>がRepost
|
||||||
|
</p>
|
||||||
<mk-time time={ post.created_at }></mk-time>
|
<mk-time time={ post.created_at }></mk-time>
|
||||||
</div>
|
</div>
|
||||||
<article><a class="avatar-anchor" href={ CONFIG.url + '/' + p.user.username }><img class="avatar" src={ p.user.avatar_url + '?thumbnail&size=96' } alt="avatar"/></a>
|
<article>
|
||||||
|
<a class="avatar-anchor" href={ CONFIG.url + '/' + p.user.username }>
|
||||||
|
<img class="avatar" src={ p.user.avatar_url + '?thumbnail&size=96' } alt="avatar"/>
|
||||||
|
</a>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
<a class="name" href={ CONFIG.url + '/' + p.user.username }>{ p.user.name }</a>
|
<a class="name" href={ CONFIG.url + '/' + p.user.username }>{ p.user.name }</a>
|
||||||
|
@ -289,59 +298,67 @@
|
||||||
this.mixin('api');
|
this.mixin('api');
|
||||||
this.mixin('text');
|
this.mixin('text');
|
||||||
this.mixin('get-post-summary');
|
this.mixin('get-post-summary');
|
||||||
this.mixin('open-post-form');
|
this.mixin('openPostForm');
|
||||||
|
|
||||||
this.post = this.opts.post
|
this.post = this.opts.post;
|
||||||
this.is-repost = this.post.repost? and !this.post.text?
|
this.isRepost = this.post.repost != null && this.post.text == null;
|
||||||
this.p = if @is-repost then this.post.repost else this.post
|
this.p = this.isRepost ? this.post.repost : this.post;
|
||||||
this.summary = @get-post-summary this.p
|
this.summary = this.getPostSummary(this.p);
|
||||||
this.url = CONFIG.url + '/' + this.p.user.username + '/' + this.p.id
|
this.url = CONFIG.url + '/' + this.p.user.username + '/' + this.p.id
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
if this.p.text?
|
if (this.p.text) {
|
||||||
tokens = if this.p._highlight?
|
const tokens = this.analyze(this.p.text);
|
||||||
then @analyze this.p._highlight
|
|
||||||
else @analyze this.p.text
|
|
||||||
|
|
||||||
this.refs.text.innerHTML = this.refs.text.innerHTML.replace '<p class="dummy"></p>' if this.p._highlight?
|
this.refs.text.innerHTML = this.refs.text.innerHTML.replace('<p class="dummy"></p>', this.compile(tokens));
|
||||||
then @compile tokens, true, false
|
|
||||||
else @compile tokens
|
|
||||||
|
|
||||||
this.refs.text.children.forEach (e) =>
|
this.refs.text.children.forEach(e => {
|
||||||
if e.tag-name == 'MK-URL'
|
if (e.tagName == 'MK-URL') riot.mount(e);
|
||||||
riot.mount e
|
});
|
||||||
|
|
||||||
// URLをプレビュー
|
// URLをプレビュー
|
||||||
tokens
|
tokens
|
||||||
.filter (t) -> t.type == 'link'
|
.filter(t => t.type == 'link')
|
||||||
.map (t) =>
|
.map(t => {
|
||||||
this.preview = this.refs.text.appendChild document.createElement 'mk-url-preview'
|
riot.mount(this.refs.text.appendChild(document.createElement('mk-url-preview')), {
|
||||||
riot.mount this.preview, do
|
url: t.content
|
||||||
url: t.content
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.reply = () => {
|
this.reply = () => {
|
||||||
@open-post-form do
|
this.openPostForm({
|
||||||
reply: this.p
|
reply: this.p
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
this.repost = () => {
|
this.repost = () => {
|
||||||
text = window.prompt '「' + @summary + '」をRepost'
|
const text = window.prompt(`「${this.summary}」をRepost`);
|
||||||
if text?
|
if (text) {
|
||||||
this.api 'posts/create' do
|
this.api('posts/create', {
|
||||||
repost_id: this.p.id
|
repost_id: this.p.id,
|
||||||
text: if text == '' then undefined else text
|
text: text == '' ? undefined : text
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.like = () => {
|
this.like = () => {
|
||||||
if this.p.is_liked
|
if (this.p.is_liked)
|
||||||
this.api 'posts/likes/delete' do
|
this.api('posts/likes/delete', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
.then =>
|
}).then(() => {
|
||||||
this.p.is_liked = false
|
this.p.is_liked = false;
|
||||||
this.update();
|
this.update();
|
||||||
else
|
});
|
||||||
this.api 'posts/likes/create' do
|
} else {
|
||||||
|
this.api('posts/likes/create', {
|
||||||
post_id: this.p.id
|
post_id: this.p.id
|
||||||
.then =>
|
}).then(() => {
|
||||||
this.p.is_liked = true
|
this.p.is_liked = true;
|
||||||
this.update();
|
this.update();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
</mk-timeline-post>
|
</mk-timeline-post>
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
this.can-fetch-more = true
|
this.can-fetch-more = true
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.opts.init.then (posts) =>
|
this.opts.init}).then((posts) => {
|
||||||
this.init = false
|
this.init = false
|
||||||
@set-posts posts
|
@set-posts posts
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@
|
||||||
if @init or @fetching or this.posts.length == 0 then return
|
if @init or @fetching or this.posts.length == 0 then return
|
||||||
this.fetching = true
|
this.fetching = true
|
||||||
this.update();
|
this.update();
|
||||||
this.opts.more!.then (posts) =>
|
this.opts.more!}).then((posts) => {
|
||||||
this.fetching = false
|
this.fetching = false
|
||||||
this.prepend-posts posts
|
this.prepend-posts posts
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
this.mixin('ui');
|
this.mixin('ui');
|
||||||
this.mixin('open-post-form');
|
this.mixin('openPostForm');
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.opts.ready!
|
this.opts.ready!
|
||||||
|
@ -99,6 +99,6 @@
|
||||||
this.refs.title.innerHTML = title
|
this.refs.title.innerHTML = title
|
||||||
|
|
||||||
this.post = () => {
|
this.post = () => {
|
||||||
@open-post-form!
|
this.openPostForm!
|
||||||
</script>
|
</script>
|
||||||
</mk-ui-header>
|
</mk-ui-header>
|
||||||
|
|
|
@ -44,8 +44,8 @@
|
||||||
this.refs.nav.root.style.display = if @is-drawer-opening then 'block' else 'none'
|
this.refs.nav.root.style.display = if @is-drawer-opening then 'block' else 'none'
|
||||||
|
|
||||||
this.on-stream-notification = (notification) => {
|
this.on-stream-notification = (notification) => {
|
||||||
el = document.body.appendChild document.createElement 'mk-notify'
|
el = document.body.appendChild(document.createElement('mk-notify'));
|
||||||
riot.mount el, do
|
riot.mount el, do
|
||||||
notification: notification
|
notification: notification
|
||||||
</script>
|
</script>
|
||||||
</mk-ui>
|
</mk-ui>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
this.user = this.opts.user
|
this.user = this.opts.user
|
||||||
|
|
||||||
this.fetch = (iknow, limit, cursor, cb) => {
|
this.fetch = (iknow, limit, cursor, cb) => {
|
||||||
this.api 'users/followers' do
|
this.api('users/followers', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
iknow: iknow
|
iknow: iknow
|
||||||
limit: limit
|
limit: limit
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
this.user = this.opts.user
|
this.user = this.opts.user
|
||||||
|
|
||||||
this.fetch = (iknow, limit, cursor, cb) => {
|
this.fetch = (iknow, limit, cursor, cb) => {
|
||||||
this.api 'users/following' do
|
this.api('users/following', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
iknow: iknow
|
iknow: iknow
|
||||||
limit: limit
|
limit: limit
|
||||||
|
|
|
@ -15,15 +15,15 @@
|
||||||
this.with-media = this.opts.with-media
|
this.with-media = this.opts.with-media
|
||||||
|
|
||||||
this.init = new Promise (res, rej) =>
|
this.init = new Promise (res, rej) =>
|
||||||
this.api 'users/posts' do
|
this.api('users/posts', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
with_media: @with-media
|
with_media: @with-media
|
||||||
.then (posts) =>
|
}).then((posts) => {
|
||||||
res posts
|
res posts
|
||||||
this.trigger('loaded');
|
this.trigger('loaded');
|
||||||
|
|
||||||
this.more = () => {
|
this.more = () => {
|
||||||
this.api 'users/posts' do
|
this.api('users/posts', {
|
||||||
user_id: this.user.id
|
user_id: this.user.id
|
||||||
with_media: @with-media
|
with_media: @with-media
|
||||||
max_id: this.refs.timeline.tail!.id
|
max_id: this.refs.timeline.tail!.id
|
||||||
|
|
|
@ -3,20 +3,43 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="banner" style={ user.banner_url ? 'background-image: url(' + user.banner_url + '?thumbnail&size=1024)' : '' }></div>
|
<div class="banner" style={ user.banner_url ? 'background-image: url(' + user.banner_url + '?thumbnail&size=1024)' : '' }></div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<div class="top"><a class="avatar"><img src={ user.avatar_url + '?thumbnail&size=160' } alt="avatar"/></a>
|
<div class="top">
|
||||||
|
<a class="avatar">
|
||||||
|
<img src={ user.avatar_url + '?thumbnail&size=160' } alt="avatar"/>
|
||||||
|
</a>
|
||||||
<mk-follow-button if={ SIGNIN && I.id != user.id } user={ user }></mk-follow-button>
|
<mk-follow-button if={ SIGNIN && I.id != user.id } user={ user }></mk-follow-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h1>{ user.name }</h1><span class="username">@{ user.username }</span><span class="followed" if={ user.is_followed }>フォローされています</span>
|
<h1>{ user.name }</h1>
|
||||||
|
<span class="username">@{ user.username }</span>
|
||||||
|
<span class="followed" if={ user.is_followed }>フォローされています</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="bio">{ user.bio }</div>
|
<div class="bio">{ user.bio }</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<p class="location" if={ user.location }><i class="fa fa-map-marker"></i>{ user.location }</p>
|
<p class="location" if={ user.location }>
|
||||||
<p class="birthday" if={ user.birthday }><i class="fa fa-birthday-cake"></i>{ user.birthday.replace('-', '年').replace('-', '月') + '日' } ({ age(user.birthday) }歳)</p>
|
<i class="fa fa-map-marker"></i>{ user.location }
|
||||||
|
</p>
|
||||||
|
<p class="birthday" if={ user.birthday }>
|
||||||
|
<i class="fa fa-birthday-cake"></i>{ user.birthday.replace('-', '年').replace('-', '月') + '日' } ({ age(user.birthday) }歳)
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="friends">
|
||||||
|
<a href="{ user.username }/following">
|
||||||
|
<b>{ user.following_count }</b>
|
||||||
|
<i>フォロー</i>
|
||||||
|
</a>
|
||||||
|
<a href="{ user.username }/followers">
|
||||||
|
<b>{ user.followers_count }</b>
|
||||||
|
<i>フォロワー</i>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="friends"><a href="{ user.username }/following"><b>{ user.following_count }</b><i>フォロー</i></a><a href="{ user.username }/followers"><b>{ user.followers_count }</b><i>フォロワー</i></a></div>
|
|
||||||
</div>
|
</div>
|
||||||
<nav><a data-is-active={ page == 'posts' } onclick={ goPosts }>投稿</a><a data-is-active={ page == 'media' } onclick={ goMedia }>メディア</a><a data-is-active={ page == 'graphs' } onclick={ goGraphs }>グラフ</a><a data-is-active={ page == 'likes' } onclick={ goLikes }>いいね</a></nav>
|
<nav>
|
||||||
|
<a data-is-active={ page == 'posts' } onclick={ go.bind(null, 'posts') }>投稿</a>
|
||||||
|
<a data-is-active={ page == 'media' } onclick={ go.bind(null, 'media') }>メディア</a>
|
||||||
|
<a data-is-active={ page == 'graphs' } onclick={ go.bind(null, 'graphs') }>グラフ</a>
|
||||||
|
<a data-is-active={ page == 'likes' } onclick={ go.bind(null, 'likes') }>いいね</a>
|
||||||
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<mk-user-timeline if={ page == 'posts' } user={ user }></mk-user-timeline>
|
<mk-user-timeline if={ page == 'posts' } user={ user }></mk-user-timeline>
|
||||||
|
@ -154,38 +177,30 @@
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
this.age = require 's-age'
|
this.age = require('s-age');
|
||||||
|
|
||||||
this.mixin('i');
|
this.mixin('i');
|
||||||
this.mixin('api');
|
this.mixin('api');
|
||||||
|
|
||||||
this.username = this.opts.user
|
this.username = this.opts.user;
|
||||||
this.page = if this.opts.page? then this.opts.page else 'posts'
|
this.page = this.opts.page ? this.opts.page : 'posts';
|
||||||
this.fetching = true
|
this.fetching = true;
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
this.api 'users/show' do
|
this.api('users/show', {
|
||||||
username: this.username
|
username: this.username
|
||||||
.then (user) =>
|
}).then(user => {
|
||||||
this.fetching = false
|
this.fetching = false;
|
||||||
this.user = user
|
this.user = user;
|
||||||
this.trigger 'loaded' user
|
this.trigger('loaded', user);
|
||||||
this.update();
|
this.update();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
this.go-posts = () => {
|
this.go = page => {
|
||||||
this.page = 'posts'
|
this.update({
|
||||||
this.update();
|
page: page
|
||||||
|
});
|
||||||
this.go-media = () => {
|
};
|
||||||
this.page = 'media'
|
|
||||||
this.update();
|
|
||||||
|
|
||||||
this.go-graphs = () => {
|
|
||||||
this.page = 'graphs'
|
|
||||||
this.update();
|
|
||||||
|
|
||||||
this.go-likes = () => {
|
|
||||||
this.page = 'likes'
|
|
||||||
this.update();
|
|
||||||
</script>
|
</script>
|
||||||
</mk-user>
|
</mk-user>
|
||||||
|
|
Loading…
Reference in a new issue