Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
mycard
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
syntax_j
mycard
Commits
3508036d
Commit
3508036d
authored
Apr 21, 2017
by
2breakegg
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
https://github.com/moecube/moecube
into dev
parents
fc99d173
0ed4dbd6
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
215 additions
and
156 deletions
+215
-156
app/app.module.ts
app/app.module.ts
+7
-8
app/candy/candy.component.ts
app/candy/candy.component.ts
+10
-5
app/community/community.component.css
app/community/community.component.css
+6
-3
app/community/community.component.html
app/community/community.component.html
+0
-1
app/community/community.component.ts
app/community/community.component.ts
+8
-4
app/cube-achievements/cube-achievements.component.css
app/cube-achievements/cube-achievements.component.css
+0
-0
app/cube-achievements/cube-achievements.component.html
app/cube-achievements/cube-achievements.component.html
+1
-0
app/cube-achievements/cube-achievements.component.ts
app/cube-achievements/cube-achievements.component.ts
+16
-0
app/cube-actions/cube-actions.component.ts
app/cube-actions/cube-actions.component.ts
+1
-2
app/cube-detail/cube-detail.component.html
app/cube-detail/cube-detail.component.html
+1
-0
app/cube-detail/cube-detail.component.ts
app/cube-detail/cube-detail.component.ts
+25
-17
app/cube.ts
app/cube.ts
+7
-1
app/cubes.service.ts
app/cubes.service.ts
+1
-5
app/electron-schema.ts
app/electron-schema.ts
+0
-44
app/lobby/lobby.component.html
app/lobby/lobby.component.html
+9
-9
app/lobby/lobby.component.ts
app/lobby/lobby.component.ts
+29
-23
app/login/login.component.css
app/login/login.component.css
+0
-5
app/login/login.component.html
app/login/login.component.html
+0
-2
app/login/login.component.ts
app/login/login.component.ts
+11
-8
app/moecube/moecube.component.html
app/moecube/moecube.component.html
+18
-8
app/moecube/moecube.component.ts
app/moecube/moecube.component.ts
+1
-0
app/profile/profile.component.css
app/profile/profile.component.css
+0
-5
app/profile/profile.component.html
app/profile/profile.component.html
+0
-1
app/profile/profile.component.ts
app/profile/profile.component.ts
+4
-2
app/routing.sevices.ts
app/routing.sevices.ts
+46
-0
package.json
package.json
+4
-0
systemjs.config.js
systemjs.config.js
+7
-1
tsconfig.json
tsconfig.json
+3
-2
No files found.
app/app.module.ts
View file @
3508036d
...
@@ -13,11 +13,8 @@ import { CubesService } from './cubes.service';
...
@@ -13,11 +13,8 @@ import { CubesService } from './cubes.service';
import
{
SettingsService
}
from
'
./settings.sevices
'
;
import
{
SettingsService
}
from
'
./settings.sevices
'
;
import
{
LoginService
}
from
'
./login.service
'
;
import
{
LoginService
}
from
'
./login.service
'
;
import
{
DownloadService
}
from
'
./download.service
'
;
import
{
DownloadService
}
from
'
./download.service
'
;
import
{
AppRoutingModule
}
from
'
./app-routing.module
'
;
import
{
AuthGuard
}
from
'
./auth.guard
'
;
import
{
ProgressSpinnerComponent
}
from
'
./progress-spinner/progress-spinner.component
'
;
import
{
ProgressSpinnerComponent
}
from
'
./progress-spinner/progress-spinner.component
'
;
import
{
CommunityComponent
}
from
'
./community/community.component
'
;
import
{
CommunityComponent
}
from
'
./community/community.component
'
;
import
{
LoadingGuard
}
from
'
./loading.guard
'
;
import
{
UpdateComponent
}
from
'
./update/update.component
'
;
import
{
UpdateComponent
}
from
'
./update/update.component
'
;
import
{
WindowControlComponent
}
from
'
./window-control/window-control.component
'
;
import
{
WindowControlComponent
}
from
'
./window-control/window-control.component
'
;
import
{
CubeActionsComponent
}
from
'
./cube-actions/cube-actions.component
'
;
import
{
CubeActionsComponent
}
from
'
./cube-actions/cube-actions.component
'
;
...
@@ -26,23 +23,25 @@ import { CubeDescriptionComponent } from './cube-description/cube-description.co
...
@@ -26,23 +23,25 @@ import { CubeDescriptionComponent } from './cube-description/cube-description.co
import
{
CubeNewsComponent
}
from
'
./cube-news/cube-news.component
'
;
import
{
CubeNewsComponent
}
from
'
./cube-news/cube-news.component
'
;
import
{
CubeExpansionsComponent
}
from
'
./cube-expansions/cube-expansions.component
'
;
import
{
CubeExpansionsComponent
}
from
'
./cube-expansions/cube-expansions.component
'
;
import
{
ProgressBarComponent
}
from
'
./progress-bar/progress-bar.component
'
;
import
{
ProgressBarComponent
}
from
'
./progress-bar/progress-bar.component
'
;
import
{
ELECTRON_SCHEMA
}
from
'
./
electron-schema
'
;
import
{
ELECTRON_SCHEMA
}
from
'
electron-schema
'
;
import
{
MaotamaComponent
}
from
'
./maotama/maotama.component
'
;
import
{
MaotamaComponent
}
from
'
./maotama/maotama.component
'
;
import
{
ProfileComponent
}
from
'
./profile/profile.component
'
;
import
{
ProfileComponent
}
from
'
./profile/profile.component
'
;
import
{
RoutingService
}
from
'
./routing.sevices
'
;
import
{
CubeAchievementsComponent
}
from
'
./cube-achievements/cube-achievements.component
'
;
@
NgModule
({
@
NgModule
({
imports
:
[
BrowserModule
,
FormsModule
,
ReactiveFormsModule
,
HttpModule
,
AppRoutingModule
],
imports
:
[
BrowserModule
,
FormsModule
,
ReactiveFormsModule
,
HttpModule
],
declarations
:
[
declarations
:
[
MoeCubeComponent
,
LoginComponent
,
LobbyComponent
,
MoeCubeComponent
,
LoginComponent
,
LobbyComponent
,
CubeDetailComponent
,
RosterComponent
,
YGOProComponent
,
CandyComponent
,
CubeDetailComponent
,
RosterComponent
,
YGOProComponent
,
CandyComponent
,
ProgressSpinnerComponent
,
CommunityComponent
,
UpdateComponent
,
WindowControlComponent
,
ProgressSpinnerComponent
,
CommunityComponent
,
UpdateComponent
,
WindowControlComponent
,
CubeActionsComponent
,
CubeArenaComponent
,
CubeDescriptionComponent
,
CubeNewsComponent
,
CubeExpansionsComponent
,
CubeActionsComponent
,
CubeArenaComponent
,
CubeDescriptionComponent
,
CubeNewsComponent
,
CubeExpansionsComponent
,
ProgressBarComponent
,
MaotamaComponent
,
ProfileComponent
ProgressBarComponent
,
MaotamaComponent
,
ProfileComponent
,
CubeAchievementsComponent
],
],
bootstrap
:
[
MoeCubeComponent
],
bootstrap
:
[
MoeCubeComponent
],
providers
:
[
providers
:
[
CubesService
,
SettingsService
,
LoginService
,
DownloadService
,
AuthGuard
,
LoadingGuard
CubesService
,
SettingsService
,
LoginService
,
DownloadService
,
RoutingService
// , AuthGuard, LoadingGuard,
// 执行 xi18n 的时候注释掉这几行
// 执行 xi18n 的时候注释掉这几行
// , {
// , {
// provide: LOCALE_ID,
// provide: LOCALE_ID,
...
...
app/candy/candy.component.ts
View file @
3508036d
...
@@ -10,6 +10,9 @@ import 'node_modules/candy-shop/notifications/candy.js';
...
@@ -10,6 +10,9 @@ import 'node_modules/candy-shop/notifications/candy.js';
import
'
node_modules/candy-shop/refocus/candy.js
'
;
import
'
node_modules/candy-shop/refocus/candy.js
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
*
as
uuid
from
'
uuid
'
;
// import * as jqueryShadow from '../../jquery-shadow.js';
// import 'electron-cookies';
/**
/**
* Created by zh99998 on 16/9/2.
* Created by zh99998 on 16/9/2.
*/
*/
...
@@ -213,7 +216,7 @@ declare const $iq: any;
...
@@ -213,7 +216,7 @@ declare const $iq: any;
})
})
export
class
CandyComponent
implements
OnInit
,
OnChanges
{
export
class
CandyComponent
implements
OnInit
,
OnChanges
{
@
Input
()
@
Input
()
current
App
:
Cube
;
current
Cube
:
Cube
;
jid
:
string
;
jid
:
string
;
password
:
string
;
password
:
string
;
nickname
:
string
;
nickname
:
string
;
...
@@ -226,7 +229,7 @@ export class CandyComponent implements OnInit, OnChanges {
...
@@ -226,7 +229,7 @@ export class CandyComponent implements OnInit, OnChanges {
ngOnInit
()
{
ngOnInit
()
{
this
.
jid
=
this
.
loginService
.
user
.
username
+
'
@m
oecube.com
'
;
this
.
jid
=
this
.
loginService
.
user
.
username
+
'
@m
ycard.moe
'
;
this
.
password
=
this
.
loginService
.
user
.
external_id
.
toString
();
this
.
password
=
this
.
loginService
.
user
.
external_id
.
toString
();
this
.
nickname
=
this
.
loginService
.
user
.
username
;
this
.
nickname
=
this
.
loginService
.
user
.
username
;
...
@@ -260,11 +263,13 @@ export class CandyComponent implements OnInit, OnChanges {
...
@@ -260,11 +263,13 @@ export class CandyComponent implements OnInit, OnChanges {
</form>
</form>
`
;
`
;
Candy
.
Util
.
setCookie
(
'
candy-nostatusmessages
'
,
'
1
'
,
365
);
Candy
.
init
(
'
wss://chat.moecube.com:5280/websocket
'
,
{
Candy
.
init
(
'
wss://chat.moecube.com:5280/websocket
'
,
{
core
:
{
core
:
{
debug
:
false
,
debug
:
false
,
autojoin
:
this
.
current
App
.
conference
&&
[
this
.
currentApp
.
conference
+
'
@conference.moecube.com
'
],
autojoin
:
this
.
current
Cube
.
conference
&&
[
this
.
currentCube
.
conference
+
'
@conference.mycard.moe
'
],
resource
:
'
moecube-
'
+
Math
.
random
().
toString
().
split
(
'
.
'
)[
1
]
resource
:
uuid
.
v1
()
},
},
view
:
{
view
:
{
assets
:
'
node_modules/candy/res/
'
,
assets
:
'
node_modules/candy/res/
'
,
...
@@ -303,7 +308,7 @@ export class CandyComponent implements OnInit, OnChanges {
...
@@ -303,7 +308,7 @@ export class CandyComponent implements OnInit, OnChanges {
if
(
!
Candy
.
Core
.
getConnection
())
{
if
(
!
Candy
.
Core
.
getConnection
())
{
return
;
return
;
}
}
let
conference
=
changes
[
'
current
App
'
].
currentValue
.
conference
;
let
conference
=
changes
[
'
current
Cube
'
].
currentValue
.
conference
;
if
(
!
conference
)
{
if
(
!
conference
)
{
return
;
return
;
}
}
...
...
app/community/community.component.css
View file @
3508036d
:host
{
:host
{
display
:
flex
;
flex
:
1
;
}
}
:host
,
webview
{
:host
[
hidden
]
{
flex
:
1
;
display
:
flex
!important
;
width
:
0
;
height
:
0
;
flex
:
0
1
;
}
}
app/community/community.component.html
deleted
100644 → 0
View file @
fc99d173
<webview
src=
"https://ygobbs.com"
(new-window)=
"openExternal($event.url)"
></webview>
app/community/community.component.ts
View file @
3508036d
...
@@ -3,14 +3,18 @@
...
@@ -3,14 +3,18 @@
*/
*/
import
{
Component
}
from
'
@angular/core
'
;
import
{
Component
}
from
'
@angular/core
'
;
import
{
shell
}
from
'
electron
'
;
import
{
shell
}
from
'
electron
'
;
import
{
RoutingService
}
from
'
../routing.sevices
'
;
@
Component
({
@
Component
({
selector
:
'
community
'
,
selector
:
'
webview[community]
'
,
template
Url
:
'
./community.component.html
'
,
template
:
'
'
,
styleUrls
:
[
'
./community.component.css
'
],
styleUrls
:
[
'
./community.component.css
'
],
host
:
{
'
[src]
'
:
'
routingService.currentCommunityURL
'
,
'
(new-window)
'
:
'
shell.openExternal($event.url)
'
}
})
})
export
class
CommunityComponent
{
export
class
CommunityComponent
{
openExternal
(
url
:
string
)
{
shell
.
openExternal
(
url
);
public
shell
=
shell
;
constructor
(
public
routingService
:
RoutingService
)
{
}
}
}
}
app/cube-achievements/cube-achievements.component.css
0 → 100644
View file @
3508036d
app/cube-achievements/cube-achievements.component.html
0 → 100644
View file @
3508036d
成就
app/cube-achievements/cube-achievements.component.ts
0 → 100644
View file @
3508036d
/**
* Created by zh99998 on 16/9/2.
*/
import
{
Component
,
Input
}
from
'
@angular/core
'
;
import
{
Cube
}
from
'
../cube
'
;
@
Component
({
selector
:
'
cube-achievements
'
,
templateUrl
:
'
./cube-achievements.component.html
'
,
styleUrls
:
[
'
./cube-achievements.component.css
'
],
})
export
class
CubeAchievementsComponent
{
@
Input
()
currentCube
:
Cube
;
}
app/cube-actions/cube-actions.component.ts
View file @
3508036d
...
@@ -5,7 +5,6 @@ import { ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnInit, Sim
...
@@ -5,7 +5,6 @@ import { ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnInit, Sim
import
{
Cube
,
InstallOption
}
from
'
../cube
'
;
import
{
Cube
,
InstallOption
}
from
'
../cube
'
;
import
{
CubesService
}
from
'
../cubes.service
'
;
import
{
CubesService
}
from
'
../cubes.service
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
ActivatedRoute
}
from
'
@angular/router
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
DownloadService
}
from
'
../download.service
'
;
import
{
DownloadService
}
from
'
../download.service
'
;
import
{
Http
}
from
'
@angular/http
'
;
import
{
Http
}
from
'
@angular/http
'
;
...
@@ -40,7 +39,7 @@ export class CubeActionsComponent implements OnInit, OnChanges {
...
@@ -40,7 +39,7 @@ export class CubeActionsComponent implements OnInit, OnChanges {
constructor
(
private
cubesService
:
CubesService
,
private
settingsService
:
SettingsService
,
constructor
(
private
cubesService
:
CubesService
,
private
settingsService
:
SettingsService
,
private
downloadService
:
DownloadService
,
private
ref
:
ChangeDetectorRef
,
private
el
:
ElementRef
,
private
downloadService
:
DownloadService
,
private
ref
:
ChangeDetectorRef
,
private
el
:
ElementRef
,
private
http
:
Http
,
private
loginService
:
LoginService
,
private
route
:
ActivatedRoute
)
{
private
http
:
Http
,
private
loginService
:
LoginService
)
{
}
}
async
ngOnInit
():
Promise
<
void
>
{
async
ngOnInit
():
Promise
<
void
>
{
...
...
app/cube-detail/cube-detail.component.html
View file @
3508036d
<ng-container
*ngIf=
"currentCube"
>
<ng-container
*ngIf=
"currentCube"
>
<cube-actions
[currentCube]=
"currentCube"
class=
"panel"
></cube-actions>
<cube-actions
[currentCube]=
"currentCube"
class=
"panel"
></cube-actions>
<cube-achievements
*ngIf=
"currentCube.useAchievements()"
[currentCube]=
"currentCube"
class=
"panel"
></cube-achievements>
<cube-arena
*ngIf=
"currentCube.useArena()"
[currentCube]=
"currentCube"
class=
"panel"
></cube-arena>
<cube-arena
*ngIf=
"currentCube.useArena()"
[currentCube]=
"currentCube"
class=
"panel"
></cube-arena>
<cube-description
*ngIf=
"currentCube.useDescription()"
[currentCube]=
"currentCube"
></cube-description>
<cube-description
*ngIf=
"currentCube.useDescription()"
[currentCube]=
"currentCube"
></cube-description>
<cube-news
*ngIf=
"currentCube.useNews()"
[currentCube]=
"currentCube"
class=
"panel"
></cube-news>
<cube-news
*ngIf=
"currentCube.useNews()"
[currentCube]=
"currentCube"
class=
"panel"
></cube-news>
...
...
app/cube-detail/cube-detail.component.ts
View file @
3508036d
import
{
ChangeDetectorRef
,
Component
,
ElementRef
,
OnChanges
,
OnInit
,
SimpleChanges
}
from
'
@angular/core
'
;
import
{
ChangeDetectorRef
,
Component
,
ElementRef
,
Input
,
OnChanges
,
OnInit
,
SimpleChanges
}
from
'
@angular/core
'
;
import
{
clipboard
,
remote
}
from
'
electron
'
;
import
{
clipboard
,
remote
}
from
'
electron
'
;
import
*
as
path
from
'
path
'
;
import
*
as
path
from
'
path
'
;
import
*
as
fs
from
'
fs
'
;
import
*
as
fs
from
'
fs
'
;
...
@@ -9,7 +9,6 @@ import { CubesService } from '../cubes.service';
...
@@ -9,7 +9,6 @@ import { CubesService } from '../cubes.service';
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
DownloadService
}
from
'
../download.service
'
;
import
{
DownloadService
}
from
'
../download.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
ActivatedRoute
,
Params
}
from
'
@angular/router
'
;
declare
const
Notification
:
any
;
declare
const
Notification
:
any
;
...
@@ -26,6 +25,7 @@ declare const Notification: any;
...
@@ -26,6 +25,7 @@ declare const Notification: any;
styleUrls
:
[
'
./cube-detail.component.css
'
],
styleUrls
:
[
'
./cube-detail.component.css
'
],
})
})
export
class
CubeDetailComponent
implements
OnInit
,
OnChanges
{
export
class
CubeDetailComponent
implements
OnInit
,
OnChanges
{
@
Input
()
currentCube
:
Cube
;
currentCube
:
Cube
;
platform
=
process
.
platform
;
platform
=
process
.
platform
;
...
@@ -46,7 +46,7 @@ export class CubeDetailComponent implements OnInit, OnChanges {
...
@@ -46,7 +46,7 @@ export class CubeDetailComponent implements OnInit, OnChanges {
constructor
(
private
cubesService
:
CubesService
,
private
settingsService
:
SettingsService
,
constructor
(
private
cubesService
:
CubesService
,
private
settingsService
:
SettingsService
,
private
downloadService
:
DownloadService
,
private
ref
:
ChangeDetectorRef
,
private
el
:
ElementRef
,
private
downloadService
:
DownloadService
,
private
ref
:
ChangeDetectorRef
,
private
el
:
ElementRef
,
private
http
:
Http
,
private
loginService
:
LoginService
,
private
route
:
ActivatedRoute
)
{
private
http
:
Http
,
private
loginService
:
LoginService
)
{
this
.
tags
=
this
.
settingsService
.
getLocale
().
startsWith
(
'
zh
'
)
?
{
this
.
tags
=
this
.
settingsService
.
getLocale
().
startsWith
(
'
zh
'
)
?
{
'
recommend
'
:
'
推荐
'
,
'
recommend
'
:
'
推荐
'
,
...
@@ -64,20 +64,20 @@ export class CubeDetailComponent implements OnInit, OnChanges {
...
@@ -64,20 +64,20 @@ export class CubeDetailComponent implements OnInit, OnChanges {
}
}
async
ngOnInit
():
Promise
<
void
>
{
async
ngOnInit
():
Promise
<
void
>
{
this
.
route
.
params
//
this.route.params
.
switchMap
((
params
:
Params
)
=>
this
.
cubesService
.
getCube
(
params
[
'
id
'
]))
//
.switchMap((params: Params) => this.cubesService.getCube(params['id']))
.
subscribe
(
async
(
cube
:
Cube
)
=>
{
//
.subscribe(async (cube: Cube) => {
this
.
currentCube
=
cube
;
//
this.currentCube = cube;
this
.
cubesService
.
lastVisited
=
cube
;
//
this.cubesService.lastVisited = cube;
if
(
this
.
currentCube
.
background
)
{
//
if (this.currentCube.background) {
this
.
el
.
nativeElement
.
style
.
background
=
`url("
${
this
.
currentCube
.
background
}
") rgba(255,255,255,.8)`
;
//
this.el.nativeElement.style.background = `url("${this.currentCube.background}") rgba(255,255,255,.8)`;
}
else
{
//
} else {
this
.
el
.
nativeElement
.
style
.
background
=
'
white
'
;
//
this.el.nativeElement.style.background = 'white';
}
//
}
//
// let top = await this.http.get('https://ygobbs.com/top.json').map(response => response.json()).toPromise();
//
// let top = await this.http.get('https://ygobbs.com/top.json').map(response => response.json()).toPromise();
// console.log(top.topic_list.topics);
//
// console.log(top.topic_list.topics);
});
//
});
let
volume
=
'
A
'
;
let
volume
=
'
A
'
;
for
(
let
i
=
0
;
i
<
26
;
i
++
)
{
for
(
let
i
=
0
;
i
<
26
;
i
++
)
{
...
@@ -97,6 +97,14 @@ export class CubeDetailComponent implements OnInit, OnChanges {
...
@@ -97,6 +97,14 @@ export class CubeDetailComponent implements OnInit, OnChanges {
}
}
async
ngOnChanges
(
changes
:
SimpleChanges
)
{
async
ngOnChanges
(
changes
:
SimpleChanges
)
{
if
(
changes
.
currentCube
)
{
if
(
this
.
currentCube
.
background
)
{
this
.
el
.
nativeElement
.
style
.
background
=
`url("
${
this
.
currentCube
.
background
}
") rgba(255,255,255,.8)`
;
}
else
{
this
.
el
.
nativeElement
.
style
.
background
=
'
white
'
;
}
}
if
(
this
.
currentCube
.
isBought
())
{
if
(
this
.
currentCube
.
isBought
())
{
$
(
'
#purchase-modal-alipay
'
).
modal
(
'
hide
'
);
$
(
'
#purchase-modal-alipay
'
).
modal
(
'
hide
'
);
}
}
...
...
app/cube.ts
View file @
3508036d
...
@@ -35,6 +35,7 @@ export class Cube {
...
@@ -35,6 +35,7 @@ export class Cube {
// 宣传片
// 宣传片
trailer
:
{
url
:
string
,
type
:
'
video
'
|
'
image
'
,
url2
?:
string
}[];
trailer
:
{
url
:
string
,
type
:
'
video
'
|
'
image
'
,
url2
?:
string
}[];
achievements
:
{
name
:
string
,
description
:
string
,
unlocked
:
boolean
,
unlocked_at
:
Date
}[];
static
downloadUrl
(
app
:
Cube
,
platform
:
string
,
locale
:
string
):
string
{
static
downloadUrl
(
app
:
Cube
,
platform
:
string
,
locale
:
string
):
string
{
if
(
app
.
id
===
'
ygopro
'
)
{
if
(
app
.
id
===
'
ygopro
'
)
{
...
@@ -144,6 +145,10 @@ export class Cube {
...
@@ -144,6 +145,10 @@ export class Cube {
return
this
.
useRun
()
&&
!!
this
.
actions
.
get
(
'
custom
'
);
return
this
.
useRun
()
&&
!!
this
.
actions
.
get
(
'
custom
'
);
}
}
useAchievements
():
boolean
{
return
this
.
achievements
.
length
>
0
;
}
progressMessage
():
string
|
undefined
{
progressMessage
():
string
|
undefined
{
return
this
.
status
.
progressMessage
;
return
this
.
status
.
progressMessage
;
}
}
...
@@ -178,6 +183,7 @@ export class Cube {
...
@@ -178,6 +183,7 @@ export class Cube {
this
.
key
=
app
.
key
;
this
.
key
=
app
.
key
;
this
.
trailer
=
app
.
trailer
||
[];
this
.
trailer
=
app
.
trailer
||
[];
this
.
achievements
=
app
.
achievements
||
[];
// { url: 'http://cdn.edgecast.steamstatic.com/steam/apps/2036126/movie480.webm', type: 'video', url2:''},
// { url: 'http://cdn.edgecast.steamstatic.com/steam/apps/2036126/movie480.webm', type: 'video', url2:''},
// {
// {
// url: 'http://cdn.edgecast.steamstatic.com/steam/apps/264710/ss_e41e71c05f3fcf08e54140bd9f1ffc9008706843.600x338.jpg',
// url: 'http://cdn.edgecast.steamstatic.com/steam/apps/264710/ss_e41e71c05f3fcf08e54140bd9f1ffc9008706843.600x338.jpg',
...
@@ -272,7 +278,7 @@ export class CubeLocal {
...
@@ -272,7 +278,7 @@ export class CubeLocal {
for
(
let
[
k
,
v
]
of
Object
.
entries
(
this
.
files
))
{
for
(
let
[
k
,
v
]
of
Object
.
entries
(
this
.
files
))
{
t
[
k
]
=
v
;
t
[
k
]
=
v
;
}
}
return
{
path
:
this
.
path
,
version
:
this
.
version
,
files
:
t
};
return
{
path
:
this
.
path
,
version
:
this
.
version
,
files
:
t
};
}
}
}
}
...
...
app/cubes.service.ts
View file @
3508036d
...
@@ -106,11 +106,7 @@ export class CubesService {
...
@@ -106,11 +106,7 @@ export class CubesService {
// 这里必须返回个 Promise,于是不能去掉 async
// 这里必须返回个 Promise,于是不能去掉 async
async
getCube
(
id
:
string
)
{
async
getCube
(
id
:
string
)
{
let
result
=
this
.
apps
.
get
(
id
);
return
this
.
apps
.
get
(
id
);
if
(
!
result
)
{
throw
'
not found
'
;
}
return
result
;
}
}
async
migrate
()
{
async
migrate
()
{
...
...
app/electron-schema.ts
deleted
100644 → 0
View file @
fc99d173
import
{
DomElementSchemaRegistry
}
from
'
@angular/compiler
'
;
import
{
SchemaMetadata
}
from
'
@angular/core
'
;
const
tags
:
Object
=
{
webview
:
{
src
:
true
,
autosize
:
true
,
nodeintegration
:
true
,
plugins
:
true
,
preload
:
true
,
httpreferrer
:
true
,
useragent
:
true
,
disablewebsecurity
:
true
,
partition
:
true
,
allowpopups
:
true
,
webpreferences
:
true
,
blinkfeatures
:
true
,
disableblinkfeatures
:
true
,
guestinstance
:
true
,
disableguestresize
:
true
}
};
export
const
ELECTRON_SCHEMA
:
SchemaMetadata
=
{
name
:
'
electron-schema
'
};
DomElementSchemaRegistry
.
prototype
.
hasElement
=
new
Proxy
(
DomElementSchemaRegistry
.
prototype
.
hasElement
,
{
apply
(
target
,
thisArgument
,
argumentsList
)
{
const
[
tagName
,
schemaMetas
]
=
argumentsList
;
if
(
schemaMetas
.
some
((
schema
:
SchemaMetadata
)
=>
schema
.
name
===
ELECTRON_SCHEMA
.
name
)
&&
tags
[
tagName
])
{
return
true
;
}
return
Reflect
.
apply
(
target
,
thisArgument
,
argumentsList
);
}
});
DomElementSchemaRegistry
.
prototype
.
hasProperty
=
new
Proxy
(
DomElementSchemaRegistry
.
prototype
.
hasProperty
,
{
apply
(
target
,
thisArgument
,
argumentsList
)
{
const
[
tagName
,
propName
,
schemaMetas
]
=
argumentsList
;
if
(
schemaMetas
.
some
((
schema
:
SchemaMetadata
)
=>
schema
.
name
===
ELECTRON_SCHEMA
.
name
)
&&
tags
[
tagName
]
&&
tags
[
tagName
][
propName
])
{
return
true
;
}
return
Reflect
.
apply
(
target
,
thisArgument
,
argumentsList
);
}
});
app/lobby/lobby.component.html
View file @
3508036d
...
@@ -3,19 +3,18 @@
...
@@ -3,19 +3,18 @@
<nav
id=
"apps"
*ngIf=
"apps"
class=
"bg-faded sidebar scroll"
>
<nav
id=
"apps"
*ngIf=
"apps"
class=
"bg-faded sidebar scroll"
>
<div
id=
"search"
class=
"input-group"
>
<div
id=
"search"
class=
"input-group"
>
<i
class=
"fa fa-search input-group-addon search"
id=
"basic-addon1"
></i>
<i
class=
"fa fa-search input-group-addon search"
id=
"basic-addon1"
></i>
<input
#search
id=
"search-input"
type=
"text"
class=
"form-control search"
placeholder=
"搜索游戏"
<input
#search
id=
"search-input"
type=
"text"
class=
"form-control search"
placeholder=
"搜索游戏"
aria-describedby=
"basic-addon1"
>
aria-describedby=
"basic-addon1"
>
</div>
</div>
<ng-container
*ngFor=
"let tag of tags"
>
<ng-container
*ngFor=
"let tag of tags"
>
<ng-container
*ngIf=
"grouped_apps[tag]"
>
<ng-container
*ngIf=
"grouped_apps[tag]"
>
<span
i18n
>
{tag, select, installed {已安装} test {测试} recommend {推荐} mysterious {迷之物体} touhou {东方 Project} touhou_pc98 {东方旧作} runtime_installed {已安装的运行库} }
</span>
<span
i18n
>
{tag, select, installed {已安装} test {测试} recommend {推荐} mysterious {迷之物体} touhou {东方 Project} touhou_pc98 {东方旧作} runtime_installed {已安装的运行库} }
</span>
<ul
class=
"nav nav-pills flex-column"
>
<ul
class=
"nav nav-pills flex-column"
>
<li
*ngFor=
"let
app
of grouped_apps[tag]"
class=
"nav-item"
>
<li
*ngFor=
"let
cube
of grouped_apps[tag]"
class=
"nav-item"
>
<a
[routerLink]=
"app.id"
routerLinkActive=
"activ
e"
class=
"nav-link"
>
<a
(click)=
"currentCube = cube"
[class.active]=
"currentCube === cub
e"
class=
"nav-link"
>
<img
*ngIf=
"
app.icon"
class=
"icon"
[src]=
"app
.icon"
>
<img
*ngIf=
"
cube.icon"
class=
"icon"
[src]=
"cube
.icon"
>
{{
app
.name}}
{{
cube
.name}}
<progress-spinner
*ngIf=
"
app.isWorking()"
[value]=
"app.status.progress / app
.status.total"
></progress-spinner>
<progress-spinner
*ngIf=
"
cube.isWorking()"
[value]=
"cube.status.progress / cube
.status.total"
></progress-spinner>
</a>
</a>
</li>
</li>
</ul>
</ul>
...
@@ -28,13 +27,14 @@
...
@@ -28,13 +27,14 @@
<div
id=
"right"
>
<div
id=
"right"
>
<div
id=
"main"
>
<div
id=
"main"
>
<router-outlet></router-outlet>
<cube-detail
*ngIf=
"currentCube"
[currentCube]=
"currentCube"
></cube-detail>
<!--<router-outlet></router-outlet>-->
<roster
class=
"scroll"
></roster>
<roster
class=
"scroll"
></roster>
</div>
</div>
<div
id=
"candy-wrapper"
class=
"resize-wrapper resize-top"
style=
"max-height: calc( 100% - 180px )"
>
<div
id=
"candy-wrapper"
class=
"resize-wrapper resize-top"
style=
"max-height: calc( 100% - 180px )"
>
<div
class=
"resize"
(mousedown)=
"mousedown($event)"
></div>
<div
class=
"resize"
(mousedown)=
"mousedown($event)"
></div>
<candy
*ngIf=
"current
App"
[currentApp]=
"currentApp
"
></candy>
<candy
*ngIf=
"current
Cube"
[currentCube]=
"currentCube
"
></candy>
</div>
</div>
</div>
</div>
...
...
app/lobby/lobby.component.ts
View file @
3508036d
...
@@ -2,13 +2,11 @@
...
@@ -2,13 +2,11 @@
* Created by zh99998 on 16/9/2.
* Created by zh99998 on 16/9/2.
*/
*/
import
{
ChangeDetectorRef
,
Component
,
ElementRef
,
OnInit
,
ViewChild
}
from
'
@angular/core
'
;
import
{
ChangeDetectorRef
,
Component
,
ElementRef
,
OnInit
,
ViewChild
}
from
'
@angular/core
'
;
import
{
shell
}
from
'
electron
'
;
import
{
URLSearchParams
}
from
'
@angular/http
'
;
import
{
URLSearchParams
}
from
'
@angular/http
'
;
import
{
Category
,
Cube
}
from
'
../cube
'
;
import
{
Category
,
Cube
}
from
'
../cube
'
;
import
{
CubesService
}
from
'
../cubes.service
'
;
import
{
CubesService
}
from
'
../cubes.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
LoginService
}
from
'
../login.service
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
SettingsService
}
from
'
../settings.sevices
'
;
import
{
ActivatedRoute
,
Router
}
from
'
@angular/router
'
;
import
*
as
ReconnectingWebSocket
from
'
reconnecting-websocket
'
;
import
*
as
ReconnectingWebSocket
from
'
reconnecting-websocket
'
;
// import 'typeahead.js';
// import 'typeahead.js';
...
@@ -25,7 +23,7 @@ export class LobbyComponent implements OnInit {
...
@@ -25,7 +23,7 @@ export class LobbyComponent implements OnInit {
readonly
tags
=
[
'
installed
'
,
'
recommend
'
,
'
test
'
,
'
mysterious
'
,
'
touhou
'
,
'
touhou_pc98
'
,
'
runtime_installed
'
];
readonly
tags
=
[
'
installed
'
,
'
recommend
'
,
'
test
'
,
'
mysterious
'
,
'
touhou
'
,
'
touhou_pc98
'
,
'
runtime_installed
'
];
current
App
:
Cube
;
current
Cube
:
Cube
;
private
apps
:
Map
<
string
,
Cube
>
;
private
apps
:
Map
<
string
,
Cube
>
;
resizing
:
HTMLElement
|
undefined
;
resizing
:
HTMLElement
|
undefined
;
...
@@ -36,29 +34,42 @@ export class LobbyComponent implements OnInit {
...
@@ -36,29 +34,42 @@ export class LobbyComponent implements OnInit {
private
messages
:
WebSocket
;
private
messages
:
WebSocket
;
constructor
(
private
appsService
:
CubesService
,
private
loginService
:
LoginService
,
constructor
(
private
cubesService
:
CubesService
,
private
loginService
:
LoginService
,
private
settingsService
:
SettingsService
,
private
ref
:
ChangeDetectorRef
,
private
settingsService
:
SettingsService
,
private
ref
:
ChangeDetectorRef
)
{
private
route
:
ActivatedRoute
,
private
router
:
Router
)
{
}
}
async
ngOnInit
()
{
async
ngOnInit
()
{
try
{
try
{
this
.
apps
=
await
this
.
app
sService
.
loadCubes
();
this
.
apps
=
await
this
.
cube
sService
.
loadCubes
();
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
error
);
console
.
error
(
error
);
//
if (confirm('获取程序列表失败,是否重试?')) {
if
(
confirm
(
'
获取程序列表失败,是否重试?
'
))
{
//
location.reload();
location
.
reload
();
//
} else {
}
else
{
//
window.close();
window
.
close
();
//
}
}
return
;
return
;
}
}
await
this
.
router
.
navigate
([
'
lobby
'
,
this
.
appsService
.
lastVisited
?
this
.
appsService
.
lastVisited
.
id
:
'
ygopro
'
]);
this
.
currentCube
=
this
.
cubesService
.
lastVisited
||
this
.
apps
.
get
(
'
ygopro
'
)
!
;
// this.route.params
// .switchMap((params: Params) => this.cubesService.getCube(params['id']))
// .subscribe((cube: Cube) => {
// if (cube) {
// this.currentCube = cube;
// this.cubesService.lastVisited = cube;
// } else {
// this.router.navigate(['lobby', this.cubesService.lastVisited ? this.cubesService.lastVisited.id : 'ygopro']);
// }
//
// // let top = await this.http.get('https://ygobbs.com/top.json').map(response => response.json()).toPromise();
// // console.log(top.topic_list.topics);
// });
await
this
.
app
sService
.
migrate
();
await
this
.
cube
sService
.
migrate
();
for
(
let
app
of
this
.
apps
.
values
())
{
for
(
let
app
of
this
.
apps
.
values
())
{
await
this
.
app
sService
.
update
(
app
);
await
this
.
cube
sService
.
update
(
app
);
}
}
// 特化个 YGOPRO 国际服聊天室。其他的暂时没需求。
// 特化个 YGOPRO 国际服聊天室。其他的暂时没需求。
...
@@ -75,8 +86,8 @@ export class LobbyComponent implements OnInit {
...
@@ -75,8 +86,8 @@ export class LobbyComponent implements OnInit {
this
.
messages
.
onmessage
=
async
(
event
)
=>
{
this
.
messages
.
onmessage
=
async
(
event
)
=>
{
let
data
=
JSON
.
parse
(
event
.
data
);
let
data
=
JSON
.
parse
(
event
.
data
);
console
.
log
(
data
);
console
.
log
(
data
);
this
.
apps
=
await
this
.
app
sService
.
loadCubes
();
this
.
apps
=
await
this
.
cube
sService
.
loadCubes
();
this
.
current
App
=
this
.
apps
.
get
(
this
.
currentApp
.
id
)
!
;
this
.
current
Cube
=
this
.
apps
.
get
(
this
.
currentCube
.
id
)
!
;
};
};
...
@@ -170,8 +181,7 @@ export class LobbyComponent implements OnInit {
...
@@ -170,8 +181,7 @@ export class LobbyComponent implements OnInit {
}
}
select
(
app
:
Cube
)
{
select
(
app
:
Cube
)
{
this
.
cubesService
.
lastVisited
=
app
;
this
.
appsService
.
lastVisited
=
app
;
}
}
...
@@ -201,8 +211,4 @@ export class LobbyComponent implements OnInit {
...
@@ -201,8 +211,4 @@ export class LobbyComponent implements OnInit {
}
}
return
result
;
return
result
;
}
}
openExternal
(
url
:
string
)
{
shell
.
openExternal
(
url
);
}
}
}
app/login/login.component.css
View file @
3508036d
:host
{
:host
{
flex
:
1
;
flex
:
1
;
display
:
flex
;
}
webview
{
flex-grow
:
1
;
}
}
app/login/login.component.html
deleted
100644 → 0
View file @
fc99d173
<webview
[src]=
"url"
(will-navigate)=
"return_sso($event.url)"
(did-get-redirect-request)=
"return_sso($event.newURL)"
(new-window)=
"openExternal($event.url)"
></webview>
app/login/login.component.ts
View file @
3508036d
...
@@ -8,15 +8,22 @@ import { LoginService } from '../login.service';
...
@@ -8,15 +8,22 @@ import { LoginService } from '../login.service';
import
{
Router
}
from
'
@angular/router
'
;
import
{
Router
}
from
'
@angular/router
'
;
@
Component
({
@
Component
({
selector
:
'
login
'
,
selector
:
'
webview[login]
'
,
template
Url
:
'
./login.component.html
'
,
template
:
'
'
,
styleUrls
:
[
'
./login.component.css
'
],
styleUrls
:
[
'
./login.component.css
'
],
host
:
{
'
[src]
'
:
'
url
'
,
'
(will-navigate)
'
:
'
return_sso($event.url)
'
,
'
(did-get-redirect-request)
'
:
'
return_sso($event.newURL)
'
,
'
(new-window)
'
:
'
openExternal($event.url)
'
}
})
})
export
class
LoginComponent
implements
OnInit
{
export
class
LoginComponent
implements
OnInit
{
shell
=
shell
;
url
:
string
;
url
:
string
;
readonly
return_sso_url
=
'
https://moecube.com/login_callback
'
;
// 这个url不会真的被使用,可以填写不存在的
readonly
return_sso_url
=
'
https://moecube.com/login_callback
'
;
// 这个url不会真的被使用,可以填写不存在的
constructor
(
private
router
:
Router
,
private
loginService
:
LoginService
)
{
constructor
(
private
loginService
:
LoginService
)
{
}
}
ngOnInit
()
{
ngOnInit
()
{
...
@@ -55,7 +62,7 @@ export class LoginComponent implements OnInit {
...
@@ -55,7 +62,7 @@ export class LoginComponent implements OnInit {
// 这里是 TypeScript 的一个bug,https://github.com/Microsoft/TypeScript/issues/15243
// 这里是 TypeScript 的一个bug,https://github.com/Microsoft/TypeScript/issues/15243
let
user
=
this
.
toObject
(
<
any
>
new
URLSearchParams
(
Buffer
.
from
(
token
,
'
base64
'
).
toString
()));
let
user
=
this
.
toObject
(
<
any
>
new
URLSearchParams
(
Buffer
.
from
(
token
,
'
base64
'
).
toString
()));
this
.
loginService
.
login
(
user
);
this
.
loginService
.
login
(
user
);
this
.
router
.
navigate
([
'
/
'
]);
//
this.router.navigate(['/']);
}
}
toObject
(
entries
:
Iterable
<
[
string
,
any
]
>
):
any
{
toObject
(
entries
:
Iterable
<
[
string
,
any
]
>
):
any
{
...
@@ -65,8 +72,4 @@ export class LoginComponent implements OnInit {
...
@@ -65,8 +72,4 @@ export class LoginComponent implements OnInit {
}
}
return
result
;
return
result
;
}
}
openExternal
(
url
:
string
)
{
shell
.
openExternal
(
url
);
}
}
}
app/moecube/moecube.component.html
View file @
3508036d
<nav
id=
"navbar"
class=
"navbar navbar-toggleable-md navbar-light"
>
<nav
id=
"navbar"
class=
"navbar navbar-toggleable-md navbar-light"
>
<a
id=
"navbar-brand"
class=
"navbar-brand"
href=
"#"
>
MoeCube
</a>
<a
id=
"navbar-brand"
class=
"navbar-brand"
href=
"#"
>
MoeCube
</a>
<ul
class=
"navbar-nav mr-auto"
>
<ul
class=
"navbar-nav mr-auto"
>
<ng-template
#login
>
<ng-template
#login
Nav
>
<li
class=
"nav-item active"
><a
i18n
class=
"nav-link"
href=
"#"
>
登录
</a></li>
<li
class=
"nav-item active"
><a
i18n
class=
"nav-link"
href=
"#"
>
登录
</a></li>
</ng-template>
</ng-template>
<ng-container
*ngIf=
"loginService.logged_in; else login"
>
<ng-container
*ngIf=
"loginService.logged_in; else loginNav"
>
<li
routerLinkActive=
"active"
class=
"nav-item"
><a
i18n
routerLink=
"lobby"
class=
"nav-link"
href=
"#"
>
游戏
</a></li>
<li
[class.active]=
"currentPage === 'lobby'"
class=
"nav-item"
>
<li
routerLinkActive=
"active"
class=
"nav-item"
><a
i18n
routerLink=
"community"
class=
"nav-link"
href=
"#"
>
社区
</a>
<a
i18n
(click)=
"currentPage = 'lobby'"
class=
"nav-link"
href=
"#"
>
游戏
</a>
</li>
<li
[class.active]=
"currentPage === 'community'"
class=
"nav-item"
>
<a
i18n
(click)=
"currentPage = 'community'"
class=
"nav-link"
href=
"#"
>
社区
</a>
</li>
</li>
</ng-container>
</ng-container>
...
@@ -16,14 +19,14 @@
...
@@ -16,14 +19,14 @@
<update></update>
<update></update>
<ul
class=
"navbar-nav mr-auto"
*ngIf=
"loginService.logged_in"
>
<ul
class=
"navbar-nav mr-auto"
*ngIf=
"loginService.logged_in"
>
<li
routerLinkActive=
"active
"
class=
"nav-item dropdown"
>
<li
[class.active]=
"currentPage === 'profile'
"
class=
"nav-item dropdown"
>
<a
class=
"nav-link dropdown-toggle"
data-toggle=
"dropdown"
role=
"button"
>
<a
class=
"nav-link dropdown-toggle"
data-toggle=
"dropdown"
role=
"button"
>
<img
id=
"avatar"
[src]=
"loginService.user.avatar_url"
alt=
"avatar"
>
<img
id=
"avatar"
[src]=
"loginService.user.avatar_url"
alt=
"avatar"
>
{{loginService.user.username}}
{{loginService.user.username}}
</a>
</a>
<div
class=
"dropdown-menu"
>
<div
class=
"dropdown-menu"
>
<a
i18n
class=
"dropdown-item"
routerLink=
"profile
"
>
个人资料
</a>
<a
i18n
class=
"dropdown-item"
(click)=
"currentPage = 'profile'
"
>
个人资料
</a>
<a
i18n
(click)=
"loginService.logout()"
routerLink=
"login"
class=
"dropdown-item"
>
切换用户
</a>
<a
i18n
(click)=
"loginService.logout()"
class=
"dropdown-item"
>
切换用户
</a>
<a
i18n
data-toggle=
"modal"
data-target=
"#settings-modal"
class=
"dropdown-item"
href=
"#"
>
设置
</a>
<a
i18n
data-toggle=
"modal"
data-target=
"#settings-modal"
class=
"dropdown-item"
href=
"#"
>
设置
</a>
</div>
</div>
</li>
</li>
...
@@ -33,7 +36,14 @@
...
@@ -33,7 +36,14 @@
</div>
</div>
</nav>
</nav>
<router-outlet></router-outlet>
<ng-template
#login
>
<webview
login
></webview>
</ng-template>
<ng-container
*ngIf=
"loginService.logged_in; else login"
>
<lobby
[hidden]=
"currentPage !== 'lobby'"
></lobby>
<webview
community
[hidden]=
"currentPage !== 'community'"
></webview>
<webview
profile
*ngIf=
"currentPage === 'profile'"
></webview>
</ng-container>
<!-- Modal -->
<!-- Modal -->
<div
class=
"modal fade"
id=
"settings-modal"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"myModalLabel"
aria-hidden=
"true"
>
<div
class=
"modal fade"
id=
"settings-modal"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"myModalLabel"
aria-hidden=
"true"
>
...
...
app/moecube/moecube.component.ts
View file @
3508036d
...
@@ -13,6 +13,7 @@ import { SettingsService } from '../settings.sevices';
...
@@ -13,6 +13,7 @@ import { SettingsService } from '../settings.sevices';
export
class
MoeCubeComponent
implements
OnInit
{
export
class
MoeCubeComponent
implements
OnInit
{
locale
:
string
;
locale
:
string
;
currentPage
=
'
lobby
'
;
constructor
(
public
loginService
:
LoginService
,
private
settingsService
:
SettingsService
)
{
constructor
(
public
loginService
:
LoginService
,
private
settingsService
:
SettingsService
)
{
}
}
...
...
app/profile/profile.component.css
View file @
3508036d
:host
{
:host
{
flex
:
1
;
flex
:
1
;
display
:
flex
;
}
webview
{
flex-grow
:
1
;
}
}
app/profile/profile.component.html
deleted
100644 → 0
View file @
fc99d173
<webview
src=
"https://accounts.moecube.com/profiles"
(new-window)=
"openExternal($event.url)"
></webview>
app/profile/profile.component.ts
View file @
3508036d
...
@@ -7,9 +7,11 @@ declare const URLSearchParams: any;
...
@@ -7,9 +7,11 @@ declare const URLSearchParams: any;
@
Component
({
@
Component
({
selector
:
'
profile
'
,
selector
:
'
webview[profile]
'
,
template
Url
:
'
./profile.component.html
'
,
template
:
'
'
,
styleUrls
:
[
'
./profile.component.css
'
],
styleUrls
:
[
'
./profile.component.css
'
],
host
:
{
'
src
'
:
'
https://accounts.moecube.com/profiles
'
,
'
(new-window)
'
:
'
openExternal($event.url)
'
}
})
})
export
class
ProfileComponent
{
export
class
ProfileComponent
{
}
}
app/routing.sevices.ts
0 → 100644
View file @
3508036d
/**
* Created by weijian on 2016/10/24.
*/
import
{
Injectable
}
from
'
@angular/core
'
;
import
{
Cube
}
from
'
./cube
'
;
interface
Community
{
id
:
string
,
url
:
string
}
@
Injectable
()
export
class
RoutingService
{
currentPage
=
'
lobby
'
;
currentCube
:
Cube
;
communities
=
[
{
id
:
'
ygopro
'
,
url
:
'
http://ygobbs.com
'
},
{
id
:
'
oz
'
,
url
:
'
http://fuckoz.com
'
}
];
currentCommunity
=
this
.
communities
[
0
];
currentCommunityURL
=
this
.
currentCommunity
.
url
;
navigate
(
page
,
item
?:
Cube
|
Community
,
url
?)
{
this
.
currentPage
=
page
;
switch
(
page
)
{
case
'
community
'
:
if
(
item
)
{
this
.
currentCommunity
=
<
Community
>
item
;
}
if
(
url
)
{
this
.
currentCommunityURL
=
url
;
}
break
;
case
'
lobby
'
:
if
(
item
)
{
this
.
currentCube
=
<
Cube
>
item
;
}
break
;
}
}
getCommunity
(
id
)
{
return
this
.
communities
.
find
((
item
)
=>
item
.
id
===
id
);
}
}
package.json
View file @
3508036d
...
@@ -27,13 +27,16 @@
...
@@ -27,13 +27,16 @@
"
@angular/platform-browser-dynamic
"
:
"
latest
"
,
"
@angular/platform-browser-dynamic
"
:
"
latest
"
,
"
@angular/platform-server
"
:
"
latest
"
,
"
@angular/platform-server
"
:
"
latest
"
,
"
@angular/router
"
:
"
latest
"
,
"
@angular/router
"
:
"
latest
"
,
"
@types/uuid
"
:
"
^2.0.29
"
,
"
angular-in-memory-web-api
"
:
"
latest
"
,
"
angular-in-memory-web-api
"
:
"
latest
"
,
"
aria2
"
:
"
latest
"
,
"
aria2
"
:
"
latest
"
,
"
bootstrap
"
:
"
next
"
,
"
bootstrap
"
:
"
next
"
,
"
candy
"
:
"
https://github.com/moecube/candy/releases/download/v2.2.0/candy.tar.gz
"
,
"
candy
"
:
"
https://github.com/moecube/candy/releases/download/v2.2.0/candy.tar.gz
"
,
"
candy-shop
"
:
"
zh99998/candy-plugins#patch-5
"
,
"
candy-shop
"
:
"
zh99998/candy-plugins#patch-5
"
,
"
core-js
"
:
"
latest
"
,
"
core-js
"
:
"
latest
"
,
"
electron-cookies
"
:
"
^1.1.0
"
,
"
electron-is-dev
"
:
"
latest
"
,
"
electron-is-dev
"
:
"
latest
"
,
"
electron-schema
"
:
"
moecube/electron-schema
"
,
"
electron-sudo
"
:
"
moecube/electron-sudo#moecube
"
,
"
electron-sudo
"
:
"
moecube/electron-sudo#moecube
"
,
"
electron-updater
"
:
"
latest
"
,
"
electron-updater
"
:
"
latest
"
,
"
font-awesome
"
:
"
latest
"
,
"
font-awesome
"
:
"
latest
"
,
...
@@ -49,6 +52,7 @@
...
@@ -49,6 +52,7 @@
"
systemjs-plugin-text
"
:
"
latest
"
,
"
systemjs-plugin-text
"
:
"
latest
"
,
"
tether
"
:
"
latest
"
,
"
tether
"
:
"
latest
"
,
"
typeahead.js
"
:
"
latest
"
,
"
typeahead.js
"
:
"
latest
"
,
"
uuid
"
:
"
latest
"
,
"
vue
"
:
"
latest
"
,
"
vue
"
:
"
latest
"
,
"
zone.js
"
:
"
latest
"
"
zone.js
"
:
"
latest
"
},
},
...
...
systemjs.config.js
View file @
3508036d
...
@@ -76,7 +76,13 @@
...
@@ -76,7 +76,13 @@
'
tether
'
:
'
npm:tether/dist/js/tether.min.js
'
,
'
tether
'
:
'
npm:tether/dist/js/tether.min.js
'
,
'
bootstrap
'
:
'
npm:bootstrap/dist/js/bootstrap.min.js
'
,
'
bootstrap
'
:
'
npm:bootstrap/dist/js/bootstrap.min.js
'
,
'
reconnecting-websocket
'
:
'
npm:reconnecting-websocket/dist/index.js
'
,
'
reconnecting-websocket
'
:
'
npm:reconnecting-websocket/dist/index.js
'
,
'
reflect-metadata
'
:
'
npm:reflect-metadata/Reflect.js
'
'
reflect-metadata
'
:
'
npm:reflect-metadata/Reflect.js
'
,
'
electron-schema
'
:
'
npm:electron-schema/index.js
'
,
'
electron-cookies
'
:
'
npm:electron-cookies/src/index.js
'
,
'
uuid
'
:
'
@node/uuid
'
,
'
candy
'
:
'
npm:candy/candy.min.js
'
,
'
candy-libs
'
:
'
npm:candy/libs.min.js
'
,
'
candy-shop
'
:
'
npm:candy-shop/index.js
'
},
},
// packages tells the System loader how to load when no filename and/or no extension
// packages tells the System loader how to load when no filename and/or no extension
packages
:
{
packages
:
{
...
...
tsconfig.json
View file @
3508036d
...
@@ -10,9 +10,10 @@
...
@@ -10,9 +10,10 @@
"es2017"
,
"es2017"
,
"dom"
"dom"
],
],
"noImplicitAny"
:
tru
e
,
"noImplicitAny"
:
fals
e
,
"suppressImplicitAnyIndexErrors"
:
true
,
"suppressImplicitAnyIndexErrors"
:
true
,
"strictNullChecks"
:
true
,
"strictNullChecks"
:
true
,
"skipLibCheck"
:
true
"skipLibCheck"
:
true
,
"allowJs"
:
true
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment