Skip to content

Commit 380c703

Browse files
committed
1.x - Creating functionality for sharing module
1 parent 33db34d commit 380c703

File tree

5 files changed

+69
-85
lines changed

5 files changed

+69
-85
lines changed

src/app/app.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div class="loading-bar" [ngClass]="loading ? 'active' : 'inactive' "></div>
1+
<div class="loading-bar inactive"></div>
22
<header>
33
<div class="win-controls">
44
<button id="win-minimize"><span class="fa fa-window-minimize"></span></button>

src/app/app.component.ts

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import { Component, ChangeDetectorRef, OnInit } from '@angular/core';
22
import { YoutubeGetVideo } from './config/youtube.config';
33
import { SharedService } from './config/shared.module';
44
import { FormControl, FormGroup, Validators } from '@angular/forms';
5-
import { Router, Event as RouterEvent, NavigationStart, NavigationEnd, NavigationCancel, NavigationError } from '@angular/router';
6-
import 'rxjs/add/operator/map';
75

86
@Component({
97
selector: 'app-yt',
@@ -14,8 +12,8 @@ export class AppComponent implements OnInit {
1412

1513
searchForm: FormGroup;
1614

17-
relatedVideos = false;
18-
feedVideos = false;
15+
relatedVideos: Array<any>;
16+
feedVideos: Array<any>;
1917

2018
debuggingInfo = false;
2119

@@ -40,36 +38,14 @@ export class AppComponent implements OnInit {
4038

4139
loading: boolean = true;
4240

43-
constructor(private youtube: YoutubeGetVideo, private ref: ChangeDetectorRef, private router: Router, private shared:SharedService) {
41+
constructor(private youtube: YoutubeGetVideo, private ref: ChangeDetectorRef, private shared:SharedService) {
4442
this._ref = ref;
4543
this._shared = shared;
46-
router.events.subscribe((event: RouterEvent) => {
47-
this.navigationInterceptor(event);
48-
});
4944
}
5045

5146
ngOnInit() {
5247
console.log('app comp');
53-
console.log(this._shared);
54-
this.feedVideos = this._shared.feedVideos;
55-
this.setDefaultPlayer();
56-
}
57-
58-
navigationInterceptor(event: RouterEvent) {
59-
if (event instanceof NavigationStart) {
60-
this.loading = true;
61-
}
62-
if (event instanceof NavigationEnd) {
63-
this.loading = false;
64-
}
65-
66-
// Set loading state to false in both of the below events to hide the spinner in case a request fails
67-
if (event instanceof NavigationCancel) {
68-
this.loading = false;
69-
}
70-
if (event instanceof NavigationError) {
71-
this.loading = false;
72-
}
48+
this.getFeedVideos();
7349
}
7450

7551
onClickRelated(event: Event, i: number) {
@@ -94,6 +70,15 @@ export class AppComponent implements OnInit {
9470
return playerVars;
9571
}
9672

73+
getFeedVideos() {
74+
this._shared.getFeed().subscribe(data => {
75+
if(data) {
76+
this.feedVideos = data;
77+
this.setDefaultPlayer();
78+
}
79+
});
80+
}
81+
9782
getRelatedVideos() {
9883
this.youtube.relatedVideos(this.currentVideoID).subscribe(
9984
result => {

src/app/components/youtube-search.component.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export class SearchComponent implements OnInit {
2727

2828
ngOnInit() {
2929
console.log('search');
30-
console.log(this._shared);
3130
this.searchFunction();
3231
this.getFeedVideos();
3332
}
@@ -54,16 +53,11 @@ export class SearchComponent implements OnInit {
5453
}
5554

5655
getFeedVideos() {
57-
this.youtube.feedVideos().subscribe(
58-
result => {
59-
this.feedVideos = result.items;
60-
this._shared.feedVideos = this.feedVideos;
61-
//this._app.setDefaultPlayer(this.feedVideos);
62-
},
63-
error => {
64-
console.log('error on feed videos');
65-
}
66-
);
56+
this._shared.getFeed().subscribe(data => {
57+
if(data) {
58+
this.feedVideos = data;
59+
}
60+
});
6761
}
6862

6963
clearSearch() {
@@ -76,6 +70,7 @@ export class SearchComponent implements OnInit {
7670
}
7771

7872
onClickVideo(event: Event, i: any, list: number) {
73+
console.log(i, list);
7974
if (list === 1) {
8075
const videoID = this.videos[i].id.videoId;
8176
const videoName = this.videos[i].snippet.title;

src/app/components/youtube-settings.component.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,13 @@ export class SettingsComponent implements OnInit {
2828

2929
ngOnInit() {
3030
console.log('settings');
31-
console.log(this._shared);
32-
this.fetchJSONsettings();
31+
this._shared.getSettings().subscribe(data => {
32+
if(data) {
33+
this.playerAttr.settings = data;
34+
this.finished = true;
35+
this.setForm();
36+
}
37+
});
3338
}
3439

3540
setForm() {
@@ -43,20 +48,6 @@ export class SettingsComponent implements OnInit {
4348
return this.settingsForm.get('settings') as FormArray;
4449
};
4550

46-
fetchJSONsettings() {
47-
this.http.get('assets/settings.json')
48-
.map(res => res.json())
49-
.subscribe(
50-
data => {
51-
this.playerAttr.settings = data;
52-
},
53-
err => console.log('JSON Settings ' + err),
54-
() => {
55-
this.finished = true; this.setForm();
56-
}
57-
);
58-
}
59-
6051
checkInputs() {
6152
this._shared.settings = this.playerAttr.settings;
6253
//this._app.setSettings(this.playerAttr.settings, 1);

src/app/config/shared.module.ts

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,57 @@
1-
import { Component, Injectable, OnInit } from '@angular/core';
1+
import { Component, Injectable } from '@angular/core';
22
import { YoutubeGetVideo } from './youtube.config';
3+
import { Http } from '@angular/http';
34
import { Observable } from 'rxjs/Observable';
4-
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
55
import 'rxjs/add/operator/map';
66

7-
export interface Todo {
8-
id: number | string;
9-
createdAt: number;
10-
value: string;
11-
}
12-
137
@Injectable()
14-
export class SharedService implements OnInit{
8+
export class SharedService {
159

16-
todos: Observable<Todo[]>
17-
private _todos: BehaviorSubject<Todo[]>;
18-
private baseUrl: string;
19-
private dataStore: {
20-
todos: Todo[]
21-
};
10+
videoID: string;
11+
feedVideos: Array<Object>;
12+
settings: Array<Object>;
2213

14+
constructor(private youtube: YoutubeGetVideo, private http: Http) {
2315

24-
constructor(private youtube: YoutubeGetVideo) {
25-
this._todos = <BehaviorSubject<Todo[]>>new BehaviorSubject([]);
26-
this._todos.asObservable();
2716
}
2817

29-
ngOnInit(){
30-
this.player();
18+
getFeed(): Observable<any> {
19+
return new Observable(observer => {
20+
if (this.feedVideos) {
21+
observer.next(this.feedVideos);
22+
return observer.complete();
23+
}
24+
this.youtube.feedVideos().subscribe(
25+
result => {
26+
this.feedVideos = result.items;
27+
observer.next(this.feedVideos);
28+
observer.complete();
29+
},
30+
error => {
31+
console.log('error on feed videos');
32+
}
33+
);
34+
});
3135
}
3236

33-
player() {
34-
this.youtube.feedVideos().subscribe(
35-
result => {
36-
this.dataStore.todos = result.items;
37-
this._todos.next(Object.assign({}, this.dataStore).todos);
38-
},
39-
error => {
40-
console.log('error on feed videos');
37+
getSettings(): Observable<any> {
38+
return new Observable(observer => {
39+
if (this.settings) {
40+
observer.next(this.settings);
41+
return observer.complete();
4142
}
42-
);
43+
this.http.get('assets/settings.json')
44+
.map(res => res.json())
45+
.subscribe(
46+
data => {
47+
this.settings = data;
48+
observer.next(this.settings);
49+
observer.complete();
50+
},
51+
err => {
52+
console.log('JSON Settings ' + err);
53+
}
54+
);
55+
});
4356
}
4457
}

0 commit comments

Comments
 (0)