From 876c6de8066d9ac708bb0cd8e4d4c5e60f9502a6 Mon Sep 17 00:00:00 2001
From: taehoon
Date: Fri, 19 Jul 2019 22:49:29 -0400
Subject: fix typos
---
src/modules/users.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'src/modules/users.js')
diff --git a/src/modules/users.js b/src/modules/users.js
index 57d3a3e3..10def9cd 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -167,11 +167,11 @@ export const mutations = {
},
setPinned (state, status) {
const user = state.usersObject[status.user.id]
- const index = user.pinnedStatuseIds.indexOf(status.id)
+ const index = user.pinnedStatusIds.indexOf(status.id)
if (status.pinned && index === -1) {
- user.pinnedStatuseIds.push(status.id)
+ user.pinnedStatusIds.push(status.id)
} else if (!status.pinned && index !== -1) {
- user.pinnedStatuseIds.splice(index, 1)
+ user.pinnedStatusIds.splice(index, 1)
}
},
setUserForStatus (state, status) {
--
cgit v1.2.3-70-g09d2
From 4fc27414d25d719991d2368740c5ffea67af907d Mon Sep 17 00:00:00 2001
From: Lee Starnes
Date: Tue, 6 Aug 2019 18:03:31 +0000
Subject: Handle JSONified errors while registering
Closes #617
---
src/modules/users.js | 11 +----------
src/services/api/api.service.js | 9 ++++-----
src/services/errors/errors.js | 35 +++++++++++++++++++++++++++++++++++
3 files changed, 40 insertions(+), 15 deletions(-)
(limited to 'src/modules/users.js')
diff --git a/src/modules/users.js b/src/modules/users.js
index 10def9cd..4d78aef5 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -3,7 +3,6 @@ import oauthApi from '../services/new_api/oauth.js'
import { compact, map, each, merge, last, concat, uniq } from 'lodash'
import { set } from 'vue'
import { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'
-import { humanizeErrors } from './errors'
// TODO: Unify with mergeOrAdd in statuses.js
export const mergeOrAdd = (arr, obj, item) => {
@@ -382,16 +381,8 @@ const users = {
store.dispatch('loginUser', data.access_token)
} catch (e) {
let errors = e.message
- // replace ap_id with username
- if (typeof errors === 'object') {
- if (errors.ap_id) {
- errors.username = errors.ap_id
- delete errors.ap_id
- }
- errors = humanizeErrors(errors)
- }
store.commit('signUpFailure', errors)
- throw Error(errors)
+ throw e
}
},
async getCaptcha (store) {
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index d4ad1c4e..84616dd1 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -1,7 +1,7 @@
import { each, map, concat, last } from 'lodash'
import { parseStatus, parseUser, parseNotification, parseAttachment } from '../entity_normalizer/entity_normalizer.service.js'
import 'whatwg-fetch'
-import { StatusCodeError } from '../errors/errors'
+import { RegistrationError, StatusCodeError } from '../errors/errors'
/* eslint-env browser */
const EXTERNAL_PROFILE_URL = '/api/externalprofile/show.json'
@@ -199,12 +199,11 @@ const register = ({ params, credentials }) => {
...rest
})
})
- .then((response) => [response.ok, response])
- .then(([ok, response]) => {
- if (ok) {
+ .then((response) => {
+ if (response.ok) {
return response.json()
} else {
- return response.json().then((error) => { throw new Error(error) })
+ return response.json().then((error) => { throw new RegistrationError(error) })
}
})
}
diff --git a/src/services/errors/errors.js b/src/services/errors/errors.js
index 548f3c68..590552da 100644
--- a/src/services/errors/errors.js
+++ b/src/services/errors/errors.js
@@ -1,3 +1,5 @@
+import { humanizeErrors } from '../../modules/errors'
+
export function StatusCodeError (statusCode, body, options, response) {
this.name = 'StatusCodeError'
this.statusCode = statusCode
@@ -12,3 +14,36 @@ export function StatusCodeError (statusCode, body, options, response) {
}
StatusCodeError.prototype = Object.create(Error.prototype)
StatusCodeError.prototype.constructor = StatusCodeError
+
+export class RegistrationError extends Error {
+ constructor (error) {
+ super()
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this)
+ }
+
+ try {
+ // the error is probably a JSON object with a single key, "errors", whose value is another JSON object containing the real errors
+ if (typeof error === 'string') {
+ error = JSON.parse(error)
+ if (error.hasOwnProperty('error')) {
+ error = JSON.parse(error.error)
+ }
+ }
+
+ if (typeof error === 'object') {
+ // replace ap_id with username
+ if (error.ap_id) {
+ error.username = error.ap_id
+ delete error.ap_id
+ }
+ this.message = humanizeErrors(error)
+ } else {
+ this.message = error
+ }
+ } catch (e) {
+ // can't parse it, so just treat it like a string
+ this.message = error
+ }
+ }
+}
--
cgit v1.2.3-70-g09d2
From d74f6ed6eaf3eeef263d9bf7ec7c73bd4298cced Mon Sep 17 00:00:00 2001
From: Sergey Suprunenko
Date: Sat, 17 Aug 2019 08:18:42 +0000
Subject: Initialize chat only if user is logged in and it wasn't initialized
before
---
src/boot/after_store.js | 6 ------
src/components/features_panel/features_panel.js | 4 +---
src/modules/api.js | 19 +++++++++----------
src/modules/chat.js | 10 +---------
src/modules/instance.js | 5 +++++
src/modules/users.js | 2 +-
static/config.json | 1 -
7 files changed, 17 insertions(+), 30 deletions(-)
(limited to 'src/modules/users.js')
diff --git a/src/boot/after_store.js b/src/boot/after_store.js
index 3799359f..5a94194c 100644
--- a/src/boot/after_store.js
+++ b/src/boot/after_store.js
@@ -109,12 +109,6 @@ const setSettings = async ({ apiConfig, staticConfig, store }) => {
copyInstanceOption('noAttachmentLinks')
copyInstanceOption('showFeaturesPanel')
- if ((config.chatDisabled)) {
- store.dispatch('disableChat')
- } else {
- store.dispatch('initializeSocket')
- }
-
return store.dispatch('setTheme', config['theme'])
}
diff --git a/src/components/features_panel/features_panel.js b/src/components/features_panel/features_panel.js
index 5f0b7b25..5f80a079 100644
--- a/src/components/features_panel/features_panel.js
+++ b/src/components/features_panel/features_panel.js
@@ -1,8 +1,6 @@
const FeaturesPanel = {
computed: {
- chat: function () {
- return this.$store.state.instance.chatAvailable && (!this.$store.state.chatDisabled)
- },
+ chat: function () { return this.$store.state.instance.chatAvailable },
gopher: function () { return this.$store.state.instance.gopherAvailable },
whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },
mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },
diff --git a/src/modules/api.js b/src/modules/api.js
index d51b31f3..eb6a7980 100644
--- a/src/modules/api.js
+++ b/src/modules/api.js
@@ -6,7 +6,6 @@ const api = {
backendInteractor: backendInteractorService(),
fetchers: {},
socket: null,
- chatDisabled: false,
followRequests: []
},
mutations: {
@@ -25,9 +24,6 @@ const api = {
setSocket (state, socket) {
state.socket = socket
},
- setChatDisabled (state, value) {
- state.chatDisabled = value
- },
setFollowRequests (state, value) {
state.followRequests = value
}
@@ -55,17 +51,20 @@ const api = {
setWsToken (store, token) {
store.commit('setWsToken', token)
},
- initializeSocket (store) {
+ initializeSocket ({ dispatch, commit, state, rootState }) {
// Set up websocket connection
- if (!store.state.chatDisabled) {
- const token = store.state.wsToken
+ const token = state.wsToken
+ if (rootState.instance.chatAvailable && typeof token !== 'undefined' && state.socket === null) {
const socket = new Socket('/socket', { params: { token } })
socket.connect()
- store.dispatch('initializeChat', socket)
+
+ commit('setSocket', socket)
+ dispatch('initializeChat', socket)
}
},
- disableChat (store) {
- store.commit('setChatDisabled', true)
+ disconnectFromSocket ({ commit, state }) {
+ state.socket && state.socket.disconnect()
+ commit('setSocket', null)
},
removeFollowRequest (store, request) {
let requests = store.state.followRequests.filter((it) => it !== request)
diff --git a/src/modules/chat.js b/src/modules/chat.js
index e1b03bca..c798549d 100644
--- a/src/modules/chat.js
+++ b/src/modules/chat.js
@@ -1,16 +1,12 @@
const chat = {
state: {
messages: [],
- channel: { state: '' },
- socket: null
+ channel: { state: '' }
},
mutations: {
setChannel (state, channel) {
state.channel = channel
},
- setSocket (state, socket) {
- state.socket = socket
- },
addMessage (state, message) {
state.messages.push(message)
state.messages = state.messages.slice(-19, 20)
@@ -20,12 +16,8 @@ const chat = {
}
},
actions: {
- disconnectFromChat (store) {
- store.state.socket && store.state.socket.disconnect()
- },
initializeChat (store, socket) {
const channel = socket.channel('chat:public')
- store.commit('setSocket', socket)
channel.on('new_msg', (msg) => {
store.commit('addMessage', msg)
})
diff --git a/src/modules/instance.js b/src/modules/instance.js
index 93b56577..7d602aa1 100644
--- a/src/modules/instance.js
+++ b/src/modules/instance.js
@@ -79,6 +79,11 @@ const instance = {
case 'name':
dispatch('setPageTitle')
break
+ case 'chatAvailable':
+ if (value) {
+ dispatch('initializeSocket')
+ }
+ break
}
},
setTheme ({ commit }, themeName) {
diff --git a/src/modules/users.js b/src/modules/users.js
index 4d78aef5..4aebe04b 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -410,7 +410,7 @@ const users = {
})
.then(() => {
store.commit('clearCurrentUser')
- store.dispatch('disconnectFromChat')
+ store.dispatch('disconnectFromSocket')
store.commit('clearToken')
store.dispatch('stopFetching', 'friends')
store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))
diff --git a/static/config.json b/static/config.json
index 5cdb33a0..c8267869 100644
--- a/static/config.json
+++ b/static/config.json
@@ -6,7 +6,6 @@
"logoMargin": ".1em",
"redirectRootNoLogin": "/main/all",
"redirectRootLogin": "/main/friends",
- "chatDisabled": false,
"showInstanceSpecificPanel": false,
"collapseMessageWithSubject": false,
"scopeCopy": true,
--
cgit v1.2.3-70-g09d2
From 13b80b5c7c35147247047353037085c042d0dd3e Mon Sep 17 00:00:00 2001
From: taehoon
Date: Fri, 30 Aug 2019 15:55:28 -0400
Subject: rename a mutation
---
src/modules/users.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'src/modules/users.js')
diff --git a/src/modules/users.js b/src/modules/users.js
index 4aebe04b..4d02f8d7 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -164,7 +164,7 @@ export const mutations = {
state.currentUser.muteIds.push(muteId)
}
},
- setPinned (state, status) {
+ setPinnedToUser (state, status) {
const user = state.usersObject[status.user.id]
const index = user.pinnedStatusIds.indexOf(status.id)
if (status.pinned && index === -1) {
@@ -338,13 +338,13 @@ const users = {
// Reconnect users to statuses
store.commit('setUserForStatus', status)
// Set pinned statuses to user
- store.commit('setPinned', status)
+ store.commit('setPinnedToUser', status)
})
each(compact(map(statuses, 'retweeted_status')), (status) => {
// Reconnect users to retweets
store.commit('setUserForStatus', status)
// Set pinned retweets to user
- store.commit('setPinned', status)
+ store.commit('setPinnedToUser', status)
})
},
addNewNotifications (store, { notifications }) {
--
cgit v1.2.3-70-g09d2