Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { HttpClient } from '@angular/common/http';
- import { Injectable } from '@angular/core';
- import { MongoService } from 'wacom';
- import { Router } from '@angular/router'
- export interface User {
- email: string;
- name: string;
- _id: string;
- data: object;
- }
- @Injectable({
- providedIn: 'root'
- })
- export class UserService implements User {
- public users: User[];
- public name;
- public email;
- public avatarUrl;
- public _users: any = {};
- public _id;
- public is: any = {};
- public data: any = {
- resetPin: {},
- resetCreate: Date,
- resetCounter: Number,
- phone: Number,
- balance: {},
- };
- set_user(user){
- if(typeof user.data != 'object') user.data = {};
- if(typeof user.is != 'object') user.is = {};
- if(typeof user.data.balance != 'object') user.data.balance = {};
- if(typeof user.data.balance != 'object') user.data.balance = {};
- if(!Array.isArray(user.data.invites)) user.data.invites = []
- if(!Array.isArray(user.data.declinedInvites)) user.data.declinedInvites = []
- if(!Array.isArray(user.data.incomingInvites)) user.data.incomingInvites = []
- if(!Array.isArray(user.data.deleted)) user.data.deleted = []
- if(!Array.isArray(user.data.fr)) user.data.fr = []
- if(!Array.isArray(user.data.friends)) user.data.friends = []
- if(!Array.isArray(user.data.offlineFriends)) user.data.offlineFriends = []
- for (var key in user) {
- this[key] = user[key];
- }
- }
- constructor(private mongo: MongoService, private http: HttpClient, private router: Router) {
- if(localStorage.getItem('memo_user')){
- this.set_user(JSON.parse(localStorage.getItem('memo_user')));
- }
- this.http.get('/api/user/me').subscribe((resp:any) => {
- this.set_user(resp);
- });
- this.users = mongo.get('user', {
- replace: {
- avatarUrl: (val, cb)=>{
- cb(val||'/assets/default.png');
- },
- data: (field, cb, doc) => {
- if(typeof field != 'object') field = {};
- if(typeof field.request!='object') field.request = {};
- },
- is: (field, cb) => {
- cb(field || {})
- }
- }
- }, (arr, obj) => {
- this._users = obj;
- });
- }
- update(){
- this.mongo.afterWhile(this, ()=>{
- this.mongo.update('user', this, {
- fields: 'name data avatarUrl'
- });
- });
- }
- change_password(oldPass, newPass){
- this.http.post('/api/user/changePassword', {
- newPass: newPass,
- oldPass: oldPass
- }).subscribe(resp => {
- if(resp) alert('successfully changed password');
- else alert('failed to change password');
- });
- }
- todataUrl(fl, cb) {
- var a = new FileReader();
- a.onload = (e)=>{
- var target: any = e.target;
- cb(target.result);
- }
- a.readAsDataURL(fl);
- }
- changeAvatar(e){
- this.todataUrl(e.target.files[0], (dataUrl)=>{
- this.http.post('/api/user/avatar', {
- dataUrl: dataUrl
- }).subscribe((resp:any)=> {
- this.avatarUrl = resp;
- });
- });
- }
- create(user) {
- this.mongo.create('user', user, created=>{});
- }
- logout(){
- localStorage.removeItem('memo_user')
- this.http.get('/api/user/logout').subscribe((resp:any)=> {});
- this.router.navigate(['/']);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement