Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
pleroma-fe
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Pleroma
pleroma-fe
Merge requests
!367
Move login to oauth.
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Move login to oauth.
oauth
into
develop
Overview
40
Commits
12
Pipelines
11
Changes
12
Merged
lain
requested to merge
oauth
into
develop
6 years ago
Overview
40
Commits
12
Pipelines
11
Changes
2
Expand
This unifies Mastodon and Pleroma logins and makes it easier to implement SSO schemes.
0
0
Merge request reports
Compare
version 3
version 10
cf581b7d
6 years ago
version 9
1de382f0
6 years ago
version 8
a04795d7
6 years ago
version 7
50264410
6 years ago
version 6
bcbaf5d7
6 years ago
version 5
4d9680e7
6 years ago
version 4
fbe30b49
6 years ago
version 3
0aa5fe9d
6 years ago
version 2
60b3e4f4
6 years ago
version 1
9af204b2
6 years ago
develop (base)
and
version 4
latest version
9f64c967
12 commits,
6 years ago
version 10
cf581b7d
11 commits,
6 years ago
version 9
1de382f0
10 commits,
6 years ago
version 8
a04795d7
9 commits,
6 years ago
version 7
50264410
8 commits,
6 years ago
version 6
bcbaf5d7
7 commits,
6 years ago
version 5
4d9680e7
6 commits,
6 years ago
version 4
fbe30b49
4 commits,
6 years ago
version 3
0aa5fe9d
3 commits,
6 years ago
version 2
60b3e4f4
2 commits,
6 years ago
version 1
9af204b2
1 commit,
6 years ago
Show latest version
2 files
+
15
−
3
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
2
Search (e.g. *.vue) (Ctrl+P)
src/boot/after_store.js
0 → 100644
+
176
−
0
Options
import
Vue
from
'
vue
'
import
VueRouter
from
'
vue-router
'
import
App
from
'
../App.vue
'
import
PublicTimeline
from
'
../components/public_timeline/public_timeline.vue
'
import
PublicAndExternalTimeline
from
'
../components/public_and_external_timeline/public_and_external_timeline.vue
'
import
FriendsTimeline
from
'
../components/friends_timeline/friends_timeline.vue
'
import
TagTimeline
from
'
../components/tag_timeline/tag_timeline.vue
'
import
ConversationPage
from
'
../components/conversation-page/conversation-page.vue
'
import
Mentions
from
'
../components/mentions/mentions.vue
'
import
UserProfile
from
'
../components/user_profile/user_profile.vue
'
import
Settings
from
'
../components/settings/settings.vue
'
import
Registration
from
'
../components/registration/registration.vue
'
import
UserSettings
from
'
../components/user_settings/user_settings.vue
'
import
FollowRequests
from
'
../components/follow_requests/follow_requests.vue
'
import
OAuthCallback
from
'
../components/oauth_callback/oauth_callback.vue
'
const
afterStoreSetup
=
({
store
,
i18n
})
=>
{
window
.
fetch
(
'
/api/statusnet/config.json
'
)
.
then
((
res
)
=>
res
.
json
())
.
then
((
data
)
=>
{
const
{
name
,
closed
:
registrationClosed
,
textlimit
,
server
}
=
data
.
site
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
name
'
,
value
:
name
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
registrationOpen
'
,
value
:
(
registrationClosed
===
'
0
'
)
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
textlimit
'
,
value
:
parseInt
(
textlimit
)
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
server
'
,
value
:
server
})
var
apiConfig
=
data
.
site
.
pleromafe
window
.
fetch
(
'
/static/config.json
'
)
.
then
((
res
)
=>
res
.
json
())
.
catch
((
err
)
=>
{
console
.
warn
(
'
Failed to load static/config.json, continuing without it.
'
)
console
.
warn
(
err
)
return
{}
})
.
then
((
staticConfig
)
=>
{
// This takes static config and overrides properties that are present in apiConfig
var
config
=
Object
.
assign
({},
staticConfig
,
apiConfig
)
var
theme
=
(
config
.
theme
)
var
background
=
(
config
.
background
)
var
hidePostStats
=
(
config
.
hidePostStats
)
var
hideUserStats
=
(
config
.
hideUserStats
)
var
logo
=
(
config
.
logo
)
var
logoMask
=
(
typeof
config
.
logoMask
===
'
undefined
'
?
true
:
config
.
logoMask
)
var
logoMargin
=
(
typeof
config
.
logoMargin
===
'
undefined
'
?
0
:
config
.
logoMargin
)
var
redirectRootNoLogin
=
(
config
.
redirectRootNoLogin
)
var
redirectRootLogin
=
(
config
.
redirectRootLogin
)
var
chatDisabled
=
(
config
.
chatDisabled
)
var
showInstanceSpecificPanel
=
(
config
.
showInstanceSpecificPanel
)
var
scopeOptionsEnabled
=
(
config
.
scopeOptionsEnabled
)
var
formattingOptionsEnabled
=
(
config
.
formattingOptionsEnabled
)
var
collapseMessageWithSubject
=
(
config
.
collapseMessageWithSubject
)
var
loginMethod
=
(
config
.
loginMethod
)
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
theme
'
,
value
:
theme
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
background
'
,
value
:
background
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
hidePostStats
'
,
value
:
hidePostStats
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
hideUserStats
'
,
value
:
hideUserStats
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
logo
'
,
value
:
logo
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
logoMask
'
,
value
:
logoMask
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
logoMargin
'
,
value
:
logoMargin
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
redirectRootNoLogin
'
,
value
:
redirectRootNoLogin
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
redirectRootLogin
'
,
value
:
redirectRootLogin
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
showInstanceSpecificPanel
'
,
value
:
showInstanceSpecificPanel
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
scopeOptionsEnabled
'
,
value
:
scopeOptionsEnabled
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
formattingOptionsEnabled
'
,
value
:
formattingOptionsEnabled
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
collapseMessageWithSubject
'
,
value
:
collapseMessageWithSubject
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
loginMethod
'
,
value
:
loginMethod
})
if
(
chatDisabled
)
{
store
.
dispatch
(
'
disableChat
'
)
}
const
routes
=
[
{
name
:
'
root
'
,
path
:
'
/
'
,
redirect
:
to
=>
{
return
(
store
.
state
.
users
.
currentUser
?
store
.
state
.
instance
.
redirectRootLogin
:
store
.
state
.
instance
.
redirectRootNoLogin
)
||
'
/main/all
'
}},
{
path
:
'
/main/all
'
,
component
:
PublicAndExternalTimeline
},
{
path
:
'
/main/public
'
,
component
:
PublicTimeline
},
{
path
:
'
/main/friends
'
,
component
:
FriendsTimeline
},
{
path
:
'
/tag/:tag
'
,
component
:
TagTimeline
},
{
name
:
'
conversation
'
,
path
:
'
/notice/:id
'
,
component
:
ConversationPage
,
meta
:
{
dontScroll
:
true
}
},
{
name
:
'
user-profile
'
,
path
:
'
/users/:id
'
,
component
:
UserProfile
},
{
name
:
'
mentions
'
,
path
:
'
/:username/mentions
'
,
component
:
Mentions
},
{
name
:
'
settings
'
,
path
:
'
/settings
'
,
component
:
Settings
},
{
name
:
'
registration
'
,
path
:
'
/registration
'
,
component
:
Registration
},
{
name
:
'
registration
'
,
path
:
'
/registration/:token
'
,
component
:
Registration
},
{
name
:
'
friend-requests
'
,
path
:
'
/friend-requests
'
,
component
:
FollowRequests
},
{
name
:
'
user-settings
'
,
path
:
'
/user-settings
'
,
component
:
UserSettings
},
{
name
:
'
oauth-callback
'
,
path
:
'
/oauth-callback
'
,
component
:
OAuthCallback
,
props
:
(
route
)
=>
({
code
:
route
.
query
.
code
})
}
]
const
router
=
new
VueRouter
({
mode
:
'
history
'
,
routes
,
scrollBehavior
:
(
to
,
from
,
savedPosition
)
=>
{
if
(
to
.
matched
.
some
(
m
=>
m
.
meta
.
dontScroll
))
{
return
false
}
return
savedPosition
||
{
x
:
0
,
y
:
0
}
}
})
/* eslint-disable no-new */
new
Vue
({
router
,
store
,
i18n
,
el
:
'
#app
'
,
render
:
h
=>
h
(
App
)
})
})
})
window
.
fetch
(
'
/static/terms-of-service.html
'
)
.
then
((
res
)
=>
res
.
text
())
.
then
((
html
)
=>
{
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
tos
'
,
value
:
html
})
})
window
.
fetch
(
'
/api/pleroma/emoji.json
'
)
.
then
(
(
res
)
=>
res
.
json
()
.
then
(
(
values
)
=>
{
const
emoji
=
Object
.
keys
(
values
).
map
((
key
)
=>
{
return
{
shortcode
:
key
,
image_url
:
values
[
key
]
}
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
customEmoji
'
,
value
:
emoji
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
pleromaBackend
'
,
value
:
true
})
},
(
failure
)
=>
{
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
pleromaBackend
'
,
value
:
false
})
}
),
(
error
)
=>
console
.
log
(
error
)
)
window
.
fetch
(
'
/static/emoji.json
'
)
.
then
((
res
)
=>
res
.
json
())
.
then
((
values
)
=>
{
const
emoji
=
Object
.
keys
(
values
).
map
((
key
)
=>
{
return
{
shortcode
:
key
,
image_url
:
false
,
'
utf
'
:
values
[
key
]
}
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
emoji
'
,
value
:
emoji
})
})
window
.
fetch
(
'
/instance/panel.html
'
)
.
then
((
res
)
=>
res
.
text
())
.
then
((
html
)
=>
{
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
instanceSpecificPanelContent
'
,
value
:
html
})
})
window
.
fetch
(
'
/nodeinfo/2.0.json
'
)
.
then
((
res
)
=>
res
.
json
())
.
then
((
data
)
=>
{
const
metadata
=
data
.
metadata
const
features
=
metadata
.
features
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
mediaProxyAvailable
'
,
value
:
features
.
includes
(
'
media_proxy
'
)
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
chatAvailable
'
,
value
:
features
.
includes
(
'
chat
'
)
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
gopherAvailable
'
,
value
:
features
.
includes
(
'
gopher
'
)
})
const
suggestions
=
metadata
.
suggestions
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
suggestionsEnabled
'
,
value
:
suggestions
.
enabled
})
store
.
dispatch
(
'
setInstanceOption
'
,
{
name
:
'
suggestionsWeb
'
,
value
:
suggestions
.
web
})
})
}
export
default
afterStoreSetup
Loading