aboutsummaryrefslogtreecommitdiff
path: root/src/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/services')
-rw-r--r--src/services/api/api.service.js32
-rw-r--r--src/services/backend_interactor_service/backend_interactor_service.js9
-rw-r--r--src/services/timeline_fetcher/timeline_fetcher.service.js10
3 files changed, 39 insertions, 12 deletions
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index 4dfc0a02..59e3a1c3 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -17,10 +17,14 @@ const FRIENDS_URL = '/api/statuses/friends.json'
const FOLLOWING_URL = '/api/friendships/create.json'
const UNFOLLOWING_URL = '/api/friendships/destroy.json'
const QVITTER_USER_PREF_URL = '/api/qvitter/set_profile_pref.json'
+const EXTERNAL_PROFILE_URL = '/api/externalprofile/show.json'
+const QVITTER_USER_TIMELINE_URL = '/api/qvitter/statuses/user_timeline.json'
// const USER_URL = '/api/users/show.json'
const oldfetch = window.fetch
+import { map } from 'lodash'
+
let fetch = (url, options) => {
const baseUrl = ''
const fullUrl = baseUrl + url
@@ -35,6 +39,13 @@ const authHeaders = (user) => {
}
}
+const externalProfile = (profileUrl) => {
+ let url = `${EXTERNAL_PROFILE_URL}?profileurl=${profileUrl}`
+ return fetch(url, {
+ method: 'GET'
+ }).then((data) => data.json())
+}
+
const followUser = ({id, credentials}) => {
let url = `${FOLLOWING_URL}?user_id=${id}`
return fetch(url, {
@@ -90,24 +101,34 @@ const setUserMute = ({id, credentials, muted = true}) => {
})
}
-const fetchTimeline = ({timeline, credentials, since = false, until = false}) => {
+const fetchTimeline = ({timeline, credentials, since = false, until = false, userId = false}) => {
const timelineUrls = {
public: PUBLIC_TIMELINE_URL,
friends: FRIENDS_TIMELINE_URL,
mentions: MENTIONS_URL,
- 'publicAndExternal': PUBLIC_AND_EXTERNAL_TIMELINE_URL
+ 'publicAndExternal': PUBLIC_AND_EXTERNAL_TIMELINE_URL,
+ user: QVITTER_USER_TIMELINE_URL
}
let url = timelineUrls[timeline]
+ let params = []
+
if (since) {
- url += `?since_id=${since}`
+ params.push(['since_id', since])
}
if (until) {
- url += `?max_id=${until}`
+ params.push(['max_id', until])
+ }
+
+ if (userId) {
+ params.push(['user_id', userId])
}
+ const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')
+ url += `?${queryString}`
+
return fetch(url, { headers: authHeaders(credentials) }).then((data) => data.json())
}
@@ -198,7 +219,8 @@ const apiService = {
uploadMedia,
fetchAllFollowing,
setUserMute,
- fetchMutes
+ fetchMutes,
+ externalProfile
}
export default apiService
diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js
index bc68d02c..f2d01c70 100644
--- a/src/services/backend_interactor_service/backend_interactor_service.js
+++ b/src/services/backend_interactor_service/backend_interactor_service.js
@@ -26,8 +26,8 @@ const backendInteractorService = (credentials) => {
return apiService.unfollowUser({credentials, id})
}
- const startFetching = ({timeline, store}) => {
- return timelineFetcherService.startFetching({timeline, store, credentials})
+ const startFetching = ({timeline, store, userId = false}) => {
+ return timelineFetcherService.startFetching({timeline, store, credentials, userId})
}
const setUserMute = ({id, muted = true}) => {
@@ -36,6 +36,8 @@ const backendInteractorService = (credentials) => {
const fetchMutes = () => apiService.fetchMutes({credentials})
+ const externalProfile = (profileUrl) => apiService.externalProfile(profileUrl)
+
const backendInteractorServiceInstance = {
fetchStatus,
fetchConversation,
@@ -46,7 +48,8 @@ const backendInteractorService = (credentials) => {
verifyCredentials: apiService.verifyCredentials,
startFetching,
setUserMute,
- fetchMutes
+ fetchMutes,
+ externalProfile
}
return backendInteractorServiceInstance
diff --git a/src/services/timeline_fetcher/timeline_fetcher.service.js b/src/services/timeline_fetcher/timeline_fetcher.service.js
index 24aef069..b28de9e7 100644
--- a/src/services/timeline_fetcher/timeline_fetcher.service.js
+++ b/src/services/timeline_fetcher/timeline_fetcher.service.js
@@ -14,7 +14,7 @@ const update = ({store, statuses, timeline, showImmediately}) => {
})
}
-const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false, showImmediately = false}) => {
+const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false, showImmediately = false, userId = false}) => {
const args = { timeline, credentials }
const rootState = store.rootState || store.state
const timelineData = rootState.statuses.timelines[camelCase(timeline)]
@@ -25,14 +25,16 @@ const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false
args['since'] = timelineData.maxId
}
+ args['userId'] = userId
+
return apiService.fetchTimeline(args)
.then((statuses) => update({store, statuses, timeline, showImmediately}),
() => store.dispatch('setError', { value: true }))
}
-const startFetching = ({ timeline = 'friends', credentials, store }) => {
- fetchAndUpdate({timeline, credentials, store, showImmediately: true})
- const boundFetchAndUpdate = () => fetchAndUpdate({ timeline, credentials, store })
+const startFetching = ({timeline = 'friends', credentials, store, userId = false}) => {
+ fetchAndUpdate({timeline, credentials, store, showImmediately: true, userId})
+ const boundFetchAndUpdate = () => fetchAndUpdate({ timeline, credentials, store, userId })
return setInterval(boundFetchAndUpdate, 10000)
}
const timelineFetcher = {