more refinements to fetching and offline
This commit is contained in:
parent
b0c1844ed2
commit
42fd153364
|
@ -17,9 +17,11 @@
|
|||
<script>
|
||||
import VirtualListItem from './VirtualListItem'
|
||||
import { virtualListStore } from '../_utils/virtualListStore'
|
||||
import throttle from 'lodash/throttle'
|
||||
import { mark, stop } from '../_utils/marks'
|
||||
|
||||
const DISTANCE_FROM_BOTTOM_TO_FIRE = 200
|
||||
const DISTANCE_FROM_BOTTOM_TO_FIRE = 400
|
||||
const SCROLL_TO_BOTTOM_DELAY = 1000
|
||||
|
||||
export default {
|
||||
oncreate () {
|
||||
|
@ -29,6 +31,9 @@
|
|||
items: items
|
||||
})
|
||||
stop('set items')
|
||||
this.fireScrollToBottom = throttle(() => {
|
||||
this.fire('scrollToBottom')
|
||||
}, SCROLL_TO_BOTTOM_DELAY)
|
||||
})
|
||||
|
||||
let observedOnce = false
|
||||
|
@ -40,7 +45,7 @@
|
|||
}
|
||||
if (distanceFromBottom >= 0 &&
|
||||
distanceFromBottom <= DISTANCE_FROM_BOTTOM_TO_FIRE) {
|
||||
this.fire('scrollToBottom')
|
||||
this.fireScrollToBottom()
|
||||
}
|
||||
})
|
||||
},
|
||||
|
|
|
@ -2,9 +2,10 @@ const WEBSITE = 'https://pinafore.social'
|
|||
const SCOPES = 'read write follow'
|
||||
const CLIENT_NAME = 'Pinafore'
|
||||
import { post, get, paramsString } from '../ajax'
|
||||
import { basename } from './utils'
|
||||
|
||||
export function registerApplication(instanceName, redirectUri) {
|
||||
const url = `https://${instanceName}/api/v1/apps`
|
||||
const url = `${basename(instanceName)}/api/v1/apps`
|
||||
return post(url, {
|
||||
client_name: CLIENT_NAME,
|
||||
redirect_uris: redirectUri,
|
||||
|
@ -20,11 +21,11 @@ export function generateAuthLink(instanceName, clientId, redirectUri) {
|
|||
'response_type': 'code',
|
||||
'scope': SCOPES
|
||||
})
|
||||
return `https://${instanceName}/oauth/authorize?${params}`
|
||||
return `${basename(instanceName)}/oauth/authorize?${params}`
|
||||
}
|
||||
|
||||
export function getAccessTokenFromAuthCode(instanceName, clientId, clientSecret, code, redirectUri) {
|
||||
let url = `https://${instanceName}/oauth/token`
|
||||
let url = `${basename(instanceName)}/oauth/token`
|
||||
return post(url, {
|
||||
client_id: clientId,
|
||||
client_secret: clientSecret,
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import { get, paramsString } from '../ajax'
|
||||
import { basename } from './utils'
|
||||
|
||||
export function getHomeTimeline(instanceName, accessToken, maxId, since) {
|
||||
let url = `https://${instanceName}/api/v1/timelines/home`
|
||||
let url = `${basename(instanceName)}/api/v1/timelines/home`
|
||||
|
||||
let params = {}
|
||||
if (since) {
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import { get } from '../ajax'
|
||||
import { basename } from './utils'
|
||||
|
||||
export function getThisUserAccount(instanceName, accessToken) {
|
||||
let url = `https://${instanceName}/api/v1/accounts/verify_credentials`
|
||||
let url = `${basename(instanceName)}/api/v1/accounts/verify_credentials`
|
||||
return get(url, {
|
||||
'Authorization': `Bearer ${accessToken}`
|
||||
})
|
||||
|
|
15
routes/_utils/mastodon/utils.js
Normal file
15
routes/_utils/mastodon/utils.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
const isLocalhost = process.browser && process.env.NODE_ENV !== 'production' &&
|
||||
(document.location.hostname === 'localhost' ||
|
||||
document.location.hostname === '127.0.0.1')
|
||||
|
||||
function targetIsLocalhost(instanceName) {
|
||||
return process.browser && process.env.NODE_ENV !== 'production' &&
|
||||
(instanceName === 'localhost:3000' || instanceName === '127.0.0.1:3000')
|
||||
}
|
||||
|
||||
export function basename(instanceName) {
|
||||
if (isLocalhost && targetIsLocalhost(instanceName)) {
|
||||
return `http://${instanceName}`
|
||||
}
|
||||
return `https://${instanceName}`
|
||||
}
|
Loading…
Reference in a new issue