open link
This commit is contained in:
		
						commit
						fad8f9be18
					
				| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					# http://editorconfig.org
 | 
				
			||||||
 | 
					root = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[*]
 | 
				
			||||||
 | 
					indent_style = space
 | 
				
			||||||
 | 
					indent_size = 2
 | 
				
			||||||
 | 
					end_of_line = lf
 | 
				
			||||||
 | 
					charset = utf-8
 | 
				
			||||||
 | 
					trim_trailing_whitespace = true
 | 
				
			||||||
 | 
					insert_final_newline = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[*.md]
 | 
				
			||||||
 | 
					trim_trailing_whitespace = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Makefile]
 | 
				
			||||||
 | 
					indent_style = tab
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# dependencies
 | 
				
			||||||
 | 
					/node_modules
 | 
				
			||||||
 | 
					/npm-debug.log*
 | 
				
			||||||
 | 
					/yarn-error.log
 | 
				
			||||||
 | 
					/yarn.lock
 | 
				
			||||||
 | 
					/package-lock.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# production
 | 
				
			||||||
 | 
					/dist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# misc
 | 
				
			||||||
 | 
					.DS_Store
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# umi
 | 
				
			||||||
 | 
					/src/.umi
 | 
				
			||||||
 | 
					/src/.umi-production
 | 
				
			||||||
 | 
					/src/.umi-test
 | 
				
			||||||
 | 
					/.env.local
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					**/*.md
 | 
				
			||||||
 | 
					**/*.svg
 | 
				
			||||||
 | 
					**/*.ejs
 | 
				
			||||||
 | 
					**/*.html
 | 
				
			||||||
 | 
					package.json
 | 
				
			||||||
 | 
					.umi
 | 
				
			||||||
 | 
					.umi-production
 | 
				
			||||||
 | 
					.umi-test
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "singleQuote": true,
 | 
				
			||||||
 | 
					  "trailingComma": "all",
 | 
				
			||||||
 | 
					  "printWidth": 80,
 | 
				
			||||||
 | 
					  "overrides": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "files": ".prettierrc",
 | 
				
			||||||
 | 
					      "options": { "parser": "json" }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					import { defineConfig } from 'umi';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default defineConfig({
 | 
				
			||||||
 | 
					  nodeModulesTransform: {
 | 
				
			||||||
 | 
					    type: 'none',
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  routes: [
 | 
				
			||||||
 | 
					    { path: '/', component: '@/pages/index' },
 | 
				
			||||||
 | 
					    { path: '/action', component: '@/pages/index' },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  fastRefresh: {},
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					# umi project
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Getting Started
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install dependencies,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					$ yarn
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Start the dev server,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					$ yarn start
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "private": true,
 | 
				
			||||||
 | 
					  "scripts": {
 | 
				
			||||||
 | 
					    "start": "umi dev",
 | 
				
			||||||
 | 
					    "build": "umi build",
 | 
				
			||||||
 | 
					    "postinstall": "umi generate tmp",
 | 
				
			||||||
 | 
					    "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
 | 
				
			||||||
 | 
					    "test": "umi-test",
 | 
				
			||||||
 | 
					    "test:coverage": "umi-test --coverage"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "gitHooks": {
 | 
				
			||||||
 | 
					    "pre-commit": "lint-staged"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "lint-staged": {
 | 
				
			||||||
 | 
					    "*.{js,jsx,less,md,json}": [
 | 
				
			||||||
 | 
					      "prettier --write"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "*.ts?(x)": [
 | 
				
			||||||
 | 
					      "prettier --parser=typescript --write"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "@ant-design/pro-layout": "^6.5.0",
 | 
				
			||||||
 | 
					    "query-string": "^8.1.0",
 | 
				
			||||||
 | 
					    "react": "17.x",
 | 
				
			||||||
 | 
					    "react-device-detect": "^2.2.3",
 | 
				
			||||||
 | 
					    "react-dom": "17.x",
 | 
				
			||||||
 | 
					    "umi": "^3.5.37"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "devDependencies": {
 | 
				
			||||||
 | 
					    "@types/react": "^17.0.0",
 | 
				
			||||||
 | 
					    "@types/react-dom": "^17.0.0",
 | 
				
			||||||
 | 
					    "@umijs/preset-react": "1.x",
 | 
				
			||||||
 | 
					    "@umijs/test": "^3.5.37",
 | 
				
			||||||
 | 
					    "lint-staged": "^10.0.7",
 | 
				
			||||||
 | 
					    "prettier": "^2.2.0",
 | 
				
			||||||
 | 
					    "typescript": "^4.1.2",
 | 
				
			||||||
 | 
					    "yorkie": "^2.0.0"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,68 @@
 | 
				
			||||||
 | 
					@import 'https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css';
 | 
				
			||||||
 | 
					@import 'https://fonts.googleapis.com/css?family=Open+Sans';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* {
 | 
				
			||||||
 | 
					  font-family: 'Open Sans', 'sans-serif';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					html,
 | 
				
			||||||
 | 
					body {
 | 
				
			||||||
 | 
					  overflow        : hidden;
 | 
				
			||||||
 | 
					  background-color: #c36;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ul {
 | 
				
			||||||
 | 
					  width     : 100%;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  margin    : 0;
 | 
				
			||||||
 | 
					  padding   : 0;
 | 
				
			||||||
 | 
					  position  : absolute;
 | 
				
			||||||
 | 
					  top       : 50%;
 | 
				
			||||||
 | 
					  transform : translateY(-50%);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					li {
 | 
				
			||||||
 | 
					  display: inline-block;
 | 
				
			||||||
 | 
					  margin : 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.download {
 | 
				
			||||||
 | 
					  width        : 200px;
 | 
				
			||||||
 | 
					  height       : 75px;
 | 
				
			||||||
 | 
					  background   : black;
 | 
				
			||||||
 | 
					  float        : left;
 | 
				
			||||||
 | 
					  border-radius: 5px;
 | 
				
			||||||
 | 
					  position     : relative;
 | 
				
			||||||
 | 
					  color        : #fff;
 | 
				
			||||||
 | 
					  cursor       : pointer;
 | 
				
			||||||
 | 
					  border       : 1px solid #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.download>.fa {
 | 
				
			||||||
 | 
					  color    : #fff;
 | 
				
			||||||
 | 
					  position : absolute;
 | 
				
			||||||
 | 
					  top      : 50%;
 | 
				
			||||||
 | 
					  left     : 15px;
 | 
				
			||||||
 | 
					  transform: translateY(-50%);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.df,
 | 
				
			||||||
 | 
					.dfn {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  left    : 70px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.df {
 | 
				
			||||||
 | 
					  top      : 20px;
 | 
				
			||||||
 | 
					  font-size: 0.68em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dfn {
 | 
				
			||||||
 | 
					  top      : 33px;
 | 
				
			||||||
 | 
					  font-size: 1.08em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.download:hover {
 | 
				
			||||||
 | 
					  -webkit-filter: invert(100%);
 | 
				
			||||||
 | 
					  filter        : invert(100%);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,63 @@
 | 
				
			||||||
 | 
					import { useEffect } from 'react';
 | 
				
			||||||
 | 
					import { isAndroid, isIOS } from 'react-device-detect';
 | 
				
			||||||
 | 
					import { useLocation } from 'umi';
 | 
				
			||||||
 | 
					import './index.css';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default function DeepLink() {
 | 
				
			||||||
 | 
					  const { search, query } = useLocation() as any;
 | 
				
			||||||
 | 
					  const deeplinkDomain = /(\/(deeplink|dl)\.)/g;
 | 
				
			||||||
 | 
					  const isDeeplinkDomain = deeplinkDomain.test(window.location.origin);
 | 
				
			||||||
 | 
					  useEffect(() => {
 | 
				
			||||||
 | 
					    if (isDeeplinkDomain) {
 | 
				
			||||||
 | 
					      if (isAndroid) {
 | 
				
			||||||
 | 
					        window.location.replace(`selly://ACTION${search}`);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (isIOS) {
 | 
				
			||||||
 | 
					        window.location.replace(`selly://ACTION${search}`);
 | 
				
			||||||
 | 
					        setTimeout(
 | 
				
			||||||
 | 
					          () =>
 | 
				
			||||||
 | 
					            window.location.replace(
 | 
				
			||||||
 | 
					              `https://apps.apple.com/vn/app/selly-dễ-dàng-bán-hàng/id1554981586`,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          3000,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return window.location.replace(query?.redirect || 'https://selly.vn');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }, []);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return (
 | 
				
			||||||
 | 
					    <ul>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        <div
 | 
				
			||||||
 | 
					          className="download android"
 | 
				
			||||||
 | 
					          onClick={() => {
 | 
				
			||||||
 | 
					            window.location.replace(
 | 
				
			||||||
 | 
					              'https://play.google.com/store/apps/details?id=vn.selly',
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					          }}
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <i className="fa fa fa-android fa-3x"></i>
 | 
				
			||||||
 | 
					          <span className="df">Download from</span>
 | 
				
			||||||
 | 
					          <span className="dfn">Google Play</span>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        <div
 | 
				
			||||||
 | 
					          className="download apple"
 | 
				
			||||||
 | 
					          onClick={() => {
 | 
				
			||||||
 | 
					            window.location.replace(
 | 
				
			||||||
 | 
					              'https://apps.apple.com/vn/app/selly-dễ-dàng-bán-hàng/id1554981586',
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					          }}
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <i className="fa fa fa-apple fa-3x"></i>
 | 
				
			||||||
 | 
					          <span className="df">Download from</span>
 | 
				
			||||||
 | 
					          <span className="dfn">App Store</span>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					    </ul>
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "compilerOptions": {
 | 
				
			||||||
 | 
					    "target": "esnext",
 | 
				
			||||||
 | 
					    "module": "esnext",
 | 
				
			||||||
 | 
					    "moduleResolution": "node",
 | 
				
			||||||
 | 
					    "resolveJsonModule": true,
 | 
				
			||||||
 | 
					    "importHelpers": true,
 | 
				
			||||||
 | 
					    "jsx": "react-jsx",
 | 
				
			||||||
 | 
					    "esModuleInterop": true,
 | 
				
			||||||
 | 
					    "sourceMap": true,
 | 
				
			||||||
 | 
					    "baseUrl": "./",
 | 
				
			||||||
 | 
					    "strict": true,
 | 
				
			||||||
 | 
					    "paths": {
 | 
				
			||||||
 | 
					      "@/*": ["src/*"],
 | 
				
			||||||
 | 
					      "@@/*": ["src/.umi/*"]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "allowSyntheticDefaultImports": true
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "include": [
 | 
				
			||||||
 | 
					    "mock/**/*",
 | 
				
			||||||
 | 
					    "src/**/*",
 | 
				
			||||||
 | 
					    "config/**/*",
 | 
				
			||||||
 | 
					    ".umirc.ts",
 | 
				
			||||||
 | 
					    "typings.d.ts"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "exclude": [
 | 
				
			||||||
 | 
					    "node_modules",
 | 
				
			||||||
 | 
					    "lib",
 | 
				
			||||||
 | 
					    "es",
 | 
				
			||||||
 | 
					    "dist",
 | 
				
			||||||
 | 
					    "typings",
 | 
				
			||||||
 | 
					    "**/__test__",
 | 
				
			||||||
 | 
					    "test",
 | 
				
			||||||
 | 
					    "docs",
 | 
				
			||||||
 | 
					    "tests"
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					declare module '*.css';
 | 
				
			||||||
 | 
					declare module '*.less';
 | 
				
			||||||
 | 
					declare module '*.png';
 | 
				
			||||||
 | 
					declare module '*.svg' {
 | 
				
			||||||
 | 
					  export function ReactComponent(
 | 
				
			||||||
 | 
					    props: React.SVGProps<SVGSVGElement>,
 | 
				
			||||||
 | 
					  ): React.ReactElement;
 | 
				
			||||||
 | 
					  const url: string;
 | 
				
			||||||
 | 
					  export default url;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue