Skip to content

Instantly share code, notes, and snippets.

View touhidrahman's full-sized avatar

Touhid Rahman touhidrahman

View GitHub Profile
@touhidrahman
touhidrahman / friends-geolocation-server.js
Last active January 30, 2022 04:16
Friends Geolocation Fake backend
const fs = require("fs")
const falso = require("@ngneat/falso")
const express = require("express")
const cors = require("cors")
const app = express()
app.use(cors())
app.use(express.json())
@touhidrahman
touhidrahman / sanity-movies.component.ts
Created January 25, 2022 11:56
Sanity Usage in Component
export interface Movie {
_id: String,
title: String,
releaseDate: Date,
poster: SanityImageSource, // = string | SanityReference | SanityAsset | SanityImageObject etc.
}
@Component({
selector: 'app-movies',
template: `
@touhidrahman
touhidrahman / sanity-image.pipe.ts
Created January 25, 2022 11:27
Sanity Image URL generator
import { Pipe, PipeTransform } from '@angular/core'
import { SanityService } from '@core/services/sanity.service'
import { SanityImageSource } from '@sanity/image-url/lib/types/types'
@Pipe({ name: 'sanityImage' })
export class SanityImagePipe implements PipeTransform {
constructor(private sanityService: SanityService) {}
transform(value: SanityImageSource, width?: number): string {
if (width) {
@touhidrahman
touhidrahman / sanity.service.ts
Created January 25, 2022 11:15
Sanity service
import { HttpClient } from '@angular/common/http'
import { Inject, Injectable } from '@angular/core'
import { WINDOW } from '@ng-web-apis/common'
import sanityClient, { ClientConfig, SanityClient } from '@sanity/client'
import imageUrlBuilder from '@sanity/image-url'
import { ImageUrlBuilder } from '@sanity/image-url/lib/types/builder'
import { SanityImageSource } from '@sanity/image-url/lib/types/types'
import { map, Observable } from 'rxjs'
import { environment } from '@environment'
@touhidrahman
touhidrahman / abstract-form-service.ts
Created January 20, 2022 22:17
AbstractFormService in Angular
import { FormBuilder, FormControl, FormGroup } from '@angular/forms'
import { Observable, throwError } from 'rxjs'
export abstract class AbstractFormService<T, InputT extends { id?: string }> {
form: FormGroup
constructor(protected fb: FormBuilder) {
this.form = this.buildForm()
}
@touhidrahman
touhidrahman / autosize-textarea.directive.ts
Last active August 17, 2021 21:06
autosize-textarea.directive.ts
import { Directive, ElementRef, HostListener, Input } from "@angular/core";
@Directive({
selector: "[appTextareaAutosize]"
})
export class TextareaAutosizeDirective {
@Input() minRows = 2;
@Input() maxRows = 4;
private offsetHeight = 0;
@touhidrahman
touhidrahman / product.service.ts
Last active July 30, 2021 01:29
product.service.ts - supabase base service implementation
import { Injectable } from '@angular/core'
import { BaseService } from '@core/services/base.service'
import { SupabaseService } from '@core/services/supabase.service'
import { Product } from '@features/products/types/product'
const TABLE_PRODUCT = 'products'
@Injectable({
providedIn: 'root',
})
@touhidrahman
touhidrahman / base.service.ts
Last active March 5, 2022 02:42
base.service.ts (supabase)
export class BaseService<T> {
protected resource: string // table name
constructor(protected supabase: SupabaseService, resource: string) {
this.resource = resource
}
findById(id: number, select = '*'): Observable<T> {
const query = this.supabase.table(this.resource).select(select).match({ id }).single()
return from(query).pipe(map((res) => res.body as T))
@touhidrahman
touhidrahman / supabase-query-helper.type.ts
Last active July 29, 2021 23:55
supabase-query-helper.type.ts
export type FilterOperator =
| 'eq' | 'neq'
| 'gt' | 'gte'
| 'lt' | 'lte'
| 'like' | 'ilike'
| 'is' | 'in'
| 'cs' | 'cd'
| 'sl' | 'sr'
| 'nxl' | 'nxr'
| 'adj' | 'ov'
@touhidrahman
touhidrahman / supabase.service.ts
Created July 29, 2021 23:38
supabase.service.ts
import { Injectable } from '@angular/core'
import { environment } from '@environment/environment'
import { AuthChangeEvent, createClient, Session, SupabaseClient } from '@supabase/supabase-js'
@Injectable({
providedIn: 'root',
})
export class SupabaseService {
private supabase: SupabaseClient