From a60fc390a036078a857693193cfd18b9ee42954b Mon Sep 17 00:00:00 2001 From: Hakaba Hitoyo Date: Mon, 7 Jan 2019 17:26:47 +0000 Subject: [PATCH 01/49] Add instance information page for mobile --- src/boot/routes.js | 2 ++ src/components/about/about.js | 13 +++++++++++++ src/components/about/about.vue | 12 ++++++++++++ src/components/side_drawer/side_drawer.vue | 5 +++++ .../terms_of_service_panel.js | 9 +++++++++ .../terms_of_service_panel.vue | 18 ++++++++++++++++++ src/i18n/en.json | 1 + 7 files changed, 60 insertions(+) create mode 100644 src/components/about/about.js create mode 100644 src/components/about/about.vue create mode 100644 src/components/terms_of_service_panel/terms_of_service_panel.js create mode 100644 src/components/terms_of_service_panel/terms_of_service_panel.vue diff --git a/src/boot/routes.js b/src/boot/routes.js index e892839cc..055137945 100644 --- a/src/boot/routes.js +++ b/src/boot/routes.js @@ -16,6 +16,7 @@ import Notifications from 'components/notifications/notifications.vue' import UserPanel from 'components/user_panel/user_panel.vue' import LoginForm from 'components/login_form/login_form.vue' import ChatPanel from 'components/chat_panel/chat_panel.vue' +import About from 'components/about/about.vue' export default (store) => { return [ @@ -46,6 +47,7 @@ export default (store) => { { name: 'chat', path: '/chat', component: ChatPanel, props: () => ({ floating: false }) }, { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) }, { name: 'user-search', path: '/user-search', component: UserSearch, props: (route) => ({ query: route.query.query }) }, + { name: 'about', path: '/about', component: About }, { name: 'user-profile', path: '/(users/)?:name', component: UserProfile } ] } diff --git a/src/components/about/about.js b/src/components/about/about.js new file mode 100644 index 000000000..b4433b4e0 --- /dev/null +++ b/src/components/about/about.js @@ -0,0 +1,13 @@ +import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue' +import FeaturesPanel from '../features_panel/features_panel.vue' +import TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue' + +const About = { + components: { + InstanceSpecificPanel, + FeaturesPanel, + TermsOfServicePanel + } +} + +export default About diff --git a/src/components/about/about.vue b/src/components/about/about.vue new file mode 100644 index 000000000..bf87e0b85 --- /dev/null +++ b/src/components/about/about.vue @@ -0,0 +1,12 @@ + + + + + diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue index f5ccba678..7c792deb4 100644 --- a/src/components/side_drawer/side_drawer.vue +++ b/src/components/side_drawer/side_drawer.vue @@ -71,6 +71,11 @@ {{ $t("settings.settings") }} +
  • + + {{ $t("nav.about") }} + +
  • {{ $t("login.logout") }} diff --git a/src/components/terms_of_service_panel/terms_of_service_panel.js b/src/components/terms_of_service_panel/terms_of_service_panel.js new file mode 100644 index 000000000..4276f8f77 --- /dev/null +++ b/src/components/terms_of_service_panel/terms_of_service_panel.js @@ -0,0 +1,9 @@ +const TermsOfServicePanel = { + computed: { + content () { + return this.$store.state.instance.tos + } + } +} + +export default TermsOfServicePanel diff --git a/src/components/terms_of_service_panel/terms_of_service_panel.vue b/src/components/terms_of_service_panel/terms_of_service_panel.vue new file mode 100644 index 000000000..eb0f25277 --- /dev/null +++ b/src/components/terms_of_service_panel/terms_of_service_panel.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/src/i18n/en.json b/src/i18n/en.json index eec101f78..8a6d13104 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -29,6 +29,7 @@ "username": "Username" }, "nav": { + "about": "About", "back": "Back", "chat": "Local Chat", "friend_requests": "Follow Requests", From a8f6099be22a1eff4267c859f3954c1a22e3e793 Mon Sep 17 00:00:00 2001 From: shpuld Date: Tue, 8 Jan 2019 23:09:03 +0200 Subject: [PATCH 02/49] Retain userId on clearing user timeline, don't flush when empty timeline --- src/modules/statuses.js | 2 ++ src/services/timeline_fetcher/timeline_fetcher.service.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/statuses.js b/src/modules/statuses.js index dccccf724..b7560f1ce 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -346,7 +346,9 @@ export const mutations = { each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status }) }, clearTimeline (state, { timeline }) { + const userId = state.timelines[timeline].userId state.timelines[timeline] = emptyTl() + state.timelines[timeline].userId = userId }, setFavorited (state, { status, value }) { const newStatus = state.allStatusesObject[status.id] diff --git a/src/services/timeline_fetcher/timeline_fetcher.service.js b/src/services/timeline_fetcher/timeline_fetcher.service.js index c2a7de560..727f6c604 100644 --- a/src/services/timeline_fetcher/timeline_fetcher.service.js +++ b/src/services/timeline_fetcher/timeline_fetcher.service.js @@ -31,7 +31,7 @@ const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false return apiService.fetchTimeline(args) .then((statuses) => { - if (!older && statuses.length >= 20 && !timelineData.loading) { + if (!older && statuses.length >= 20 && !timelineData.loading && timelineData.statuses.length) { store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId }) } update({store, statuses, timeline, showImmediately, userId}) From 0b8f616af10f4fcb4697b5540f0ad5188056728c Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 9 Jan 2019 14:18:36 +0300 Subject: [PATCH 03/49] fix #262 part of user profiles not being able to load previous posts --- src/components/user_profile/user_profile.js | 6 +++--- src/components/user_profile/user_profile.vue | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js index 2ca098171..bde207079 100644 --- a/src/components/user_profile/user_profile.js +++ b/src/components/user_profile/user_profile.js @@ -21,7 +21,7 @@ const UserProfile = { return this.$route.params.id || this.user.id }, userName () { - return this.$route.params.name + return this.$route.params.name || this.user.screen_name }, friends () { return this.user.friends @@ -68,7 +68,7 @@ const UserProfile = { } this.$store.dispatch('stopFetching', 'user') this.$store.commit('clearTimeline', { timeline: 'user' }) - this.$store.dispatch('startFetching', ['user', this.userName]) + this.$store.dispatch('startFetching', ['user', this.fetchBy]) }, userId () { if (!this.isExternal) { @@ -76,7 +76,7 @@ const UserProfile = { } this.$store.dispatch('stopFetching', 'user') this.$store.commit('clearTimeline', { timeline: 'user' }) - this.$store.dispatch('startFetching', ['user', this.userId]) + this.$store.dispatch('startFetching', ['user', this.fetchBy]) }, user () { if (this.user.id && !this.user.followers) { diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue index a46befa53..506190260 100644 --- a/src/components/user_profile/user_profile.vue +++ b/src/components/user_profile/user_profile.vue @@ -3,7 +3,7 @@ diff --git a/src/i18n/en.json b/src/i18n/en.json index 8a6d13104..1dd3462b6 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -39,6 +39,7 @@ "timeline": "Timeline", "twkn": "The Whole Known Network", "user_search": "User Search", + "who_to_follow": "Who to follow", "preferences": "Preferences" }, "notifications": { From fc83d76ab529a348eca853462b9fadfc37a9d6a2 Mon Sep 17 00:00:00 2001 From: hakabahitoyo Date: Wed, 16 Jan 2019 18:14:15 +0900 Subject: [PATCH 25/49] update japanese translation --- src/i18n/ja.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/i18n/ja.json b/src/i18n/ja.json index 31ca4a527..161856f03 100644 --- a/src/i18n/ja.json +++ b/src/i18n/ja.json @@ -29,6 +29,7 @@ "username": "ユーザーめい" }, "nav": { + "about": "これはなに?", "back": "もどる", "chat": "ローカルチャット", "friend_requests": "フォローリクエスト", @@ -38,6 +39,7 @@ "timeline": "タイムライン", "twkn": "つながっているすべてのネットワーク", "user_search": "ユーザーをさがす", + "who_to_follow": "おすすめユーザー", "preferences": "せってい" }, "notifications": { @@ -50,6 +52,7 @@ "repeated_you": "あなたのステータスがリピートされました" }, "post_status": { + "new_status": "とうこうする", "account_not_locked_warning": "あなたのアカウントは {0} ではありません。あなたをフォローすれば、だれでも、フォロワーげんていのステータスをよむことができます。", "account_not_locked_warning_link": "ロックされたアカウント", "attachments_sensitive": "ファイルをNSFWにする", From 7d157203392adcbd9752db05d259d5dc32aa19a0 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 16 Jan 2019 17:30:47 +0300 Subject: [PATCH 26/49] fix notifications? --- src/modules/statuses.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/modules/statuses.js b/src/modules/statuses.js index f90b0ed3b..84f652588 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -297,9 +297,12 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot // Only add a new notification if we don't have one for the same action // TODO: this technically works but should be checking for notification.id, not action.id i think if (!find(state.notifications.data, (oldNotification) => oldNotification.action.id === action.id)) { - // TODO: adapt to "what if notification ids are not actually numbers" - state.notifications.maxId = Math.max(notification.id, state.notifications.maxId) - state.notifications.minId = Math.min(notification.id, state.notifications.minId) + state.notifications.maxId = notification.id > state.notifications.maxId + ? notification.id + : state.notifications.maxId + state.notifications.minId = notification.id < state.notifications.minId + ? notification.id + : state.notifications.minId const fresh = !notification.is_seen const status = notification.ntype === 'like' From 387bf794ffbfb202fc426a578f174e7d6e3681d6 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 16 Jan 2019 18:52:30 +0300 Subject: [PATCH 27/49] fixx????? --- src/modules/statuses.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/statuses.js b/src/modules/statuses.js index 84f652588..c564dec18 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -289,6 +289,7 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot const allStatuses = state.allStatuses const allStatusesObject = state.allStatusesObject each(notifications, (notification) => { + notification.notice.id = String(notification.notice.id) const result = mergeOrAdd(allStatuses, allStatusesObject, notification.notice) const action = result.item // For sequential IDs BE passes numbers as numbers, we want them as strings. From 9682ee66ce82505fce9a11056bcda2af9b8c4e5a Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 17 Jan 2019 19:23:14 +0300 Subject: [PATCH 28/49] added conversions to ids for consistency from the get-go --- src/services/entity_normalizer/entity_normalizer.service.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index adc7f0475..2c8f5b54a 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -29,7 +29,7 @@ export const parseUser = (data) => { // case for users in "mentions" property for statuses in MastoAPI const mastoShort = masto && !data.hasOwnProperty('avatar') - output.id = data.id + output.id = String(data.id) if (masto) { output.screen_name = data.acct @@ -152,7 +152,7 @@ export const parseStatus = (data) => { output.statusnet_conversation_id = data.statusnet_conversation_id } - output.id = Number(data.id) + output.id = String(data.id) output.visibility = data.visibility output.created_at = new Date(data.created_at) @@ -201,7 +201,7 @@ export const parseNotification = (data) => { } output.created_at = new Date(data.created_at) - output.id = data.id + output.id = String(data.id) return output } From a2ef716f3b4b82564fb14d19665d64257d3d629b Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 17 Jan 2019 19:27:57 +0300 Subject: [PATCH 29/49] consistency in tests too --- test/unit/specs/modules/statuses.spec.js | 28 +++++++++---------- .../entity_normalizer.spec.js | 12 ++++---- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/test/unit/specs/modules/statuses.spec.js b/test/unit/specs/modules/statuses.spec.js index 076e238c4..33628b9b2 100644 --- a/test/unit/specs/modules/statuses.spec.js +++ b/test/unit/specs/modules/statuses.spec.js @@ -82,7 +82,7 @@ describe('The Statuses module', () => { const status = makeMockStatus({id: '1'}) const otherStatus = makeMockStatus({id: '3'}) status.uri = 'xxx' - const deletion = makeMockStatus({id: 2, type: 'deletion'}) + const deletion = makeMockStatus({id: '2', type: 'deletion'}) deletion.text = 'Dolus deleted notice {{tag:gs.smuglo.li,2016-11-18:noticeId=1038007:objectType=note}}.' deletion.uri = 'xxx' @@ -131,9 +131,9 @@ describe('The Statuses module', () => { it('splits retweets from their status and links them', () => { const state = cloneDeep(defaultState) - const status = makeMockStatus({id: 1}) - const retweet = makeMockStatus({id: 2, type: 'retweet'}) - const modStatus = makeMockStatus({id: 1, text: 'something else'}) + const status = makeMockStatus({id: '1'}) + const retweet = makeMockStatus({id: '2', type: 'retweet'}) + const modStatus = makeMockStatus({id: '1', text: 'something else'}) retweet.retweeted_status = status @@ -173,9 +173,9 @@ describe('The Statuses module', () => { it('replaces existing statuses with the same id, coming from a retweet', () => { const state = cloneDeep(defaultState) - const status = makeMockStatus({id: 1}) - const modStatus = makeMockStatus({id: 1, text: 'something else'}) - const retweet = makeMockStatus({id: 2, type: 'retweet'}) + const status = makeMockStatus({id: '1'}) + const modStatus = makeMockStatus({id: '1', text: 'something else'}) + const retweet = makeMockStatus({id: '2', type: 'retweet'}) retweet.retweeted_status = modStatus // Add original status @@ -197,7 +197,7 @@ describe('The Statuses module', () => { const status = makeMockStatus({id: '1'}) const favorite = { - id: 2, + id: '2', type: 'favorite', in_reply_to_status_id: '1', // The API uses strings here... uri: 'tag:shitposter.club,2016-08-21:fave:3895:note:773501:2016-08-21T16:52:15+00:00', @@ -225,7 +225,7 @@ describe('The Statuses module', () => { } const ownFavorite = { - id: 3, + id: '3', type: 'favorite', in_reply_to_status_id: '1', // The API uses strings here... uri: 'tag:shitposter.club,2016-08-21:fave:3895:note:773501:2016-08-21T16:52:15+00:00', @@ -251,7 +251,7 @@ describe('The Statuses module', () => { mentionedStatus.uri = 'xxx' otherStatus.attentions = [user] - const deletion = makeMockStatus({id: 4, type: 'deletion'}) + const deletion = makeMockStatus({id: '4', type: 'deletion'}) deletion.text = 'Dolus deleted notice {{tag:gs.smuglo.li,2016-11-18:noticeId=1038007:objectType=note}}.' deletion.uri = 'xxx' @@ -260,8 +260,8 @@ describe('The Statuses module', () => { state, { notifications: [{ - from_profile: { id: 2 }, - id: 998, + from_profile: { id: '2' }, + id: '998', type: 'mention', status: otherStatus, action: otherStatus, @@ -274,8 +274,8 @@ describe('The Statuses module', () => { state, { notifications: [{ - from_profile: { id: 2 }, - id: 999, + from_profile: { id: '2' }, + id: '999', type: 'mention', status: mentionedStatus, action: mentionedStatus, diff --git a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js index e58827252..2eddd4709 100644 --- a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js +++ b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js @@ -9,7 +9,7 @@ const makeMockStatusQvitter = (overrides = {}) => { external_url: 'https://ap.example/whatever', fave_num: 1, favorited: false, - id: 10335970, + id: '10335970', in_reply_to_ostatus_uri: null, in_reply_to_profileurl: null, in_reply_to_screen_name: null, @@ -20,7 +20,7 @@ const makeMockStatusQvitter = (overrides = {}) => { possibly_sensitive: false, repeat_num: 0, repeated: false, - statusnet_conversation_id: 16300488, + statusnet_conversation_id: '16300488', statusnet_html: '

    haha benis

    ', summary: null, tags: [], @@ -45,7 +45,7 @@ const makeMockUserQvitter = (overrides = {}) => { following: true, follows_you: true, friends_count: 1, - id: 60717, + id: '60717', is_local: false, locked: false, name: 'Spurdo :ebin:', @@ -87,15 +87,15 @@ describe('QVitter preprocessing', () => { }) it('sets nsfw for statuses with the #nsfw tag', () => { - const safe = makeMockStatusQvitter({id: 1, text: 'Hello oniichan'}) - const nsfw = makeMockStatusQvitter({id: 1, text: 'Hello oniichan #nsfw'}) + const safe = makeMockStatusQvitter({id: '1', text: 'Hello oniichan'}) + const nsfw = makeMockStatusQvitter({id: '1', text: 'Hello oniichan #nsfw'}) expect(parseStatus(safe).nsfw).to.eq(false) expect(parseStatus(nsfw).nsfw).to.eq(true) }) it('leaves existing nsfw settings alone', () => { - const nsfw = makeMockStatusQvitter({id: 1, text: 'Hello oniichan #nsfw', nsfw: false}) + const nsfw = makeMockStatusQvitter({id: '1', text: 'Hello oniichan #nsfw', nsfw: false}) expect(parseStatus(nsfw).nsfw).to.eq(false) }) From 1e61c8140b3921183f7721ec3e0db00e671a4410 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 17 Jan 2019 20:44:37 +0300 Subject: [PATCH 30/49] tests for the tests god! bugfixes for bugfixes throne! --- .../entity_normalizer.service.js | 12 +- .../entity_normalizer.spec.js | 213 ++++++++++++++++-- 2 files changed, 200 insertions(+), 25 deletions(-) diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index 2c8f5b54a..ca0f36dba 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -122,6 +122,10 @@ export const parseStatus = (data) => { // Not exactly the same but works output.statusnet_conversation_id = data.id + + if (output.type === 'retweet') { + output.retweeted_status = parseStatus(data.reblog) + } } else { output.favorited = data.favorited output.fave_num = data.fave_num @@ -150,6 +154,10 @@ export const parseStatus = (data) => { output.in_reply_to_user_id = data.in_reply_to_account_id output.statusnet_conversation_id = data.statusnet_conversation_id + + if (output.type === 'retweet') { + output.retweeted_status = parseStatus(data.retweeted_status) + } } output.id = String(data.id) @@ -187,12 +195,12 @@ export const parseNotification = (data) => { output.type = mastoDict[data.type] || data.type output.seen = null // missing output.status = parseStatus(data.status) - output.action = null // missing + output.action = output.status // not sure output.from_profile = parseUser(data.account) } else { const parsedNotice = parseStatus(data.notice) output.type = data.ntype - output.seen = data.is_seen + output.seen = Boolean(data.is_seen) output.status = output.type === 'like' ? parseStatus(data.notice.favorited_status) : parsedNotice diff --git a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js index 2eddd4709..bc127f79b 100644 --- a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js +++ b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js @@ -1,4 +1,6 @@ import { parseStatus, parseUser, parseNotification } from '../../../../../src/services/entity_normalizer/entity_normalizer.service.js' +import mastoapidata from '../../../../fixtures/mastoapi.json' +import qvitterapidata from '../../../../fixtures/statuses.json' const makeMockStatusQvitter = (overrides = {}) => { return Object.assign({ @@ -64,39 +66,204 @@ const makeMockUserQvitter = (overrides = {}) => { }, overrides) } +const makeMockUserMasto = (overrides = {}) => { + return Object.assign({ + acct: 'hj', + avatar: + 'https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png', + avatar_static: + 'https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png', + bot: false, + created_at: '2017-12-17T21:54:14.000Z', + display_name: 'whatever whatever whatever witch', + emojis: [], + fields: [], + followers_count: 705, + following_count: 326, + header: + 'https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png', + header_static: + 'https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png', + id: '1', + locked: false, + note: + 'Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it\'s truly private matter and you\'re instance\'s admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.', + pleroma: { confirmation_pending: false, tags: null }, + source: { note: '', privacy: 'public', sensitive: false }, + statuses_count: 41775, + url: 'https://shigusegubu.club/users/hj', + username: 'hj' + }, overrides) +} + +const makeMockStatusMasto = (overrides = {}) => { + return Object.assign({ + account: makeMockUserMasto(), + application: { name: 'Web', website: null }, + content: + '@sampo god i wish i was there', + created_at: '2019-01-17T16:29:23.000Z', + emojis: [], + favourited: false, + favourites_count: 1, + id: '10423476', + in_reply_to_account_id: '14660', + in_reply_to_id: '10423197', + language: null, + media_attachments: [], + mentions: [ + { + acct: 'sampo@pleroma.soykaf.com', + id: '14660', + url: 'https://pleroma.soykaf.com/users/sampo', + username: 'sampo' + } + ], + muted: false, + reblog: null, + reblogged: false, + reblogs_count: 0, + replies_count: 0, + sensitive: false, + spoiler_text: '', + tags: [], + uri: 'https://shigusegubu.club/objects/16033fbb-97c0-4f0e-b834-7abb92fb8639', + url: 'https://shigusegubu.club/objects/16033fbb-97c0-4f0e-b834-7abb92fb8639', + visibility: 'public' + }, overrides) +} + +const makeMockNotificationQvitter = (overrides = {}) => { + return Object.assign({ + notice: makeMockStatusQvitter(), + ntype: 'follow', + from_profile: makeMockUserQvitter(), + is_seen: 0, + id: 123 + }, overrides) +} + parseNotification parseUser parseStatus makeMockStatusQvitter makeMockUserQvitter -describe('QVitter preprocessing', () => { - it('identifies favorites', () => { - const fav = { - uri: 'tag:soykaf.com,2016-08-21:fave:2558:note:339495:2016-08-21T16:54:04+00:00', - is_post_verb: false - } +describe.only('API Entities normalizer', () => { + describe('statuses', () => { + describe('QVitter preprocessing', () => { + it('doesn\'t blow up', () => { + const parsed = qvitterapidata.map(parseStatus) + expect(parsed.length).to.eq(qvitterapidata.length) + }) - const mastoFav = { - uri: 'tag:mastodon.social,2016-11-27:objectId=73903:objectType=Favourite', - is_post_verb: false - } + it('identifies favorites', () => { + const fav = { + uri: 'tag:soykaf.com,2016-08-21:fave:2558:note:339495:2016-08-21T16:54:04+00:00', + is_post_verb: false + } - expect(parseStatus(makeMockStatusQvitter(fav))).to.have.property('type', 'favorite') - expect(parseStatus(makeMockStatusQvitter(mastoFav))).to.have.property('type', 'favorite') + const mastoFav = { + uri: 'tag:mastodon.social,2016-11-27:objectId=73903:objectType=Favourite', + is_post_verb: false + } + + expect(parseStatus(makeMockStatusQvitter(fav))).to.have.property('type', 'favorite') + expect(parseStatus(makeMockStatusQvitter(mastoFav))).to.have.property('type', 'favorite') + }) + + it('processes repeats correctly', () => { + const post = makeMockStatusQvitter({ retweeted_status: null, id: 'deadbeef' }) + const repeat = makeMockStatusQvitter({ retweeted_status: post, is_post_verb: false, id: 'foobar' }) + + const parsedPost = parseStatus(post) + const parsedRepeat = parseStatus(repeat) + + expect(parsedPost).to.have.property('type', 'status') + expect(parsedRepeat).to.have.property('type', 'retweet') + expect(parsedRepeat).to.have.property('retweeted_status') + expect(parsedRepeat).to.have.deep.property('retweeted_status.id', 'deadbeef') + }) + + it('sets nsfw for statuses with the #nsfw tag', () => { + const safe = makeMockStatusQvitter({id: '1', text: 'Hello oniichan'}) + const nsfw = makeMockStatusQvitter({id: '1', text: 'Hello oniichan #nsfw'}) + + expect(parseStatus(safe).nsfw).to.eq(false) + expect(parseStatus(nsfw).nsfw).to.eq(true) + }) + + it('leaves existing nsfw settings alone', () => { + const nsfw = makeMockStatusQvitter({id: '1', text: 'Hello oniichan #nsfw', nsfw: false}) + + expect(parseStatus(nsfw).nsfw).to.eq(false) + }) + }) + + describe('Mastoapi preprocessing and converting', () => { + it('doesn\'t blow up', () => { + const parsed = mastoapidata.map(parseStatus) + expect(parsed.length).to.eq(mastoapidata.length) + }) + + it('processes repeats correctly', () => { + const post = makeMockStatusMasto({ reblog: null, id: 'deadbeef' }) + const repeat = makeMockStatusMasto({ reblog: post, id: 'foobar' }) + + const parsedPost = parseStatus(post) + const parsedRepeat = parseStatus(repeat) + + expect(parsedPost).to.have.property('type', 'status') + expect(parsedRepeat).to.have.property('type', 'retweet') + expect(parsedRepeat).to.have.property('retweeted_status') + expect(parsedRepeat).to.have.deep.property('retweeted_status.id', 'deadbeef') + }) + }) + }) + // Statuses generally already contain some info regarding users and there's nearly 1:1 mapping, so very little to test + describe('users (MastoAPI)', () => { + it('sets correct is_local for users depending on their screen_name', () => { + const local = makeMockUserMasto({ acct: 'foo' }) + const remote = makeMockUserMasto({ acct: 'foo@bar.baz' }) + + expect(parseUser(local)).to.have.property('is_local', true) + expect(parseUser(remote)).to.have.property('is_local', false) + }) }) - it('sets nsfw for statuses with the #nsfw tag', () => { - const safe = makeMockStatusQvitter({id: '1', text: 'Hello oniichan'}) - const nsfw = makeMockStatusQvitter({id: '1', text: 'Hello oniichan #nsfw'}) + // We currently use QvitterAPI notifications only, and especially due to MastoAPI lacking is_seen, support for MastoAPI + // is more of an afterthought + describe('notifications (QvitterAPI)', () => { + it('correctly normalizes data to FE\'s format', () => { + const notif = makeMockNotificationQvitter({ + id: 123, + notice: makeMockStatusQvitter({ id: 444 }), + from_profile: makeMockUserQvitter({ id: 'spurdo' }) + }) + expect(parseNotification(notif)).to.have.property('id', '123') + expect(parseNotification(notif)).to.have.property('seen', false) + expect(parseNotification(notif)).to.have.deep.property('status.id', '444') + expect(parseNotification(notif)).to.have.deep.property('action.id', '444') + expect(parseNotification(notif)).to.have.deep.property('from_profile.id', 'spurdo') + }) - expect(parseStatus(safe).nsfw).to.eq(false) - expect(parseStatus(nsfw).nsfw).to.eq(true) - }) - - it('leaves existing nsfw settings alone', () => { - const nsfw = makeMockStatusQvitter({id: '1', text: 'Hello oniichan #nsfw', nsfw: false}) - - expect(parseStatus(nsfw).nsfw).to.eq(false) + it('correctly normalizes favorite notifications', () => { + const notif = makeMockNotificationQvitter({ + id: 123, + ntype: 'like', + notice: makeMockStatusQvitter({ + id: 444, + favorited_status: makeMockStatusQvitter({ id: 4412 }) + }), + is_seen: 1, + from_profile: makeMockUserQvitter({ id: 'spurdo' }) + }) + expect(parseNotification(notif)).to.have.property('id', '123') + expect(parseNotification(notif)).to.have.property('type', 'like') + expect(parseNotification(notif)).to.have.property('seen', true) + expect(parseNotification(notif)).to.have.deep.property('status.id', '4412') + expect(parseNotification(notif)).to.have.deep.property('action.id', '444') + expect(parseNotification(notif)).to.have.deep.property('from_profile.id', 'spurdo') + }) }) }) From 0f8baff5a3cd865ca5e2bb420c44d7409a8dec9c Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 17 Jan 2019 21:26:02 +0300 Subject: [PATCH 31/49] forgot the file --- test/fixtures/mastoapi.json | 1582 +++++++++++++++++++++++++++++++++++ 1 file changed, 1582 insertions(+) create mode 100644 test/fixtures/mastoapi.json diff --git a/test/fixtures/mastoapi.json b/test/fixtures/mastoapi.json new file mode 100644 index 000000000..858d7a0d3 --- /dev/null +++ b/test/fixtures/mastoapi.json @@ -0,0 +1,1582 @@ +[{ + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@sampo god i wish i was there", + "created_at": "2019-01-17T16:29:23.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 1, + "id": "10423476", + "in_reply_to_account_id": "14660", + "in_reply_to_id": "10423197", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "sampo@pleroma.soykaf.com", + "id": "14660", + "url": "https://pleroma.soykaf.com/users/sampo", + "username": "sampo" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/16033fbb-97c0-4f0e-b834-7abb92fb8639", + "url": "https://shigusegubu.club/objects/16033fbb-97c0-4f0e-b834-7abb92fb8639", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@feld
    Jotaro - YES YES YES YES YES-sq…", + "created_at": "2019-01-17T16:29:12.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 1, + "id": "10423465", + "in_reply_to_account_id": "982", + "in_reply_to_id": "10423446", + "language": null, + "media_attachments": [{ + "description": "Jotaro - YES YES YES YES YES-sq_Fm7qfRQk.webm", + "id": "1104859167", + "preview_url": "https://shigusegubu.club/media/4596ab2f-28e6-4f26-83db-0f26f29848cd/Jotaro - YES YES YES YES YES-sq_Fm7qfRQk.webm", + "remote_url": "https://shigusegubu.club/media/4596ab2f-28e6-4f26-83db-0f26f29848cd/Jotaro - YES YES YES YES YES-sq_Fm7qfRQk.webm", + "text_url": "https://shigusegubu.club/media/4596ab2f-28e6-4f26-83db-0f26f29848cd/Jotaro - YES YES YES YES YES-sq_Fm7qfRQk.webm", + "type": "video", + "url": "https://shigusegubu.club/media/4596ab2f-28e6-4f26-83db-0f26f29848cd/Jotaro - YES YES YES YES YES-sq_Fm7qfRQk.webm" + }], + "mentions": [{ + "acct": "feld@bikeshed.party", + "id": "982", + "url": "https://bikeshed.party/users/feld", + "username": "feld" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 1, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/6634d32b-96a8-4852-a3db-ac8730715779", + "url": "https://shigusegubu.club/objects/6634d32b-96a8-4852-a3db-ac8730715779", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "heh
    scrot_17-01-19_18-16-40.png", + "created_at": "2019-01-17T16:28:49.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10423449", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [{ + "description": "scrot_17-01-19_18-16-40.png", + "id": "-804793492", + "preview_url": "https://pleroma.soykaf.com/media/fd13d009-2c1f-4a53-9762-257e592a7ff6/scrot_17-01-19_18-16-40.png", + "remote_url": "https://pleroma.soykaf.com/media/fd13d009-2c1f-4a53-9762-257e592a7ff6/scrot_17-01-19_18-16-40.png", + "text_url": "https://pleroma.soykaf.com/media/fd13d009-2c1f-4a53-9762-257e592a7ff6/scrot_17-01-19_18-16-40.png", + "type": "image", + "url": "https://pleroma.soykaf.com/media/fd13d009-2c1f-4a53-9762-257e592a7ff6/scrot_17-01-19_18-16-40.png" + }], + "mentions": [{ + "acct": "sampo@pleroma.soykaf.com", + "id": "14660", + "url": "https://pleroma.soykaf.com/users/sampo", + "username": "sampo" + }], + "muted": false, + "reblog": { + "account": { + "acct": "sampo@pleroma.soykaf.com", + "avatar": "https://pleroma.soykaf.com/media/f820f4cb-0fc8-4e4d-9521-c896ad2f93b5/c6e8d2e6d471616b82031e8348782e057aee7f1ed3214fe1522415e65694aa07.png", + "avatar_static": "https://pleroma.soykaf.com/media/f820f4cb-0fc8-4e4d-9521-c896ad2f93b5/c6e8d2e6d471616b82031e8348782e057aee7f1ed3214fe1522415e65694aa07.png", + "bot": false, + "created_at": "2018-04-02T21:19:46.000Z", + "display_name": "sampo", + "emojis": [], + "fields": [], + "followers_count": 23, + "following_count": 7, + "header": "https://pleroma.soykaf.com/media/23c3c6e1-863f-4aa2-9711-ab25bfeadd10/6aa0c00c79010d9a735c3e25d7e53da5a9fb4231720b4bd5b6904cd963b4c1cd.png", + "header_static": "https://pleroma.soykaf.com/media/23c3c6e1-863f-4aa2-9711-ab25bfeadd10/6aa0c00c79010d9a735c3e25d7e53da5a9fb4231720b4bd5b6904cd963b4c1cd.png", + "id": "14660", + "locked": false, + "note": "welcome to binlan 🇫🇮 prööh", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 17647, + "url": "https://pleroma.soykaf.com/users/sampo", + "username": "sampo" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "heh
    scrot_17-01-19_18-16-40.png", + "created_at": "2019-01-17T16:20:06.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 7, + "id": "10423197", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [{ + "description": "scrot_17-01-19_18-16-40.png", + "id": "-804793492", + "preview_url": "https://pleroma.soykaf.com/media/fd13d009-2c1f-4a53-9762-257e592a7ff6/scrot_17-01-19_18-16-40.png", + "remote_url": "https://pleroma.soykaf.com/media/fd13d009-2c1f-4a53-9762-257e592a7ff6/scrot_17-01-19_18-16-40.png", + "text_url": "https://pleroma.soykaf.com/media/fd13d009-2c1f-4a53-9762-257e592a7ff6/scrot_17-01-19_18-16-40.png", + "type": "image", + "url": "https://pleroma.soykaf.com/media/fd13d009-2c1f-4a53-9762-257e592a7ff6/scrot_17-01-19_18-16-40.png" + }], + "mentions": [], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 2, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://pleroma.soykaf.com/objects/bf7e43d4-5048-4176-8519-58e3e1014f8b", + "url": "https://pleroma.soykaf.com/objects/bf7e43d4-5048-4176-8519-58e3e1014f8b", + "visibility": "public" + }, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://pleroma.soykaf.com/objects/bf7e43d4-5048-4176-8519-58e3e1014f8b", + "url": "https://pleroma.soykaf.com/objects/bf7e43d4-5048-4176-8519-58e3e1014f8b", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@feld
    Uhh No.avi-Xrne2-gOoqU.webm", + "created_at": "2019-01-17T16:27:29.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10423391", + "in_reply_to_account_id": "982", + "in_reply_to_id": "10423380", + "language": null, + "media_attachments": [{ + "description": "Uhh No.avi-Xrne2-gOoqU.webm", + "id": "483179103", + "preview_url": "https://shigusegubu.club/media/65de40a9-a99b-4207-97d0-40dd836532db/Uhh No.avi-Xrne2-gOoqU.webm", + "remote_url": "https://shigusegubu.club/media/65de40a9-a99b-4207-97d0-40dd836532db/Uhh No.avi-Xrne2-gOoqU.webm", + "text_url": "https://shigusegubu.club/media/65de40a9-a99b-4207-97d0-40dd836532db/Uhh No.avi-Xrne2-gOoqU.webm", + "type": "video", + "url": "https://shigusegubu.club/media/65de40a9-a99b-4207-97d0-40dd836532db/Uhh No.avi-Xrne2-gOoqU.webm" + }], + "mentions": [{ + "acct": "feld@bikeshed.party", + "id": "982", + "url": "https://bikeshed.party/users/feld", + "username": "feld" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/0f963ca1-a263-41ca-a43c-b5d26d0a08e9", + "url": "https://shigusegubu.club/objects/0f963ca1-a263-41ca-a43c-b5d26d0a08e9", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@fedebot lewd", + "created_at": "2019-01-17T16:17:46.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10423144", + "in_reply_to_account_id": "16633", + "in_reply_to_id": "10423114", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "fedebot@social.super-niche.club", + "id": "16633", + "url": "https://social.super-niche.club/user/31", + "username": "fedebot" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/3f809bd8-656f-4a29-81d4-80eed6916eb0", + "url": "https://shigusegubu.club/objects/3f809bd8-656f-4a29-81d4-80eed6916eb0", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "#animeirl https://social.super-niche.club/attachment/368974", + "created_at": "2019-01-17T14:20:42.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10419966", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [{ + "description": null, + "id": "1373175917", + "preview_url": "https://social.super-niche.club/file/c366cae1e5820d68dc1e6bc7a06a2f2bc15166de1faabea4f060490d45fdf527.jpg", + "remote_url": "https://social.super-niche.club/file/c366cae1e5820d68dc1e6bc7a06a2f2bc15166de1faabea4f060490d45fdf527.jpg", + "text_url": "https://social.super-niche.club/file/c366cae1e5820d68dc1e6bc7a06a2f2bc15166de1faabea4f060490d45fdf527.jpg", + "type": "image", + "url": "https://social.super-niche.club/file/c366cae1e5820d68dc1e6bc7a06a2f2bc15166de1faabea4f060490d45fdf527.jpg" + }], + "mentions": [{ + "acct": "fedebot@social.super-niche.club", + "id": "16633", + "url": "https://social.super-niche.club/user/31", + "username": "fedebot" + }], + "muted": false, + "reblog": { + "account": { + "acct": "fedebot@social.super-niche.club", + "avatar": "https://social.super-niche.club/avatar/31-300-20180411174535.jpeg", + "avatar_static": "https://social.super-niche.club/avatar/31-300-20180411174535.jpeg", + "bot": false, + "created_at": "2018-04-11T21:08:46.000Z", + "display_name": "Federation Bot", + "emojis": [], + "fields": [], + "followers_count": 6, + "following_count": 135, + "header": "https://shigusegubu.club/images/banner.png", + "header_static": "https://shigusegubu.club/images/banner.png", + "id": "16633", + "locked": false, + "note": "", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 6335, + "url": "https://social.super-niche.club/user/31", + "username": "fedebot" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "#animeirl https://social.super-niche.club/attachment/368974", + "created_at": "2019-01-17T14:11:08.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 4, + "id": "10419912", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [{ + "description": null, + "id": "1373175917", + "preview_url": "https://social.super-niche.club/file/c366cae1e5820d68dc1e6bc7a06a2f2bc15166de1faabea4f060490d45fdf527.jpg", + "remote_url": "https://social.super-niche.club/file/c366cae1e5820d68dc1e6bc7a06a2f2bc15166de1faabea4f060490d45fdf527.jpg", + "text_url": "https://social.super-niche.club/file/c366cae1e5820d68dc1e6bc7a06a2f2bc15166de1faabea4f060490d45fdf527.jpg", + "type": "image", + "url": "https://social.super-niche.club/file/c366cae1e5820d68dc1e6bc7a06a2f2bc15166de1faabea4f060490d45fdf527.jpg" + }], + "mentions": [], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 3, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [{ + "name": "animeirl", + "url": "/tag/animeirl" + }], + "uri": "tag:social.super-niche.club,2019-01-17:noticeId=2353002:objectType=note", + "url": "https://social.super-niche.club/notice/2353002", + "visibility": "public" + }, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [{ + "name": "animeirl", + "url": "/tag/animeirl" + }], + "uri": "tag:social.super-niche.club,2019-01-17:noticeId=2353002:objectType=note", + "url": "tag:social.super-niche.club,2019-01-17:noticeId=2353002:objectType=note", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "ruin a distro in 3 words
    image.png", + "created_at": "2019-01-17T14:13:36.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10419787", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [{ + "description": "image.png", + "id": "-948580066", + "preview_url": "https://miniwa.moe/media/4076945a-4a3b-4fb3-8b62-04eb401697ff/image.png", + "remote_url": "https://miniwa.moe/media/4076945a-4a3b-4fb3-8b62-04eb401697ff/image.png", + "text_url": "https://miniwa.moe/media/4076945a-4a3b-4fb3-8b62-04eb401697ff/image.png", + "type": "image", + "url": "https://miniwa.moe/media/4076945a-4a3b-4fb3-8b62-04eb401697ff/image.png" + }], + "mentions": [{ + "acct": "ivesen@miniwa.moe", + "id": "39686", + "url": "https://miniwa.moe/users/ivesen", + "username": "ivesen" + }], + "muted": false, + "reblog": { + "account": { + "acct": "ivesen@miniwa.moe", + "avatar": "https://miniwa.moe/media/745353b1-89b0-4597-bd76-3ed6ec122c03/504e655c84a6a6d61d34f8daaf3baa6627088f73427763a044729dbf85cff4b8.png", + "avatar_static": "https://miniwa.moe/media/745353b1-89b0-4597-bd76-3ed6ec122c03/504e655c84a6a6d61d34f8daaf3baa6627088f73427763a044729dbf85cff4b8.png", + "bot": false, + "created_at": "2018-09-08T17:55:27.000Z", + "display_name": "tsumiki :bun:", + "emojis": [{ + "shortcode": "bun", + "static_url": "https://miniwa.moe/emoji/custom/bun.png", + "url": "https://miniwa.moe/emoji/custom/bun.png", + "visible_in_picker": false + }], + "fields": [], + "followers_count": 8, + "following_count": 3, + "header": "https://miniwa.moe/media/bff7489f-22bb-4170-a68b-ba0e1c52116e/cf69fbec904a109f8c41b97ec03bfa7dbe49992fd7d61528a933740789b55eb1.gif", + "header_static": "https://miniwa.moe/media/bff7489f-22bb-4170-a68b-ba0e1c52116e/cf69fbec904a109f8c41b97ec03bfa7dbe49992fd7d61528a933740789b55eb1.gif", + "id": "39686", + "locked": false, + "note": "native resident of the black lizard planet trying to understand hoomanslocated near niflheimr xmpp: ivesen@xmpp.xyz | matrix: no | email: anything you could imagine @ ivesen.moe", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 13174, + "url": "https://miniwa.moe/users/ivesen", + "username": "ivesen" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "ruin a distro in 3 words
    image.png", + "created_at": "2019-01-17T13:41:35.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 3, + "id": "10418865", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [{ + "description": "image.png", + "id": "-948580066", + "preview_url": "https://miniwa.moe/media/4076945a-4a3b-4fb3-8b62-04eb401697ff/image.png", + "remote_url": "https://miniwa.moe/media/4076945a-4a3b-4fb3-8b62-04eb401697ff/image.png", + "text_url": "https://miniwa.moe/media/4076945a-4a3b-4fb3-8b62-04eb401697ff/image.png", + "type": "image", + "url": "https://miniwa.moe/media/4076945a-4a3b-4fb3-8b62-04eb401697ff/image.png" + }], + "mentions": [], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 6, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://miniwa.moe/objects/448e2944-0ecd-457f-92c3-cb454f2b0fab", + "url": "https://miniwa.moe/objects/448e2944-0ecd-457f-92c3-cb454f2b0fab", + "visibility": "public" + }, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://miniwa.moe/objects/448e2944-0ecd-457f-92c3-cb454f2b0fab", + "url": "https://miniwa.moe/objects/448e2944-0ecd-457f-92c3-cb454f2b0fab", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@eal thanks, alex jacobson :denton:", + "created_at": "2019-01-17T14:12:42.000Z", + "emojis": [{ + "shortcode": "denton", + "static_url": "https://shigusegubu.club/emoji/sgsgb/denton.png", + "url": "https://shigusegubu.club/emoji/sgsgb/denton.png", + "visible_in_picker": false + }], + "favourited": false, + "favourites_count": 0, + "id": "10419752", + "in_reply_to_account_id": "570", + "in_reply_to_id": "10419729", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "eal@social.sakamoto.gq", + "id": "570", + "url": "https://social.sakamoto.gq/users/eal", + "username": "eal" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/38b1bc44-15d8-40dd-b1aa-937e0ff4a86d", + "url": "https://shigusegubu.club/objects/38b1bc44-15d8-40dd-b1aa-937e0ff4a86d", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@pony yeah", + "created_at": "2019-01-17T14:11:01.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 1, + "id": "10419697", + "in_reply_to_account_id": "4395", + "in_reply_to_id": "10419694", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "pony@blovice.bahnhof.cz", + "id": "4395", + "url": "https://blovice.bahnhof.cz/users/pony", + "username": "pony" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/fbff5da4-a517-42a9-bca9-17cae8cf2542", + "url": "https://shigusegubu.club/objects/fbff5da4-a517-42a9-bca9-17cae8cf2542", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "i probably shouldn't be watchng 4-hour stream vods of joel playing doom", + "created_at": "2019-01-17T14:10:34.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10419684", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [], + "mentions": [], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/4007d659-27c6-4577-be10-fd134f5e4e7e", + "url": "https://shigusegubu.club/objects/4007d659-27c6-4577-be10-fd134f5e4e7e", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "i got out of bed.", + "created_at": "2019-01-17T14:10:18.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 1, + "id": "10419671", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [], + "mentions": [], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/59912d51-1cc6-4dc7-828c-f167e6c8b391", + "url": "https://shigusegubu.club/objects/59912d51-1cc6-4dc7-828c-f167e6c8b391", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "New day!", + "created_at": "2019-01-17T13:25:56.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 2, + "id": "10418390", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [], + "mentions": [], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 1, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/62690bce-3f49-4047-9c8e-8941f2f79e10", + "url": "https://shigusegubu.club/objects/62690bce-3f49-4047-9c8e-8941f2f79e10", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@lanodan you either use nvidia-blob or don't use nvidia. Unless it's a very VERY old GPU.", + "created_at": "2019-01-16T22:21:10.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10395196", + "in_reply_to_account_id": "27194", + "in_reply_to_id": "10394997", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "lanodan@queer.hacktivis.me", + "id": "27194", + "url": "https://queer.hacktivis.me/users/lanodan", + "username": "lanodan" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/818f3dd0-2ff8-4def-a170-e4d4c405f387", + "url": "https://shigusegubu.club/objects/818f3dd0-2ff8-4def-a170-e4d4c405f387", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@lain
    1. 🔪
    2. trigger trypophobia
    3. sprinkle with spices
    4. pee on it
    5. pat pat
    6. blanket time
    7. bring in the cocaine
    8. ?????????????
    9. ???? hitler ???????
    10. ???????????
    11. ???? Adobe After Effects ????
    12. !!!!!!!!!!!!!!BREAK IT!!!!!!!!!!!
    13. !!!kindar suprize!!
    14. (time skip for two hours, realisation that using cocaine was a bad idea)
    15. (still not over from cocaine)
    16. куличики! Плов, огурцы, это еще что бля
    17. fuck it, play it cool, just put meat on the mounds
    18. note to self: never use cocaine in culinary ever again", + "created_at": "2019-01-16T22:20:50.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 1, + "id": "10395183", + "in_reply_to_account_id": "58", + "in_reply_to_id": "10394990", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "lain@pleroma.soykaf.com", + "id": "58", + "url": "https://pleroma.soykaf.com/users/lain", + "username": "lain" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/0783a193-c097-488d-8944-47df9372cd6e", + "url": "https://shigusegubu.club/objects/0783a193-c097-488d-8944-47df9372cd6e", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@cathode me too", + "created_at": "2019-01-16T22:09:28.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 1, + "id": "10394697", + "in_reply_to_account_id": "55339", + "in_reply_to_id": "10394677", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "cathode@pleroma.site", + "id": "55339", + "url": "https://pleroma.site/users/cathode", + "username": "cathode" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/145d5252-7b8e-467d-9f36-1db0818f452f", + "url": "https://shigusegubu.club/objects/145d5252-7b8e-467d-9f36-1db0818f452f", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "I love pleroma and lain", + "created_at": "2019-01-16T22:09:24.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10394690", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "cathode@pleroma.site", + "id": "55339", + "url": "https://pleroma.site/users/cathode", + "username": "cathode" + }], + "muted": false, + "reblog": { + "account": { + "acct": "cathode@pleroma.site", + "avatar": "https://pleroma.site/media/cc874883-fafb-4f25-80f2-e16677e83621/c50a4ea55a99fdf3b69bf66ce2768bc2c48c6135332914bb49445aab1211d794.gif", + "avatar_static": "https://pleroma.site/media/cc874883-fafb-4f25-80f2-e16677e83621/c50a4ea55a99fdf3b69bf66ce2768bc2c48c6135332914bb49445aab1211d794.gif", + "bot": false, + "created_at": "2018-12-14T21:47:14.000Z", + "display_name": "gay hug bug loves you", + "emojis": [], + "fields": [], + "followers_count": 0, + "following_count": 0, + "header": "https://pleroma.site/media/8170fac2-fc17-4b9c-8624-52491d56f769/8cb558d3960254180b10860012a519253baaa1db88a0476da02be6a558015b34.jpg", + "header_static": "https://pleroma.site/media/8170fac2-fc17-4b9c-8624-52491d56f769/8cb558d3960254180b10860012a519253baaa1db88a0476da02be6a558015b34.jpg", + "id": "55339", + "locked": false, + "note": "he/him but you can call me anything really

    welcome to my profile :333

    https://cathode.neocities.org/", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 16, + "url": "https://pleroma.site/users/cathode", + "username": "cathode" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "I love pleroma and lain", + "created_at": "2019-01-16T22:08:50.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 4, + "id": "10394677", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [], + "mentions": [], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 2, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://pleroma.site/objects/3076c055-0e34-4cf9-86ca-2d148b9b694a", + "url": "https://pleroma.site/objects/3076c055-0e34-4cf9-86ca-2d148b9b694a", + "visibility": "public" + }, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://pleroma.site/objects/3076c055-0e34-4cf9-86ca-2d148b9b694a", + "url": "https://pleroma.site/objects/3076c055-0e34-4cf9-86ca-2d148b9b694a", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@lain that trick he does in the very beginning with that smile oh my god", + "created_at": "2019-01-16T22:08:15.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 2, + "id": "10394647", + "in_reply_to_account_id": "58", + "in_reply_to_id": "10394582", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "lain@pleroma.soykaf.com", + "id": "58", + "url": "https://pleroma.soykaf.com/users/lain", + "username": "lain" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/d4eb7c46-02f9-4b1f-83af-926cefa21f33", + "url": "https://shigusegubu.club/objects/d4eb7c46-02f9-4b1f-83af-926cefa21f33", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": ".", + "created_at": "2019-01-16T22:08:01.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 0, + "id": "10394636", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [{ + "description": null, + "id": "-1089888084", + "preview_url": "https://pleroma.soykaf.com/media/d985e90d-b079-4f6a-a5bc-9b5e26b1fa5a/Tusky_1547676391813_2VJ7ITWJ3T.webm", + "remote_url": "https://pleroma.soykaf.com/media/d985e90d-b079-4f6a-a5bc-9b5e26b1fa5a/Tusky_1547676391813_2VJ7ITWJ3T.webm", + "text_url": "https://pleroma.soykaf.com/media/d985e90d-b079-4f6a-a5bc-9b5e26b1fa5a/Tusky_1547676391813_2VJ7ITWJ3T.webm", + "type": "video", + "url": "https://pleroma.soykaf.com/media/d985e90d-b079-4f6a-a5bc-9b5e26b1fa5a/Tusky_1547676391813_2VJ7ITWJ3T.webm" + }], + "mentions": [{ + "acct": "lain@pleroma.soykaf.com", + "id": "58", + "url": "https://pleroma.soykaf.com/users/lain", + "username": "lain" + }], + "muted": false, + "reblog": { + "account": { + "acct": "lain@pleroma.soykaf.com", + "avatar": "https://pleroma.soykaf.com/media/57abd080-73da-4541-92c7-506d0008bce3/04c76c19e87b23f759fac1118db5e5c4fe0b0ba8d67942a9a8f4e88108543abd.jpeg", + "avatar_static": "https://pleroma.soykaf.com/media/57abd080-73da-4541-92c7-506d0008bce3/04c76c19e87b23f759fac1118db5e5c4fe0b0ba8d67942a9a8f4e88108543abd.jpeg", + "bot": false, + "created_at": "2017-12-17T22:26:31.000Z", + "display_name": "you're looking at an ace", + "emojis": [], + "fields": [], + "followers_count": 29, + "following_count": 1389, + "header": "https://pleroma.soykaf.com/images/banner.png", + "header_static": "https://pleroma.soykaf.com/images/banner.png", + "id": "58", + "locked": false, + "note": "blushy-crushy fediverse idol + pleroma dev.
    let's be friends
    ぷれろまの生徒会長。謎の外人。日本語OK.
    公主病.
    I invented the internet.
    xmpp: lain@trashserver.net
    matrix: lambadalambda@matrix.heldscal.la
    pgp: 58B48DE582EE103C964735A1F9C6698E14CCE33C", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 35042, + "url": "https://pleroma.soykaf.com/users/lain", + "username": "lain" + }, + "application": { + "name": "Web", + "website": null + }, + "content": ".", + "created_at": "2019-01-16T22:06:35.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 2, + "id": "10394582", + "in_reply_to_account_id": null, + "in_reply_to_id": null, + "language": null, + "media_attachments": [{ + "description": null, + "id": "-1089888084", + "preview_url": "https://pleroma.soykaf.com/media/d985e90d-b079-4f6a-a5bc-9b5e26b1fa5a/Tusky_1547676391813_2VJ7ITWJ3T.webm", + "remote_url": "https://pleroma.soykaf.com/media/d985e90d-b079-4f6a-a5bc-9b5e26b1fa5a/Tusky_1547676391813_2VJ7ITWJ3T.webm", + "text_url": "https://pleroma.soykaf.com/media/d985e90d-b079-4f6a-a5bc-9b5e26b1fa5a/Tusky_1547676391813_2VJ7ITWJ3T.webm", + "type": "video", + "url": "https://pleroma.soykaf.com/media/d985e90d-b079-4f6a-a5bc-9b5e26b1fa5a/Tusky_1547676391813_2VJ7ITWJ3T.webm" + }], + "mentions": [], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 1, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://pleroma.soykaf.com/objects/338b6bd2-3c2d-40fe-93a3-28b688782733", + "url": "https://pleroma.soykaf.com/objects/338b6bd2-3c2d-40fe-93a3-28b688782733", + "visibility": "public" + }, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://pleroma.soykaf.com/objects/338b6bd2-3c2d-40fe-93a3-28b688782733", + "url": "https://pleroma.soykaf.com/objects/338b6bd2-3c2d-40fe-93a3-28b688782733", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@proxeus good song", + "created_at": "2019-01-16T22:04:23.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 1, + "id": "10394506", + "in_reply_to_account_id": "17544", + "in_reply_to_id": "10393849", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "proxeus@iscute.moe", + "id": "17544", + "url": "https://iscute.moe/users/proxeus", + "username": "proxeus" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/f472f4ed-8b0b-492f-9d53-d69eda79629d", + "url": "https://shigusegubu.club/objects/f472f4ed-8b0b-492f-9d53-d69eda79629d", + "visibility": "public" +}, { + "account": { + "acct": "hj", + "avatar": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "avatar_static": "https://shigusegubu.club/media/1657b945-8d5b-4ce6-aafb-4c3fc5772120/8ce851029af84d55de9164e30cc7f46d60cbf12eee7e96c5c0d35d9038ddade1.png", + "bot": false, + "created_at": "2017-12-17T21:54:14.000Z", + "display_name": "whatever whatever whatever witch", + "emojis": [], + "fields": [], + "followers_count": 705, + "following_count": 326, + "header": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "header_static": "https://shigusegubu.club/media/7ab024d9-2a8a-4fbc-9ce8-da06756ae2db/6aadefe4e264133bc377ab450e6b045b6f5458542a5c59e6c741f86107f0388b.png", + "id": "1", + "locked": false, + "note": "Volatile Internet Weirdo. Name pronounced as Hee Jay. JS and Java dark arts mage, Elixir trainee. I love sampo and lain. Matrix is @hj:matrix.heldscal.la Pronouns are whatever. Do not DM me unless it's truly private matter and you're instance's admin or you risk your DM to be reposted publicly.Wish i was Finnish girl.", + "pleroma": { + "confirmation_pending": false, + "tags": null + }, + "source": { + "note": "", + "privacy": "public", + "sensitive": false + }, + "statuses_count": 41775, + "url": "https://shigusegubu.club/users/hj", + "username": "hj" + }, + "application": { + "name": "Web", + "website": null + }, + "content": "@cdmnky olivia been repeating \"hey i moved\" post like once every day or so", + "created_at": "2019-01-16T21:56:05.000Z", + "emojis": [], + "favourited": false, + "favourites_count": 1, + "id": "10393859", + "in_reply_to_account_id": "60913", + "in_reply_to_id": "10393808", + "language": null, + "media_attachments": [], + "mentions": [{ + "acct": "cdmnky", + "id": "60913", + "url": "https://shigusegubu.club/users/cdmnky", + "username": "cdmnky" + }], + "muted": false, + "reblog": null, + "reblogged": false, + "reblogs_count": 0, + "replies_count": 0, + "sensitive": false, + "spoiler_text": "", + "tags": [], + "uri": "https://shigusegubu.club/objects/d6fb4fd2-1f6a-4446-a1a6-5edd34050096", + "url": "https://shigusegubu.club/objects/d6fb4fd2-1f6a-4446-a1a6-5edd34050096", + "visibility": "public" +}] From cab87744c830e4411ec20c1dcb2d454d657219bc Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 17 Jan 2019 21:46:03 +0300 Subject: [PATCH 32/49] Revert "some initial work to make it possible to use "unregistered" timelines, i.e. not" and some stuff to make favorites still work This reverts commit 039a4074006fb91ac9031b41b4e9af4a15766dfa. --- src/components/timeline/timeline.js | 17 ++++----- src/components/user_profile/user_profile.js | 9 ++--- src/modules/api.js | 10 +++--- src/modules/statuses.js | 36 +++++++++---------- src/services/api/api.service.js | 5 ++- .../timeline_fetcher.service.js | 4 +-- 6 files changed, 38 insertions(+), 43 deletions(-) diff --git a/src/components/timeline/timeline.js b/src/components/timeline/timeline.js index 23d2c1e81..98da86607 100644 --- a/src/components/timeline/timeline.js +++ b/src/components/timeline/timeline.js @@ -7,6 +7,7 @@ import { throttle } from 'lodash' const Timeline = { props: [ 'timeline', + 'timelineName', 'title', 'userId', 'tag', @@ -54,7 +55,7 @@ const Timeline = { timelineFetcher.fetchAndUpdate({ store, credentials, - timeline: this.timeline, + timeline: this.timelineName, showImmediately, userId: this.userId, tag: this.tag @@ -69,32 +70,32 @@ const Timeline = { destroyed () { window.removeEventListener('scroll', this.scrollLoad) if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false) - this.$store.commit('setLoading', { timeline: this.timeline, value: false }) + this.$store.commit('setLoading', { timeline: this.timelineName, value: false }) }, methods: { showNewStatuses () { if (this.timeline.flushMarker !== 0) { - this.$store.commit('clearTimeline', { timeline: this.timeline }) - this.$store.commit('queueFlush', { timeline: this.timeline, id: 0 }) + this.$store.commit('clearTimeline', { timeline: this.timelineName }) + this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 }) this.fetchOlderStatuses() } else { - this.$store.commit('showNewStatuses', { timeline: this.timeline }) + this.$store.commit('showNewStatuses', { timeline: this.timelineName }) this.paused = false } }, fetchOlderStatuses: throttle(function () { const store = this.$store const credentials = store.state.users.currentUser.credentials - store.commit('setLoading', { timeline: this.timeline, value: true }) + store.commit('setLoading', { timeline: this.timelineName, value: true }) timelineFetcher.fetchAndUpdate({ store, credentials, - timeline: this.timeline, + timeline: this.timelineName, older: true, showImmediately: true, userId: this.userId, tag: this.tag - }).then(() => store.commit('setLoading', { timeline: this.timeline, value: false })) + }).then(() => store.commit('setLoading', { timeline: this.timelineName, value: false })) }, 1000, this), scrollLoad (e) { const bodyBRect = document.body.getBoundingClientRect() diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js index 245d55ca2..7f17ef69e 100644 --- a/src/components/user_profile/user_profile.js +++ b/src/components/user_profile/user_profile.js @@ -1,7 +1,6 @@ import UserCardContent from '../user_card_content/user_card_content.vue' import UserCard from '../user_card/user_card.vue' import Timeline from '../timeline/timeline.vue' -import { emptyTl } from '../../modules/statuses.js' const UserProfile = { created () { @@ -14,15 +13,13 @@ const UserProfile = { destroyed () { this.$store.dispatch('stopFetching', 'user') }, - data () { - return { - favorites: emptyTl({ type: 'favorites', userId: this.userId }) - } - }, computed: { timeline () { return this.$store.state.statuses.timelines.user }, + favorites () { + return this.$store.state.statuses.timelines.favorites + }, userId () { return this.$route.params.id || this.user.id }, diff --git a/src/modules/api.js b/src/modules/api.js index b85b24be5..a61340c22 100644 --- a/src/modules/api.js +++ b/src/modules/api.js @@ -5,7 +5,7 @@ import { Socket } from 'phoenix' const api = { state: { backendInteractor: backendInteractorService(), - fetchers: new Map(), + fetchers: {}, socket: null, chatDisabled: false, followRequests: [] @@ -15,10 +15,10 @@ const api = { state.backendInteractor = backendInteractor }, addFetcher (state, {timeline, fetcher}) { - state.fetchers.set(timeline, fetcher) + state.fetchers[timeline] = fetcher }, removeFetcher (state, {timeline}) { - delete state.fetchers.delete(timeline) + delete state.fetchers[timeline] }, setSocket (state, socket) { state.socket = socket @@ -41,13 +41,13 @@ const api = { } // Don't start fetching if we already are. - if (!store.state.fetchers.has(timeline)) { + if (!store.state.fetchers[timeline]) { const fetcher = store.state.backendInteractor.startFetching({timeline, store, userId}) store.commit('addFetcher', {timeline, fetcher}) } }, stopFetching (store, timeline) { - const fetcher = store.state.fetchers.get(timeline) + const fetcher = store.state.fetchers[timeline] window.clearInterval(fetcher) store.commit('removeFetcher', {timeline}) }, diff --git a/src/modules/statuses.js b/src/modules/statuses.js index baeef8bf3..f976fa42a 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -2,7 +2,7 @@ import { remove, slice, each, find, maxBy, minBy, merge, last, isArray } from 'l import apiService from '../services/api/api.service.js' // import parse from '../services/status_parser/status_parser.js' -export const emptyTl = (tl, userId = 0) => (Object.assign(tl, { +const emptyTl = () => ({ statuses: [], statusesObject: {}, faves: [], @@ -14,9 +14,9 @@ export const emptyTl = (tl, userId = 0) => (Object.assign(tl, { loading: false, followers: [], friends: [], - flushMarker: 0, - userId -})) + userId: 0, + flushMarker: 0 +}) export const defaultState = { allStatuses: [], @@ -33,13 +33,14 @@ export const defaultState = { favorites: new Set(), error: false, timelines: { - mentions: emptyTl({ type: 'mentions' }), - public: emptyTl({ type: 'public' }), - user: emptyTl({ type: 'user' }), // TODO: switch to unregistered - publicAndExternal: emptyTl({ type: 'publicAndExternal' }), - friends: emptyTl({ type: 'friends' }), - tag: emptyTl({ type: 'tag' }), - dms: emptyTl({ type: 'dms' }) + mentions: emptyTl(), + public: emptyTl(), + user: emptyTl(), + favorites: emptyTl(), + publicAndExternal: emptyTl(), + friends: emptyTl(), + tag: emptyTl(), + dms: emptyTl() } } @@ -100,7 +101,7 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us const allStatuses = state.allStatuses const allStatusesObject = state.allStatusesObject - const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline] + const timelineObject = state.timelines[timeline] const maxNew = statuses.length > 0 ? maxBy(statuses, 'id').id : 0 const older = timeline && maxNew < timelineObject.maxId @@ -297,7 +298,7 @@ export const mutations = { addNewStatuses, addNewNotifications, showNewStatuses (state, { timeline }) { - const oldTimeline = (typeof timeline === 'object' ? timeline : state.timelines[timeline]) + const oldTimeline = (state.timelines[timeline]) oldTimeline.newStatusCount = 0 oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50) @@ -306,8 +307,7 @@ export const mutations = { each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status }) }, clearTimeline (state, { timeline }) { - const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline] - emptyTl(timelineObject, timeline.userId) + state.timelines[timeline] = emptyTl() }, setFavorited (state, { status, value }) { const newStatus = state.allStatusesObject[status.id] @@ -327,8 +327,7 @@ export const mutations = { newStatus.deleted = true }, setLoading (state, { timeline, value }) { - const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline] - timelineObject.loading = value + state.timelines[timeline].loading = value }, setNsfw (state, { id, nsfw }) { const newStatus = state.allStatusesObject[id] @@ -349,8 +348,7 @@ export const mutations = { }) }, queueFlush (state, { timeline, id }) { - const timelineObject = typeof timeline === 'object' ? timeline : state.timelines[timeline] - timelineObject.flushMarker = id + state.timelines[timeline].flushMarker = id } } diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index 14a526ef1..0e2672764 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -327,11 +327,10 @@ const fetchTimeline = ({timeline, credentials, since = false, until = false, use favorites: MASTODON_USER_FAVORITES_TIMELINE_URL, tag: TAG_TIMELINE_URL } - const type = timeline.type || timeline - const isNotifications = type === 'notifications' + const isNotifications = timeline === 'notifications' const params = [] - let url = timelineUrls[type] + let url = timelineUrls[timeline] if (since) { params.push(['since_id', since]) diff --git a/src/services/timeline_fetcher/timeline_fetcher.service.js b/src/services/timeline_fetcher/timeline_fetcher.service.js index 126e07cf7..727f6c604 100644 --- a/src/services/timeline_fetcher/timeline_fetcher.service.js +++ b/src/services/timeline_fetcher/timeline_fetcher.service.js @@ -3,7 +3,7 @@ import { camelCase } from 'lodash' import apiService from '../api/api.service.js' const update = ({store, statuses, timeline, showImmediately, userId}) => { - const ccTimeline = typeof timeline === 'object' ? timeline : camelCase(timeline) + const ccTimeline = camelCase(timeline) store.dispatch('setError', { value: false }) @@ -18,7 +18,7 @@ const update = ({store, statuses, timeline, showImmediately, userId}) => { const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false, showImmediately = false, userId = false, tag = false, until}) => { const args = { timeline, credentials } const rootState = store.rootState || store.state - const timelineData = typeof timeline === 'object' ? timeline : rootState.statuses.timelines[camelCase(timeline)] + const timelineData = rootState.statuses.timelines[camelCase(timeline)] if (older) { args['until'] = until || timelineData.minVisibleId From 93cbb58212ebb83cee5bc89f8cef1ebb58969f5c Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 17 Jan 2019 22:11:51 +0300 Subject: [PATCH 33/49] fix login and favorites tab... --- src/components/user_profile/user_profile.js | 13 ++++ src/components/user_profile/user_profile.vue | 2 +- src/modules/users.js | 61 +++++++++---------- src/services/api/api.service.js | 12 ++++ .../entity_normalizer.service.js | 8 +++ 5 files changed, 64 insertions(+), 32 deletions(-) diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js index 7f17ef69e..c9197a1cf 100644 --- a/src/components/user_profile/user_profile.js +++ b/src/components/user_profile/user_profile.js @@ -5,13 +5,16 @@ import Timeline from '../timeline/timeline.vue' const UserProfile = { created () { this.$store.commit('clearTimeline', { timeline: 'user' }) + this.$store.commit('clearTimeline', { timeline: 'favorites' }) this.$store.dispatch('startFetching', ['user', this.fetchBy]) + this.$store.dispatch('startFetching', ['favorites', this.fetchBy]) if (!this.user.id) { this.$store.dispatch('fetchUser', this.fetchBy) } }, destroyed () { this.$store.dispatch('stopFetching', 'user') + this.$store.dispatch('stopFetching', 'favorites') }, computed: { timeline () { @@ -26,6 +29,9 @@ const UserProfile = { userName () { return this.$route.params.name || this.user.screen_name }, + isUs () { + return this.userId === this.$store.state.users.currentUser.id + }, friends () { return this.user.friends }, @@ -65,21 +71,28 @@ const UserProfile = { } }, watch: { + // TODO get rid of this copypasta userName () { if (this.isExternal) { return } this.$store.dispatch('stopFetching', 'user') + this.$store.dispatch('stopFetching', 'favorites') this.$store.commit('clearTimeline', { timeline: 'user' }) + this.$store.commit('clearTimeline', { timeline: 'favorites' }) this.$store.dispatch('startFetching', ['user', this.fetchBy]) + this.$store.dispatch('startFetching', ['favorites', this.fetchBy]) }, userId () { if (!this.isExternal) { return } this.$store.dispatch('stopFetching', 'user') + this.$store.dispatch('stopFetching', 'favorites') this.$store.commit('clearTimeline', { timeline: 'user' }) + this.$store.commit('clearTimeline', { timeline: 'favorites' }) this.$store.dispatch('startFetching', ['user', this.fetchBy]) + this.$store.dispatch('startFetching', ['favorites', this.fetchBy]) }, user () { if (this.user.id && !this.user.followers) { diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue index 265fc65b9..e53727ff5 100644 --- a/src/components/user_profile/user_profile.vue +++ b/src/components/user_profile/user_profile.vue @@ -20,7 +20,7 @@ - + - + - + From 0ed18283521447ec19363bf809d645e613b498a4 Mon Sep 17 00:00:00 2001 From: lain Date: Sat, 19 Jan 2019 14:56:18 +0100 Subject: [PATCH 45/49] Linting. --- src/components/attachment/attachment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/attachment/attachment.js b/src/components/attachment/attachment.js index cee5356d4..18a037707 100644 --- a/src/components/attachment/attachment.js +++ b/src/components/attachment/attachment.js @@ -25,7 +25,7 @@ const Attachment = { }, computed: { referrerpolicy () { - return this.$store.state.instance.mediaProxyAvailable ? "" : "no-referrer" + return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer' }, type () { return fileTypeService.fileType(this.attachment.mimetype) From 031c044297ed6286c0e6b6c1b8333ee62f8b14b8 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 21 Jan 2019 16:28:36 +0300 Subject: [PATCH 46/49] better handling of attachments --- .../entity_normalizer.service.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index 82187a750..087f789b8 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -113,11 +113,22 @@ export const parseUser = (data) => { } const parseAttachment = (data) => { - // TODO A little bit messy ATM but works with both APIs - return { - ...data, - mimetype: data.mimetype || data.type + const output = {} + const masto = !data.hasOwnProperty('oembed') + + if (masto) { + // Not exactly same... + output.mimetype = data.type + output.meta = data.meta // not present in BE yet + } else { + output.mimetype = data.mimetype + output.meta = null // missing } + + output.url = data.url + output.description = data.description + + return output } export const parseStatus = (data) => { From 42f8d01b66d68e492f00b9f1480692769b830e06 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 21 Jan 2019 21:41:17 +0300 Subject: [PATCH 47/49] confusion --- .../entity_normalizer/entity_normalizer.service.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index 087f789b8..6fc6d1524 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -152,7 +152,9 @@ export const parseStatus = (data) => { output.in_reply_to_status_id = data.in_reply_to_id output.in_reply_to_user_id = data.in_reply_to_account_id - output.in_reply_to_screen_name = data.in_reply_to_screen_name + + // Missing!! fix in UI? + output.in_reply_to_screen_name = null // Not exactly the same but works output.statusnet_conversation_id = data.id @@ -192,9 +194,7 @@ export const parseStatus = (data) => { output.in_reply_to_status_id = data.in_reply_to_status_id output.in_reply_to_user_id = data.in_reply_to_user_id - - // Missing!! fix in UI? - output.in_reply_to_screen_name = null + output.in_reply_to_screen_name = data.in_reply_to_screen_name output.statusnet_conversation_id = data.statusnet_conversation_id From d405bfe6deb79b4079965c1118a734b96fc20a09 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 22 Jan 2019 19:58:59 +0300 Subject: [PATCH 48/49] update test names --- .../services/entity_normalizer/entity_normalizer.spec.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js index bc127f79b..703fecf1c 100644 --- a/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js +++ b/test/unit/specs/services/entity_normalizer/entity_normalizer.spec.js @@ -149,8 +149,8 @@ parseStatus makeMockStatusQvitter makeMockUserQvitter -describe.only('API Entities normalizer', () => { - describe('statuses', () => { +describe('API Entities normalizer', () => { + describe('parseStatus', () => { describe('QVitter preprocessing', () => { it('doesn\'t blow up', () => { const parsed = qvitterapidata.map(parseStatus) @@ -220,8 +220,9 @@ describe.only('API Entities normalizer', () => { }) }) }) + // Statuses generally already contain some info regarding users and there's nearly 1:1 mapping, so very little to test - describe('users (MastoAPI)', () => { + describe('parseUsers (MastoAPI)', () => { it('sets correct is_local for users depending on their screen_name', () => { const local = makeMockUserMasto({ acct: 'foo' }) const remote = makeMockUserMasto({ acct: 'foo@bar.baz' }) @@ -233,7 +234,7 @@ describe.only('API Entities normalizer', () => { // We currently use QvitterAPI notifications only, and especially due to MastoAPI lacking is_seen, support for MastoAPI // is more of an afterthought - describe('notifications (QvitterAPI)', () => { + describe('parseNotifications (QvitterAPI)', () => { it('correctly normalizes data to FE\'s format', () => { const notif = makeMockNotificationQvitter({ id: 123, From 92dedcd53e56562205e704eea2754f159eb9707d Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 22 Jan 2019 20:26:06 +0300 Subject: [PATCH 49/49] linting --- src/components/tab_switcher/tab_switcher.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/tab_switcher/tab_switcher.jsx b/src/components/tab_switcher/tab_switcher.jsx index 2eb30ea60..9038733cd 100644 --- a/src/components/tab_switcher/tab_switcher.jsx +++ b/src/components/tab_switcher/tab_switcher.jsx @@ -1,6 +1,5 @@ import Vue from 'vue' - import './tab_switcher.scss' export default Vue.component('tab-switcher', { @@ -37,7 +36,7 @@ export default Vue.component('tab-switcher', { return (
    - +
    ) }) @@ -47,7 +46,7 @@ export default Vue.component('tab-switcher', { const active = index === this.active return (
    - {slot} + {slot}
    ) })