+ Email will be sent only if provided email is valid and associated with any account on Summarize.
+
+
+ In case of difficulty contact support team from Help & support page.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/auth/pages/reset-password/reset-password.component.scss b/src/app/auth/pages/reset-password/reset-password.component.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/src/app/auth/pages/reset-password/reset-password.component.spec.ts b/src/app/auth/pages/reset-password/reset-password.component.spec.ts
new file mode 100644
index 00000000..0d4b6dee
--- /dev/null
+++ b/src/app/auth/pages/reset-password/reset-password.component.spec.ts
@@ -0,0 +1,24 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+import { IonicModule } from '@ionic/angular';
+
+import { ResetPasswordComponent } from './reset-password.component';
+
+describe('ResetPasswordComponent', () => {
+ let component: ResetPasswordComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ResetPasswordComponent ],
+ imports: [IonicModule.forRoot()]
+ }).compileComponents();
+
+ fixture = TestBed.createComponent(ResetPasswordComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ }));
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/auth/pages/reset-password/reset-password.component.ts b/src/app/auth/pages/reset-password/reset-password.component.ts
new file mode 100644
index 00000000..b7889922
--- /dev/null
+++ b/src/app/auth/pages/reset-password/reset-password.component.ts
@@ -0,0 +1,35 @@
+import { Component, OnInit } from '@angular/core';
+import { AuthService } from '../../service/auth.service';
+import { ToasterService } from 'src/app/services/toaster/toaster.service';
+
+@Component({
+ selector: 'app-reset-password',
+ templateUrl: './reset-password.component.html',
+ styleUrls: ['./reset-password.component.scss'],
+})
+export class ResetPasswordComponent {
+ pageTitle = 'Reset password';
+ email:string;
+
+ constructor(
+ private authService: AuthService,
+ private toaster: ToasterService
+ ) {}
+
+
+ async resetPassword() {
+ try {
+ await this.authService.resetPassword(this.email);
+ this.toaster.showToast('Password reset email sent!',"success");
+ } catch (error) {
+ console.log(error);
+
+ if (error.code === 'auth/user-not-found') {
+ this.toaster.showToast('No user found with this email.', "warning");
+ } else {
+ this.toaster.showToast('Error resetting password. Please try again.', "warning");
+ }
+ }
+ }
+
+}
diff --git a/src/app/services/auth/auth.service.spec.ts b/src/app/auth/service/auth.service.spec.ts
similarity index 100%
rename from src/app/services/auth/auth.service.spec.ts
rename to src/app/auth/service/auth.service.spec.ts
diff --git a/src/app/services/auth/auth.service.ts b/src/app/auth/service/auth.service.ts
similarity index 64%
rename from src/app/services/auth/auth.service.ts
rename to src/app/auth/service/auth.service.ts
index 998527c1..a1d408bc 100644
--- a/src/app/services/auth/auth.service.ts
+++ b/src/app/auth/service/auth.service.ts
@@ -13,9 +13,11 @@ import {
AngularFirestoreDocument,
} from '@angular/fire/compat/firestore';
import { Router } from '@angular/router';
+import { error } from 'console';
import firebase from 'firebase/compat/app';
import { Observable, map } from 'rxjs';
import { User } from 'src/app/models/interface/user.model';
+import { ToasterService } from 'src/app/services/toaster/toaster.service';
@Injectable({
providedIn: 'root',
@@ -30,12 +32,13 @@ export class AuthService {
private auth: Auth,
private afs: AngularFirestore,
private afAuth: AngularFireAuth,
- private router: Router
+ private router: Router,
+ private toaster:ToasterService
) {
- // Subscribe to authentication state changes
- this.isLoggedIn$ = this.afAuth.authState.pipe(
- map(user => !!user) // Convert user object to boolean (true if logged in, false if not)
- );
+ // Subscribe to authentication state changes
+ this.isLoggedIn$ = this.afAuth.authState.pipe(
+ map((user) => !!user) // Convert user object to boolean (true if logged in, false if not)
+ );
}
async register(email: any, password: any) {
@@ -52,18 +55,45 @@ export class AuthService {
}
}
- async login(email: any, password: any) {
+ async login(email: string, password: string) {
try {
- const user = await signInWithEmailAndPassword(this.auth, email, password);
- await this.getEmailBasedUser(user.user);
- localStorage.setItem('user', JSON.stringify(user.user));
+ const userCredential = await signInWithEmailAndPassword(
+ this.auth,
+ email,
+ password
+ );
+ const user = userCredential.user;
+ await this.getEmailBasedUser(user);
+ localStorage.setItem('user', JSON.stringify(user));
this.isLogin = true;
+ this.toaster.showToast("Login Success!","success")
return user;
- } catch (e) {
+ } catch (error) {
+ const errorCode = error.code;
+ let errorMessage = 'An error occurred. Please try again.';
+
+ switch (errorCode) {
+ case "auth/invalid-login-credentials":
+ errorMessage = "Invalid credentials"
+ break;
+ case 'auth/user-not-found':
+ errorMessage = 'User not found. Please check your email.';
+ break;
+ case 'auth/wrong-password':
+ errorMessage = 'Invalid password. Please try again.';
+ break;
+ case 'auth/invalid-email':
+ errorMessage = 'Invalid email address. Please enter a valid email.';
+ break;
+
+ default:
+ errorMessage =" Unknown error occurred"
+ break;
+ }
+ this.toaster.showToast(errorMessage,"danger")
return null;
}
}
-
logout() {
this.isLogin = false;
localStorage.clear();
@@ -84,19 +114,18 @@ export class AuthService {
// console.log(error);
});
}
-
- async googleSignin():Promise {
+
+ async googleSignin(): Promise {
// this.GoogleAuth()
let provider = new GoogleAuthProvider();
// console.log(typeof( provider));
const credential = await this.afAuth.signInWithPopup(provider);
- if (credential) {
- this.isLogin = true;
- this.updateUserData(credential.user);
- return credential.user
- }
- else{
- return null
+ if (credential) {
+ this.isLogin = true;
+ this.updateUserData(credential.user);
+ return credential.user;
+ } else {
+ return null;
}
}
async getEmailBasedUser(user: any) {
@@ -134,4 +163,8 @@ export class AuthService {
userRef.set(data, { merge: true });
}
}
-}
\ No newline at end of file
+
+ async resetPassword(email: string): Promise {
+ return this.afAuth.sendPasswordResetEmail(email);
+ }
+}
diff --git a/src/app/pages/home/home.page.ts b/src/app/pages/home/home.page.ts
index 43cce559..344d6ffd 100644
--- a/src/app/pages/home/home.page.ts
+++ b/src/app/pages/home/home.page.ts
@@ -1,34 +1,57 @@
-import { Component, OnInit } from '@angular/core';
-import { MasterData } from 'src/app/models/class/masterData/master-data';
-import { SeoTags } from 'src/app/models/class/seoTags/seo';
-import { SeoService } from 'src/app/services/seo/seo.service';
+import { Component, OnInit } from "@angular/core";
+import { MasterData } from "src/app/models/class/masterData/master-data";
+import { SeoTags } from "src/app/models/class/seoTags/seo";
+import { SeoService } from "src/app/services/seo/seo.service";
+import { RealTimeDataBaseService } from "src/app/shared/db/real-time-data-base.service";
@Component({
- selector: 'app-home',
- templateUrl: './home.page.html',
- styleUrls: ['./home.page.scss'],
+ selector: "app-home",
+ templateUrl: "./home.page.html",
+ styleUrls: ["./home.page.scss"],
})
export class HomePage implements OnInit {
- pageTitle = 'Home';
+ pageTitle = "Home";
title = SeoTags.pageTitle.homePage;
pageMetaTags = SeoTags.homePageTags;
features = MasterData.features;
fabActionButtons = [
- { title: 'Goal', color: 'secondary', url: '/goal', icon: 'bulb' },
- { title: 'Expenses', color: 'success', url: '/expenses', icon: 'cash' },
- { title: 'Studies', color: 'primary', url: '/studies', icon: 'book' },
- { title: 'Time', color: 'danger', url: '/time', icon: 'hourglass' },
+ { title: "Goal", color: "secondary", url: "/goal", icon: "bulb" },
+ { title: "Expenses", color: "success", url: "/expenses", icon: "cash" },
+ { title: "Studies", color: "primary", url: "/studies", icon: "book" },
+ { title: "Time", color: "danger", url: "/time", icon: "hourglass" },
];
paragraphs = [
"Summarize is an app that helps you to manage your Time, Money, and work which includes but is not limited to subject-wise studies, notes, to-do's, or office works.",
- 'Thinking when to use Summarize? To live better and managed, one should recall what they have done throughout the day daily before sleep . Also listing tasks for the next day and setting priorities increases the chances to get them done.',
- 'Currently, Summarize is under development, we will keep on adding features one by one. Till then, please feel free to manage Achievements of day, Expenses, Studies, and Time. It is a web-app that can be easily installed on all devices ( Mobile & PC ). Install the app on your devices to keep in sync and to check how to install visit our Help page.',
- 'Note: Your data will not be used for any advertisement or offering any deal/scheme. Also our app donot need any permission to work on your device. Your privacy is important to us. For more queries, you can contact us through the support page. We are also open to feature requests and suggestions.',
+ "Thinking when to use Summarize? To live better and managed, one should recall what they have done throughout the day daily before sleep . Also listing tasks for the next day and setting priorities increases the chances to get them done.",
+ "Currently, Summarize is under development, we will keep on adding features one by one. Till then, please feel free to manage Achievements of day, Expenses, Studies, and Time. It is a web-app that can be easily installed on all devices ( Mobile & PC ). Install the app on your devices to keep in sync and to check how to install visit our Help page.",
+ "Note: Your data will not be used for any advertisement or offering any deal/scheme. Also our app don't need any permission to work on your device. Your privacy is important to us. For more queries, you can contact us through the support page. We are also open to feature requests and suggestions.",
];
- constructor(private seoService: SeoService) {}
+ homeData: any;
+ constructor(
+ private seoService: SeoService,
+ private rtdb: RealTimeDataBaseService
+ ) {}
ngOnInit() {
this.seoService.seo(this.title, this.pageMetaTags);
+ // this.getHomeData();
+ // this.addTemporaryData();
}
+ getHomeData(): void {
+ this.rtdb.getHomeData().subscribe((data) => {
+ this.paragraphs = data.paragraph.content;
+ console.log(this.paragraphs);
+ });
+ }
+ addTemporaryData(): void {
+ this.rtdb
+ .addTemporaryData()
+ .then(() => {
+ console.log("Temporary data added successfully.");
+ })
+ .catch((error) => {
+ console.error("Error adding temporary data:", error);
+ });
+ }
}
diff --git a/src/app/pages/login/login.page.html b/src/app/pages/login/login.page.html
deleted file mode 100644
index a01cc078..00000000
--- a/src/app/pages/login/login.page.html
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
- {{ pageTitle }}
-
-
-
-
-
-
- {{ pageTitle }}
-
-
-
-
Welcome to Summarize!
- *Please Install before login. For installation guide (check here)
-
-
-
-
-
-
Login with Google (Recommended)
- Login with Google
-
-
-
-
-
-
-
Why use Google Login?
-
-
More Secure
-
Easy process
-
No need to remember password
-
Hassle free login on other device.
-
-
Error on Login / Sign Up?
-
-
If there is no specific reason to use email, Try Login with Google.
-
For Email based, if you already have an account, Create account will not work.
-
If you don't have an account, Login will not work for you. Create an account first.
-
Verification of email is required in next step. Please use valid email, else account will be deleted in next 7 days.
-
-
Have doubts / questions about Summarize?
-
-
How to install Summarize? : Visit our Help page.
-
Why should I use Summarize? : Visit About page
-
What is the purpose of this tool? : Check our pages and for details read About Page.
-
-
-
diff --git a/src/app/pages/time/time.page.ts b/src/app/pages/time/time.page.ts
index 19aea5cd..58860df6 100644
--- a/src/app/pages/time/time.page.ts
+++ b/src/app/pages/time/time.page.ts
@@ -1,76 +1,58 @@
-import { Component, OnDestroy, OnInit } from '@angular/core';
-import { Clipboard } from '@capacitor/clipboard';
-import { serverTimestamp } from '@angular/fire/firestore';
-import { FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { OfficeService } from 'src/app/services/office/office.service';
-import { SeoService } from 'src/app/services/seo/seo.service';
-import { CustomDate } from 'src/app/models/class/date/custom-date';
-import { AlertService } from 'src/app/services/alert/alert.service';
-import { DatePipe } from '@angular/common';
-import { Project } from 'src/app/models/interface/profile.interface';
-import { ProfileService } from 'src/app/services/profile/profile.service';
-import { WorkInterface } from 'src/app/models/interface/work.interface';
-import { SeoTags } from 'src/app/models/class/seoTags/seo';
-import { TimeFunctions } from 'src/app/models/functions/time.function';
+import { Component, OnDestroy, OnInit } from "@angular/core";
+import { Clipboard } from "@capacitor/clipboard";
+import { serverTimestamp } from "@angular/fire/firestore";
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { OfficeService } from "src/app/services/office/office.service";
+import { SeoService } from "src/app/services/seo/seo.service";
+import { CustomDate } from "src/app/models/class/date/custom-date";
+import { AlertService } from "src/app/services/alert/alert.service";
+import { DatePipe } from "@angular/common";
+import { Project } from "src/app/models/interface/profile.interface";
+import { ProfileService } from "src/app/services/profile/profile.service";
+import { WorkInterface } from "src/app/models/interface/work.interface";
+import { SeoTags } from "src/app/models/class/seoTags/seo";
+import { TimeFunctions } from "src/app/models/functions/time.function";
@Component({
- selector: 'app-time',
- templateUrl: './time.page.html',
- styleUrls: ['./time.page.scss'],
+ selector: "app-time",
+ templateUrl: "./time.page.html",
+ styleUrls: ["./time.page.scss"],
})
-export class TimePage implements OnInit {
+export class TimePage implements OnInit, OnDestroy {
constructor(
private fb: FormBuilder,
private seoService: SeoService,
private officeService: OfficeService,
private alertService: AlertService,
private datePipe: DatePipe,
- private profileService: ProfileService
+ private profileService: ProfileService,
) {}
- pageTitle = 'Time';
+ pageTitle = "Time";
pageMetaTags = SeoTags.timePageTags;
projectSubscription: any;
Works: any = [];
worksCount: number = 0;
getCount: number = 0;
currentDate = new Date();
- currentTime = this.datePipe.transform(this.currentDate, 'hh:mm');
+ currentTime = this.datePipe.transform(this.currentDate, "hh:mm");
workByDate: any = [];
projects: Project[] = [];
editMode: Boolean = false;
editWorkData: WorkInterface;
updateSubmitted: Boolean = false;
- dateToday: string | null = this.datePipe.transform(new Date(), 'yyyy-MM-dd');
- workOf = this.datePipe.transform(new Date(), 'yyyy-MM-dd');
+ dateToday: string | null = this.datePipe.transform(new Date(), "yyyy-MM-dd");
+ workOf = this.datePipe.transform(new Date(), "yyyy-MM-dd");
// workSummaryOf = '';
totalWorkingHours: any;
workForm: FormGroup = this.fb.group({
createdAt: [serverTimestamp()],
- date: [
- this.dateToday,
- [Validators.required, Validators.pattern('^[a-zA-Z 0-9 .,-]*$')],
- ],
- startTime: [
- '',
- [Validators.required, Validators.pattern('^[a-zA-Z0-9 :-]*$')],
- ],
- endTime: [
- this.currentTime,
- [Validators.required, Validators.pattern('^[a-zA-Z0-9 :-]*$')],
- ],
- project: [
- '',
- [Validators.required, Validators.pattern('^[a-zA-Z 0-9 :/.,-]*$')],
- ],
- type: [
- 'coding',
- [Validators.required, Validators.pattern('^[a-zA-Z 0-9 :/.,-]*$')],
- ],
- description: [
- '',
- [Validators.required, Validators.pattern("^[a-zA-Z0-9\n .,-:']*$")],
- ],
+ date: [this.dateToday, [Validators.required, Validators.pattern("^[a-zA-Z 0-9 .,-]*$")]],
+ startTime: ["", [Validators.required, Validators.pattern("^[a-zA-Z0-9 :-]*$")]],
+ endTime: [this.currentTime, [Validators.required, Validators.pattern("^[a-zA-Z0-9 :-]*$")]],
+ project: ["", [Validators.required, Validators.pattern("^[a-zA-Z 0-9 :/.,-]*$")]],
+ type: ["coding", [Validators.required, Validators.pattern("^[a-zA-Z 0-9 :/.,-]*$")]],
+ description: ["", [Validators.required, Validators.pattern("^[a-zA-Z0-9\n .,-:']*$")]],
updatedAt: [serverTimestamp()],
});
@@ -97,24 +79,22 @@ export class TimePage implements OnInit {
}
async getProjects() {
- this.projectSubscription = await this.profileService
- .getProjects()
- .subscribe((res: any) => {
- this.projects = res;
- if (this.projects.length > 0) {
- this.workForm.patchValue({
- project: this.projects[0].name,
- });
- }
- });
+ this.projectSubscription = await this.profileService.getProjects().subscribe((res: any) => {
+ this.projects = res;
+ if (this.projects.length > 0) {
+ this.workForm.patchValue({
+ project: this.projects[0].name,
+ });
+ }
+ });
}
async addWork() {
const response = await this.officeService.addWork(this.workForm.value);
if (response) {
this.workForm.patchValue({
- startTime: '',
- description: '',
+ startTime: "",
+ description: "",
});
}
}
@@ -139,37 +119,36 @@ export class TimePage implements OnInit {
this.updateSubmitted = true;
const response = await this.officeService.updateWork(
this.workForm.value,
- this.editWorkData.idField
+ this.editWorkData.idField,
);
if (response) {
this.cancelUpdate();
this.backToDefault();
- }
- else{
+ } else {
this.updateSubmitted = false;
}
}
-
+
cancelUpdate() {
this.editMode = false;
this.workForm.markAsUntouched();
this.updateSubmitted = false;
}
-
+
backToDefault() {
this.workForm.reset({
date: this.dateToday,
- startTime: '',
+ startTime: "",
endTime: this.currentTime,
project: this.projects[0].name,
- type: 'coding',
- description: '',
- updatedAt: ''
+ type: "coding",
+ description: "",
+ updatedAt: "",
});
}
async deleteWork(idField: string) {
const response = await this.alertService.deleteAlert();
- if (response === 'confirm') {
+ if (response === "confirm") {
this.officeService.deleteWork(idField);
}
}
@@ -181,13 +160,11 @@ export class TimePage implements OnInit {
}
async getAllWorkOf() {
if (this.workOf !== null) {
- (await this.officeService.getWorkByDate(this.workOf)).subscribe(
- (res: any) => {
- // this.workSummaryOf = this.workOf;
- this.workByDate = res;
- this.calculateTotalHours(this.workByDate);
- }
- );
+ (await this.officeService.getWorkByDate(this.workOf)).subscribe((res: any) => {
+ // this.workSummaryOf = this.workOf;
+ this.workByDate = res;
+ this.calculateTotalHours(this.workByDate);
+ });
}
}
@@ -196,7 +173,7 @@ export class TimePage implements OnInit {
}
async copyAllOfDay() {
- let dataString: string = '';
+ let dataString: string = "";
this.workByDate.forEach((element: any) => {
dataString += `${element.startTime} - ${element.endTime} (${element.type}) : ${element.description} \n`;
});
diff --git a/src/app/shared/db/real-time-data-base.service.spec.ts b/src/app/shared/db/real-time-data-base.service.spec.ts
new file mode 100644
index 00000000..8d308d89
--- /dev/null
+++ b/src/app/shared/db/real-time-data-base.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { RealTimeDataBaseService } from './real-time-data-base.service';
+
+describe('RealTimeDataBaseService', () => {
+ let service: RealTimeDataBaseService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(RealTimeDataBaseService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/db/real-time-data-base.service.ts b/src/app/shared/db/real-time-data-base.service.ts
new file mode 100644
index 00000000..ada286ec
--- /dev/null
+++ b/src/app/shared/db/real-time-data-base.service.ts
@@ -0,0 +1,42 @@
+import { Injectable } from '@angular/core';
+import { AngularFireDatabase } from '@angular/fire/compat/database';
+import { Observable } from 'rxjs';
+
+
+@Injectable({
+ providedIn: 'root'
+})
+export class RealTimeDataBaseService {
+
+ dashboardContent = "/dynamic-content/dashboard"
+ constructor(
+ private db :AngularFireDatabase
+ ) { }
+
+ getDashboardContent(): Observable {
+ return this.db.list(this.dashboardContent).valueChanges()
+ }
+
+ addTemporaryData(): Promise {
+
+ const paragraphs = [
+ "Summarize is an app that helps you to manage your Time, Money, and work which includes but is not limited to subject-wise studies, notes, to-do's, or office works.",
+ 'Thinking when to use Summarize? To live better and managed, one should recall what they have done throughout the day daily before sleep . Also listing tasks for the next day and setting priorities increases the chances to get them done.',
+ 'Currently, Summarize is under development, we will keep on adding features one by one. Till then, please feel free to manage Achievements of day, Expenses, Studies, and Time. It is a web-app that can be easily installed on all devices ( Mobile & PC ). Install the app on your devices to keep in sync and to check how to install visit our Help page.',
+ 'Note: Your data will not be used for any advertisement or offering any deal/scheme. Also our app donot need any permission to work on your device. Your privacy is important to us. For more queries, you can contact us through the support page. We are also open to feature requests and suggestions.',
+ ];
+ const paragraphsData = paragraphs.map((paragraph, index) => {
+ return {
+ content: paragraph,
+ orderId: index + 1,
+ type: 'text' // or 'note' based on your condition
+ };
+ });
+
+ return this.db.object('dynamicContent/home/paragraphs').set(paragraphsData);
+ }
+
+ getHomeData(): Observable {
+ return this.db.object('dynamicContent/home').valueChanges();
+ }
+}
diff --git a/src/app/shared/services/about/about.service.spec.ts b/src/app/shared/services/about/about.service.spec.ts
new file mode 100644
index 00000000..f5fe5a0d
--- /dev/null
+++ b/src/app/shared/services/about/about.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { AboutService } from './about.service';
+
+describe('AboutService', () => {
+ let service: AboutService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(AboutService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/about/about.service.ts b/src/app/shared/services/about/about.service.ts
new file mode 100644
index 00000000..bdb1f448
--- /dev/null
+++ b/src/app/shared/services/about/about.service.ts
@@ -0,0 +1,9 @@
+import { Injectable } from '@angular/core';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class AboutService {
+
+ constructor() { }
+}
diff --git a/src/app/shared/services/home/home.service.spec.ts b/src/app/shared/services/home/home.service.spec.ts
new file mode 100644
index 00000000..1afaf229
--- /dev/null
+++ b/src/app/shared/services/home/home.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { HomeService } from './home.service';
+
+describe('HomeService', () => {
+ let service: HomeService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(HomeService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/home/home.service.ts b/src/app/shared/services/home/home.service.ts
new file mode 100644
index 00000000..0026413a
--- /dev/null
+++ b/src/app/shared/services/home/home.service.ts
@@ -0,0 +1,9 @@
+import { Injectable } from '@angular/core';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class HomeService {
+
+ constructor() { }
+}
diff --git a/src/app/shared/services/support/support.service.spec.ts b/src/app/shared/services/support/support.service.spec.ts
new file mode 100644
index 00000000..4881bd29
--- /dev/null
+++ b/src/app/shared/services/support/support.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { SupportService } from './support.service';
+
+describe('SupportService', () => {
+ let service: SupportService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(SupportService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/support/support.service.ts b/src/app/shared/services/support/support.service.ts
new file mode 100644
index 00000000..6bbe4ac0
--- /dev/null
+++ b/src/app/shared/services/support/support.service.ts
@@ -0,0 +1,9 @@
+import { Injectable } from '@angular/core';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class SupportService {
+
+ constructor() { }
+}
diff --git a/src/theme/custom.scss b/src/theme/custom.scss
index 2e6e3121..dd30d870 100644
--- a/src/theme/custom.scss
+++ b/src/theme/custom.scss
@@ -29,14 +29,14 @@
position: relative;
width: 50%;
float: left;
- min-height: 200px;
+ // min-height: 200px;
}
.right-50 {
position: relative;
width: 50%;
float: left;
- min-height: 200px;
+ // min-height: 200px;
}
@media screen and (max-width:992px) {