Skip to content

Commit d82c7b7

Browse files
add chameleon script
1 parent 8a2bad7 commit d82c7b7

File tree

4 files changed

+43
-15
lines changed

4 files changed

+43
-15
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Reaction } from '..';
2+
3+
let _hasLoadedScript = false;
4+
5+
export default {
6+
initialize(reaction: Reaction) {
7+
reaction(
8+
state => state.user && state.user.id,
9+
userId => {
10+
if (!_hasLoadedScript && userId) {
11+
const script = document.createElement('script');
12+
script.innerHTML = `/* Chameleon - better user onboarding */!function(t,n,o){var a="chmln",e="adminPreview",c="setup identify alias track clear set show on off custom help _data".split(" ");if(n[a]||(n[a]={}),n[a][e]&&(n[a][e]=!1),!n[a].root){n[a].accountToken=o,n[a].location=n.location.href.toString(),n[a].now=new Date;for(var s=0;s<c.length;s++)!function(){var t=n[a][c[s]+"_a"]=[];n[a][c[s]]=function(){t.push(arguments)}}();var i=t.createElement("script");i.src="https://fast.trychameleon.com/messo/"+o+"/messo.min.js",i.async=!0,t.head.appendChild(i)}}(document,window,"SD8v1wAhTGvsMfAUSklVZC5ucKfiTB8uw73OJ9QOxIdiGn-1Ia9sN-BDlqTksEtFejdYPw");
13+
chmln.identify(${userId}, {});`;
14+
document.body.appendChild(script);
15+
_hasLoadedScript = true;
16+
}
17+
}
18+
);
19+
},
20+
};

packages/app/src/app/overmind/effects/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,4 @@ export { default as codesandboxApi } from './codesandboxApi';
2525
export { default as themes } from './themes';
2626
export { default as executor } from './executor';
2727
export { default as stripe } from './stripe';
28+
export { default as chameleon } from './chameleon';

packages/app/src/app/overmind/index.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,35 @@
1-
import { createHook } from 'overmind-react';
21
import {
2+
IAction,
33
IConfig,
4+
IDerive,
45
IOnInitialize,
5-
IAction,
66
IOperator,
7-
IDerive,
7+
IReaction,
88
IState,
99
} from 'overmind';
10+
import { createHook } from 'overmind-react';
1011
import { merge, namespaced } from 'overmind/config';
12+
13+
import * as actions from './actions';
1114
import { createConnect } from './createConnect';
1215
import * as effects from './effects';
13-
import { state } from './state';
14-
import { onInitialize } from './onInitialize';
15-
import * as actions from './actions';
16-
import * as preferences from './namespaces/preferences';
17-
import * as userNotifications from './namespaces/userNotifications';
18-
import * as patron from './namespaces/patron';
19-
import * as editor from './namespaces/editor';
20-
import * as live from './namespaces/live';
21-
import * as workspace from './namespaces/workspace';
16+
import { createModals } from './factories';
17+
import * as modals from './modals';
2218
import * as dashboard from './namespaces/dashboard';
2319
import * as deployment from './namespaces/deployment';
20+
import * as editor from './namespaces/editor';
21+
import * as explore from './namespaces/explore';
2422
import * as files from './namespaces/files';
2523
import * as git from './namespaces/git';
26-
import * as explore from './namespaces/explore';
24+
import * as live from './namespaces/live';
25+
import * as patron from './namespaces/patron';
26+
import * as preferences from './namespaces/preferences';
2727
import * as profile from './namespaces/profile';
2828
import * as server from './namespaces/server';
29-
import { createModals } from './factories';
30-
import * as modals from './modals';
29+
import * as userNotifications from './namespaces/userNotifications';
30+
import * as workspace from './namespaces/workspace';
31+
import { onInitialize } from './onInitialize';
32+
import { state } from './state';
3133

3234
export const config = merge(
3335
{
@@ -61,6 +63,9 @@ export interface OnInitialize extends IOnInitialize<Config> {}
6163
export interface Action<Input = void, Output = void>
6264
extends IAction<Config, Input, Output> {}
6365

66+
export interface Reaction<Input = void, Output = void>
67+
extends IReaction<Config> {}
68+
6469
export interface AsyncAction<Input = void, Output = void>
6570
extends IAction<Config, Input, Promise<Output>> {}
6671

packages/app/src/app/overmind/onInitialize.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ export const onInitialize: OnInitialize = (
66
) => {
77
const provideJwtToken = () => state.jwt || effects.jwt.get();
88

9+
effects.chameleon.initialize(overmindInstance.reaction);
10+
911
effects.fsSync.initialize({
1012
onModulesByPathChange(cb: (modulesByPath: any) => void) {
1113
overmindInstance.reaction(

0 commit comments

Comments
 (0)