Image gallery has been resolved
This commit is contained in:
@@ -103,4 +103,13 @@ export class AuthorizeService implements IAuthorizeService {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* On user authorization changed event
|
||||
*
|
||||
* @memberof IAuthorizeService
|
||||
*/
|
||||
onAuthStateChanged: (callBack: (user: User) => void) => any = (callBack) => {
|
||||
firebaseAuth().onAuthStateChanged(callBack)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
41
src/data/firebaseClient/services/files/StorageService.ts
Normal file
41
src/data/firebaseClient/services/files/StorageService.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { storageRef } from 'data/firebaseClient'
|
||||
import { IStorageService } from 'core/services/files'
|
||||
import { FileResult } from 'models/files/fileResult'
|
||||
|
||||
export class StorageService implements IStorageService {
|
||||
|
||||
/**
|
||||
* Upload image on the server
|
||||
* @param {file} file
|
||||
* @param {string} fileName
|
||||
*/
|
||||
public uploadFile = (file: any, fileName: string, progress: (percentage: number, status: boolean) => void) => {
|
||||
|
||||
return new Promise<FileResult>((resolve, reject) => {
|
||||
// Create a storage refrence
|
||||
let storegeFile = storageRef.child(`images/${fileName}`)
|
||||
|
||||
// Upload file
|
||||
let task = storegeFile.put(file)
|
||||
task.then((result) => {
|
||||
resolve(new FileResult(result.downloadURL!,result.metadata.fullPath))
|
||||
}).catch((error) => {
|
||||
reject(error)
|
||||
})
|
||||
|
||||
// Upload storage bar
|
||||
task.on('state_changed', (snapshot: any) => {
|
||||
let percentage: number = (snapshot.bytesTransferred / snapshot.totalBytes) * 100
|
||||
progress(percentage, true)
|
||||
}, (error) => {
|
||||
console.log('========== Upload Image ============')
|
||||
console.log(error)
|
||||
console.log('====================================')
|
||||
|
||||
}, () => {
|
||||
progress(100, false)
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
5
src/data/firebaseClient/services/files/index.ts
Normal file
5
src/data/firebaseClient/services/files/index.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { StorageService } from './StorageService'
|
||||
|
||||
export {
|
||||
StorageService
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
import { FileResult } from 'models/files/fileResult'
|
||||
// - Import react components
|
||||
import { firebaseRef, firebaseAuth, storageRef } from 'data/firebaseClient'
|
||||
|
||||
import { SocialError } from 'core/domain/common'
|
||||
import { IImageGalleryService } from 'core/services/imageGallery'
|
||||
import { Image } from 'core/domain/imageGallery'
|
||||
import { IStorageService } from 'core/services/files'
|
||||
import { IServiceProvider, ServiceProvide } from 'core/factories'
|
||||
|
||||
/**
|
||||
* Firbase image gallery service
|
||||
@@ -14,6 +17,14 @@ import { Image } from 'core/domain/imageGallery'
|
||||
*/
|
||||
export class ImageGalleryService implements IImageGalleryService {
|
||||
|
||||
private readonly storageService: IStorageService
|
||||
private readonly serviceProvider: IServiceProvider
|
||||
|
||||
constructor () {
|
||||
this.serviceProvider = new ServiceProvide()
|
||||
this.storageService = this.serviceProvider.createStorageService()
|
||||
}
|
||||
|
||||
public getImageGallery: (userId: string)
|
||||
=> Promise<Image[]> = (userId) => {
|
||||
return new Promise<Image[]>((resolve,reject) => {
|
||||
@@ -69,24 +80,15 @@ export class ImageGalleryService implements IImageGalleryService {
|
||||
})
|
||||
}
|
||||
|
||||
public uploadImage: (file: any, fileName: string, progressCallback: Function)
|
||||
=> Promise<void> = (file, fileName, progressCallback) => {
|
||||
return new Promise<void>((resolve,reject) => {
|
||||
|
||||
let storegeFile = storageRef.child(`images/${fileName}`)
|
||||
|
||||
// Upload file
|
||||
let task = storegeFile.put(file)
|
||||
|
||||
// Upload storage bar
|
||||
task.on('state_changed', (snapshot: any) => {
|
||||
let percentage = (snapshot.bytesTransferred / snapshot.totalBytes) * 100
|
||||
progressCallback(percentage)
|
||||
|
||||
}, (error: any) => {
|
||||
public uploadImage: (image: any, imageName: string, progressCallback: (percentage: number, status: boolean) => void)
|
||||
=> Promise<FileResult> = (image, imageName, progressCallback) => {
|
||||
return new Promise<FileResult>((resolve,reject) => {
|
||||
this.storageService.uploadFile(image,imageName,progressCallback)
|
||||
.then((result: FileResult) => {
|
||||
resolve(result)
|
||||
})
|
||||
.catch((error: any) => {
|
||||
reject(new SocialError(error.code, error.message))
|
||||
}, () => {
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import { NotificationService } from './notifications'
|
||||
import { PostService } from './posts'
|
||||
import { UserService } from './users'
|
||||
import { VoteService } from './votes'
|
||||
import { StorageService } from './files'
|
||||
|
||||
export {
|
||||
AuthorizeService,
|
||||
@@ -17,5 +18,7 @@ export {
|
||||
NotificationService,
|
||||
PostService,
|
||||
UserService,
|
||||
VoteService
|
||||
VoteService,
|
||||
StorageService
|
||||
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ export class PostService implements IPostService {
|
||||
public addPost: (userId: string, post: Post)
|
||||
=> Promise<string> = (userId, post) => {
|
||||
return new Promise<string>((resolve,reject) => {
|
||||
let postRef: any = firebaseRef.child(`userPosts/${userId}/posts`).push(post)
|
||||
let postRef: any = firebaseRef.child(`users/${userId}/posts`).push(post)
|
||||
postRef.then(() => {
|
||||
resolve(postRef.key)
|
||||
})
|
||||
@@ -31,7 +31,7 @@ export class PostService implements IPostService {
|
||||
=> Promise<void> = (userId, postId, post) => {
|
||||
return new Promise<void>((resolve,reject) => {
|
||||
let updates: any = {}
|
||||
updates[`userPosts/${userId}/posts/${postId}`] = post
|
||||
updates[`users/${userId}/posts/${postId}`] = post
|
||||
firebaseRef.update(updates).then(() => {
|
||||
resolve()
|
||||
})
|
||||
@@ -45,7 +45,7 @@ export class PostService implements IPostService {
|
||||
=> Promise<void> = (userId, postId) => {
|
||||
return new Promise<void>((resolve,reject) => {
|
||||
let updates: any = {}
|
||||
updates[`userPosts/${userId}/posts/${postId}`] = null
|
||||
updates[`users/${userId}/posts/${postId}`] = null
|
||||
firebaseRef.update(updates).then(() => {
|
||||
resolve()
|
||||
})
|
||||
@@ -59,7 +59,7 @@ export class PostService implements IPostService {
|
||||
=> Promise<{ [postId: string]: Post }> = (userId) => {
|
||||
return new Promise<{ [postId: string]: Post }>((resolve,reject) => {
|
||||
|
||||
let postsRef: any = firebaseRef.child(`userPosts/${userId}/posts`)
|
||||
let postsRef: any = firebaseRef.child(`users/${userId}/posts`)
|
||||
postsRef.once('value').then((snapshot: any) => {
|
||||
let posts: any = snapshot.val() || {}
|
||||
let parsedPosts: { [postId: string]: Post } = {}
|
||||
@@ -82,7 +82,7 @@ export class PostService implements IPostService {
|
||||
=> Promise<Post> = (userId, postId) => {
|
||||
return new Promise<Post>((resolve,reject) => {
|
||||
|
||||
let postsRef: any = firebaseRef.child(`userPosts/${userId}/posts/${postId}`)
|
||||
let postsRef: any = firebaseRef.child(`users/${userId}/posts/${postId}`)
|
||||
|
||||
postsRef.once('value').then((snapshot: any) => {
|
||||
let newPost = snapshot.val() || {}
|
||||
|
||||
Reference in New Issue
Block a user