Added: Abstract public share embed support
This commit is contained in:
27
app/embeds/Abstract.js
Normal file
27
app/embeds/Abstract.js
Normal 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})`}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
60
app/embeds/Abstract.test.js
Normal file
60
app/embeds/Abstract.test.js
Normal 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);
|
||||
});
|
||||
});
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user