Skip to content
This repository has been archived by the owner on Apr 17, 2023. It is now read-only.

Commit

Permalink
feat(ios): implementing iosTokenVariant details (#70)
Browse files Browse the repository at this point in the history
* Added the new iOSToken Detail panel
* Added validation
  • Loading branch information
ziccardi authored and secondsun committed Sep 16, 2020
1 parent a21a2fa commit d0b14a8
Show file tree
Hide file tree
Showing 24 changed files with 674 additions and 35 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@ yarn-error.log*

.project
*.css
*.iml
82 changes: 82 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"@fortawesome/fontawesome-free": "^5.13.0",
"@patternfly/react-core": "4.18.5",
"@types/react-syntax-highlighter": "^11.0.4",
"json-data-validator": "^0.6.3",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.1",
Expand Down
1 change: 1 addition & 0 deletions src/application/ApplicationDetail/ApplicationDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export class ApplicationDetail extends Component<Props> {
<Tab eventKey={0} title="Variants">
<NoVariantsPanel app={this.props.app} />
<VariantsPanel app={this.props.app} variantType="android" />
<VariantsPanel app={this.props.app} variantType="ios_token" />
</Tab>
</Tabs>
</Modal>
Expand Down
80 changes: 69 additions & 11 deletions src/application/ApplicationDetail/panels/VariantDetails.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import React, { Component } from 'react';
import {
Variant,
AndroidVariant,
PushApplication,
} from '@aerogear/unifiedpush-admin-client';
import { Variant, PushApplication } from '@aerogear/unifiedpush-admin-client';
import { RedoIcon } from '@patternfly/react-icons';
import {
Button,
ButtonVariant,
Label,
Text,
TextContent,
TextList,
Expand All @@ -20,10 +17,13 @@ import { UpsClientFactory } from '../../../utils/UpsClientFactory';
import { RenewVariantSecret } from './dialogs/RenewVariantSecret';
import { AndroidVariantDetails } from './android/AndroidVariantDetails';
import { AndroidCodeSnippets } from './android/AndroidCodeSnippets';
import { links } from '../../../links';
import { IOSTokenVariantDetails } from './ios_token/iOSTokenVariantDetails';
import { IOSTokenCodeSnippets } from './ios_token/iOSTokenCodeSnippets';

interface Props {
app: PushApplication;
variant: AndroidVariant;
variant: Variant;
}

interface State {
Expand All @@ -41,6 +41,59 @@ export class VariantDetails extends Component<Props, State> {
}

render = () => {
const intro = () => {
switch (this.props.variant.type) {
case 'android':
return (
<Text component={TextVariants.small}>
Firebase's Cloud Messaging Network (FCM) will be used. To learn
more about FCM, visit our{' '}
<Label
color="blue"
href={links.pushApplications.variants.android.docs.java_client}
>
Android
</Label>{' '}
or{' '}
<Label
color="blue"
href={
links.pushApplications.variants.android.docs.cordova_client
}
>
Apache Cordova{' '}
</Label>{' '}
guides for push.
</Text>
);
case 'ios_token':
return (
<Text component={TextVariants.small}>
Apple's Push Network (APNs) will be used. To learn more about
APNs, visit our{' '}
<Label
color="blue"
href={links.pushApplications.variants.ios_token.docs.ios_client}
>
iOS
</Label>{' '}
or{' '}
<Label
color="blue"
href={
links.pushApplications.variants.ios_token.docs.cordova_client
}
>
Apache Cordova
</Label>{' '}
guides for push.
</Text>
);
default:
return <Text component={TextVariants.small} />;
}
};

const onRefreshed = (variant: Variant) => {
this.props.variant.secret = variant.secret;
this.setState({ refreshSecret: false });
Expand All @@ -56,11 +109,7 @@ export class VariantDetails extends Component<Props, State> {
onRefreshed={onRefreshed}
/>
<TextContent style={{ marginBottom: 20 }}>
<Text component={TextVariants.small}>
Firebase's Cloud Messaging Network (FCM) will be used. To learn more
about FCM, visit our Android, Chrome or Apache Cordova guides for
push.
</Text>
{intro()}
<TextList component={TextListVariants.dl}>
<TextListItem component={TextListItemVariants.dt}>
Server URL:
Expand Down Expand Up @@ -97,11 +146,20 @@ export class VariantDetails extends Component<Props, State> {
app={this.props.app}
variant={this.props.variant}
/>

<IOSTokenVariantDetails
app={this.props.app}
variant={this.props.variant}
/>
</TextContent>
<AndroidCodeSnippets
app={this.props.app}
variant={this.props.variant}
/>
<IOSTokenCodeSnippets
app={this.props.app}
variant={this.props.variant}
/>
</>
);
};
Expand Down
8 changes: 5 additions & 3 deletions src/application/ApplicationDetail/panels/VariantsPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@ export interface Props {
export abstract class VariantsPanel extends Component<Props> {
private getVariants(): Variant[] {
if (this.props.app?.variants && this.props.app?.variants.length > 0) {
return this.props.app.variants.filter(
const res = this.props.app.variants.filter(
(variant: Variant) => variant.type === this.props.variantType
);
console.log({ type: this.props.variantType, res });
return res;
}

return [];
Expand All @@ -42,7 +44,7 @@ export abstract class VariantsPanel extends Component<Props> {
case 'ios':
return '';
case 'ios_token':
return '';
return 'fab fa-apple fa-3x muted';
case 'web_push':
return '';
default:
Expand Down Expand Up @@ -79,7 +81,7 @@ export abstract class VariantsPanel extends Component<Props> {
</CardHeader>
<CardBody>
<DataList aria-label="Expandable data list example">
{this.props.app?.variants?.map(variant => (
{variants?.map(variant => (
<VariantItem variant={variant} app={this.props.app!} />
))}
</DataList>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
import {
AndroidVariant,
PushApplication,
} from '@aerogear/unifiedpush-admin-client';
import { PushApplication, Variant } from '@aerogear/unifiedpush-admin-client';
import React, { Component } from 'react';
import { Tab, Tabs } from '@patternfly/react-core';
import { CodeSnippet } from '../CodeSnippet';
import {
cordova_snippet,
cordova_snippet_android,
java_snippet,
push_config_android,
react_native_android,
} from '../../snippets';

interface Props {
app: PushApplication;
variant: AndroidVariant;
variant: Variant;
}

interface State {
Expand Down Expand Up @@ -59,7 +56,7 @@ export class AndroidCodeSnippets extends Component<Props, State> {
<CodeSnippet
variant={this.props.variant}
language={'javascript'}
snippet={cordova_snippet}
snippet={cordova_snippet_android}
/>
</Tab>
<Tab eventKey={'react-native'} title="React-Native">
Expand Down
Loading

0 comments on commit d0b14a8

Please sign in to comment.