From 59647798b97615d43710dde8f6c52894f39b8c4a Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Sun, 13 Nov 2016 22:40:33 +0100 Subject: [PATCH] prepareStatus: nsfw tag parsing. --- src/modules/statuses.js | 9 +++++++++ test/unit/specs/modules/statuses.spec.js | 21 +++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/modules/statuses.js b/src/modules/statuses.js index 6fe2558c8c..5e3a373a56 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -114,6 +114,15 @@ export const findMaxId = (...args) => { return (maxBy(flatten(args), 'id') || {}).id } +export const prepareStatus = (status) => { + if (status.nsfw === undefined) { + const nsfwRegex = /#nsfw/i + status.nsfw = !!status.text.match(nsfwRegex) + } + + return status +} + export const mutations = { addNewStatuses (state, { statuses, showImmediately = false, timeline }) { const timelineObject = state.timelines[timeline] diff --git a/test/unit/specs/modules/statuses.spec.js b/test/unit/specs/modules/statuses.spec.js index 372ab3ca48..1de15e6ab2 100644 --- a/test/unit/specs/modules/statuses.spec.js +++ b/test/unit/specs/modules/statuses.spec.js @@ -1,5 +1,5 @@ import { cloneDeep } from 'lodash' -import { defaultState, mutations, findMaxId } from '../../../../src/modules/statuses.js' +import { defaultState, mutations, findMaxId, prepareStatus } from '../../../../src/modules/statuses.js' const makeMockStatus = ({id, text}) => { return { @@ -11,7 +11,24 @@ const makeMockStatus = ({id, text}) => { } } -describe('findMaxId', () => { +describe('Statuses.prepareStatus', () => { + it('sets nsfw for statuses with the #nsfw tag', () => { + const safe = makeMockStatus({id: 1, text: 'Hello oniichan'}) + const nsfw = makeMockStatus({id: 1, text: 'Hello oniichan #nsfw'}) + + expect(prepareStatus(safe).nsfw).to.eq(false) + expect(prepareStatus(nsfw).nsfw).to.eq(true) + }) + + it('leaves existing nsfw settings alone', () => { + const nsfw = makeMockStatus({id: 1, text: 'Hello oniichan #nsfw'}) + nsfw.nsfw = false + + expect(prepareStatus(nsfw).nsfw).to.eq(false) + }) +}) + +describe('Statuses.findMaxId', () => { it('returns the largest id in any of the given arrays', () => { const statusesOne = [{ id: 100 }, { id: 2 }] const statusesTwo = [{ id: 3 }]