├── client ├── src │ ├── include │ │ ├── popper.js │ │ ├── jquery.js │ │ └── bootstrap.js │ ├── modules │ │ ├── index.js │ │ ├── keys.js │ │ ├── auth.js │ │ ├── error.js │ │ ├── cases.js │ │ └── unbox.js │ ├── containers │ │ ├── cases │ │ │ ├── shuffle.js │ │ │ ├── remaining-keys.js │ │ │ ├── index.js │ │ │ ├── case.js │ │ │ └── autopick.js │ │ ├── login │ │ │ ├── callback.js │ │ │ ├── button.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── fixed.js │ │ │ ├── error-listener.js │ │ │ ├── error.js │ │ │ ├── nav-user.js │ │ │ └── floating.js │ │ ├── unbox │ │ │ ├── poller.js │ │ │ ├── item.js │ │ │ ├── index.js │ │ │ ├── confirmation.js │ │ │ ├── waiting.js │ │ │ └── result.js │ │ ├── home │ │ │ └── index.js │ │ ├── app │ │ │ └── index.js │ │ ├── developers │ │ │ └── index.js │ │ ├── info │ │ │ └── index.js │ │ └── faq │ │ │ └── index.js │ ├── index.js │ ├── store.js │ ├── actions.js │ └── styles.css ├── public │ ├── favicon.ico │ ├── img │ │ ├── back-QA.png │ │ ├── divisor.jpg │ │ ├── divisor.png │ │ ├── line-01.png │ │ ├── back-footer.jpg │ │ ├── back-header.png │ │ ├── back-slide.jpg │ │ ├── logo-footer.png │ │ ├── logo-header.png │ │ ├── default-vcase.png │ │ ├── degrade-slide.png │ │ ├── steam-signin-button.png │ │ └── spinner.svg │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── apple-touch-icon.png │ ├── mstile-150x150.png │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── browserconfig.xml │ ├── site.webmanifest │ ├── index.html │ └── safari-pinned-tab.svg ├── .gitignore └── package.json ├── vgomock ├── public │ ├── img │ │ ├── img-01.png │ │ ├── img-02.png │ │ └── img-03.png │ └── trade_offer.html ├── .gitignore ├── package.json ├── index.js └── package-lock.json ├── start-client.js ├── start-vgo-mock.js ├── log.js ├── .gitignore ├── Makefile ├── LICENSE ├── package.json ├── README.md ├── config.js └── server.js /client/src/include/popper.js: -------------------------------------------------------------------------------- 1 | import Popper from 'popper.js'; 2 | 3 | window.Popper = Popper; 4 | -------------------------------------------------------------------------------- /client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/favicon.ico -------------------------------------------------------------------------------- /client/src/include/jquery.js: -------------------------------------------------------------------------------- 1 | import * as $ from 'jquery'; 2 | 3 | window.jQuery = window.$ = $; 4 | -------------------------------------------------------------------------------- /client/public/img/back-QA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/back-QA.png -------------------------------------------------------------------------------- /client/public/img/divisor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/divisor.jpg -------------------------------------------------------------------------------- /client/public/img/divisor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/divisor.png -------------------------------------------------------------------------------- /client/public/img/line-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/line-01.png -------------------------------------------------------------------------------- /vgomock/public/img/img-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/vgomock/public/img/img-01.png -------------------------------------------------------------------------------- /vgomock/public/img/img-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/vgomock/public/img/img-02.png -------------------------------------------------------------------------------- /vgomock/public/img/img-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/vgomock/public/img/img-03.png -------------------------------------------------------------------------------- /client/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/favicon-16x16.png -------------------------------------------------------------------------------- /client/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/favicon-32x32.png -------------------------------------------------------------------------------- /client/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/apple-touch-icon.png -------------------------------------------------------------------------------- /client/public/img/back-footer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/back-footer.jpg -------------------------------------------------------------------------------- /client/public/img/back-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/back-header.png -------------------------------------------------------------------------------- /client/public/img/back-slide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/back-slide.jpg -------------------------------------------------------------------------------- /client/public/img/logo-footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/logo-footer.png -------------------------------------------------------------------------------- /client/public/img/logo-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/logo-header.png -------------------------------------------------------------------------------- /client/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/mstile-150x150.png -------------------------------------------------------------------------------- /client/public/img/default-vcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/default-vcase.png -------------------------------------------------------------------------------- /client/public/img/degrade-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/degrade-slide.png -------------------------------------------------------------------------------- /client/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /client/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /client/public/img/steam-signin-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vgoskins/vcase/HEAD/client/public/img/steam-signin-button.png -------------------------------------------------------------------------------- /client/src/include/bootstrap.js: -------------------------------------------------------------------------------- 1 | import './jquery'; 2 | import './popper'; 3 | 4 | import 'bootstrap'; 5 | import 'bootstrap/dist/css/bootstrap.min.css'; 6 | -------------------------------------------------------------------------------- /start-client.js: -------------------------------------------------------------------------------- 1 | const args = ['start']; 2 | const opts = { stdio: 'inherit', cwd: 'client', shell: true }; 3 | require('child_process').spawn('npm', args, opts); 4 | -------------------------------------------------------------------------------- /start-vgo-mock.js: -------------------------------------------------------------------------------- 1 | const args = ['start']; 2 | const opts = { stdio: 'inherit', cwd: 'vgomock', shell: true }; 3 | require('child_process').spawn('npm', args, opts); 4 | -------------------------------------------------------------------------------- /vgomock/public/trade_offer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default connect()(LoginButton);
28 |
--------------------------------------------------------------------------------
/client/src/containers/unbox/poller.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { connect } from 'react-redux';
3 | import { getUnboxStatus } from '../../actions';
4 |
5 | const POLL_INTERVAL_MS = 10000;
6 |
7 | class UnboxPoller extends Component {
8 | componentDidMount() {
9 | this.interval = setInterval(() => {
10 | this.pollUnboxStatus();
11 | }, POLL_INTERVAL_MS);
12 | }
13 |
14 | componentWillUnmount() {
15 | clearInterval(this.interval);
16 | }
17 |
18 | pollUnboxStatus() {
19 | this.props.dispatch(getUnboxStatus(this.props.unbox.tradeId));
20 | }
21 |
22 | render() {
23 | return null;
24 | }
25 | }
26 |
27 | export default connect(state => ({
28 | unbox: state.unbox,
29 | }))(UnboxPoller);
30 |
--------------------------------------------------------------------------------
/client/src/modules/error.js:
--------------------------------------------------------------------------------
1 | const error = (state = { error: false }, action) => {
2 | switch (action.type) {
3 | case 'GET_AVAILABLE_KEYS_ERROR':
4 | return {
5 | error: true,
6 | message:
7 | 'To use vCase.gg, you must first log in to trade.opskins.com with your Steam ID. Then log in to vCase.gg with the same Steam ID',
8 | };
9 | case 'GET_CASES_ERROR':
10 | return {
11 | error: true,
12 | message:
13 | 'We cannot get the list of cases from the server. Please refresh the page and try again.',
14 | };
15 | case 'EXIT':
16 | return { error: false };
17 | default:
18 | return state;
19 | }
20 | };
21 |
22 | export default error;
23 |
--------------------------------------------------------------------------------
/client/src/containers/header/error-listener.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { connect } from 'react-redux';
3 | import { logout } from '../../actions';
4 | import ErrorPopup from './error';
5 |
6 | class ErrorListener extends Component {
7 | goBack(event) {
8 | event.preventDefault();
9 | this.props.dispatch(logout());
10 | }
11 |
12 | render() {
13 | if (this.props.error) {
14 | return (
15 | 18 | {this.props.name} 19 |
20 |21 | {this.props.wearTier ? ( 22 | {this.props.wearTier} 23 | ) : null} 24 | {this.props.category} 25 |
26 |17 | Create your own vCase site using our open source code. Visit 18 | GitHub to get started. 19 |
20 |
23 | {item.name}
37 |{item.category}
38 |57 | Generating your items on the blockchain. Please give us two 58 | minutes 59 |
60 |{this.props.case.name}
89 |Auto-Pick Any Case
85 |