From 070cd52c21683eed44c38525bb8cc5235a78b41d Mon Sep 17 00:00:00 2001
From: syuilo
Date: Tue, 24 Apr 2018 21:24:06 +0900
Subject: wip
---
src/client/app/desktop/views/components/ui.header.account.vue | 3 +++
1 file changed, 3 insertions(+)
(limited to 'src/client/app')
diff --git a/src/client/app/desktop/views/components/ui.header.account.vue b/src/client/app/desktop/views/components/ui.header.account.vue
index 2d4d23933c..54da97071a 100644
--- a/src/client/app/desktop/views/components/ui.header.account.vue
+++ b/src/client/app/desktop/views/components/ui.header.account.vue
@@ -16,6 +16,9 @@
%fa:star%%i18n:@favorites%%fa:angle-right%
+
+ %fa:cog%%i18n:@lists%%fa:angle-right%
+
diff --git a/src/models/user.ts b/src/models/user.ts
index 82110a5475..0621b6e736 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -1,5 +1,6 @@
import * as mongo from 'mongodb';
import deepcopy = require('deepcopy');
+import sequential = require('promise-sequential');
import rap from '@prezzemolo/rap';
import db from '../db/mongodb';
import Note, { pack as packNote, deleteNote } from './note';
@@ -167,9 +168,9 @@ export async function deleteUser(user: string | mongo.ObjectID | IUser) {
).map(x => deleteAccessToken(x)));
// このユーザーのNoteをすべて削除
- await Promise.all((
- await Note.find({ userId: u._id })
- ).map(x => deleteNote(x)));
+ //await sequential((
+ // await Note.find({ userId: u._id })
+ //).map(x => () => deleteNote(x)));
// このユーザーのNoteReactionをすべて削除
await Promise.all((
diff --git a/src/server/api/endpoints/auth/accept.ts b/src/server/api/endpoints/auth/accept.ts
index e0073b31e6..b6297d663d 100644
--- a/src/server/api/endpoints/auth/accept.ts
+++ b/src/server/api/endpoints/auth/accept.ts
@@ -3,7 +3,7 @@
*/
import rndstr from 'rndstr';
const crypto = require('crypto');
-import $ from 'cafy'; import ID from '../../../../cafy-id';
+import $ from 'cafy';
import App from '../../../../models/app';
import AuthSess from '../../../../models/auth-session';
import AccessToken from '../../../../models/access-token';
diff --git a/src/server/api/endpoints/notes/trend.ts b/src/server/api/endpoints/notes/trend.ts
index 6c220fc922..48ecd5b843 100644
--- a/src/server/api/endpoints/notes/trend.ts
+++ b/src/server/api/endpoints/notes/trend.ts
@@ -2,7 +2,7 @@
* Module dependencies
*/
const ms = require('ms');
-import $ from 'cafy'; import ID from '../../../../cafy-id';
+import $ from 'cafy';
import Note, { pack } from '../../../../models/note';
/**
diff --git a/src/server/api/endpoints/users/recommendation.ts b/src/server/api/endpoints/users/recommendation.ts
index 1e8ef83432..f72bb04bf1 100644
--- a/src/server/api/endpoints/users/recommendation.ts
+++ b/src/server/api/endpoints/users/recommendation.ts
@@ -2,7 +2,7 @@
* Module dependencies
*/
const ms = require('ms');
-import $ from 'cafy'; import ID from '../../../../cafy-id';
+import $ from 'cafy';
import User, { pack } from '../../../../models/user';
import { getFriendIds } from '../../common/get-friends';
import Mute from '../../../../models/mute';
diff --git a/src/server/api/endpoints/users/search.ts b/src/server/api/endpoints/users/search.ts
index faf9b901d1..da30f47c2a 100644
--- a/src/server/api/endpoints/users/search.ts
+++ b/src/server/api/endpoints/users/search.ts
@@ -2,7 +2,7 @@
* Module dependencies
*/
import * as mongo from 'mongodb';
-import $ from 'cafy'; import ID from '../../../../cafy-id';
+import $ from 'cafy';
import User, { pack } from '../../../../models/user';
import config from '../../../../config';
const escapeRegexp = require('escape-regexp');
--
cgit v1.2.3-freya
From 1ba5dfd79c66edd871f922d21861557e6152cc6c Mon Sep 17 00:00:00 2001
From: syuilo
Date: Wed, 25 Apr 2018 06:34:50 +0900
Subject: wip
---
.../app/desktop/views/components/lists-window.vue | 37 +++++++++++++++++
src/server/api/endpoints/users/list/create.ts | 25 -----------
src/server/api/endpoints/users/list/push.ts | 48 ----------------------
src/server/api/endpoints/users/lists/create.ts | 25 +++++++++++
src/server/api/endpoints/users/lists/list.ts | 13 ++++++
src/server/api/endpoints/users/lists/push.ts | 48 ++++++++++++++++++++++
6 files changed, 123 insertions(+), 73 deletions(-)
create mode 100644 src/client/app/desktop/views/components/lists-window.vue
delete mode 100644 src/server/api/endpoints/users/list/create.ts
delete mode 100644 src/server/api/endpoints/users/list/push.ts
create mode 100644 src/server/api/endpoints/users/lists/create.ts
create mode 100644 src/server/api/endpoints/users/lists/list.ts
create mode 100644 src/server/api/endpoints/users/lists/push.ts
(limited to 'src/client/app')
diff --git a/src/client/app/desktop/views/components/lists-window.vue b/src/client/app/desktop/views/components/lists-window.vue
new file mode 100644
index 0000000000..7d6a5def2c
--- /dev/null
+++ b/src/client/app/desktop/views/components/lists-window.vue
@@ -0,0 +1,37 @@
+
+
+ %fa:list% リスト
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/server/api/endpoints/users/list/create.ts b/src/server/api/endpoints/users/list/create.ts
deleted file mode 100644
index 6ae510f52b..0000000000
--- a/src/server/api/endpoints/users/list/create.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Module dependencies
- */
-import $ from 'cafy';
-import UserList, { pack } from '../../../../../models/user-list';
-
-/**
- * Create a user list
- */
-module.exports = async (params, user) => new Promise(async (res, rej) => {
- // Get 'title' parameter
- const [title, titleErr] = $(params.title).string().range(1, 100).$;
- if (titleErr) return rej('invalid title param');
-
- // insert
- const userList = await UserList.insert({
- createdAt: new Date(),
- userId: user._id,
- title: title,
- userIds: []
- });
-
- // Response
- res(await pack(userList));
-});
diff --git a/src/server/api/endpoints/users/list/push.ts b/src/server/api/endpoints/users/list/push.ts
deleted file mode 100644
index f21234775d..0000000000
--- a/src/server/api/endpoints/users/list/push.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import $ from 'cafy'; import ID from '../../../../../cafy-id';
-import UserList from '../../../../../models/user-list';
-import User from '../../../../../models/user';
-
-/**
- * Add a user to a user list
- */
-module.exports = async (params, me) => new Promise(async (res, rej) => {
- // Get 'listId' parameter
- const [listId, listIdErr] = $(params.listId).type(ID).$;
- if (listIdErr) return rej('invalid listId param');
-
- // Fetch the list
- const userList = await UserList.findOne({
- _id: listId,
- userId: me._id,
- });
-
- if (userList == null) {
- return rej('list not found');
- }
-
- // Get 'userId' parameter
- const [userId, userIdErr] = $(params.userId).type(ID).$;
- if (userIdErr) return rej('invalid userId param');
-
- // Fetch the user
- const user = await User.findOne({
- _id: userId
- });
-
- if (user == null) {
- return rej('user not found');
- }
-
- if (userList.userIds.map(id => id.toHexString()).includes(user._id.toHexString())) {
- return rej('the user already added');
- }
-
- // Push the user
- await UserList.update({ _id: userList._id }, {
- $push: {
- userIds: user._id
- }
- });
-
- res();
-});
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts
new file mode 100644
index 0000000000..6ae510f52b
--- /dev/null
+++ b/src/server/api/endpoints/users/lists/create.ts
@@ -0,0 +1,25 @@
+/**
+ * Module dependencies
+ */
+import $ from 'cafy';
+import UserList, { pack } from '../../../../../models/user-list';
+
+/**
+ * Create a user list
+ */
+module.exports = async (params, user) => new Promise(async (res, rej) => {
+ // Get 'title' parameter
+ const [title, titleErr] = $(params.title).string().range(1, 100).$;
+ if (titleErr) return rej('invalid title param');
+
+ // insert
+ const userList = await UserList.insert({
+ createdAt: new Date(),
+ userId: user._id,
+ title: title,
+ userIds: []
+ });
+
+ // Response
+ res(await pack(userList));
+});
diff --git a/src/server/api/endpoints/users/lists/list.ts b/src/server/api/endpoints/users/lists/list.ts
new file mode 100644
index 0000000000..d19339a1f5
--- /dev/null
+++ b/src/server/api/endpoints/users/lists/list.ts
@@ -0,0 +1,13 @@
+import UserList, { pack } from '../../../../../models/user-list';
+
+/**
+ * Add a user to a user list
+ */
+module.exports = async (params, me) => new Promise(async (res, rej) => {
+ // Fetch lists
+ const userLists = await UserList.find({
+ userId: me._id,
+ });
+
+ res(await Promise.all(userLists.map(x => pack(x))));
+});
diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts
new file mode 100644
index 0000000000..f21234775d
--- /dev/null
+++ b/src/server/api/endpoints/users/lists/push.ts
@@ -0,0 +1,48 @@
+import $ from 'cafy'; import ID from '../../../../../cafy-id';
+import UserList from '../../../../../models/user-list';
+import User from '../../../../../models/user';
+
+/**
+ * Add a user to a user list
+ */
+module.exports = async (params, me) => new Promise(async (res, rej) => {
+ // Get 'listId' parameter
+ const [listId, listIdErr] = $(params.listId).type(ID).$;
+ if (listIdErr) return rej('invalid listId param');
+
+ // Fetch the list
+ const userList = await UserList.findOne({
+ _id: listId,
+ userId: me._id,
+ });
+
+ if (userList == null) {
+ return rej('list not found');
+ }
+
+ // Get 'userId' parameter
+ const [userId, userIdErr] = $(params.userId).type(ID).$;
+ if (userIdErr) return rej('invalid userId param');
+
+ // Fetch the user
+ const user = await User.findOne({
+ _id: userId
+ });
+
+ if (user == null) {
+ return rej('user not found');
+ }
+
+ if (userList.userIds.map(id => id.toHexString()).includes(user._id.toHexString())) {
+ return rej('the user already added');
+ }
+
+ // Push the user
+ await UserList.update({ _id: userList._id }, {
+ $push: {
+ userIds: user._id
+ }
+ });
+
+ res();
+});
--
cgit v1.2.3-freya
From c7f80182c251237d34fa17d67baf055ae3632b04 Mon Sep 17 00:00:00 2001
From: syuilo
Date: Wed, 25 Apr 2018 12:36:54 +0900
Subject: wip
---
.eslintrc | 1 +
.../app/desktop/views/components/list-timeline.vue | 75 ++++++++++++++++++
.../app/desktop/views/components/lists-window.vue | 17 ++++-
src/client/app/desktop/views/components/notes.vue | 88 ++++++++++++++++++++--
.../app/desktop/views/components/timeline.core.vue | 70 ++++-------------
.../desktop/views/components/ui.header.account.vue | 5 ++
src/client/app/desktop/views/pages/list.vue | 72 ++++++++++++++++++
7 files changed, 264 insertions(+), 64 deletions(-)
create mode 100644 src/client/app/desktop/views/components/list-timeline.vue
create mode 100644 src/client/app/desktop/views/pages/list.vue
(limited to 'src/client/app')
diff --git a/.eslintrc b/.eslintrc
index 7a74d6ef9b..0943cb4b64 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -14,6 +14,7 @@
"vue/no-unused-vars": false,
"vue/attributes-order": false,
"vue/require-prop-types": false,
+ "vue/require-default-prop": false,
"no-console": 0,
"no-unused-vars": 0,
"no-empty": 0
diff --git a/src/client/app/desktop/views/components/list-timeline.vue b/src/client/app/desktop/views/components/list-timeline.vue
new file mode 100644
index 0000000000..61300f6f8f
--- /dev/null
+++ b/src/client/app/desktop/views/components/list-timeline.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
diff --git a/src/client/app/desktop/views/components/lists-window.vue b/src/client/app/desktop/views/components/lists-window.vue
index 7d6a5def2c..7097e5ed4b 100644
--- a/src/client/app/desktop/views/components/lists-window.vue
+++ b/src/client/app/desktop/views/components/lists-window.vue
@@ -2,10 +2,8 @@
%fa:list% リスト
-
-
-
-
+
+ {{ list.title }}
@@ -25,6 +23,17 @@ export default Vue.extend({
});
},
methods: {
+ add() {
+ (this as any).apis.input({
+ title: 'リスト名',
+ }).then(async title => {
+ const list = await (this as any).api('users/lists/create', {
+ title
+ });
+
+ this.$router.push(`i/lists/${ list.id }`);
+ });
+ },
close() {
(this as any).$refs.window.close();
}
diff --git a/src/client/app/desktop/views/components/notes.vue b/src/client/app/desktop/views/components/notes.vue
index 1a33a4240b..2822cb8c0f 100644
--- a/src/client/app/desktop/views/components/notes.vue
+++ b/src/client/app/desktop/views/components/notes.vue
@@ -9,8 +9,11 @@
-