feat: New one-click Home Server, now in Labs. Launch your own self-hosted server instance with just 1 click from the Preferences window. (#2645)
This commit is contained in:
@@ -4,7 +4,6 @@ import { PackageProvider } from '../Panes/Plugins/PackageProvider'
|
||||
import { securityPrefsHasBubble } from '../Panes/Security/securityPrefsHasBubble'
|
||||
import { PreferencePaneId, StatusServiceEvent } from '@standardnotes/services'
|
||||
import { isDesktopApplication } from '@/Utils'
|
||||
import { featureTrunkHomeServerEnabled } from '@/FeatureTrunk'
|
||||
import { PreferencesMenuItem } from './PreferencesMenuItem'
|
||||
import { SelectableMenuItem } from './SelectableMenuItem'
|
||||
import { PREFERENCES_MENU_ITEMS, READY_PREFERENCES_MENU_ITEMS } from './MenuItems'
|
||||
@@ -30,7 +29,7 @@ export class PreferencesSessionController {
|
||||
menuItems.push({ id: 'vaults', label: 'Vaults', icon: 'safe-square', order: 5 })
|
||||
}
|
||||
|
||||
if (featureTrunkHomeServerEnabled() && isDesktopApplication()) {
|
||||
if (isDesktopApplication()) {
|
||||
menuItems.push({ id: 'home-server', label: 'Home Server', icon: 'server', order: 5 })
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,17 @@ const OfflineSubscription: FunctionComponent<Props> = ({ application, onSuccess
|
||||
return
|
||||
}
|
||||
|
||||
const serverActivationResult = await homeServer.activatePremiumFeatures(signedInUser.email)
|
||||
const parsedOfflineFeaturesCodeResult = application.features.parseOfflineEntitlementsCode(activationCode)
|
||||
if (parsedOfflineFeaturesCodeResult instanceof ClientDisplayableError) {
|
||||
await application.alerts.alert(parsedOfflineFeaturesCodeResult.text)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
const serverActivationResult = await homeServer.activatePremiumFeatures(
|
||||
signedInUser.email,
|
||||
parsedOfflineFeaturesCodeResult.subscriptionId,
|
||||
)
|
||||
if (serverActivationResult.isFailed()) {
|
||||
await application.alerts.alert(serverActivationResult.getError())
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
import { isWindowsPlatform } from '@standardnotes/ui-services'
|
||||
|
||||
import { useApplication } from '@/Components/ApplicationProvider'
|
||||
import { Pill, Subtitle, Text, Title } from '@/Components/Preferences/PreferencesComponents/Content'
|
||||
import { Subtitle, Text, Title } from '@/Components/Preferences/PreferencesComponents/Content'
|
||||
|
||||
import PreferencesPane from '../../PreferencesComponents/PreferencesPane'
|
||||
import PreferencesGroup from '../../PreferencesComponents/PreferencesGroup'
|
||||
@@ -9,30 +6,6 @@ import PreferencesSegment from '../../PreferencesComponents/PreferencesSegment'
|
||||
import HomeServerSettings from './HomeServerSettings'
|
||||
|
||||
const HomeServer = () => {
|
||||
const application = useApplication()
|
||||
|
||||
if (isWindowsPlatform(application.platform)) {
|
||||
return (
|
||||
<PreferencesPane>
|
||||
<PreferencesGroup>
|
||||
<PreferencesSegment>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="flex items-start">
|
||||
<Title>Home Server</Title>
|
||||
<Pill style={'success'}>Labs</Pill>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="mr-10 flex flex-col">
|
||||
<Subtitle>Windows support for home server is coming soon.</Subtitle>
|
||||
</div>
|
||||
</div>
|
||||
</PreferencesSegment>
|
||||
</PreferencesGroup>
|
||||
</PreferencesPane>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<PreferencesPane>
|
||||
<PreferencesGroup>
|
||||
|
||||
@@ -374,8 +374,8 @@ const HomeServerSettings = () => {
|
||||
<h1 className="sk-h3 m-0 text-sm font-semibold">Activate Premium Features</h1>
|
||||
</div>
|
||||
<p className="col-start-1 col-end-3 m-0 mt-1 text-sm">
|
||||
Enter your purchased offline subscription code to activate all the features offered by the home
|
||||
server.
|
||||
Enter your purchased offline subscription code to activate all the features offered by your home
|
||||
server, likes files support and Super notes.
|
||||
</p>
|
||||
<Button
|
||||
primary
|
||||
|
||||
@@ -44,7 +44,7 @@ const StatusIndicator = ({ status, className, homeServerService }: Props) => {
|
||||
const isUsingHomeServer = await application.isUsingHomeServer()
|
||||
if (isUsingHomeServer) {
|
||||
setSignInStatusMessage(`You are currently signed into your home server under ${signedInUser.email}`)
|
||||
setSignInStatusClassName('bg-success')
|
||||
setSignInStatusClassName('bg-success text-success-contrast')
|
||||
setSignInStatusIcon('check')
|
||||
} else {
|
||||
setSignInStatusMessage(
|
||||
@@ -52,14 +52,14 @@ const StatusIndicator = ({ status, className, homeServerService }: Props) => {
|
||||
signedInUser.email
|
||||
}, then sign in or register using ${await homeServerService.getHomeServerUrl()}.`,
|
||||
)
|
||||
setSignInStatusClassName('bg-warning')
|
||||
setSignInStatusClassName('bg-warning text-warning-contrast')
|
||||
setSignInStatusIcon('warning')
|
||||
}
|
||||
} else {
|
||||
setSignInStatusMessage(
|
||||
`You are not currently signed into your home server. To use your home server, sign in or register using ${await homeServerService.getHomeServerUrl()}`,
|
||||
)
|
||||
setSignInStatusClassName('bg-warning')
|
||||
setSignInStatusClassName('bg-warning text-warning-contrast')
|
||||
setSignInStatusIcon('warning')
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user