Compare commits
9 Commits
11.0.0-bet
...
10.100.0
Author | SHA1 | Date | |
---|---|---|---|
83b7010d6a | |||
71654cbe47 | |||
e8f96e848a | |||
251abf21d4 | |||
d103427932 | |||
592cdfa910 | |||
f2ad1a0406 | |||
82af9320c0 | |||
fceebf7388 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -19,3 +19,4 @@ api-docs.json
|
||||
*.code-workspace
|
||||
yarn.lock
|
||||
.DS_Store
|
||||
/files
|
||||
|
@ -5,6 +5,15 @@ If you encounter any problems with updating, please try the following:
|
||||
1. `npm run clean` or `npm run cleanall`
|
||||
2. Retry update (Don't forget `npm i`)
|
||||
|
||||
10.100.0
|
||||
----------
|
||||
* ユーザーリストでフォローボタンを表示するように
|
||||
* ドライブのファイルのサムネイルを修正
|
||||
* 投稿ウィジットでローカルのみの公開範囲で投稿できない問題を修正
|
||||
* TLを遡った時に抜けがある時がある問題を修正
|
||||
* ユーザータイムラインが投稿日時順ではなくなっているのを修正
|
||||
* 10.99.0 でチャートのレンダリングがおかしい問題を修正
|
||||
|
||||
10.99.0
|
||||
----------
|
||||
* manifest.json にインスタンス名を反映させるように
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "10.99.0",
|
||||
"version": "10.100.0",
|
||||
"codename": "nighthike",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -96,7 +96,7 @@
|
||||
"@types/websocket": "0.0.40",
|
||||
"@types/ws": "6.0.1",
|
||||
"animejs": "3.0.1",
|
||||
"apexcharts": "3.6.5",
|
||||
"apexcharts": "3.6.2",
|
||||
"autobind-decorator": "2.4.0",
|
||||
"autosize": "4.0.2",
|
||||
"autwh": "0.1.0",
|
||||
|
@ -8,7 +8,7 @@
|
||||
<div class="no-users" v-if="inited && us.length == 0">
|
||||
<p>{{ $t('no-users') }}</p>
|
||||
</div>
|
||||
<div class="user" v-for="user in us">
|
||||
<div class="user" v-for="user in us" :key="user.id">
|
||||
<mk-avatar class="avatar" :user="user"/>
|
||||
<div class="body" v-if="!iconOnly">
|
||||
<div class="name">
|
||||
@ -18,6 +18,7 @@
|
||||
<div class="description" v-if="user.description" :title="user.description">
|
||||
<mfm :text="user.description" :is-note="false" :author="user" :i="$store.state.i" :custom-emojis="user.emojis" :should-break="false" :plain-text="true"/>
|
||||
</div>
|
||||
<mk-follow-button class="follow-button" v-if="$store.getters.isSignedIn && user.id != $store.state.i.id" :user="user" mini/>
|
||||
</div>
|
||||
</div>
|
||||
<button class="more" :class="{ fetching: fetchingMoreUsers }" v-if="cursor != null" @click="fetchMoreUsers()" :disabled="fetchingMoreUsers">
|
||||
@ -160,6 +161,12 @@ export default Vue.extend({
|
||||
text-overflow ellipsis
|
||||
opacity 0.7
|
||||
font-size 14px
|
||||
padding-right 40px
|
||||
|
||||
> .follow-button
|
||||
position absolute
|
||||
top 8px
|
||||
right 0px
|
||||
|
||||
> .more
|
||||
display block
|
||||
|
@ -157,6 +157,7 @@ export default Vue.extend({
|
||||
// オーバーフローしたら古い投稿は捨てる
|
||||
if (this.notes.length >= displayLimit) {
|
||||
this.notes = this.notes.slice(0, displayLimit);
|
||||
this.cursor = this.notes[this.notes.length - 1].id
|
||||
}
|
||||
} else {
|
||||
this.queue.push(note);
|
||||
@ -165,6 +166,7 @@ export default Vue.extend({
|
||||
|
||||
append(note) {
|
||||
this.notes.push(note);
|
||||
this.cursor = this.notes[this.notes.length - 1].id
|
||||
},
|
||||
|
||||
releaseQueue() {
|
||||
|
@ -85,7 +85,7 @@ export default Vue.extend({
|
||||
this.makePromise = cursor => this.$root.api('users/notes', {
|
||||
userId: this.user.id,
|
||||
limit: fetchLimit + 1,
|
||||
untilId: cursor ? cursor : undefined,
|
||||
untilDate: cursor ? cursor : new Date().getTime() + 1000 * 86400 * 365,
|
||||
withFiles: this.withFiles,
|
||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||
@ -95,7 +95,7 @@ export default Vue.extend({
|
||||
notes.pop();
|
||||
return {
|
||||
notes: notes,
|
||||
cursor: notes[notes.length - 1].id
|
||||
cursor: new Date(notes[notes.length - 1].createdAt).getTime()
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
|
@ -176,10 +176,22 @@ export default define({
|
||||
post() {
|
||||
this.posting = true;
|
||||
|
||||
let visibility = 'public';
|
||||
let localOnly = false;
|
||||
|
||||
const m = this.$store.state.settings.defaultNoteVisibility.match(/^local-(.+)/);
|
||||
if (m) {
|
||||
visibility = m[1];
|
||||
localOnly = true;
|
||||
} else {
|
||||
visibility = this.$store.state.settings.defaultNoteVisibility;
|
||||
}
|
||||
|
||||
this.$root.api('notes/create', {
|
||||
text: this.text == '' ? undefined : this.text,
|
||||
fileIds: this.files.length > 0 ? this.files.map(f => f.id) : undefined,
|
||||
visibility: this.$store.state.settings.defaultNoteVisibility
|
||||
visibility,
|
||||
localOnly,
|
||||
}).then(data => {
|
||||
this.clear();
|
||||
}).catch(err => {
|
||||
|
@ -157,6 +157,7 @@ export default Vue.extend({
|
||||
// オーバーフローしたら古い投稿は捨てる
|
||||
if (this.notes.length >= displayLimit) {
|
||||
this.notes = this.notes.slice(0, displayLimit);
|
||||
this.cursor = this.notes[this.notes.length - 1].id
|
||||
}
|
||||
} else {
|
||||
this.queue.push(note);
|
||||
@ -165,6 +166,7 @@ export default Vue.extend({
|
||||
|
||||
append(note) {
|
||||
this.notes.push(note);
|
||||
this.cursor = this.notes[this.notes.length - 1].id
|
||||
},
|
||||
|
||||
releaseQueue() {
|
||||
|
@ -36,13 +36,13 @@ export default Vue.extend({
|
||||
includeReplies: this.mode == 'with-replies',
|
||||
includeMyRenotes: this.mode != 'my-posts',
|
||||
withFiles: this.mode == 'with-media',
|
||||
untilId: cursor ? cursor : undefined
|
||||
untilDate: cursor ? cursor : new Date().getTime() + 1000 * 86400 * 365
|
||||
}).then(notes => {
|
||||
if (notes.length == fetchLimit + 1) {
|
||||
notes.pop();
|
||||
return {
|
||||
notes: notes,
|
||||
cursor: notes[notes.length - 1].id
|
||||
cursor: new Date(notes[notes.length - 1].createdAt).getTime()
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
|
@ -151,6 +151,7 @@ export default Vue.extend({
|
||||
// オーバーフローしたら古い投稿は捨てる
|
||||
if (this.notes.length >= displayLimit) {
|
||||
this.notes = this.notes.slice(0, displayLimit);
|
||||
this.cursor = this.notes[this.notes.length - 1].id
|
||||
}
|
||||
} else {
|
||||
this.queue.push(note);
|
||||
@ -159,6 +160,7 @@ export default Vue.extend({
|
||||
|
||||
append(note) {
|
||||
this.notes.push(note);
|
||||
this.cursor = this.notes[this.notes.length - 1].id
|
||||
},
|
||||
|
||||
releaseQueue() {
|
||||
|
@ -21,13 +21,13 @@ export default Vue.extend({
|
||||
userId: this.user.id,
|
||||
limit: fetchLimit + 1,
|
||||
withFiles: this.withMedia,
|
||||
untilId: cursor ? cursor : undefined
|
||||
untilDate: cursor ? cursor : new Date().getTime() + 1000 * 86400 * 365
|
||||
}).then(notes => {
|
||||
if (notes.length == fetchLimit + 1) {
|
||||
notes.pop();
|
||||
return {
|
||||
notes: notes,
|
||||
cursor: notes[notes.length - 1].id
|
||||
cursor: new Date(notes[notes.length - 1].createdAt).getTime()
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
|
BIN
src/client/assets/thumbnail-not-available.png
Normal file
BIN
src/client/assets/thumbnail-not-available.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
@ -8,7 +8,7 @@ export default function(file: IDriveFile, thumbnail = false): string {
|
||||
|
||||
if (file.metadata.withoutChunks) {
|
||||
if (thumbnail) {
|
||||
return file.metadata.thumbnailUrl || file.metadata.webpublicUrl || (isImage ? file.metadata.url : null);
|
||||
return file.metadata.thumbnailUrl || file.metadata.webpublicUrl || (isImage ? file.metadata.url : '/assets/thumbnail-not-available.png');
|
||||
} else {
|
||||
return file.metadata.webpublicUrl || file.metadata.url;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ export default async function(ctx: Koa.BaseContext) {
|
||||
await sendRaw();
|
||||
} else {
|
||||
ctx.status = 404;
|
||||
await send(ctx as any, '/dummy.png', { root: assets });
|
||||
await send(ctx as any, '/thumbnail-not-available.png', { root: assets });
|
||||
}
|
||||
}
|
||||
} else if ('web' in ctx.query) {
|
||||
|
Reference in New Issue
Block a user