Added: Abstract public share embed support

This commit is contained in:
Tom Moor
2019-05-07 19:46:02 -07:00
parent d5f6311bbc
commit 402638ca54
3 changed files with 89 additions and 0 deletions

27
app/embeds/Abstract.js Normal file
View File

@@ -0,0 +1,27 @@
// @flow
import * as React from 'react';
import Frame from './components/Frame';
type Props = {
url: string,
matches: string[],
};
export default class Abstract extends React.Component<Props> {
static ENABLED = [
new RegExp('https?://share.(?:go)?abstract.com/(.*)$'),
new RegExp('https?://app.(?:go)?abstract.com/(?:share|embed)/(.*)$'),
];
render() {
const { matches } = this.props;
const shareId = matches[1];
return (
<Frame
src={`https://app.goabstract.com/embed/${shareId}`}
title={`Abstract (${shareId})`}
/>
);
}
}

View File

@@ -0,0 +1,60 @@
/* eslint-disable flowtype/require-valid-file-annotation */
import embeds from '.';
const { Abstract } = embeds;
describe('Abstract', () => {
const match = Abstract.ENABLED[0];
const match2 = Abstract.ENABLED[1];
test('to be enabled on share subdomain link', () => {
expect(
'https://share.goabstract.com/aaec8bba-f473-4f64-96e7-bff41c70ff8a'.match(
match
)
).toBeTruthy();
expect(
'https://share.abstract.com/aaec8bba-f473-4f64-96e7-bff41c70ff8a'.match(
match
)
).toBeTruthy();
});
test('to be enabled on share link', () => {
expect(
'https://app.goabstract.com/share/aaec8bba-f473-4f64-96e7-bff41c70ff8a'.match(
match2
)
).toBeTruthy();
expect(
'https://app.abstract.com/share/aaec8bba-f473-4f64-96e7-bff41c70ff8a'.match(
match2
)
).toBeTruthy();
});
test('to be enabled on embed link', () => {
expect(
'https://app.goabstract.com/embed/aaec8bba-f473-4f64-96e7-bff41c70ff8a'.match(
match2
)
).toBeTruthy();
expect(
'https://app.abstract.com/embed/aaec8bba-f473-4f64-96e7-bff41c70ff8a'.match(
match2
)
).toBeTruthy();
});
test('to not be enabled elsewhere', () => {
expect('https://abstract.com'.match(match)).toBe(null);
expect('https://goabstract.com'.match(match)).toBe(null);
expect('https://app.goabstract.com'.match(match)).toBe(null);
expect('https://abstract.com/features'.match(match)).toBe(null);
expect('https://app.abstract.com/dashboard'.match(match)).toBe(null);
expect('https://abstract.com/pricing'.match(match)).toBe(null);
expect('https://goabstract.com/pricing'.match(match)).toBe(null);
expect('https://www.goabstract.com/pricing'.match(match)).toBe(null);
});
});

View File

@@ -1,4 +1,5 @@
// @flow
import Abstract from './Abstract';
import Airtable from './Airtable';
import Codepen from './Codepen';
import Figma from './Figma';
@@ -21,6 +22,7 @@ import Vimeo from './Vimeo';
import YouTube from './YouTube';
export default {
Abstract,
Airtable,
Codepen,
Figma,