Skip to content
This repository was archived by the owner on Oct 11, 2022. It is now read-only.

Commit 0d3b296

Browse files
authored
Merge pull request #4410 from withspectrum/2.4.80
2.4.80
2 parents 0fa2967 + b590b95 commit 0d3b296

File tree

36 files changed

+539
-258
lines changed

36 files changed

+539
-258
lines changed

api/mutations/thread/publishThread.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import {
1919
_adminProcessToxicThreadQueue,
2020
_adminProcessUserSpammingThreadsQueue,
2121
} from 'shared/bull/queues';
22-
import getSpectrumScore from 'athena/queues/moderationEvents/spectrum';
2322
import getPerspectiveScore from 'athena/queues/moderationEvents/perspective';
2423
import { events } from 'shared/analytics';
2524
import { trackQueue } from 'shared/bull/queues';
@@ -275,27 +274,23 @@ export default requireAuth(
275274
const title = thread.content.title;
276275
const text = `${title} ${body}`;
277276

278-
const scores = await Promise.all([
279-
getSpectrumScore(text, dbThread.id, dbThread.creatorId).catch(err => 0),
280-
getPerspectiveScore(text).catch(err => 0),
281-
]).catch(err =>
277+
const scores = await getPerspectiveScore(text).catch(err =>
282278
console.error(
283279
'Error getting thread moderation scores from providers',
284280
err.message
285281
)
286282
);
287283

288-
const spectrumScore = scores && scores[0];
289284
const perspectiveScore = scores && scores[1];
290285

291286
// if neither models returned results
292-
if (!spectrumScore && !perspectiveScore) {
287+
if (!perspectiveScore) {
293288
debug('Toxicity checks from providers say not toxic');
294289
return false;
295290
}
296291

297292
// if both services agree that the thread is >= 98% toxic
298-
if ((spectrumScore + perspectiveScore) / 2 >= 0.9) {
293+
if (perspectiveScore >= 0.9) {
299294
debug('Thread is toxic according to both providers');
300295
return true;
301296
}

api/mutations/user/editUser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export default requireAuth(
5555
const pendingEmail = input.email;
5656

5757
// if user is changing their email, make sure it's not taken by someone else
58-
if (pendingEmail !== currentUser.email) {
58+
if (pendingEmail !== currentUser.email || !currentUser.email) {
5959
if (!isEmail(input.email)) {
6060
return new UserError('Please enter a valid email address.');
6161
}

api/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"babel-plugin-transform-flow-strip-types": "^6.22.0",
1717
"babel-plugin-transform-object-rest-spread": "^6.23.0",
1818
"babel-preset-env": "^1.7.0",
19-
"backpack-core": "^0.8.2",
19+
"backpack-core": "^0.8.3",
2020
"body-parser": "^1.18.3",
2121
"bull": "3.3.10",
2222
"casual": "^1.5.12",
@@ -116,7 +116,7 @@
116116
"sanitize-filename": "^1.6.1",
117117
"serialize-javascript": "^1.5.0",
118118
"session-rethinkdb": "^2.0.0",
119-
"slate": "^0.44.6",
119+
"slate": "^0.44.7",
120120
"slate-markdown": "0.1.0",
121121
"slugg": "^1.1.0",
122122
"string-replace-to-array": "^1.0.3",

api/queries/user/email.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@ import type { GraphQLContext } from '../../';
33
import type { DBUser } from 'shared/types';
44
import { isAdmin } from '../../utils/permissions';
55

6-
export default ({ id, email }: DBUser, _: any, { user }: GraphQLContext) => {
6+
export default async (
7+
{ id }: DBUser,
8+
_: any,
9+
{ user, loaders }: GraphQLContext
10+
) => {
711
// Only admins and the user themselves can view the email
812
if (!user || (id !== user.id && !isAdmin(user.id))) return null;
13+
const { email } = await loaders.user.load(id);
914
return email;
1015
};

api/yarn.lock

Lines changed: 19 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -2270,18 +2270,18 @@ backo2@^1.0.2:
22702270
resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
22712271
integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
22722272

2273-
backpack-core@^0.8.2:
2274-
version "0.8.2"
2275-
resolved "https://registry.yarnpkg.com/backpack-core/-/backpack-core-0.8.2.tgz#d8ef661ecbee43a87bce1888603a54eee8490873"
2276-
integrity sha512-EKAiTtL0Ij97bQc+rvzAmSr9moYlbiZD1OBjujCIg/Hr1nasXtViJrw1EedOUjXNFudIa0acfnCAXde/8FcNKQ==
2273+
backpack-core@^0.8.3:
2274+
version "0.8.3"
2275+
resolved "https://registry.yarnpkg.com/backpack-core/-/backpack-core-0.8.3.tgz#7c92458d29c77987fcb278ee83b23b55624ec2af"
2276+
integrity sha512-d94a47CT1+/Ozb9L7wICoenQF4tyaSOxqPrKxFmk33TW67oKHrA6Ye/1ZJjBUVYwjfNCae6iO2xqyrjRzzQAcA==
22772277
dependencies:
22782278
"@babel/core" "^7.1.2"
22792279
babel-loader "^8.0.2"
22802280
babel-preset-backpack "^0.8.2"
22812281
cross-spawn "^5.0.1"
22822282
friendly-errors-webpack-plugin "^1.7.0"
22832283
json-loader "^0.5.7"
2284-
nodemon "^1.11.0"
2284+
nodemon "^1.18.7"
22852285
ramda "^0.23.0"
22862286
source-map-support "^0.4.15"
22872287
webpack "^4.23.1"
@@ -3685,11 +3685,6 @@ duplexer3@^0.1.4:
36853685
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
36863686
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
36873687

3688-
duplexer@^0.1.1, duplexer@~0.1.1:
3689-
version "0.1.1"
3690-
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
3691-
integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
3692-
36933688
duplexify@^3.4.2, duplexify@^3.6.0:
36943689
version "3.6.1"
36953690
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125"
@@ -3919,20 +3914,6 @@ etag@~1.8.1:
39193914
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
39203915
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
39213916

3922-
event-stream@~3.3.0:
3923-
version "3.3.6"
3924-
resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.6.tgz#cac1230890e07e73ec9cacd038f60a5b66173eef"
3925-
integrity sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==
3926-
dependencies:
3927-
duplexer "^0.1.1"
3928-
flatmap-stream "^0.1.0"
3929-
from "^0.1.7"
3930-
map-stream "0.0.7"
3931-
pause-stream "^0.0.11"
3932-
split "^1.0.1"
3933-
stream-combiner "^0.2.2"
3934-
through "^2.3.8"
3935-
39363917
eventemitter3@^3.1.0:
39373918
version "3.1.0"
39383919
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
@@ -4265,11 +4246,6 @@ find-with-regex@^1.0.2, find-with-regex@^1.1.3:
42654246
resolved "https://registry.yarnpkg.com/find-with-regex/-/find-with-regex-1.1.3.tgz#d6c6f2debee898d36b6a77e05709b13dd5dc8a26"
42664247
integrity sha512-zkEVQ1H3PIQL/19ADKt1lCQU4QGM3OneiderUcFgn5EgTm/TnoUh7HxPAwP8w/vXxWSLC6KtpbDQpypJ5+majw==
42674248

4268-
flatmap-stream@^0.1.0:
4269-
version "0.1.2"
4270-
resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.2.tgz#b1da359a93f24f6d96e46f948552d997e3c2863d"
4271-
integrity sha512-ucyr6WkLXjyMuHPtOUq4l+nSAxgWi7v4QO508eQ9resnGj+lSup26oIsUI5aH8k4Qfpjsxa8dDf9UCKkS2KHzQ==
4272-
42734249
42744250
version "0.0.6"
42754251
resolved "https://registry.yarnpkg.com/flexbuffer/-/flexbuffer-0.0.6.tgz#039fdf23f8823e440c38f3277e6fef1174215b30"
@@ -4381,11 +4357,6 @@ from2@^2.1.0:
43814357
inherits "^2.0.1"
43824358
readable-stream "^2.0.0"
43834359

4384-
from@^0.1.7:
4385-
version "0.1.7"
4386-
resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
4387-
integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=
4388-
43894360
fs-extra@^5.0.0:
43904361
version "5.0.0"
43914362
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
@@ -6429,11 +6400,6 @@ map-obj@^1.0.0, map-obj@^1.0.1:
64296400
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
64306401
integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
64316402

6432-
6433-
version "0.0.7"
6434-
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8"
6435-
integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=
6436-
64376403
map-visit@^1.0.0:
64386404
version "1.0.0"
64396405
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
@@ -6867,16 +6833,16 @@ node-releases@^1.0.1:
68676833
dependencies:
68686834
semver "^5.3.0"
68696835

6870-
nodemon@^1.11.0:
6871-
version "1.18.6"
6872-
resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.6.tgz#89b1136634d6c0afc7de24cc932a760e999e2c76"
6873-
integrity sha512-4pHQNYEZun+IkIC2jCaXEhkZnfA7rQe73i8RkdRyDJls/K+WxR7IpI5uNUsAvQ0zWvYcCDNGD+XVtw2ZG86/uQ==
6836+
nodemon@^1.18.7:
6837+
version "1.18.7"
6838+
resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.7.tgz#716b66bf3e89ac4fcfb38a9e61887a03fc82efbb"
6839+
integrity sha512-xuC1V0F5EcEyKQ1VhHYD13owznQbUw29JKvZ8bVH7TmuvVNHvvbp9pLgE4PjTMRJVe0pJ8fGRvwR2nMiosIsPQ==
68746840
dependencies:
68756841
chokidar "^2.0.4"
68766842
debug "^3.1.0"
68776843
ignore-by-default "^1.0.1"
68786844
minimatch "^3.0.4"
6879-
pstree.remy "^1.1.0"
6845+
pstree.remy "^1.1.2"
68806846
semver "^5.5.0"
68816847
supports-color "^5.2.0"
68826848
touch "^3.1.0"
@@ -7365,13 +7331,6 @@ path-type@^2.0.0:
73657331
dependencies:
73667332
pify "^2.0.0"
73677333

7368-
pause-stream@^0.0.11:
7369-
version "0.0.11"
7370-
resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
7371-
integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=
7372-
dependencies:
7373-
through "~2.3"
7374-
73757334
73767335
version "0.0.1"
73777336
resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d"
@@ -7572,13 +7531,6 @@ prr@~1.0.1:
75727531
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
75737532
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
75747533

7575-
ps-tree@^1.1.0:
7576-
version "1.1.0"
7577-
resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014"
7578-
integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ=
7579-
dependencies:
7580-
event-stream "~3.3.0"
7581-
75827534
pseudomap@^1.0.2:
75837535
version "1.0.2"
75847536
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
@@ -7589,12 +7541,10 @@ psl@^1.1.24:
75897541
resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67"
75907542
integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==
75917543

7592-
pstree.remy@^1.1.0:
7593-
version "1.1.0"
7594-
resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.0.tgz#f2af27265bd3e5b32bbfcc10e80bac55ba78688b"
7595-
integrity sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==
7596-
dependencies:
7597-
ps-tree "^1.1.0"
7544+
pstree.remy@^1.1.2:
7545+
version "1.1.2"
7546+
resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.2.tgz#4448bbeb4b2af1fed242afc8dc7416a6f504951a"
7547+
integrity sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA==
75987548

75997549
public-encrypt@^4.0.0:
76007550
version "4.0.3"
@@ -8580,10 +8530,10 @@ [email protected]:
85808530
react "^0.14.0 || ^15.0.0"
85818531
styled-components "^2.0.0"
85828532

8583-
slate@^0.44.6:
8584-
version "0.44.6"
8585-
resolved "https://registry.yarnpkg.com/slate/-/slate-0.44.6.tgz#47ab3127641bc1faa3e5a5b01bfab8861843c82e"
8586-
integrity sha512-Q5DASlX7tUXrAaQFb5AliZjAeuXkI1oVq3HM8A/mb4qClwpSpuKq/uOcA3855bFzAOXSjUM/kESK3M3oiIHnNA==
8533+
slate@^0.44.7:
8534+
version "0.44.7"
8535+
resolved "https://registry.yarnpkg.com/slate/-/slate-0.44.7.tgz#3cf8a3f2bd78c03e02a6cf8bb726ae9f43582e13"
8536+
integrity sha512-h2aW2r20qtn4oUk8rh7qbW3NluLMlsDCctFNwWdrDmGnwTfszfVApcapnOFmv+qmKnZsPZLqidl3mHnXVL/lcQ==
85878537
dependencies:
85888538
debug "^3.1.0"
85898539
direction "^0.1.5"
@@ -8728,13 +8678,6 @@ split-string@^3.0.1, split-string@^3.0.2:
87288678
dependencies:
87298679
extend-shallow "^3.0.0"
87308680

8731-
split@^1.0.1:
8732-
version "1.0.1"
8733-
resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
8734-
integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==
8735-
dependencies:
8736-
through "2"
8737-
87388681
sprintf-js@~1.0.2:
87398682
version "1.0.3"
87408683
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -8803,14 +8746,6 @@ stream-browserify@^2.0.1:
88038746
inherits "~2.0.1"
88048747
readable-stream "^2.0.2"
88058748

8806-
stream-combiner@^0.2.2:
8807-
version "0.2.2"
8808-
resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858"
8809-
integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=
8810-
dependencies:
8811-
duplexer "~0.1.1"
8812-
through "~2.3.4"
8813-
88148749
stream-each@^1.1.0:
88158750
version "1.2.3"
88168751
resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
@@ -9130,7 +9065,7 @@ through2@^2.0.0:
91309065
readable-stream "~2.3.6"
91319066
xtend "~4.0.1"
91329067

9133-
through@2, through@^2.3.8, through@~2.3, through@~2.3.4:
9068+
through@^2.3.8, through@~2.3.4:
91349069
version "2.3.8"
91359070
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
91369071
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=

athena/queues/moderationEvents/message.js

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { getThreadById } from '../../models/thread';
55
import { getCommunityById } from '../../models/community';
66
import { getChannelById } from '../../models/channel';
77
import { toState, toPlainText } from 'shared/draft-utils';
8-
import getSpectrumScore from './spectrum';
98
import getPerspectiveScore from './perspective';
109
import { _adminSendToxicContentEmailQueue } from 'shared/bull/queues';
1110
import type { Job, AdminToxicMessageJobData } from 'shared/bull/types';
@@ -21,11 +20,8 @@ export default async (job: Job<AdminToxicMessageJobData>) => {
2120
? toPlainText(toState(JSON.parse(message.content.body)))
2221
: message.content.body;
2322

24-
const scores = await Promise.all([
25-
getSpectrumScore(text, message.id, message.senderId),
26-
getPerspectiveScore(text),
27-
]).catch(err =>
28-
console.error('Error getting message moderation scores from providers', {
23+
const perspectiveScore = await getPerspectiveScore(text).catch(err =>
24+
console.error('Error getting message moderation score from providers', {
2925
error: err.message,
3026
data: {
3127
text,
@@ -34,11 +30,7 @@ export default async (job: Job<AdminToxicMessageJobData>) => {
3430
})
3531
);
3632

37-
const spectrumScore = scores && scores[0];
38-
const perspectiveScore = scores && scores[1];
39-
40-
// if neither models returned results
41-
if (!spectrumScore && !perspectiveScore) return;
33+
if (!perspectiveScore) return;
4234

4335
const [user, thread] = await Promise.all([
4436
getUserById(message.senderId),
@@ -58,7 +50,6 @@ export default async (job: Job<AdminToxicMessageJobData>) => {
5850
community,
5951
channel,
6052
toxicityConfidence: {
61-
spectrumScore,
6253
perspectiveScore,
6354
},
6455
});

athena/queues/moderationEvents/perspective.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default async (text: string) => {
2929
});
3030

3131
// if something failed?
32-
if (!request || !request.data) return;
32+
if (!request || !request.data) return null;
3333

3434
// get the scores from the request
3535
const { attributeScores } = request.data;

athena/queues/moderationEvents/spectrum.js

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)