Commit 77962990 authored by wudizhanche1000's avatar wudizhanche1000

Merge remote-tracking branch 'origin/v3' into v3

# Conflicts:
#	app/ygopro.component.ts
#	package.json
parents ca9d897e 61a1858b
......@@ -4,11 +4,11 @@ node_js: node
os:
- linux
- osx
sudo: required
dist: trusty
sudo: required
env:
npm_config_target: 1.2.3
npm_config_target: 1.4.5
npm_config_arch: x64
npm_config_target_arch: x64
npm_config_disturl: https://atom.io/download/atom-shell
......@@ -29,14 +29,20 @@ cache:
- $HOME/.electron
- $HOME/.cache
before_install:
- openssl aes-256-cbc -K $encrypted_9f35b7f09ebe_key -iv $encrypted_9f35b7f09ebe_iv -in ssh-key.enc -out $HOME/.ssh/id_ecdsa -d
- chmod 600 $HOME/.ssh/id_ecdsa
install:
- npm install electron-builder # force install next version to test electron-builder
- npm install
- npm prune
script:
- npm run release
- npm run dist
branches:
only:
- v3
\ No newline at end of file
deploy:
provider: script
script: bash -c 'ssh-keyscan wudizhanche.mycard.moe >> ~/.ssh/known_hosts; if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then scp dist/mac/MyCard-$TRAVIS_TAG.dmg dist/mac/MyCard-$TRAVIS_TAG-mac.zip root@wudizhanche.mycard.moe:/data/uploads; else scp dist/mycard-$TRAVIS_TAG-x86_64.AppImage root@wudizhanche.mycard.moe:/data/uploads; fi'
skip_cleanup: true
on:
tags: true
\ No newline at end of file
# MyCard [![Build Status](https://travis-ci.org/mycard/mycard.svg?branch=v3)](https://travis-ci.org/mycard/mycard) [![Build status](https://ci.appveyor.com/api/projects/status/t4jyh0rkwh0nep7w?svg=true)](https://ci.appveyor.com/project/zh99998/mycard)
# MyCard [![Build Status](https://travis-ci.org/mycard/mycard.svg?branch=v3)](https://travis-ci.org/mycard/mycard) [![Build status](https://ci.appveyor.com/api/projects/status/t4jyh0rkwh0nep7w?svg=true)](https://ci.appveyor.com/project/zh99998/mycard) [![NSP Status](https://nodesecurity.io/orgs/mycard/projects/62dd15a6-3927-49c2-8c30-1bc19d4a6e92/badge)](https://nodesecurity.io/orgs/mycard/projects/62dd15a6-3927-49c2-8c30-1bc19d4a6e92)
## Install Dependencies
```
......
......@@ -18,10 +18,9 @@
</ul>
<div class="navbar-right">
<div id="user" *ngIf="loginService.user">
<a class="require-login profile"><img id="avatar" [src]="loginService.user.avatar_url" alt="image"></a>
<a class="require-login profile item" id="username"></a>
<a (click)="loginService.logout()" id="logout" class="require-login item">切换账号</a>
<!--<a (click)="refresh()" href="#ygopro" id="refresh" class="item">刷新</a>-->
<a href="#" class="profile"><img id="avatar" [src]="loginService.user.avatar_url" alt="image"></a>
<a href="#" class="profile item" id="username">{{loginService.user.username}}</a>
<a href="#" (click)="loginService.logout()" class="item">切换账号</a>
</div>
<div id="window-buttons" [hidden]="platform == 'darwin'">
<i id="minimize" class="fa fa-minus" aria-hidden="true"></i>
......
......@@ -11,10 +11,12 @@
</form>
<div>
<button type="button" class="btn btn-primary">竞技匹配</button>
<button type="button" class="btn btn-secondary">娱乐匹配</button>
<button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-create-modal">创建房间</button>
<button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-list-modal">房间列表</button>
<button (click)="request_match('athletic')" *ngIf="matching_arena != 'athletic'" [disabled]="matching" type="button" class="btn btn-primary">竞技匹配</button>
<button (click)="cancel_match()" *ngIf="matching_arena == 'athletic'" type="button" class="btn btn-primary">取消等待</button>
<button (click)="request_match('entertain')" *ngIf="matching_arena != 'entertain'" [disabled]="matching" type="button" class="btn btn-secondary">娱乐匹配</button>
<button (click)="cancel_match()" *ngIf="matching_arena == 'entertain'" type="button" class="btn btn-secondary">取消等待</button>
<button [disabled]="matching" type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-create-modal">创建房间</button>
<button [disabled]="matching" type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-list-modal">房间列表</button>
<button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-create-windbot">单人模式</button>
</div>
......
......@@ -12,6 +12,9 @@ import * as ini from "ini";
import {EncodeOptions} from "ini";
import {LoginService} from "./login.service";
import {App} from "./app";
import {Http, Headers, URLSearchParams} from "@angular/http";
import "rxjs/Rx";
import {ISubscription} from "rxjs/Subscription";
declare var $;
......@@ -42,8 +45,8 @@ interface SystemConf {
}
interface Server {
id: string
url: string
id?: string
url?: string
address: string
port: number
}
......@@ -104,7 +107,7 @@ export class YGOProComponent implements OnInit {
connections: WebSocket[] = [];
constructor(private appsService: AppsService, private loginService: LoginService, private ref: ChangeDetectorRef) {
constructor(private http: Http, private appsService: AppsService, private loginService: LoginService, private ref: ChangeDetectorRef) {
this.refresh();
}
......@@ -299,4 +302,36 @@ export class YGOProComponent implements OnInit {
this.join(password, room.server);
}
matching: ISubscription | null;
matching_arena: string | null;
request_match(arena = 'entertain') {
let headers = new Headers();
headers.append("Authorization", "Basic " + btoa(this.loginService.user.username + ":" + this.loginService.user.external_id));
let search = new URLSearchParams();
search.set("arena", arena);
this.matching_arena = arena;
this.matching = this.http.post('https://mycard.moe/ygopro/match', null, {
headers: headers,
search: search
}).map(response=>response.json())
.subscribe((data)=> {
this.join(data['password'], {
address: data['address'],
port: data['port']
});
}, (error)=> {
alert(`匹配失败\n${error}`)
}, ()=> {
this.matching = null;
this.matching_arena = null;
});
}
cancel_match() {
this.matching.unsubscribe();
this.matching = null;
this.matching_arena = null;
}
}
......@@ -3,7 +3,15 @@ version: '{build}'
platform: x86
environment:
npm_config_target: 1.2.3
priv_key:
secure: ek1AH0N8/KF6VoildmkHnu4TY1yBZcptm20AesAOanRSSGLFqkXeRxL80mHSXtiVY8ggtQNsEQR4M69gCiw1OPVWz4OAN6Vg6id6kho9GqYxWCdADbmffSNPB5leksRGjGmkAF99WHiOIZrLRUb6Bia91Fe5+SngPhI01GDDUZA2urv9x50uBBhc+kvV0bv7J5TeXDGr7tfZ3J2aL/3tf/WPqBkqjWlGAj99HTWpkIiQgwaBHoyBvEFD0uHa1BdSmI7PySGabbx4/4zqyGkO38Ce7t/Ntu/dgedzVxlXYfuiXDI8caAPZSVsJ9E2S3VKesZJzHtV9KM/8Xq0RFPythdC/qTvd2e3IAZGudZpgbUHGAHLJnCzn189Zm+Qle8CbbVuPNDcf1B/G/XwEU2MsDXGkF/kFxdeqbHgjzneyns=
BT_TOKEN:
secure: VNRwtuHDHJQS0UbCW2WmNSyyRtKhYPC5FCZztllsIygyg3dj5H/YY89UUmPW9vU7
GH_TOKEN:
secure: itZ9Z1dxEpfPJLdTs/PiY98pVZ3GCLNWfid7eAu7SL88Jl9AIrf/3rviKFEbsnoY
CSC_LINK:
secure: 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
npm_config_target: 1.4.5
npm_config_arch: ia32
npm_config_target_arch: ia32
npm_config_disturl: https://atom.io/download/atom-shell
......@@ -16,20 +24,37 @@ cache:
- '%APPDATA%\npm-cache'
- '%USERPROFILE%\.electron'
shallow_clone: true
init:
- ps: $fileContent = "-----BEGIN EC PRIVATE KEY-----`n"
- ps: $fileContent += $env:priv_key.Replace(' ', "`n")
- ps: $fileContent += "`n-----END EC PRIVATE KEY-----`n"
- ps: Set-Content c:\users\appveyor\.ssh\id_ecdsa $fileContent
- git config --global core.autocrlf input
install:
- ps: Install-Product node 6 $env:platform
- git reset --hard HEAD
- npm install npm -g
- npm install electron-builder
- ps: Install-Product node
- npm install
- npm prune
build_script:
- node --version
- npm --version
- npm run dist
test: off
\ No newline at end of file
artifacts:
- path: dist/MyCard Setup $(APPVEYOR_REPO_TAG_NAME).exe
- path: dist/latest.yml
deploy:
- provider: FTP
protocol: sftp
host:
secure: kOmWSMPWqwRatoWbsDnyEePCfTVRsmKqvCTREDvihT8=
username:
secure: K5zchLMnJ3JaEqx3/bSl5A==
password:
secure: Eu+oVcSuxpc6BVmjxSgM2yBCRnwRsoUye8QCkaIGlX4=
folder:
secure: hOfOYpwk3SlvYd2YXf/NiA==
on:
appveyor_repo_tag: true
\ No newline at end of file
'use strict';
const electron = require('electron');
// Module to control application life.
const autoUpdater = require("electron-auto-updater").autoUpdater;
if (process.platform == 'darwin') {
autoUpdater.setFeedURL("https://wudizhanche.mycard.moe/update");
}
autoUpdater.on('error', (event)=>console.log('error', event));
autoUpdater.on('checking-for-update', (event)=>console.log('checking-for-update', event));
autoUpdater.on('update-available', (event)=>console.log('update-available', event));
autoUpdater.on('update-not-available', (event)=>console.log('update-not-available', event));
autoUpdater.checkForUpdates();
console.log(1);
let updateWindow;
autoUpdater.on('update-downloaded', (event)=> {
updateWindow = new BrowserWindow({
width: 640,
height: 480,
// frame: process.platform == 'darwin',
// titleBarStyle: process.platform == 'darwin' ? 'hidden' : null
});
// and load the index.html of the app.
updateWindow.loadURL(`file://${__dirname}/update.html`);
// Open the DevTools.
// updateWindow.webContents.openDevTools();
// Emitted when the window is closed.
updateWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
updateWindow = null
})
});
const app = electron.app;
// Module to create native browser window.
const BrowserWindow = electron.BrowserWindow;
const child_process = require('child_process');
......
{
"name": "mycard",
"version": "3.0.0-dev.4",
"dependencies": {
"@angular/common": {
"version": "2.1.2",
"from": "@angular/common@latest",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-2.1.2.tgz"
},
"@angular/compiler": {
"version": "2.1.2",
"from": "@angular/compiler@latest",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-2.1.2.tgz"
},
"@angular/core": {
"version": "2.1.2",
"from": "@angular/core@latest",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-2.1.2.tgz"
},
"@angular/forms": {
"version": "2.1.2",
"from": "@angular/forms@latest",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-2.1.2.tgz"
},
"@angular/http": {
"version": "2.1.2",
"from": "@angular/http@latest",
"resolved": "https://registry.npmjs.org/@angular/http/-/http-2.1.2.tgz"
},
"@angular/platform-browser": {
"version": "2.1.2",
"from": "@angular/platform-browser@latest",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-2.1.2.tgz"
},
"@angular/platform-browser-dynamic": {
"version": "2.1.2",
"from": "@angular/platform-browser-dynamic@latest",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-2.1.2.tgz"
},
"@angular/router": {
"version": "3.1.2",
"from": "@angular/router@latest",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-3.1.2.tgz"
},
"@angular/router-deprecated": {
"version": "2.0.0-rc.2",
"from": "@angular/router-deprecated@latest",
"resolved": "https://registry.npmjs.org/@angular/router-deprecated/-/router-deprecated-2.0.0-rc.2.tgz"
},
"@angular/upgrade": {
"version": "2.1.2",
"from": "@angular/upgrade@latest",
"resolved": "https://registry.npmjs.org/@angular/upgrade/-/upgrade-2.1.2.tgz"
},
"angular2-in-memory-web-api": {
"version": "0.0.21",
"from": "angular2-in-memory-web-api@latest",
"resolved": "https://registry.npmjs.org/angular2-in-memory-web-api/-/angular2-in-memory-web-api-0.0.21.tgz"
},
"aria2": {
"version": "3.0.0",
"from": "aria2@latest",
"resolved": "https://registry.npmjs.org/aria2/-/aria2-3.0.0.tgz"
},
"bluebird": {
"version": "3.4.6",
"from": "bluebird@>=3.4.6 <4.0.0",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz"
},
"bootstrap": {
"version": "4.0.0-alpha.5",
"from": "bootstrap@next",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.5.tgz"
},
"commander": {
"version": "2.9.0",
"from": "commander@>=2.9.0 <3.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz"
},
"core-js": {
"version": "2.4.1",
"from": "core-js@latest",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz"
},
"electron-sudo": {
"version": "4.0.7",
"from": "electron-sudo@latest",
"resolved": "https://registry.npmjs.org/electron-sudo/-/electron-sudo-4.0.7.tgz"
},
"encoding": {
"version": "0.1.12",
"from": "encoding@>=0.1.11 <0.2.0",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz"
},
"font-awesome": {
"version": "4.7.0",
"from": "font-awesome@latest",
"resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz"
},
"graceful-readlink": {
"version": "1.0.1",
"from": "graceful-readlink@>=1.0.0",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
},
"iconv-lite": {
"version": "0.4.13",
"from": "iconv-lite@>=0.4.13 <0.5.0",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz"
},
"ini": {
"version": "1.3.4",
"from": "ini@latest",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz"
},
"is-stream": {
"version": "1.1.0",
"from": "is-stream@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
},
"jquery": {
"version": "3.1.1",
"from": "jquery@>=1.9.1 <4.0.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz"
},
"minimist": {
"version": "0.0.8",
"from": "minimist@0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
},
"mkdirp": {
"version": "0.5.1",
"from": "mkdirp@latest",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
},
"nan": {
"version": "2.3.5",
"from": "nan@>=2.3.0 <2.4.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz"
},
"ng2-translate": {
"version": "3.1.3",
"from": "ng2-translate@latest",
"resolved": "https://registry.npmjs.org/ng2-translate/-/ng2-translate-3.1.3.tgz"
},
"node-fetch": {
"version": "1.6.3",
"from": "node-fetch@>=1.6.3 <2.0.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz"
},
"options": {
"version": "0.0.6",
"from": "options@>=0.0.5",
"resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz"
},
"polygoat": {
"version": "1.1.4",
"from": "polygoat@>=1.1.4 <2.0.0",
"resolved": "https://registry.npmjs.org/polygoat/-/polygoat-1.1.4.tgz"
},
"raw-socket": {
"version": "1.5.0",
"from": "raw-socket@latest",
"resolved": "https://registry.npmjs.org/raw-socket/-/raw-socket-1.5.0.tgz"
},
"reflect-metadata": {
"version": "0.1.8",
"from": "reflect-metadata@latest",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.8.tgz"
},
"regenerator-runtime": {
"version": "0.9.5",
"from": "regenerator-runtime@latest",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz"
},
"rxjs": {
"version": "5.0.0-beta.12",
"from": "rxjs@5.0.0-beta.12",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.0.0-beta.12.tgz"
},
"symbol-observable": {
"version": "1.0.4",
"from": "symbol-observable@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz"
},
"systemjs": {
"version": "0.19.40",
"from": "systemjs@latest",
"resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.40.tgz"
},
"tether": {
"version": "1.3.7",
"from": "tether@latest",
"resolved": "https://registry.npmjs.org/tether/-/tether-1.3.7.tgz"
},
"ultron": {
"version": "1.0.2",
"from": "ultron@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz"
},
"when": {
"version": "3.7.7",
"from": "when@>=3.7.5 <4.0.0",
"resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz"
},
"ws": {
"version": "1.1.1",
"from": "ws@>=1.1.1 <2.0.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz"
},
"zone.js": {
"version": "0.6.26",
"from": "zone.js@latest",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.6.26.tgz"
}
}
}
......@@ -3,18 +3,16 @@
"description": "mycard",
"author": "zh99998 <zh99998@gmail.com>",
"homepage": "https://mycard.moe",
"version": "3.0.0-dev.4",
"version": "3.0.0-dev.6",
"repository": "github:mycard/mycard",
"scripts": {
"pack": "./node_modules/.bin/build --dir",
"dist": "./node_modules/.bin/build",
"release": "build",
"pack": "tsc && build --dir",
"dist": "tsc && build",
"release": "tsc && build",
"start": "tsc && electron .",
"lite": "lite-server",
"postinstall": "typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"typings": "typings"
"tsc:w": "tsc -w"
},
"license": "UNLICENSED",
"dependencies": {
......@@ -29,10 +27,11 @@
"@angular/router-deprecated": "latest",
"@angular/upgrade": "latest",
"angular2-in-memory-web-api": "latest",
"electron-auto-updater": "latest",
"aria2": "latest",
"bootstrap": "next",
"core-js": "latest",
"electron-sudo": "latest",
"electron-sudo": "github:mycard/electron-sudo",
"font-awesome": "latest",
"ini": "latest",
"mkdirp": "latest",
......@@ -61,15 +60,21 @@
"extraResources": [
"bin"
],
"publish": [
{
"provider": "generic",
"url": "https://wudizhanche.mycard.moe/downloads"
},
{
"provider": "github"
}
],
"win": {
"iconUrl": "http://mycard.moe/logo.png",
"remoteReleases": true
},
"mac": {
"target": "dmg"
"target": [
"nsis"
]
},
"dmg": {
"title": "MyCard",
"contents": [
{
"x": 448,
......@@ -80,8 +85,7 @@
{
"x": 192,
"y": 344,
"type": "file",
"path": "mycard.app"
"type": "file"
}
]
}
......
let apps = require('./apps.json');
let result = apps.map((app)=> {
console.error(app.id);
let result = {};
result.id = app.id;
result.name = app.name;
result.description = app.description;
let parent = apps.find(a=>app.id.startsWith(a.id + '-'));
if (parent) {
result.category = "module";
result.parent = parent.id;
result.tags = ["language"]
} else {
result.category = "game";
result.tags = app.tags
}
result.dependency = {
"win32": [],
"darwin": ['wine']
};
let references = apps.filter(a=>a.id.startsWith(app.id + '-')).map(a=>a.id);
result.references = {
"win32": references,
"darwin": references
};
result.author = app.author;
result.homepage = app.homepage;
result.locales = app.locales;
result.actions = app.actions;
result.version = app.version;
result.download = app.download;
result.news = app.news;
return result
})
.sort((a, b)=>a.id < b.id ? -1 : 1);
for (let app of result) {
console.error(app.id)
}
console.log(JSON.stringify(result));
\ No newline at end of file
File added
update
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment