Skip to content
Commits on Source (6)
......@@ -71,16 +71,7 @@ const routes: Routes = [
path: 'analytics',
component: AnalyticsComponent,
children: [
{ path: '', redirectTo: 'channel', pathMatch: 'full' },
{
path: 'channel',
component: ChannelAnalyticsComponent,
children: [
{ path: '', redirectTo: 'activity', pathMatch: 'full' },
{ path: 'activity', component: ChannelGeneralAnalyticsComponent },
{ path: 'reach', component: ChannelReachAnalyticsComponent },
],
},
{ path: '', redirectTo: 'dashboard/', pathMatch: 'full' },
{
path: 'admin',
component: AdminAnalyticsComponent,
......
......@@ -119,7 +119,7 @@
.minds-counter {
font-size: 12px;
line-height: 16px;
vertical-align: top;
vertical-align: middle;
}
}
}
......
......@@ -652,6 +652,104 @@
</div>
</div>
</ng-template>
<!-- Payouts -->
<ng-template ngSwitchCase="payouts">
<div class="m-shadowboxLayout__body">
<div
class="m-proSettings__tab--payouts"
formGroupName="payouts"
>
<div class="m-proSettings__field--radio hasValidationRow">
<div class="m-proSettings__row--label">
<label for="domain" i18n>Payout Method</label>
<m-tooltip icon="help"
><ng-container i18n
>Select a payout method below</ng-container
></m-tooltip
>
</div>
<div class="m-proSettings__row--input">
<label
for="method_usd"
class="m-proSettings__customInputContainer--radio"
i18n
>USD
<input
type="radio"
value="usd"
id="method_usd"
name="method"
formControlName="method"
class="form-control"
/>
<span
class="m-proSettings__customInput--radio"
></span>
</label>
</div>
<div class="m-proSettings__row--input">
<label
for="method_tokens"
class="m-proSettings__customInputContainer--radio"
i18n
>Minds Tokens
<input
type="radio"
value="tokens"
name="method"
id="method_tokens"
formControlName="method"
class="form-control"
/>
<span
class="m-proSettings__customInput--radio"
></span>
</label>
</div>
<div class="m-proSettings__row--input">
<label
for="method_eth"
class="m-proSettings__customInputContainer--radio"
i18n
>Ether
<input
type="radio"
value="eth"
name="method"
id="method_eth"
formControlName="method"
class="form-control"
/>
<span
class="m-proSettings__customInput--radio"
></span>
</label>
</div>
<div class="m-proSettings__row--input">
<label
for="method_btc"
class="m-proSettings__customInputContainer--radio"
i18n
>Bitcoin
<input
type="radio"
value="btc"
name="method"
id="method_btc"
formControlName="method"
class="form-control"
/>
<span
class="m-proSettings__customInput--radio"
></span>
</label>
</div>
</div>
</div>
</div>
</ng-template>
</ng-container>
<ng-container *ngTemplateOutlet="submitButton"></ng-container>
</form>
......
......@@ -66,6 +66,12 @@ export class ProSettingsComponent implements OnInit, OnDestroy {
title: 'Domain',
subtitle: 'Customize your site domain',
},
{
id: 'payouts',
title: 'Payouts',
subtitle:
'Select the currency type you wish you be paid out in. Please note payouts only occur once you have received the equivalent of $100 or greater.',
},
];
settings: any;
......@@ -120,6 +126,9 @@ export class ProSettingsComponent implements OnInit, OnDestroy {
domain: ['', Validators.required, this.validateDomain.bind(this)],
custom_head: [''],
}),
payouts: this.fb.group({
method: ['usd'],
}),
});
constructor(
......@@ -202,6 +211,9 @@ export class ProSettingsComponent implements OnInit, OnDestroy {
domain: settings.domain,
custom_head: settings.custom_head,
},
payouts: {
method: settings.payout_method,
},
});
this.setTags(settings.tag_list);
......@@ -330,6 +342,7 @@ export class ProSettingsComponent implements OnInit, OnDestroy {
footer_text: this.form.value.footer.title,
tag_list: this.form.value.hashtags,
footer_links: this.form.value.footer.links,
payout_method: this.form.value.payouts.method,
};
await this.service.set(this.settings, this.user);
this.formToastService.success(
......
......@@ -35,6 +35,10 @@ const sidebarMenu = {
label: 'Pro Subscription',
path: 'pro',
},
{
id: 'payouts',
label: 'Payouts',
},
{
id: ':user',
label: 'View Pro Channel',
......
<div *ngIf="eligible === false">
<p>
Due to Stripe's
<a href="https://stripe.com/restricted-businesses" target="_blank">
Terms of Use</a
>, this feature is currently unavailable for any channel determined to be
not safe for work (NSFW). If you are impacted by Stripe's terms and still
wish to monetize your channel, please consider onboarding to receive
payments in <a (click)="openBtc()">Bitcoin</a>,
<a routerLink="/wallet/tokens/addresses">Ether</a> or
<a routerLink="/wallet/tokens/addresses">Minds Tokens</a>.
</p>
</div>
<form
*ngIf="eligible === true"
(submit)="submit()"
[formGroup]="form"
#f="ngForm"
......
......@@ -13,6 +13,8 @@ import { Client } from '../../../../services/api';
import { requiredFor, optionalFor } from './onboarding.validators';
import { OverlayModalService } from '../../../../services/ux/overlay-modal';
import { WalletUSDTermsComponent } from '../terms.component';
import { Session } from '../../../../services/session';
import { BTCSettingsComponent } from '../../../payments/btc/settings.component';
@Component({
selector: 'm-walletUsd__onboarding',
......@@ -22,6 +24,7 @@ export class WalletUSDOnboardingComponent implements OnInit {
form: FormGroup;
inProgress: boolean = false;
restrictAsVerified: boolean = false;
eligible: boolean;
minds = window.Minds;
merchant: any;
......@@ -36,7 +39,8 @@ export class WalletUSDOnboardingComponent implements OnInit {
private client: Client,
private cd: ChangeDetectorRef,
private router: Router,
protected overlayModal: OverlayModalService
protected overlayModal: OverlayModalService,
private session: Session
) {}
ngOnInit() {
......@@ -70,6 +74,12 @@ export class WalletUSDOnboardingComponent implements OnInit {
this.form.patchValue(this.merchant);
}
if (this.session.getLoggedInUser().nsfw.length > 0) {
this.eligible = false;
} else {
this.eligible = true;
}
this.disableRestrictedFields();
}
......@@ -180,6 +190,10 @@ export class WalletUSDOnboardingComponent implements OnInit {
this.overlayModal.create(WalletUSDTermsComponent).present();
}
openBtc() {
this.overlayModal.create(BTCSettingsComponent, {}).present();
}
detectChanges() {
this.cd.markForCheck();
this.cd.detectChanges();
......