Skip to content
Next
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Switch to GitLab Next
Sign in / Register
Toggle navigation
Minds Frontend
Project
Project
Details
Activity
Releases
Cycle Analytics
Insights
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
895
Issues
895
List
Boards
Labels
Service Desk
Milestones
Merge Requests
47
Merge Requests
47
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Security & Compliance
Security & Compliance
Dependency List
Packages
Packages
List
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Minds
Minds Frontend
Compare Revisions
21145c55a7f2010f7f7a921bc52a1ea870ad23da...4aeb71c64f71bd241ca8a82b5f2304a8e5a238f0
Source
4aeb71c64f71bd241ca8a82b5f2304a8e5a238f0
Select Git revision
...
Target
21145c55a7f2010f7f7a921bc52a1ea870ad23da
Select Git revision
Compare
Commits (2)
(chore): Move domain settings to a new tab
· 2f04bb0e
Emiliano Balbuena
authored
3 hours ago
2f04bb0e
(chore): Use site service to check for pro; (cs): prettier
· 4aeb71c6
Emiliano Balbuena
authored
1 hour ago
4aeb71c6
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
160 additions
and
96 deletions
+160
-96
app.component.html
src/app/app.component.html
+5
-5
app.component.ts
src/app/app.component.ts
+13
-11
layout.scss
src/app/common/layout/layout.scss
+1
-1
channel-container.component.ts
.../modules/channel-container/channel-container.component.ts
+4
-2
modal.component.html
src/app/modules/media/modal/modal.component.html
+1
-3
modal.component.ts
src/app/modules/media/modal/modal.component.ts
+15
-2
notification.module.ts
src/app/modules/notifications/notification.module.ts
+2
-1
notification.service.ts
src/app/modules/notifications/notification.service.ts
+7
-4
channel.component.html
src/app/modules/pro/channel/channel.component.html
+2
-2
channel.component.ts
src/app/modules/pro/channel/channel.component.ts
+11
-9
channel.service.ts
src/app/modules/pro/channel/channel.service.ts
+11
-9
footer.component.html
src/app/modules/pro/channel/footer/footer.component.html
+1
-1
footer.component.ts
src/app/modules/pro/channel/footer/footer.component.ts
+5
-3
login.component.ts
src/app/modules/pro/channel/login/login.component.ts
+2
-2
tile.component.ts
src/app/modules/pro/channel/tiles/media/tile.component.ts
+9
-5
pro.module.ts
src/app/modules/pro/pro.module.ts
+1
-1
settings.component.html
src/app/modules/pro/settings/settings.component.html
+31
-12
settings.component.ts
src/app/modules/pro/settings/settings.component.ts
+7
-2
client.ts
src/app/services/api/client.ts
+10
-5
upload.ts
src/app/services/api/upload.ts
+5
-4
providers.ts
src/app/services/providers.ts
+5
-5
site.service.ts
src/app/services/site.service.ts
+7
-3
title.ts
src/app/services/ux/title.ts
+5
-4
No files found.
src/app/app.component.html
View file @
4aeb71c6
<ng-container
*ngIf=
"!
standalone
"
>
<ng-container
*ngIf=
"!
isProDomain
"
>
<m-v2-topbar
*mIfFeature=
"'top-feeds'; else legacyTopbar"
>
<ng-container
search
>
<m-search--bar
[defaultSizes]=
"false"
></m-search--bar>
...
...
@@ -30,7 +30,7 @@
<m-body
[class.has-v2-navbar]=
"featuresService.has('top-feeds')"
[class.is-
standalone]=
"this.standalone
"
[class.is-
pro-domain]=
"isProDomain
"
>
<m-announcement
[id]=
"'blockchain:sale'"
*ngIf=
"false"
>
<span
...
...
@@ -45,7 +45,7 @@
<router-outlet></router-outlet>
</m-body>
<m-messenger
*ngIf=
"minds.LoggedIn && !
this.standalone
"
></m-messenger>
<m-messenger
*ngIf=
"minds.LoggedIn && !
isProDomain
"
></m-messenger>
<m-hovercard-popup></m-hovercard-popup>
...
...
@@ -53,10 +53,10 @@
<m--blockchain--transaction-overlay></m--blockchain--transaction-overlay>
<m-modal--tos-updated
*ngIf=
"session.isLoggedIn()"
></m-modal--tos-updated>
<m-juryDutySession
__summons
*ngIf=
"session.isLoggedIn() && !
this.standalone
"
*ngIf=
"session.isLoggedIn() && !
isProDomain
"
></m-juryDutySession
__summons
>
<m-modal-signup-on-scroll
*ngIf=
"!
this.standalone
"
></m-modal-signup-on-scroll>
<m-modal-signup-on-scroll
*ngIf=
"!
isProDomain
"
></m-modal-signup-on-scroll>
<m-channel--onboarding
*ngIf=
"showOnboarding"
></m-channel--onboarding>
...
...
This diff is collapsed.
Click to expand it.
src/app/app.component.ts
View file @
4aeb71c6
...
...
@@ -18,7 +18,8 @@ import { FeaturesService } from './services/features.service';
import
{
ThemeService
}
from
'
./common/services/theme.service
'
;
import
{
BannedService
}
from
'
./modules/report/banned/banned.service
'
;
import
{
DiagnosticsService
}
from
'
./services/diagnostics.service
'
;
import
{
STANDALONE_ROUTES
}
from
'
./modules/pro/pro.module
'
;
import
{
SiteService
}
from
'
./services/site.service
'
;
import
{
PRO_DOMAIN_ROUTES
}
from
'
./modules/pro/pro.module
'
;
@
Component
({
moduleId
:
module
.
id
,
...
...
@@ -35,8 +36,6 @@ export class Minds {
paramsSubscription
;
standalone
:
boolean
=
false
;
constructor
(
public
session
:
Session
,
public
route
:
ActivatedRoute
,
...
...
@@ -56,11 +55,12 @@ export class Minds {
public
themeService
:
ThemeService
,
private
bannedService
:
BannedService
,
private
diagnostics
:
DiagnosticsService
,
private
site
:
SiteService
)
{
this
.
name
=
'
Minds
'
;
if
(
window
.
Minds
.
pro
)
{
this
.
router
.
resetConfig
(
STANDALONE
_ROUTES
);
if
(
this
.
site
.
isProDomain
)
{
this
.
router
.
resetConfig
(
PRO_DOMAIN
_ROUTES
);
}
}
...
...
@@ -68,18 +68,16 @@ export class Minds {
this
.
diagnostics
.
setUser
(
this
.
minds
.
user
);
this
.
diagnostics
.
listen
();
// Listen for user changes
this
.
standalone
=
Boolean
(
window
.
Minds
.
pro
);
if
(
!
this
.
standalone
)
{
if
(
!
this
.
site
.
isProDomain
)
{
this
.
notificationService
.
getNotifications
();
}
this
.
session
.
isLoggedIn
(
async
is
=>
{
if
(
is
&&
!
this
.
standalone
)
{
// TODO remove window.Minds.pro check from this line
if
(
!
this
.
standalone
)
{
if
(
is
&&
!
this
.
site
.
isProDomain
)
{
if
(
!
this
.
site
.
isProDomain
)
{
this
.
showOnboarding
=
await
this
.
onboardingService
.
showModal
();
}
if
(
this
.
minds
.
user
.
language
!==
this
.
minds
.
language
)
{
console
.
log
(
'
[app]:: language change
'
,
...
...
@@ -125,4 +123,8 @@ export class Minds {
this
.
scrollToTop
.
unlisten
();
this
.
paramsSubscription
.
unsubscribe
();
}
get
isProDomain
()
{
return
this
.
site
.
isProDomain
;
}
}
This diff is collapsed.
Click to expand it.
src/app/common/layout/layout.scss
View file @
4aeb71c6
...
...
@@ -13,7 +13,7 @@ m-body {
margin-top
:
52px
;
}
&
.is-
standalone
{
&
.is-
pro-domain
{
margin-top
:
0
;
padding-bottom
:
0
;
}
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/channel-container/channel-container.component.ts
View file @
4aeb71c6
...
...
@@ -13,6 +13,7 @@ import { MindsChannelResponse } from '../../interfaces/responses';
import
{
ChannelComponent
}
from
'
../channels/channel.component
'
;
import
{
ProChannelComponent
}
from
'
../pro/channel/channel.component
'
;
import
{
Session
}
from
'
../../services/session
'
;
import
{
SiteService
}
from
'
../../services/site.service
'
;
@
Component
({
selector
:
'
m-channel-container
'
,
...
...
@@ -38,7 +39,8 @@ export class ChannelContainerComponent implements OnInit, OnDestroy {
protected
route
:
ActivatedRoute
,
protected
router
:
Router
,
protected
client
:
Client
,
protected
session
:
Session
protected
session
:
Session
,
protected
site
:
SiteService
)
{}
ngOnInit
():
void
{
...
...
@@ -82,7 +84,7 @@ export class ChannelContainerComponent implements OnInit, OnDestroy {
this
.
channel
=
response
.
channel
;
// NOTE: Temporary workaround until channel component supports children routes
if
(
!
window
.
Minds
.
pro
&&
this
.
channel
.
pro
&&
!
this
.
isOwner
)
{
if
(
!
this
.
site
.
isProDomain
&&
this
.
channel
.
pro
&&
!
this
.
isOwner
)
{
this
.
router
.
navigate
([
'
/pro
'
,
this
.
channel
.
username
],
{
replaceUrl
:
true
,
});
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/media/modal/modal.component.html
View file @
4aeb71c6
...
...
@@ -62,9 +62,7 @@
]"
[guid]=
"entity.entity_guid"
[playCount]=
"entity['play:count']"
[torrent]=
"[
{ res: '360', key: entity.entity_guid + '/360.mp4' }
]"
[torrent]=
"[{ res: '360', key: entity.entity_guid + '/360.mp4' }]"
(videoCanPlayThrough)=
"isLoaded()"
[@
slowFadeAnimation]=
"isLoading ? 'out' : 'in'"
#player
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/media/modal/modal.component.ts
View file @
4aeb71c6
import
{
Component
,
HostListener
,
Input
,
OnDestroy
,
OnInit
,
ViewChild
,
}
from
'
@angular/core
'
;
import
{
Component
,
HostListener
,
Input
,
OnDestroy
,
OnInit
,
ViewChild
,
}
from
'
@angular/core
'
;
import
{
Location
}
from
'
@angular/common
'
;
import
{
Event
,
NavigationStart
,
Router
}
from
'
@angular/router
'
;
import
{
animate
,
state
,
style
,
transition
,
trigger
,
}
from
'
@angular/animations
'
;
import
{
animate
,
state
,
style
,
transition
,
trigger
,
}
from
'
@angular/animations
'
;
import
{
Subscription
}
from
'
rxjs
'
;
import
{
Session
}
from
'
../../../services/session
'
;
import
{
OverlayModalService
}
from
'
../../../services/ux/overlay-modal
'
;
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/notifications/notification.module.ts
View file @
4aeb71c6
...
...
@@ -17,6 +17,7 @@ import { NotificationsComponent } from './notifications.component';
import
{
NotificationService
}
from
'
./notification.service
'
;
import
{
NotificationsToasterComponent
}
from
'
./toaster.component
'
;
import
{
SiteService
}
from
'
../../services/site.service
'
;
@
NgModule
({
imports
:
[
...
...
@@ -38,7 +39,7 @@ import { NotificationsToasterComponent } from './toaster.component';
{
provide
:
NotificationService
,
useFactory
:
NotificationService
.
_
,
deps
:
[
Session
,
Client
,
SocketsService
,
MindsTitle
],
deps
:
[
Session
,
Client
,
SocketsService
,
MindsTitle
,
SiteService
],
},
],
exports
:
[
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/notifications/notification.service.ts
View file @
4aeb71c6
...
...
@@ -3,6 +3,7 @@ import { Client } from '../../services/api';
import
{
SocketsService
}
from
'
../../services/sockets
'
;
import
{
Session
}
from
'
../../services/session
'
;
import
{
MindsTitle
}
from
'
../../services/ux/title
'
;
import
{
SiteService
}
from
'
../../services/site.service
'
;
export
class
NotificationService
{
socketSubscriptions
:
any
=
{
...
...
@@ -14,20 +15,22 @@ export class NotificationService {
session
:
Session
,
client
:
Client
,
sockets
:
SocketsService
,
title
:
MindsTitle
title
:
MindsTitle
,
site
:
SiteService
)
{
return
new
NotificationService
(
session
,
client
,
sockets
,
title
);
return
new
NotificationService
(
session
,
client
,
sockets
,
title
,
site
);
}
constructor
(
public
session
:
Session
,
public
client
:
Client
,
public
sockets
:
SocketsService
,
public
title
:
MindsTitle
public
title
:
MindsTitle
,
protected
site
:
SiteService
)
{
if
(
!
window
.
Minds
.
notifications_count
)
window
.
Minds
.
notifications_count
=
0
;
if
(
!
window
.
Minds
.
pro
)
{
if
(
!
this
.
site
.
isProDomain
)
{
this
.
listen
();
}
}
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/pro/channel/channel.component.html
View file @
4aeb71c6
...
...
@@ -99,7 +99,7 @@
</ng-container>
<ng-template
#ownerNavLinks
>
<a
*ngIf=
"is
Standalone
"
*ngIf=
"is
ProDomain
"
class=
"m-proChannelTopbar__navItem"
[href]=
"proSettingsHref"
target=
"root_minds"
...
...
@@ -109,7 +109,7 @@
</a>
<a
*ngIf=
"!is
Standalone
"
*ngIf=
"!is
ProDomain
"
class=
"m-proChannelTopbar__navItem"
[routerLink]=
"proSettingsLink"
i18n
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/pro/channel/channel.component.ts
View file @
4aeb71c6
...
...
@@ -22,7 +22,8 @@ import { SignupModalService } from '../../../modules/modals/signup/service';
import
{
OverlayModalService
}
from
'
../../../services/ux/overlay-modal
'
;
import
{
ProUnsubscribeModalComponent
}
from
'
./unsubscribe-modal/modal.component
'
;
import
{
OverlayModalComponent
}
from
'
../../../common/components/overlay-modal/overlay-modal.component
'
;
import
{
SessionsStorageService
}
from
"
../../../services/session-storage.service
"
;
import
{
SessionsStorageService
}
from
'
../../../services/session-storage.service
'
;
import
{
SiteService
}
from
'
../../../services/site.service
'
;
@
Component
({
providers
:
[
ProChannelService
,
OverlayModalService
],
...
...
@@ -68,12 +69,13 @@ export class ProChannelComponent implements OnInit, AfterViewInit, OnDestroy {
protected
modal
:
SignupModalService
,
protected
modalService
:
OverlayModalService
,
protected
sessionStorage
:
SessionsStorageService
,
protected
injector
:
Injector
,
protected
site
:
SiteService
,
protected
injector
:
Injector
)
{}
ngOnInit
()
{
if
(
window
.
Minds
.
pro
)
{
this
.
username
=
window
.
Minds
.
pro
.
user_guid
;
if
(
this
.
site
.
isProDomain
)
{
this
.
username
=
this
.
site
.
pro
.
user_guid
;
}
this
.
listen
();
...
...
@@ -133,8 +135,8 @@ export class ProChannelComponent implements OnInit, AfterViewInit, OnDestroy {
const
title
=
[
(
this
.
channel
.
pro_settings
.
title
as
string
)
||
this
.
channel
.
name
||
this
.
channel
.
username
,
this
.
channel
.
name
||
this
.
channel
.
username
,
];
switch
(
this
.
type
)
{
...
...
@@ -204,7 +206,7 @@ export class ProChannelComponent implements OnInit, AfterViewInit, OnDestroy {
if
(
!
this
.
channel
.
subscribed
)
{
if
(
!
this
.
session
.
isLoggedIn
())
{
this
.
router
.
navigate
(
window
.
Minds
.
pro
this
.
site
.
isProDomain
?
this
.
channelService
.
getRouterLink
(
'
login
'
)
:
[
'
/login
'
]
);
...
...
@@ -355,7 +357,7 @@ export class ProChannelComponent implements OnInit, AfterViewInit, OnDestroy {
return
window
.
Minds
.
site_url
+
'
pro/settings
'
;
}
get
is
Standalone
()
{
return
Boolean
(
window
.
Minds
.
pro
)
;
get
is
ProDomain
()
{
return
this
.
site
.
isProDomain
;
}
}
This diff is collapsed.
Click to expand it.
src/app/modules/pro/channel/channel.service.ts
View file @
4aeb71c6
...
...
@@ -8,7 +8,8 @@ import { OverlayModalService } from '../../../services/ux/overlay-modal';
import
{
Session
}
from
'
../../../services/session
'
;
import
{
ActivatedRoute
}
from
'
@angular/router
'
;
import
{
WireCreatorComponent
}
from
'
../../wire/creator/creator.component
'
;
import
{
SessionsStorageService
}
from
"
../../../services/session-storage.service
"
;
import
{
SessionsStorageService
}
from
'
../../../services/session-storage.service
'
;
import
{
SiteService
}
from
'
../../../services/site.service
'
;
export
type
RouterLinkToType
=
|
'
home
'
...
...
@@ -44,6 +45,7 @@ export class ProChannelService {
protected
route
:
ActivatedRoute
,
protected
modalService
:
OverlayModalService
,
protected
sessionStorage
:
SessionsStorageService
,
protected
site
:
SiteService
)
{}
async
load
(
id
:
string
)
{
...
...
@@ -103,9 +105,9 @@ export class ProChannelService {
}
async
getContent
({
limit
,
offset
,
}:
{
limit
?:
number
;
offset
?
}
=
{}):
Promise
<
{
limit
,
offset
,
}:
{
limit
?:
number
;
offset
?
}
=
{}):
Promise
<
{
content
:
Array
<
any
>
;
offset
:
any
;
}
>
{
...
...
@@ -177,7 +179,7 @@ export class ProChannelService {
const
route
:
any
[]
=
[
root
];
if
(
!
window
.
Minds
.
pro
)
{
if
(
!
this
.
site
.
isProDomain
)
{
route
.
push
(
this
.
currentChannel
.
username
);
}
...
...
@@ -261,8 +263,8 @@ export class ProChannelService {
}
async
auth
()
{
if
(
!
window
.
Minds
.
pro
)
{
// Not in
standalone mode
if
(
!
this
.
site
.
isProDomain
)
{
// Not in
Pro domain mode, user already injected
return
;
}
...
...
@@ -282,11 +284,11 @@ export class ProChannelService {
this
.
modalService
.
create
(
WireCreatorComponent
,
this
.
currentChannel
,
{
onComplete
:
()
=>
{
this
.
sessionStorage
.
destroy
(
'
pro::wire-modal::open
'
)
this
.
sessionStorage
.
destroy
(
'
pro::wire-modal::open
'
)
;
},
})
.
onDidDismiss
(()
=>
{
this
.
sessionStorage
.
destroy
(
'
pro::wire-modal::open
'
)
this
.
sessionStorage
.
destroy
(
'
pro::wire-modal::open
'
)
;
})
.
present
();
}
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/pro/channel/footer/footer.component.html
View file @
4aeb71c6
...
...
@@ -9,7 +9,7 @@
</a>
<ng-container
*ngIf=
"currentUser"
>
<ng-container
*ngIf=
"is
Standalone
"
>
<ng-container
*ngIf=
"is
ProDomain
"
>
<a
class=
"m-pro--channel-footer--link"
[href]=
"viewProfileHref"
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/pro/channel/footer/footer.component.ts
View file @
4aeb71c6
...
...
@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
import
{
ProChannelService
}
from
'
../channel.service
'
;
import
{
Session
}
from
'
../../../../services/session
'
;
import
{
AuthService
}
from
'
../../../../services/auth.service
'
;
import
{
SiteService
}
from
'
../../../../services/site.service
'
;
export
interface
SocialProfileMeta
{
key
:
string
;
...
...
@@ -20,7 +21,8 @@ export class ProChannelFooterComponent {
constructor
(
protected
channelService
:
ProChannelService
,
protected
session
:
Session
,
protected
auth
:
AuthService
protected
auth
:
AuthService
,
protected
site
:
SiteService
)
{}
private
socialProfileMeta
:
SocialProfileMeta
[]
=
[
...
...
@@ -304,7 +306,7 @@ export class ProChannelFooterComponent {
return
window
.
Minds
.
site_url
+
this
.
session
.
getLoggedInUser
().
username
;
}
get
is
Standalone
()
{
return
Boolean
(
window
.
Minds
.
pro
)
;
get
is
ProDomain
()
{
return
this
.
site
.
isProDomain
;
}
}
This diff is collapsed.
Click to expand it.
src/app/modules/pro/channel/login/login.component.ts
View file @
4aeb71c6
...
...
@@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from '@angular/router';
import
{
Subscription
}
from
'
rxjs
'
;
import
{
Session
}
from
'
../../../../services/session
'
;
import
{
ProChannelService
}
from
'
../channel.service
'
;
import
{
Storage
}
from
"
../../../../services/storage
"
;
import
{
Storage
}
from
'
../../../../services/storage
'
;
@
Component
({
selector
:
'
m-pro--channel-login
'
,
...
...
@@ -55,7 +55,7 @@ export class ProChannelLoginComponent {
public
service
:
ProChannelService
,
private
router
:
Router
,
private
route
:
ActivatedRoute
,
private
storage
:
Storage
,
private
storage
:
Storage
)
{
this
.
paramsSubscription
=
this
.
route
.
params
.
subscribe
(
params
=>
{
if
(
params
[
'
username
'
])
{
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/pro/channel/tiles/media/tile.component.ts
View file @
4aeb71c6
...
...
@@ -14,6 +14,7 @@ import { OverlayModalService } from '../../../../../services/ux/overlay-modal';
import
{
Router
}
from
'
@angular/router
'
;
import
{
ProChannelService
}
from
'
../../channel.service
'
;
import
isMobile
from
'
../../../../../helpers/is-mobile
'
;
import
{
SiteService
}
from
'
../../../../../services/site.service
'
;
@
Component
({
selector
:
'
m-pro--channel-tile
'
,
...
...
@@ -30,9 +31,9 @@ export class ProTileComponent {
protected
featuresService
:
FeaturesService
,
protected
channelService
:
ProChannelService
,
protected
modalService
:
OverlayModalService
,
protected
router
:
Router
)
{
}
protected
router
:
Router
,
protected
site
:
SiteService
)
{
}
getType
(
entity
:
any
)
{
return
entity
.
type
===
'
object
'
...
...
@@ -91,7 +92,7 @@ export class ProTileComponent {
break
;
case
'
object:blog
'
:
let
url
=
`/blog/
${
this
.
entity
.
slug
}
-
${
this
.
entity
.
guid
}
`
;
if
(
!
window
.
Minds
.
pro
)
{
if
(
!
this
.
site
.
isProDomain
)
{
url
=
`
${
this
.
channelService
.
currentChannel
.
username
}
/
${
url
}
`
;
}
this
.
router
.
navigate
([
url
]);
...
...
@@ -130,7 +131,10 @@ export class ProTileComponent {
const
params
:
MediaModalParams
=
{
entity
:
this
.
entity
};
if
(
window
.
Minds
.
pro
&&
this
.
getType
(
this
.
entity
)
===
'
object:blog
'
)
{
if
(
this
.
site
.
isProDomain
&&
this
.
getType
(
this
.
entity
)
===
'
object:blog
'
)
{
params
.
redirectUrl
=
`/blog/
${
this
.
entity
.
slug
}
-
${
this
.
entity
.
guid
}
`
;
}
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/pro/pro.module.ts
View file @
4aeb71c6
...
...
@@ -71,7 +71,7 @@ const routes: Routes = [
},
];
export
const
STANDALONE
_ROUTES
=
[
export
const
PRO_DOMAIN
_ROUTES
=
[
{
path
:
''
,
component
:
ProChannelComponent
,
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/pro/settings/settings.component.html
View file @
4aeb71c6
...
...
@@ -46,6 +46,17 @@
</m-tooltip>
</a>
<a
class=
"m-topbar--navigation--item"
[class.m-topbar--navigation--item-active]=
"currentTab === 'domain'"
(click)=
"currentTab = 'domain'"
>
<span
i18n
>
Domain
</span>
<m-tooltip
icon=
"help"
i18n
>
TBD
</m-tooltip>
</a>
<a
class=
"m-topbar--navigation--item"
[class.m-topbar--navigation--item-active]=
"currentTab === 'cancel'"
...
...
@@ -73,20 +84,10 @@
<ng-template
ngSwitchCase=
"general"
>
<p
class=
"m-pro--settings--note"
i18n
>
Customize your
domain, title and headline. This will be used as
your SEO
tags as well.
Customize your
title and headline. This will be used as your SEO
tags as well.
</p>
<div
class=
"m-pro--settings--field"
>
<label
for=
"domain"
i18n
>
Domain
</label>
<input
type=
"text"
id=
"domain"
name=
"domain"
[(ngModel)]=
"settings.domain"
/>
</div>
<div
class=
"m-pro--settings--field"
>
<label
for=
"title"
i18n
>
Title
</label>
<input
...
...
@@ -348,6 +349,24 @@
<!-- Cancel -->
<ng-template
ngSwitchCase=
"domain"
>
<p
class=
"m-pro--settings--note"
i18n
>
Customize your domain and setup your HTTPS certificates.
</p>
<div
class=
"m-pro--settings--field"
>
<label
for=
"domain"
i18n
>
Domain
</label>
<input
type=
"text"
id=
"domain"
name=
"domain"
[(ngModel)]=
"settings.domain"
/>
</div>
</ng-template>
<!-- Cancel -->
<ng-template
ngSwitchCase=
"cancel"
>
<p
class=
"m-pro--settings--note"
i18n
>
Clicking the button below will take you to Minds Pro page, where
...
...
This diff is collapsed.
Click to expand it.
src/app/modules/pro/settings/settings.component.ts
View file @
4aeb71c6
...
...
@@ -22,8 +22,13 @@ export class ProSettingsComponent implements OnInit {
saved
:
boolean
=
false
;
currentTab
:
'
general
'
|
'
theme
'
|
'
hashtags
'
|
'
footer
'
|
'
cancel
'
=
'
general
'
;
currentTab
:
|
'
general
'
|
'
theme
'
|
'
hashtags
'
|
'
footer
'
|
'
domain
'
|
'
cancel
'
=
'
general
'
;
private
currentDraggableEvent
:
DragEvent
;
private
currentDragEffectMsg
:
string
;
...
...
This diff is collapsed.
Click to expand it.
src/app/services/api/client.ts
View file @
4aeb71c6
import
{
Cookie
}
from
'
../cookie
'
;
import
{
HttpClient
,
HttpHeaders
}
from
'
@angular/common/http
'
;
import
{
environment
}
from
'
../../../environments/environment
'
;
import
{
Location
}
from
"
@angular/common
"
;
import
{
Location
}
from
'
@angular/common
'
;
import
{
SiteService
}
from
'
../site.service
'
;
/**
* API Class
...
...
@@ -11,12 +12,16 @@ export class Client {
origin
:
string
=
''
;
cookie
:
Cookie
=
new
Cookie
();
static
_
(
http
:
HttpClient
,
location
:
Location
)
{
return
new
Client
(
http
,
location
);
static
_
(
http
:
HttpClient
,
location
:
Location
,
site
:
SiteService
)
{
return
new
Client
(
http
,
location
,
site
);
}
constructor
(
public
http
:
HttpClient
,
public
location
:
Location
)
{
if
(
window
.
Minds
.
pro
)
{
constructor
(
public
http
:
HttpClient
,
public
location
:
Location
,
protected
site
:
SiteService
)
{
if
(
this
.
site
.
isProDomain
)
{
this
.
base
=
window
.
Minds
.
site_url
;
this
.
origin
=
document
.
location
.
host
;
}
...
...
This diff is collapsed.
Click to expand it.
src/app/services/api/upload.ts
View file @
4aeb71c6
import
{
Cookie
}
from
'
../cookie
'
;
import
{
HttpClient
}
from
'
@angular/common/http
'
;
import
{
SiteService
}
from
'
../site.service
'
;
/**
* API Class
...
...
@@ -9,12 +10,12 @@ export class Upload {
origin
:
string
=
''
;
cookie
:
Cookie
=
new
Cookie
();
static
_
(
http
:
HttpClient
)
{
return
new
Upload
(
http
);
static
_
(
http
:
HttpClient
,
site
:
SiteService
)
{
return
new
Upload
(
http
,
site
);
}
constructor
(
public
http
:
HttpClient
)
{
if
(
window
.
Minds
.
pro
)
{
constructor
(
public
http
:
HttpClient
,
protected
site
:
SiteService
)
{
if
(
this
.
site
.
isProDomain
)
{
this
.
base
=
window
.
Minds
.
site_url
;
this
.
origin
=
document
.
location
.
host
;
}
...
...
This diff is collapsed.
Click to expand it.
src/app/services/providers.ts
View file @
4aeb71c6
...
...
@@ -44,10 +44,11 @@ import { ThemeService } from '../common/services/theme.service';
import
{
GlobalScrollService
}
from
'
./ux/global-scroll.service
'
;
import
{
AuthService
}
from
'
./auth.service
'
;
import
{
SiteService
}
from
'
./site.service
'
;
import
{
SessionsStorageService
}
from
"
./session-storage.service
"
;
import
{
SessionsStorageService
}
from
'
./session-storage.service
'
;
import
{
DiagnosticsService
}
from
'
./diagnostics.service
'
;
export
const
MINDS_PROVIDERS
:
any
[]
=
[
SiteService
,
{
provide
:
ScrollService
,
useFactory
:
ScrollService
.
_
,
...
...
@@ -66,12 +67,12 @@ export const MINDS_PROVIDERS: any[] = [
{
provide
:
Client
,
useFactory
:
Client
.
_
,
deps
:
[
HttpClient
,
Location
],
deps
:
[
HttpClient
,
Location
,
SiteService
],
},
{
provide
:
Upload
,
useFactory
:
Upload
.
_
,
deps
:
[
HttpClient
],
deps
:
[
HttpClient
,
SiteService
],
},
{
provide
:
Storage
,
...
...
@@ -148,7 +149,7 @@ export const MINDS_PROVIDERS: any[] = [
{
provide
:
MindsTitle
,
useFactory
:
MindsTitle
.
_
,
deps
:
[
Title
],
deps
:
[
Title
,
SiteService
],
},
{
provide
:
GoogleChartsLoader
,
...
...
@@ -233,5 +234,4 @@ export const MINDS_PROVIDERS: any[] = [
},
DiagnosticsService
,
AuthService
,
SiteService
,
];
This diff is collapsed.
Click to expand it.
src/app/services/site.service.ts
View file @
4aeb71c6
...
...
@@ -2,11 +2,15 @@ import { Injectable } from '@angular/core';
@
Injectable
()
export
class
SiteService
{
isProDomain
()
{
return
Boolean
(
window
.
Minds
.
pro
);
get
pro
()
{
return
window
.
Minds
.
pro
;
}
get
isProDomain
()
{
return
Boolean
(
this
.
pro
);
}
get
title
()
{
return
this
.
isProDomain
()
?
window
.
Mind
s
.
pro
.
title
||
''
:
'
Minds
'
;
return
this
.
isProDomain
?
thi
s
.
pro
.
title
||
''
:
'
Minds
'
;
}
}
This diff is collapsed.
Click to expand it.
src/app/services/ux/title.ts
View file @
4aeb71c6
import
{
Title
}
from
'
@angular/platform-browser
'
;
import
{
SiteService
}
from
'
../site.service
'
;
export
class
MindsTitle
{
private
counter
:
number
;
...
...
@@ -6,12 +7,12 @@ export class MindsTitle {
private
default_title
=
'
Minds
'
;
private
text
:
string
=
''
;
static
_
(
title
:
Title
)
{
return
new
MindsTitle
(
title
);
static
_
(
title
:
Title
,
site
:
SiteService
)
{
return
new
MindsTitle
(
title
,
site
);
}
constructor
(
public
title
:
Title
)
{
if
(
window
.
Minds
.
pro
)
{
constructor
(
public
title
:
Title
,
protected
site
:
SiteService
)
{
if
(
this
.
site
.
isProDomain
)
{
this
.
default_title
=
''
;
}
}
...
...
This diff is collapsed.
Click to expand it.