From 574e26e1e63a5b7c8eed0b2af3b9367bd0b9b30f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E6=99=BA=E5=AD=90?= Date: Thu, 28 Apr 2022 03:56:48 +0800 Subject: [PATCH] feat: add user followed --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- src/command/user/followed.ts | 31 +++++++++++++++++++++++++++++++ src/command/user/index.ts | 3 +++ 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 src/command/user/followed.ts diff --git a/package.json b/package.json index 836e9fe..807184d 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "commander": "^9.2.0", "enquirer": "^2.3.6", "eventemitter3": "^4.0.7", - "jike-sdk": "^0.15.1", + "jike-sdk": "^0.16.0", "node-fetch": "^3.2.3", "open": "^8.4.0", "terminal-image": "^2.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa7498f..02d38bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,7 +15,7 @@ specifiers: esmo: ^0.14.1 eventemitter3: ^4.0.7 fast-glob: ^3.2.11 - jike-sdk: ^0.15.1 + jike-sdk: ^0.16.0 node-fetch: ^3.2.3 open: ^8.4.0 prettier: ^2.6.2 @@ -29,7 +29,7 @@ dependencies: commander: 9.2.0 enquirer: 2.3.6 eventemitter3: 4.0.7 - jike-sdk: 0.15.1 + jike-sdk: 0.16.0 node-fetch: 3.2.3 open: 8.4.0 terminal-image: 2.0.0 @@ -2706,8 +2706,8 @@ packages: plist: 3.0.5 dev: false - /jike-sdk/0.15.1: - resolution: {integrity: sha512-Zmqoj8bVE4TlDTJ2um5+gsW0k/CaU7F+2oufIJ3nWkfNNgRA1sd86d1kxxoMwylDnajdIi4jS4x42g5+jlkOdw==} + /jike-sdk/0.16.0: + resolution: {integrity: sha512-mHFCWI3Vfen2oQqHd3yjLt/hiIrDheiB9Iv4Opd9hg4G6LGnrgnIBNwoUXTWXoHQweMQtR1TZAN4FtdPq9J/nQ==} engines: {node: '>=14.17.0'} dev: false diff --git a/src/command/user/followed.ts b/src/command/user/followed.ts new file mode 100644 index 0000000..cd68028 --- /dev/null +++ b/src/command/user/followed.ts @@ -0,0 +1,31 @@ +import { logger } from '@poppinss/cliui' +import { createCommand } from 'commander' +import { createClient, filterUsers } from '../../utils/user' + +export const followed = createCommand('followed') + .description('output whether the follower is followed by following user') + .option('-f, --following ', 'the username of the following user') + .option('-F, --follower ', 'the username of the follower user') + .action(() => { + const { following, follower } = followed.opts<{ + following?: string + follower?: string + }>() + isFollowed(following, follower) + }) + +export const isFollowed = async (following?: string, follower?: string) => { + const [user] = filterUsers() + const client = createClient(user) + + const getUser = (username?: string) => + username ? client.getUser(username) : client.getSelf() + + // TODO: auto select mode + const isFollowed = await getUser(following).isFollowing( + getUser(follower), + 'following' + ) + + logger.info(`${isFollowed ? 'Followed!' : 'Not followed.'}`) +} diff --git a/src/command/user/index.ts b/src/command/user/index.ts index a0dd16d..301d5e4 100644 --- a/src/command/user/index.ts +++ b/src/command/user/index.ts @@ -7,6 +7,7 @@ import { profile } from './profile' import { renew } from './renew' import { view } from './view' import { alias } from './alias' +import { followed } from './followed' export const user = createCommand('user') .description('user-related operations') @@ -21,6 +22,7 @@ Example call: $ jike-cli user view 82D23B32-CF36-4C59-AD6F-D05E3552CBF3 $ jike-cli user info $ jike-cli user alias -u + $ jike-cli user followed -f 5C505995-681E-4C1E-AD4A-1CC683627B6E ` ) .usage(' [flags]') @@ -32,3 +34,4 @@ Example call: .addCommand(profile) .addCommand(view) .addCommand(alias) + .addCommand(followed)