mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #7810 from overleaf/ta-settings-intermediate-pages
[SettingsPage] Github and Dropbox Linking Flow Improvements GitOrigin-RevId: 4fd69e7e3a8989b2478299751582007635f9e0b0
This commit is contained in:
parent
c043db0ed9
commit
4b87568e4f
7 changed files with 54 additions and 0 deletions
|
@ -22,6 +22,10 @@ async function settingsPage(req, res) {
|
||||||
if (ssoErrorMessage) {
|
if (ssoErrorMessage) {
|
||||||
delete req.session.ssoErrorMessage
|
delete req.session.ssoErrorMessage
|
||||||
}
|
}
|
||||||
|
const projectSyncSuccessMessage = req.session.projectSyncSuccessMessage
|
||||||
|
if (projectSyncSuccessMessage) {
|
||||||
|
delete req.session.projectSyncSuccessMessage
|
||||||
|
}
|
||||||
// Institution SSO
|
// Institution SSO
|
||||||
let institutionLinked = _.get(req.session, ['saml', 'linked'])
|
let institutionLinked = _.get(req.session, ['saml', 'linked'])
|
||||||
if (institutionLinked) {
|
if (institutionLinked) {
|
||||||
|
@ -103,6 +107,7 @@ async function settingsPage(req, res) {
|
||||||
samlBeta: req.session.samlBeta,
|
samlBeta: req.session.samlBeta,
|
||||||
ssoErrorMessage,
|
ssoErrorMessage,
|
||||||
thirdPartyIds: UserPagesController._restructureThirdPartyIds(user),
|
thirdPartyIds: UserPagesController._restructureThirdPartyIds(user),
|
||||||
|
projectSyncSuccessMessage,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
res.render('user/settings', {
|
res.render('user/settings', {
|
||||||
|
|
|
@ -21,6 +21,7 @@ block append meta
|
||||||
meta(name="ol-user" data-type="json" content=user)
|
meta(name="ol-user" data-type="json" content=user)
|
||||||
meta(name="ol-dropbox" data-type="json" content=dropbox)
|
meta(name="ol-dropbox" data-type="json" content=dropbox)
|
||||||
meta(name="ol-github" data-type="json" content=github)
|
meta(name="ol-github" data-type="json" content=github)
|
||||||
|
meta(name="ol-projectSyncSuccessMessage", content=projectSyncSuccessMessage)
|
||||||
|
|
||||||
|
|
||||||
block content
|
block content
|
||||||
|
|
|
@ -74,6 +74,7 @@ function formSubmitHelper(formEl) {
|
||||||
type: 'error',
|
type: 'error',
|
||||||
key: error.data?.message?.key,
|
key: error.data?.message?.key,
|
||||||
text,
|
text,
|
||||||
|
hints: error.data?.message?.hints,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Let the user re-submit the form.
|
// Let the user re-submit the form.
|
||||||
|
@ -145,6 +146,15 @@ function showMessages(formEl, messageBag) {
|
||||||
'role',
|
'role',
|
||||||
message.type === 'error' ? 'alert' : 'status'
|
message.type === 'error' ? 'alert' : 'status'
|
||||||
)
|
)
|
||||||
|
if (message.hints && message.hints.length) {
|
||||||
|
const listEl = document.createElement('ul')
|
||||||
|
message.hints.forEach(hint => {
|
||||||
|
const listItemEl = document.createElement('li')
|
||||||
|
listItemEl.textContent = hint
|
||||||
|
listEl.append(listItemEl)
|
||||||
|
})
|
||||||
|
messageEl.append(listEl)
|
||||||
|
}
|
||||||
messagesEl.append(messageEl)
|
messagesEl.append(messageEl)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,9 @@ function LinkingSection() {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { subscriptions } = useSSOContext()
|
const { subscriptions } = useSSOContext()
|
||||||
const ssoErrorMessage = getMeta('ol-ssoErrorMessage') as string
|
const ssoErrorMessage = getMeta('ol-ssoErrorMessage') as string
|
||||||
|
const projectSyncSuccessMessage = getMeta(
|
||||||
|
'ol-projectSyncSuccessMessage'
|
||||||
|
) as string
|
||||||
const [integrationLinkingWidgets] = useState(
|
const [integrationLinkingWidgets] = useState(
|
||||||
() =>
|
() =>
|
||||||
getMeta('integrationLinkingWidgets') ||
|
getMeta('integrationLinkingWidgets') ||
|
||||||
|
@ -42,6 +45,9 @@ function LinkingSection() {
|
||||||
<h3 id="project-sync" className="text-capitalize">
|
<h3 id="project-sync" className="text-capitalize">
|
||||||
{t('sync_dropbox_github')}
|
{t('sync_dropbox_github')}
|
||||||
</h3>
|
</h3>
|
||||||
|
{projectSyncSuccessMessage ? (
|
||||||
|
<Alert bsStyle="success">{projectSyncSuccessMessage}</Alert>
|
||||||
|
) : null}
|
||||||
<div className="settings-widgets-container">
|
<div className="settings-widgets-container">
|
||||||
{integrationLinkingWidgets.map(
|
{integrationLinkingWidgets.map(
|
||||||
({ import: importObject, path }, widgetIndex) => (
|
({ import: importObject, path }, widgetIndex) => (
|
||||||
|
|
|
@ -63,6 +63,24 @@ export const SectionSSOErrors = args => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const SectionProjetSyncSuccess = args => {
|
||||||
|
useFetchMock(defaultSetupMocks)
|
||||||
|
setDefaultMeta()
|
||||||
|
window.metaAttributesCache.set('ol-github', { enabled: true })
|
||||||
|
window.metaAttributesCache.set(
|
||||||
|
'ol-projectSyncSuccessMessage',
|
||||||
|
'Thanks, we’ve successfully linked your GitHub account to Overleaf. You can now export your Overleaf projects to GitHub, or import projects from your GitHub repositories.'
|
||||||
|
)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<UserProvider>
|
||||||
|
<SSOProvider>
|
||||||
|
<LinkingSection {...args} />
|
||||||
|
</SSOProvider>
|
||||||
|
</UserProvider>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
title: 'Account Settings / Linking',
|
title: 'Account Settings / Linking',
|
||||||
component: LinkingSection,
|
component: LinkingSection,
|
||||||
|
|
|
@ -102,6 +102,7 @@
|
||||||
"template_gallery": "Template Gallery",
|
"template_gallery": "Template Gallery",
|
||||||
"template_not_found_description": "This way of creating projects from templates has been removed. Please visit our template gallery to find more templates.",
|
"template_not_found_description": "This way of creating projects from templates has been removed. Please visit our template gallery to find more templates.",
|
||||||
"integrations": "Integrations",
|
"integrations": "Integrations",
|
||||||
|
"dropbox_successfully_linked_description": "Thanks, we’ve successfully linked your Dropbox account to __appName__.",
|
||||||
"dropbox_checking_sync_status": "Checking Dropbox for updates",
|
"dropbox_checking_sync_status": "Checking Dropbox for updates",
|
||||||
"dropbox_sync_in": "Receiving updates from Dropbox",
|
"dropbox_sync_in": "Receiving updates from Dropbox",
|
||||||
"dropbox_sync_out": "Sending updates to Dropbox",
|
"dropbox_sync_out": "Sending updates to Dropbox",
|
||||||
|
|
|
@ -311,6 +311,19 @@ describe('UserPagesController', function () {
|
||||||
return this.UserPagesController.settingsPage(this.req, this.res)
|
return this.UserPagesController.settingsPage(this.req, this.res)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should set and clear 'projectSyncSuccessMessage'", function (done) {
|
||||||
|
this.SplitTestHandler.promises.getAssignment = sinon
|
||||||
|
.stub()
|
||||||
|
.resolves({ variant: 'react' })
|
||||||
|
this.req.session.projectSyncSuccessMessage = 'Some Sync Success'
|
||||||
|
this.res.render = (page, opts) => {
|
||||||
|
opts.projectSyncSuccessMessage.should.equal('Some Sync Success')
|
||||||
|
expect(this.req.session.projectSyncSuccessMessage).to.not.exist
|
||||||
|
return done()
|
||||||
|
}
|
||||||
|
return this.UserPagesController.settingsPage(this.req, this.res)
|
||||||
|
})
|
||||||
|
|
||||||
describe('when ldap.updateUserDetailsOnLogin is true', function () {
|
describe('when ldap.updateUserDetailsOnLogin is true', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
return (this.settings.ldap = { updateUserDetailsOnLogin: true })
|
return (this.settings.ldap = { updateUserDetailsOnLogin: true })
|
||||||
|
|
Loading…
Reference in a new issue