Merge branch 'fix-notification.vue' into swn
This commit is contained in:
commit
a585664b72
31 changed files with 60 additions and 338 deletions
11
CHANGELOG.md
11
CHANGELOG.md
|
@ -10,6 +10,17 @@
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
## 12.x.x (unreleased)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- クライアント: ログインにおいてパスワードが誤っている際のエラーメッセージが正しく表示されない問題を修正
|
||||||
|
- クライアント: リアクションツールチップ、Renoteツールチップのユーザーの並び順を修正
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- クライアント: ノートにモデレーターバッジを表示するのを廃止
|
||||||
|
|
||||||
## 12.97.0 (2021/11/19)
|
## 12.97.0 (2021/11/19)
|
||||||
|
|
||||||
### Improvements
|
### Improvements
|
||||||
|
|
127
README.md
127
README.md
|
@ -1,116 +1,57 @@
|
||||||
[![Misskey](https://github.com/misskey-dev/assets/blob/main/banner.png?raw=true)](https://join.misskey.page/)
|
[![Misskey](https://github.com/misskey-dev/assets/blob/main/banner.png?raw=true)](https://join.misskey.page/)
|
||||||
|
|
||||||
<h1 align="center">Misskey</h1>
|
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
[![Dependencies](https://img.shields.io/david/misskey-dev/misskey.svg?style=for-the-badge&logo=npm)](https://david-dm.org/misskey-dev/misskey)
|
**🌎 A forever evolving, interplanetary microblogging platform. 🚀**
|
||||||
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=github)](http://makeapullrequest.com)
|
|
||||||
[![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech)
|
|
||||||
|
|
||||||
**A forever evolving, interplanetary microblogging platform.**
|
**Misskey** is a distributed microblogging platform with advanced features such as Reactions and a highly customizable UI.
|
||||||
|
|
||||||
<a href="https://join.misskey.page/">Misskey</a> is a decentralized microblogging platform born on Earth.
|
[Learn more](https://misskey-hub.net/)
|
||||||
Since it exists within the Fediverse (a universe where various social media platforms are organized),
|
|
||||||
it is mutually linked with other social media platforms.
|
---
|
||||||
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? <a href="https://join.misskey.page/">Find an instance!</a>
|
|
||||||
|
[✨ Find an instance](https://misskey-hub.net/instances.html)
|
||||||
|
•
|
||||||
|
[📦 Create your own instance](https://misskey-hub.net/docs/install/install.html)
|
||||||
|
•
|
||||||
|
[🛠️ Contribute](./CONTRIBUTING.md)
|
||||||
|
•
|
||||||
|
[🚀 Join the community](https://discord.gg/Wp8gVStHW3)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
|
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
<div>
|
||||||
|
|
||||||
Do you have a question? Or are you experiencing trouble?
|
<a href="https://xn--931a.moe/"><img src="https://github.com/misskey-dev/misskey/blob/develop/assets/ai.png?raw=true" align="right" height="320px"/></a>
|
||||||
Visit [our forum](https://forum.misskey.io/)!
|
|
||||||
|
|
||||||
---
|
## ✨ Features
|
||||||
|
- **ActivityPub support**\
|
||||||
|
It is possible to interact with other software.
|
||||||
|
- **Reactions**\
|
||||||
|
You can add "reactions" to each post, making it easy for you to express your feelings.
|
||||||
|
- **Drive**\
|
||||||
|
An interface to manage uploaded files such as images, videos, sounds, etc.
|
||||||
|
You can also organize your favorite content into folders, making it easy to share again.
|
||||||
|
- **Rich Web UI**\
|
||||||
|
Misskey has a rich WebUI by default.
|
||||||
|
It is highly customizable by flexibly changing the layout and installing various widgets and themes.
|
||||||
|
Furthermore, plug-ins can be created using AiScript, a original programming language.
|
||||||
|
- and more...
|
||||||
|
|
||||||
![](https://ja.mstdn.wiki/images/e/ed/Deck.jpg)
|
</div>
|
||||||
|
|
||||||
:sparkles: Features
|
<div style="clear: both;"></div>
|
||||||
----------------------------------------------------------------
|
|
||||||
<a href="https://xn--931a.moe/"><img src="https://github.com/misskey-dev/misskey/blob/develop/assets/ai-orig.png?raw=true" align="right" height="320px"/></a>
|
|
||||||
|
|
||||||
<h3>Posting</h3>
|
## Sponsors
|
||||||
<p>
|
|
||||||
Post your ideas, discussion topics, fun moments, or anything else you want to share! Misskey supports text, emoji, pictures, videos, and polls!
|
|
||||||
</p>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<h3 >Reactions</h3>
|
|
||||||
<p>
|
|
||||||
Reactions are the simplest way to respond to others' posts. Simply pick a reaction emote from the list! Reactions on Misskey are much more expressive than other social media services which only allow “liking”.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<h3>Interface</h3>
|
|
||||||
<p>
|
|
||||||
Customize the UI to your own tastes! No UI will work for everyone, so Misskey is completely customizable. Make Misskey *yours* by editing the style, adjusting timeline layouts, and placing widgets.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<h3>Misskey Drive</h3>
|
|
||||||
<p>
|
|
||||||
Organize and store your files! Want to post a picture you have already uploaded? Wish you could organize your files into folders? Misskey Drive is a solution!
|
|
||||||
</p>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
...and more!
|
|
||||||
|
|
||||||
:package: Create your own instance
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Please see the [Setup and Installation Guide](https://misskey-hub.net/docs/install/install.html).
|
|
||||||
|
|
||||||
:wrench: Contribution
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Please see the [Contribution Guide](./CONTRIBUTING.md).
|
|
||||||
|
|
||||||
### Collaborators
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td><img src="https://avatars3.githubusercontent.com/u/4439005?s=460&v=4" alt="syuilo" width="100"></td>
|
|
||||||
<td><img src="https://avatars0.githubusercontent.com/u/10798641?s=460&v=4" alt="AyaMorisawa" width="100"></td>
|
|
||||||
<td><img src="https://avatars1.githubusercontent.com/u/30769358?s=460&v=4" alt="mei23" width="100"></td>
|
|
||||||
<td><img src="https://avatars2.githubusercontent.com/u/20679825?s=460&v=4" alt="acid-chicken" width="100"></td>
|
|
||||||
<td><img src="https://avatars2.githubusercontent.com/u/6533808?s=460&v=4" alt="rinsuki" width="100"></td>
|
|
||||||
<td><img src="https://avatars0.githubusercontent.com/u/7973572?s=460&v=4" alt="tamaina" width="100"></td>
|
|
||||||
<td><img src="https://avatars1.githubusercontent.com/u/7106976?s=460&v=4" alt="Xeltica" width="100"></td>
|
|
||||||
<td><img src="https://avatars1.githubusercontent.com/u/17376330?s=460&v=4" alt="u1-liquid" width="100"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center"><a href="https://github.com/syuilo">@syuilo</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/AyaMorisawa">@AyaMorisawa</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/mei23">@mei23</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/acid-chicken">@acid-chicken</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/rinsuki">@rinsuki</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/tamaina">@tamaina</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/Xeltica">@Xeltica</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/u1-liquid">@u1-liquid</a></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
To receive updates of this repo, follow [@repo@misskey.io](https://misskey.io/@repo) on fediverse.
|
|
||||||
|
|
||||||
Related projects
|
|
||||||
----------------------------------------------------------------
|
|
||||||
- [misskey.js](https://github.com/misskey-dev/misskey.js) - Misskey SDK for JavaScript
|
|
||||||
- [mfm.js](https://github.com/misskey-dev/mfm.js) - MFM parser
|
|
||||||
|
|
||||||
Sponsors
|
|
||||||
----------------------------------------------------------------
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<a class="rss3" title="RSS3" href="https://rss3.io/" target="_blank" style="display: inline-block;"><img src="https://rss3.io/assets/images/Logo.svg" alt="RSS3" style="display: inline-block; height: 60px;"></a>
|
<a class="rss3" title="RSS3" href="https://rss3.io/" target="_blank" style="display: inline-block;"><img src="https://rss3.io/assets/images/Logo.svg" alt="RSS3" style="display: inline-block; height: 60px;"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
:heart: Backers
|
## Backers
|
||||||
----------------------------------------------------------------
|
|
||||||
<!-- PATREON_START -->
|
<!-- PATREON_START -->
|
||||||
<table><tr>
|
<table><tr>
|
||||||
<td><img src="https://c8.patreon.com/2/200/20832595" alt="Roujo " width="100"></td>
|
<td><img src="https://c8.patreon.com/2/200/20832595" alt="Roujo " width="100"></td>
|
||||||
|
|
|
@ -808,6 +808,7 @@ ffVisibility: "つながりの公開範囲"
|
||||||
ffVisibilityDescription: "自分のフォロー/フォロワー情報の公開範囲を設定できます。"
|
ffVisibilityDescription: "自分のフォロー/フォロワー情報の公開範囲を設定できます。"
|
||||||
continueThread: "さらにスレッドを見る"
|
continueThread: "さらにスレッドを見る"
|
||||||
deleteAccountConfirm: "アカウントが削除されます。よろしいですか?"
|
deleteAccountConfirm: "アカウントが削除されます。よろしいですか?"
|
||||||
|
incorrectPassword: "パスワードが間違っています。"
|
||||||
|
|
||||||
_emailUnavailable:
|
_emailUnavailable:
|
||||||
used: "既に使用されています"
|
used: "既に使用されています"
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
"use strict";
|
|
||||||
// ex) node built/tools/accept-migration Yo 1000000000001
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const typeorm_1 = require("typeorm");
|
|
||||||
const index_1 = require("@/config/index");
|
|
||||||
(0, typeorm_1.createConnection)({
|
|
||||||
type: 'postgres',
|
|
||||||
host: index_1.default.db.host,
|
|
||||||
port: index_1.default.db.port,
|
|
||||||
username: index_1.default.db.user,
|
|
||||||
password: index_1.default.db.pass,
|
|
||||||
database: index_1.default.db.db,
|
|
||||||
extra: index_1.default.db.extra,
|
|
||||||
synchronize: false,
|
|
||||||
dropSchema: false,
|
|
||||||
}).then(c => {
|
|
||||||
c.query(`INSERT INTO migrations(timestamp,name) VALUES (${process.argv[3]}, '${process.argv[2]}${process.argv[3]}');`).then(() => {
|
|
||||||
console.log('done');
|
|
||||||
process.exit(0);
|
|
||||||
}).catch(e => {
|
|
||||||
console.log('ERROR:');
|
|
||||||
console.log(e);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=accept-migration.js.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"accept-migration.js","sourceRoot":"","sources":["accept-migration.ts"],"names":[],"mappings":";AAAA,yDAAyD;;AAEzD,qCAA2C;AAC3C,0CAAoC;AAEpC,IAAA,0BAAgB,EAAC;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACpB,IAAI,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACpB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACxB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACxB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,EAAE;IACtB,KAAK,EAAE,eAAM,CAAC,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;CACjB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IACX,CAAC,CAAC,KAAK,CAAC,kDAAkD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAChI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
|
@ -1,30 +0,0 @@
|
||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const index_1 = require("@/models/index");
|
|
||||||
const gen_id_1 = require("@/misc/gen-id");
|
|
||||||
async function main(name, url, alias) {
|
|
||||||
const aliases = alias != null ? [alias] : [];
|
|
||||||
await index_1.Emojis.save({
|
|
||||||
id: (0, gen_id_1.genId)(),
|
|
||||||
host: null,
|
|
||||||
name,
|
|
||||||
url,
|
|
||||||
aliases,
|
|
||||||
updatedAt: new Date()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
const name = args[0];
|
|
||||||
const url = args[1];
|
|
||||||
if (!name)
|
|
||||||
throw new Error('require name');
|
|
||||||
if (!url)
|
|
||||||
throw new Error('require url');
|
|
||||||
main(name, url).then(() => {
|
|
||||||
console.log('success');
|
|
||||||
process.exit(0);
|
|
||||||
}).catch(e => {
|
|
||||||
console.warn(e);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=add-emoji.js.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"add-emoji.js","sourceRoot":"","sources":["add-emoji.ts"],"names":[],"mappings":";;AAAA,0CAAwC;AACxC,0CAAsC;AAEtC,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,GAAW,EAAE,KAAc;IAC5D,MAAM,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,MAAM,cAAM,CAAC,IAAI,CAAC;QACjB,EAAE,EAAE,IAAA,cAAK,GAAE;QACX,IAAI,EAAE,IAAI;QACV,IAAI;QACJ,GAAG;QACH,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE;KACrB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,IAAI,CAAC,IAAI;IAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3C,IAAI,CAAC,GAAG;IAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AAEzC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACzB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
|
@ -1,30 +0,0 @@
|
||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const postgre_1 = require("../db/postgre");
|
|
||||||
const typeorm_1 = require("typeorm");
|
|
||||||
const user_1 = require("@/models/entities/user");
|
|
||||||
async function main(username) {
|
|
||||||
if (!username)
|
|
||||||
throw `username required`;
|
|
||||||
username = username.replace(/^@/, '');
|
|
||||||
await (0, postgre_1.initDb)();
|
|
||||||
const Users = (0, typeorm_1.getRepository)(user_1.User);
|
|
||||||
const res = await Users.update({
|
|
||||||
usernameLower: username.toLowerCase(),
|
|
||||||
host: null
|
|
||||||
}, {
|
|
||||||
isAdmin: false
|
|
||||||
});
|
|
||||||
if (res.affected !== 1) {
|
|
||||||
throw 'Failed';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
main(args[0]).then(() => {
|
|
||||||
console.log('Success');
|
|
||||||
process.exit(0);
|
|
||||||
}).catch(e => {
|
|
||||||
console.error(`Error: ${e.message || e}`);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=demote-admin.js.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"demote-admin.js","sourceRoot":"","sources":["demote-admin.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,qCAAwC;AACxC,iDAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,QAAgB;IACnC,IAAI,CAAC,QAAQ;QAAE,MAAM,mBAAmB,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtC,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,KAAK,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAC9B,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,IAAI;KACV,EAAE;QACF,OAAO,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;QACvB,MAAM,QAAQ,CAAC;KACf;AACF,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
|
@ -1,30 +0,0 @@
|
||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const postgre_1 = require("../db/postgre");
|
|
||||||
const typeorm_1 = require("typeorm");
|
|
||||||
const user_1 = require("@/models/entities/user");
|
|
||||||
async function main(username) {
|
|
||||||
if (!username)
|
|
||||||
throw `username required`;
|
|
||||||
username = username.replace(/^@/, '');
|
|
||||||
await (0, postgre_1.initDb)();
|
|
||||||
const Users = (0, typeorm_1.getRepository)(user_1.User);
|
|
||||||
const res = await Users.update({
|
|
||||||
usernameLower: username.toLowerCase(),
|
|
||||||
host: null
|
|
||||||
}, {
|
|
||||||
isAdmin: true
|
|
||||||
});
|
|
||||||
if (res.affected !== 1) {
|
|
||||||
throw 'Failed';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
main(args[0]).then(() => {
|
|
||||||
console.log('Success');
|
|
||||||
process.exit(0);
|
|
||||||
}).catch(e => {
|
|
||||||
console.error(`Error: ${e.message || e}`);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=mark-admin.js.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"mark-admin.js","sourceRoot":"","sources":["mark-admin.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,qCAAwC;AACxC,iDAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,QAAgB;IACnC,IAAI,CAAC,QAAQ;QAAE,MAAM,mBAAmB,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtC,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,KAAK,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAC9B,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,IAAI;KACV,EAAE;QACF,OAAO,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;QACvB,MAAM,QAAQ,CAAC;KACf;AACF,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
|
@ -1,14 +0,0 @@
|
||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const question_1 = require("@/remote/activitypub/models/question");
|
|
||||||
async function main(uri) {
|
|
||||||
return await (0, question_1.updateQuestion)(uri);
|
|
||||||
}
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
const uri = args[0];
|
|
||||||
main(uri).then(result => {
|
|
||||||
console.log(`Done: ${result}`);
|
|
||||||
}).catch(e => {
|
|
||||||
console.warn(e);
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=refresh-question.js.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"refresh-question.js","sourceRoot":"","sources":["refresh-question.ts"],"names":[],"mappings":";;AAAA,mEAAsE;AAEtE,KAAK,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,MAAM,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
|
@ -1,26 +0,0 @@
|
||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const postgre_1 = require("@/db/postgre");
|
|
||||||
const Acct = require("misskey-js/built/acct");
|
|
||||||
async function main(acct) {
|
|
||||||
await (0, postgre_1.initDb)();
|
|
||||||
const { resolveUser } = await Promise.resolve().then(() => require('@/remote/resolve-user'));
|
|
||||||
const { username, host } = Acct.parse(acct);
|
|
||||||
await resolveUser(username, host, {}, true);
|
|
||||||
}
|
|
||||||
// get args
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
let acct = args[0];
|
|
||||||
// normalize args
|
|
||||||
acct = acct.replace(/^@/, '');
|
|
||||||
// check args
|
|
||||||
if (!acct.match(/^\w+@\w/)) {
|
|
||||||
throw `Invalid acct format. Valid format are user@host`;
|
|
||||||
}
|
|
||||||
console.log(`resync ${acct}`);
|
|
||||||
main(acct).then(() => {
|
|
||||||
console.log('Done');
|
|
||||||
}).catch(e => {
|
|
||||||
console.warn(e);
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=resync-remote-user.js.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"resync-remote-user.js","sourceRoot":"","sources":["resync-remote-user.ts"],"names":[],"mappings":";;AAAA,0CAAsC;AACtC,8CAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,IAAY;IAC/B,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,GAAG,2CAAa,uBAAuB,EAAC,CAAC;IAE9D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,WAAW;AACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnB,iBAAiB;AACjB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE9B,aAAa;AACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;IAC3B,MAAM,iDAAiD,CAAC;CACxD;AAED,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAE9B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
|
@ -1,47 +0,0 @@
|
||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const index_1 = require("@/models/index");
|
|
||||||
// node built/tools/show-signin-history username
|
|
||||||
// => {Success} {Date} {IPAddrsss}
|
|
||||||
// node built/tools/show-signin-history username user-agent,x-forwarded-for
|
|
||||||
// with user-agent and x-forwarded-for
|
|
||||||
// node built/tools/show-signin-history username all
|
|
||||||
// with full request headers
|
|
||||||
async function main(username, headers) {
|
|
||||||
const user = await index_1.Users.findOne({
|
|
||||||
host: null,
|
|
||||||
usernameLower: username.toLowerCase(),
|
|
||||||
});
|
|
||||||
if (user == null)
|
|
||||||
throw new Error('User not found');
|
|
||||||
const history = await index_1.Signins.find({
|
|
||||||
userId: user.id
|
|
||||||
});
|
|
||||||
for (const signin of history) {
|
|
||||||
console.log(`${signin.success ? 'OK' : 'NG'} ${signin.createdAt ? signin.createdAt.toISOString() : 'Unknown'} ${signin.ip}`);
|
|
||||||
// headers
|
|
||||||
if (headers != null) {
|
|
||||||
for (const key of Object.keys(signin.headers)) {
|
|
||||||
if (headers.includes('all') || headers.includes(key)) {
|
|
||||||
console.log(` ${key}: ${signin.headers[key]}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// get args
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
let username = args[0];
|
|
||||||
let headers;
|
|
||||||
if (args[1] != null) {
|
|
||||||
headers = args[1].split(/,/).map(header => header.toLowerCase());
|
|
||||||
}
|
|
||||||
// normalize args
|
|
||||||
username = username.replace(/^@/, '');
|
|
||||||
main(username, headers).then(() => {
|
|
||||||
process.exit(0);
|
|
||||||
}).catch(e => {
|
|
||||||
console.warn(e);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=show-signin-history.js.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"show-signin-history.js","sourceRoot":"","sources":["show-signin-history.ts"],"names":[],"mappings":";;AAAA,0CAAgD;AAEhD,gDAAgD;AAChD,mCAAmC;AAEnC,2EAA2E;AAC3E,uCAAuC;AAEvC,oDAAoD;AACpD,6BAA6B;AAE7B,KAAK,UAAU,IAAI,CAAC,QAAgB,EAAE,OAAkB;IACvD,MAAM,IAAI,GAAG,MAAM,aAAK,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IAEH,IAAI,IAAI,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,MAAM,eAAO,CAAC,IAAI,CAAC;QAClC,MAAM,EAAE,IAAI,CAAC,EAAE;KACf,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAE7H,UAAU;QACV,IAAI,OAAO,IAAI,IAAI,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACrD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACjD;aACD;SACD;KACD;AACF,CAAC;AAED,WAAW;AACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,OAA6B,CAAC;AAElC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;IACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;CACjE;AAED,iBAAiB;AACjB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAEtC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
|
@ -42,8 +42,6 @@
|
||||||
<MkUserName :user="appearNote.user"/>
|
<MkUserName :user="appearNote.user"/>
|
||||||
</MkA>
|
</MkA>
|
||||||
<span v-if="appearNote.user.isBot" class="is-bot">bot</span>
|
<span v-if="appearNote.user.isBot" class="is-bot">bot</span>
|
||||||
<span v-if="appearNote.user.isAdmin" class="admin"><i class="fas fa-bookmark"></i></span>
|
|
||||||
<span v-if="!appearNote.user.isAdmin && appearNote.user.isModerator" class="moderator"><i class="far fa-bookmark"></i></span>
|
|
||||||
<span v-if="appearNote.visibility !== 'public'" class="visibility">
|
<span v-if="appearNote.visibility !== 'public'" class="visibility">
|
||||||
<i v-if="appearNote.visibility === 'home'" class="fas fa-home"></i>
|
<i v-if="appearNote.visibility === 'home'" class="fas fa-home"></i>
|
||||||
<i v-else-if="appearNote.visibility === 'followers'" class="fas fa-unlock"></i>
|
<i v-else-if="appearNote.visibility === 'followers'" class="fas fa-unlock"></i>
|
||||||
|
@ -1017,12 +1015,6 @@ export default defineComponent({
|
||||||
border: solid 0.5px var(--divider);
|
border: solid 0.5px var(--divider);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .admin,
|
|
||||||
> .moderator {
|
|
||||||
margin-right: 0.5em;
|
|
||||||
color: var(--badge);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
</MkA>
|
</MkA>
|
||||||
<div v-if="note.user.isBot" class="is-bot">bot</div>
|
<div v-if="note.user.isBot" class="is-bot">bot</div>
|
||||||
<div class="username"><MkAcct :user="note.user"/></div>
|
<div class="username"><MkAcct :user="note.user"/></div>
|
||||||
<div v-if="note.user.isAdmin" class="admin"><i class="fas fa-bookmark"></i></div>
|
|
||||||
<div v-if="!note.user.isAdmin && note.user.isModerator" class="moderator"><i class="far fa-bookmark"></i></div>
|
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<MkA class="created-at" :to="notePage(note)">
|
<MkA class="created-at" :to="notePage(note)">
|
||||||
<MkTime :time="note.createdAt"/>
|
<MkTime :time="note.createdAt"/>
|
||||||
|
@ -79,13 +77,6 @@ export default defineComponent({
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .admin,
|
|
||||||
> .moderator {
|
|
||||||
flex-shrink: 0;
|
|
||||||
margin-right: 0.5em;
|
|
||||||
color: var(--badge);
|
|
||||||
}
|
|
||||||
|
|
||||||
> .username {
|
> .username {
|
||||||
flex-shrink: 9999999;
|
flex-shrink: 9999999;
|
||||||
margin: 0 .5em 0 0;
|
margin: 0 .5em 0 0;
|
||||||
|
|
|
@ -113,7 +113,7 @@ export default defineComponent({
|
||||||
os.stream.send('readNotification', {
|
os.stream.send('readNotification', {
|
||||||
id: props.notification.id
|
id: props.notification.id
|
||||||
});
|
});
|
||||||
entries.map(({ target }) => observer.unobserve(target));
|
observer.disconnect();
|
||||||
});
|
});
|
||||||
|
|
||||||
readObserver.observe(elRef.value);
|
readObserver.observe(elRef.value);
|
||||||
|
@ -122,12 +122,12 @@ export default defineComponent({
|
||||||
connection.on('readAllNotifications', () => readObserver.disconnect());
|
connection.on('readAllNotifications', () => readObserver.disconnect());
|
||||||
|
|
||||||
watch(props.notification.isRead, () => {
|
watch(props.notification.isRead, () => {
|
||||||
readObserver.unobserve(elRef.value);
|
readObserver.disconnect();
|
||||||
});
|
});
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
if (readObserver) readObserver.disconnect();
|
readObserver.disconnect();
|
||||||
if (connection) connection.dispose();
|
connection.dispose();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -97,9 +97,7 @@ export default defineComponent({
|
||||||
limit: 11
|
limit: 11
|
||||||
});
|
});
|
||||||
|
|
||||||
const users = reactions
|
const users = reactions.map(x => x.user);
|
||||||
.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime())
|
|
||||||
.map(x => x.user);
|
|
||||||
|
|
||||||
os.popup(XDetails, {
|
os.popup(XDetails, {
|
||||||
showing,
|
showing,
|
||||||
|
|
|
@ -48,9 +48,7 @@ export default defineComponent({
|
||||||
limit: 11
|
limit: 11
|
||||||
});
|
});
|
||||||
|
|
||||||
const users = renotes
|
const users = renotes.map(x => x.user);
|
||||||
.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime())
|
|
||||||
.map(x => x.user);
|
|
||||||
|
|
||||||
if (users.length < 1) return;
|
if (users.length < 1) return;
|
||||||
|
|
||||||
|
|
|
@ -197,6 +197,14 @@ export default defineComponent({
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case '932c904e-9460-45b7-9ce6-7ed33be7eb2c': {
|
||||||
|
os.alert({
|
||||||
|
type: 'error',
|
||||||
|
title: this.$ts.loginFailed,
|
||||||
|
text: this.$ts.incorrectPassword,
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 'e03a5f46-d309-4865-9b69-56282d94e1eb': {
|
case 'e03a5f46-d309-4865-9b69-56282d94e1eb': {
|
||||||
showSuspendedDialog();
|
showSuspendedDialog();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
</MkA>
|
</MkA>
|
||||||
<span v-if="note.user.isBot" class="is-bot">bot</span>
|
<span v-if="note.user.isBot" class="is-bot">bot</span>
|
||||||
<span class="username"><MkAcct :user="note.user"/></span>
|
<span class="username"><MkAcct :user="note.user"/></span>
|
||||||
<span v-if="note.user.isAdmin" class="admin"><i class="fas fa-bookmark"></i></span>
|
|
||||||
<span v-if="!note.user.isAdmin && note.user.isModerator" class="moderator"><i class="far fa-bookmark"></i></span>
|
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<MkA class="created-at" :to="notePage(note)">
|
<MkA class="created-at" :to="notePage(note)">
|
||||||
<MkTime :time="note.createdAt"/>
|
<MkTime :time="note.createdAt"/>
|
||||||
|
@ -79,12 +77,6 @@ export default defineComponent({
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .admin,
|
|
||||||
> .moderator {
|
|
||||||
margin-right: 0.5em;
|
|
||||||
color: var(--badge);
|
|
||||||
}
|
|
||||||
|
|
||||||
> .username {
|
> .username {
|
||||||
margin: 0 .5em 0 0;
|
margin: 0 .5em 0 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
Loading…
Reference in a new issue