Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • omadrid/front
  • minds/front
  • joe59/front
  • markharding/front
  • eiennohi/front
  • edgebal/front
  • msantang78/front
  • bhayward93/front
  • xorgy/front
  • duyquoc/front
  • benhayward.ben/front
  • mnurzia/front
  • priestd09/front
  • dknunn/front
  • Yersinia/front
  • literalpie/front
  • maruthi-adithya/front
  • javanick/front
  • juanmsolaro/front
  • ascenderking/front
  • fabiolalombardim/front
  • jim-toth/front
  • Shivathanu/front
  • pestixaba/front
  • project_connection/front
  • mul53/front
  • iamonuwa/front
  • manishoo/front
  • namesty/front
  • AaronTheBruce/front
  • bedriguler/front
  • th2tran/front
  • jun784/front
  • mdstevens044/front
  • CodingNagger/front
  • heenachauhan201/front
  • diazairic/front
  • m994/front
  • webprodev/minds_front
  • chaoukiammar/front
  • benn7/front
  • ung1807/front
  • vinliao/front-patch-1
  • suhailkakar/front
  • theokeist/minds-blog
45 results
Show changes
Commits on Source (9)
Showing
with 148 additions and 90 deletions
......@@ -17,10 +17,10 @@ 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 { SiteService } from './services/site.service';
import { PRO_DOMAIN_ROUTES, proRoutes } from './modules/pro/pro.module';
import { SiteService } from './common/services/site.service';
import { Subscription } from 'rxjs';
import { RouterHistoryService } from './common/services/router-history.service';
import { PRO_DOMAIN_ROUTES } from './modules/pro/pro.module';
@Component({
moduleId: module.id,
......@@ -72,32 +72,8 @@ export class Minds {
this.diagnostics.setUser(this.minds.user);
this.diagnostics.listen(); // Listen for user changes
if (this.site.isProDomain) {
if (!this.site.isProDomain) {
this.notificationService.getNotifications();
this.router$ = this.router.events.subscribe(
(navigationEvent: NavigationEnd) => {
try {
if (navigationEvent instanceof NavigationEnd) {
if (!navigationEvent.urlAfterRedirects) {
return;
}
let url = navigationEvent.url
.substring(1, navigationEvent.url.length)
.split('/')[0]
.split(';')[0]
.split('?')[0];
if (!this.searchRoutes(url, proRoutes)) {
window.open(window.Minds.site_url + url, '_blank');
}
}
} catch (e) {
console.error('Minds: router hook(SearchBar)', e);
}
}
);
}
this.session.isLoggedIn(async is => {
......@@ -146,16 +122,6 @@ export class Minds {
this.themeService.setUp();
}
private searchRoutes(url: string, routes: Array<string>): boolean {
for (let route of routes) {
if (route.includes(url)) {
return true;
}
}
return false;
}
ngOnDestroy() {
this.loginReferrer.unlisten();
this.scrollToTop.unlisten();
......
import { Cookie } from '../../services/cookie';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { environment } from '../../../environments/environment';
import { Location } from '@angular/common';
import { SiteService } from '../services/site.service';
/**
* API Class
*/
export class MindsHttpClient {
base: string = '/';
origin: string = '';
cookie: Cookie = new Cookie();
static _(http: HttpClient) {
return new MindsHttpClient(http);
static _(http: HttpClient, location: Location, site: SiteService) {
return new MindsHttpClient(http, location, site);
}
constructor(public http: HttpClient) {}
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;
}
}
/**
* Return a GET request
......@@ -61,21 +73,35 @@ export class MindsHttpClient {
.join('&');
}
x;
/**
* Build the options
*/
private buildOptions(options: Object) {
const XSRF_TOKEN = this.cookie.get('XSRF-TOKEN') || '';
const headers = new HttpHeaders({
const headers = {
'X-XSRF-TOKEN': XSRF_TOKEN,
'X-VERSION': environment.version,
});
};
if (this.origin) {
const PRO_XSRF_JWT = this.cookie.get('PRO-XSRF-JWT') || '';
headers['X-MINDS-ORIGIN'] = this.origin;
headers['X-PRO-XSRF-JWT'] = PRO_XSRF_JWT;
}
return Object.assign(options, {
headers: headers,
const builtOptions = {
headers: new HttpHeaders(headers),
cache: true,
});
};
if (this.origin) {
builtOptions['withCredentials'] = true;
}
return Object.assign(options, builtOptions);
}
}
......
......@@ -8,7 +8,7 @@ import {
} from '@angular/core';
import { Client } from '../../../services/api/client';
import { Storage } from '../../../services/storage';
import { SiteService } from '../../../services/site.service';
import { SiteService } from '../../services/site.service';
@Component({
selector: 'm-cookies-notice',
......
import { Injectable } from '@angular/core';
import { NavigationEnd, Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { proRoutes } from '../../modules/pro/pro.routes';
@Injectable()
export class SiteService {
get pro() {
return window.Minds.pro;
}
get isProDomain(): boolean {
return Boolean(this.pro);
}
get title(): string {
return this.isProDomain ? this.pro.title || '' : 'Minds';
}
get oneLineHeadline(): string {
return this.isProDomain ? this.pro.one_line_headline || '' : '';
}
private router$: Subscription;
constructor(private router: Router) {
if (this.isProDomain) {
this.listen();
}
}
private listen() {
this.router$ = this.router.events.subscribe(
(navigationEvent: NavigationEnd) => {
try {
if (navigationEvent instanceof NavigationEnd) {
if (!navigationEvent.urlAfterRedirects) {
return;
}
let url = navigationEvent.url
.substring(1, navigationEvent.url.length)
.split('/')[0]
.split(';')[0]
.split('?')[0];
if (!this.searchRoutes(url, proRoutes)) {
window.open(window.Minds.site_url + url, '_blank');
}
}
} catch (e) {
console.error('Minds: router hook(SearchBar)', e);
}
}
);
}
private searchRoutes(url: string, routes: Array<string>): boolean {
for (let route of routes) {
if (route.includes(url)) {
return true;
}
}
return false;
}
}
......@@ -13,7 +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';
import { SiteService } from '../../common/services/site.service';
import { FeaturesService } from '../../services/features.service';
@Component({
......@@ -112,7 +112,7 @@ export class ChannelContainerComponent implements OnInit, OnDestroy {
}
get isAdmin() {
return this.site.isAdmin;
return this.session.isAdmin();
}
get proEnabled() {
......
import { Component, EventEmitter, Input, NgZone, Output } from '@angular/core';
import { Component, EventEmitter, NgZone, Output } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { Client } from '../../../services/api';
import { Session } from '../../../services/session';
import { MindsUser } from '../../../interfaces/entities';
@Component({
moduleId: module.id,
......
......@@ -21,6 +21,7 @@ import { RouterHistoryService } from '../../../common/services/router-history.se
})
export class RegisterForm {
@Input() referrer: string;
@Input() parentId: string = '';
@Output() done: EventEmitter<any> = new EventEmitter();
......@@ -31,7 +32,6 @@ export class RegisterForm {
captcha: string;
takenUsername: boolean = false;
usernameValidationTimeout: any;
@Input() parentId: string = '';
showFbForm: boolean = false;
......
......@@ -22,7 +22,7 @@ import { AnalyticsService } from '../../../services/analytics';
import { MindsVideoComponent } from '../components/video/video.component';
import isMobileOrTablet from '../../../helpers/is-mobile-or-tablet';
import { ActivityService } from '../../../common/services/activity.service';
import { SiteService } from '../../../services/site.service';
import { SiteService } from '../../../common/services/site.service';
export type MediaModalParams = {
redirectUrl?: string;
......
......@@ -17,7 +17,7 @@ import { NotificationsComponent } from './notifications.component';
import { NotificationService } from './notification.service';
import { NotificationsToasterComponent } from './toaster.component';
import { SiteService } from '../../services/site.service';
import { SiteService } from '../../common/services/site.service';
@NgModule({
imports: [
......
......@@ -5,7 +5,7 @@ import { socketMock } from '../../../tests/socket-mock.spec';
import { fakeAsync, tick } from '@angular/core/testing';
import { mindsTitleMock } from '../../mocks/services/ux/minds-title.service.mock.spec';
import { MockService } from '../../utils/mock';
import { SiteService } from '../../services/site.service';
import { SiteService } from '../../common/services/site.service';
import { EventEmitter } from '@angular/core';
export let siteServiceMock = new (function() {
......
......@@ -4,7 +4,7 @@ import { SocketsService } from '../../services/sockets';
import { Session } from '../../services/session';
import { MindsTitle } from '../../services/ux/title';
import { Subscription, timer } from 'rxjs';
import { SiteService } from '../../services/site.service';
import { SiteService } from '../../common/services/site.service';
export class NotificationService {
socketSubscriptions: any = {
......
......@@ -22,7 +22,7 @@ import { SignupModalService } from '../../modals/signup/service';
import { OverlayModalService } from '../../../services/ux/overlay-modal';
import { OverlayModalComponent } from '../../../common/components/overlay-modal/overlay-modal.component';
import { SessionsStorageService } from '../../../services/session-storage.service';
import { SiteService } from '../../../services/site.service';
import { SiteService } from '../../../common/services/site.service';
@Component({
providers: [ProChannelService, OverlayModalService],
......
......@@ -9,7 +9,7 @@ import { Session } from '../../../services/session';
import { ActivatedRoute, Router } from '@angular/router';
import { WireCreatorComponent } from '../../wire/creator/creator.component';
import { SessionsStorageService } from '../../../services/session-storage.service';
import { SiteService } from '../../../services/site.service';
import { SiteService } from '../../../common/services/site.service';
import { BehaviorSubject, Subscription } from 'rxjs';
import { AnalyticsService } from '../../../services/analytics';
......
......@@ -2,7 +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';
import { SiteService } from '../../../../common/services/site.service';
import {
getSocialProfileMeta,
socialProfileMeta,
......
......@@ -17,6 +17,14 @@ export class ProChannelLoginComponent {
redirectTo: string;
get settings() {
return this.service.currentChannel.pro_settings;
}
get referrer() {
return this.service.currentChannel.username;
}
constructor(
public session: Session,
public service: ProChannelService,
......@@ -39,14 +47,6 @@ export class ProChannelLoginComponent {
this.redirectTo = this.storage.get('redirect');
}
get settings() {
return this.service.currentChannel.pro_settings;
}
get referrer() {
return this.service.currentChannel.username;
}
registered() {
if (this.redirectTo) {
this.storage.destroy('redirect');
......
......@@ -10,7 +10,7 @@ import {
} from '@angular/core';
import { Router } from '@angular/router';
import { Session } from '../../../../services/session';
import { SiteService } from '../../../../services/site.service';
import { SiteService } from '../../../../common/services/site.service';
import { ProChannelService } from '../channel.service';
import { ProUnsubscribeModalComponent } from '../unsubscribe-modal/modal.component';
import { MindsUser } from '../../../../interfaces/entities';
......
......@@ -14,7 +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';
import { SiteService } from '../../../../../common/services/site.service';
@Component({
selector: 'm-pro--channel-tile',
......
......@@ -23,17 +23,17 @@ import { ProUnsubscribeModalComponent } from './channel/unsubscribe-modal/modal.
import { ProCategoriesComponent } from './channel/categories/categories.component';
import { BlogView } from '../blogs/view/view';
import { MediaModalComponent } from '../media/modal/modal.component';
import { AuthModule } from '../auth/auth.module';
import { ProHamburgerMenu } from './channel/hamburger-menu/hamburger-menu.component';
import { SubscribeButtonComponent } from './channel/subscribe-button/subscribe-button.component';
import { SearchBoxComponent } from './channel/search-box/search-box.component';
import { ForgotPasswordComponent } from '../auth/forgot-password/forgot-password.component';
import { NewsfeedSingleComponent } from '../newsfeed/single/single.component';
import { MediaViewComponent } from '../media/view/view.component';
import { MediaEditComponent } from '../media/edit/edit.component';
import { BlogViewInfinite } from '../blogs/view/infinite';
import { BlogEdit } from '../blogs/edit/edit';
import { CanDeactivateGuardService } from '../../services/can-deactivate-guard';
import { ForgotPasswordComponent } from '../auth/forgot-password/forgot-password.component';
import { AuthModule } from '../auth/auth.module';
import { ProHamburgerMenu } from './channel/hamburger-menu/hamburger-menu.component';
import { SubscribeButtonComponent } from './channel/subscribe-button/subscribe-button.component';
import { SearchBoxComponent } from './channel/search-box/search-box.component';
const routes: Routes = [
{
......@@ -127,20 +127,6 @@ export const PRO_DOMAIN_ROUTES = [
},
];
export const proRoutes = [
'/feed',
'/images',
'/videos',
'/articles',
'/groups',
'/login',
'/forgot_password',
'/newsfeed',
'/media',
'/blog',
'/all',
];
@NgModule({
imports: [
NgCommonModule,
......
// used for route matching in SiteService
export const proRoutes = [
'/feed',
'/images',
'/videos',
'/articles',
'/groups',
'/login',
'/forgot_password',
'/newsfeed',
'/media',
'/blog',
'/all',
];
......@@ -10,7 +10,7 @@ import { Session } from '../../../services/session';
import { ActivatedRoute, Router } from '@angular/router';
import { MindsTitle } from '../../../services/ux/title';
import { Subscription } from 'rxjs';
import { SiteService } from '../../../services/site.service';
import { SiteService } from '../../../common/services/site.service';
@Component({
selector: 'm-pro--settings',
......@@ -50,7 +50,7 @@ export class ProSettingsComponent implements OnInit, OnDestroy {
ngOnInit() {
this.param$ = this.route.params.subscribe(params => {
if (this.site.isAdmin) {
if (this.session.isAdmin()) {
this.user = params['user'] || null;
}
......@@ -139,6 +139,6 @@ export class ProSettingsComponent implements OnInit, OnDestroy {
}
get isAdmin() {
return this.site.isAdmin;
return this.session.isAdmin();
}
}