Skip to content

Instantly share code, notes, and snippets.

View Mustafa-Omran's full-sized avatar
💭
I may be slow to respond.

Mustafa Omran Mustafa-Omran

💭
I may be slow to respond.
  • Egypt
View GitHub Profile
@Mustafa-Omran
Mustafa-Omran / create-dynamic-script-in-angular.ts
Last active October 27, 2024 21:43
Dynamic Script In Angular
/**
* Append script to HTML page
*
*
* @param src {string}
*/
createScript(src: string): void {
const configsScript = document.createElement('script');
configsScript.type = 'text/javascript';
configsScript.innerText = `
@Mustafa-Omran
Mustafa-Omran / http-client-service.ts
Created October 27, 2024 21:38
Http Client Service In Angular
import { environment } from '@amaleyat/environments/dev.environment';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
import { Observable } from 'rxjs/internal/Observable';
import { throwError } from 'rxjs/internal/observable/throwError';
import { catchError } from 'rxjs/internal/operators/catchError';
import { isPlatformBrowser } from '@angular/common';
@Injectable({
providedIn: 'root'
@Mustafa-Omran
Mustafa-Omran / app.component.ts
Created October 27, 2024 21:31
Google Tag Manager (GTM) dynamically in Angular
import { Component, OnInit } from '@angular/core';
import { GoogleTagManagerService } from './google-tag-manager.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent implements OnInit {
constructor(private gtmService: GoogleTagManagerService) {}
@Mustafa-Omran
Mustafa-Omran / http-client.service.ts
Last active September 20, 2024 09:06
New HttpClient Service
import { environment } from '@amaleyat/environments/dev.environment';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
import { Observable } from 'rxjs/internal/Observable';
import { throwError } from 'rxjs/internal/observable/throwError';
import { catchError } from 'rxjs/internal/operators/catchError';
import { isPlatformBrowser } from '@angular/common';
import { LanguageService } from './language.service';
@Injectable({
@Mustafa-Omran
Mustafa-Omran / auth.interceptor.ts
Last active September 20, 2024 08:58
Angular +17 Interceptor (HttpInterceptorFn)
import { User } from '@amaleyat/shared/models/user';
import { isPlatformBrowser } from '@angular/common';
import { HttpInterceptorFn } from '@angular/common/http';
import { inject, PLATFORM_ID } from '@angular/core';
export const authInterceptor: HttpInterceptorFn = (req, next) => {
const platformId: Object = inject(PLATFORM_ID);
if (isPlatformBrowser(platformId)) {
@Mustafa-Omran
Mustafa-Omran / cache-interceptor.ts
Created February 13, 2023 11:15
Caching - Passing Context to HTTP Interceptors
const CACHE_IT = new HttpContextToken<boolean>(() => false);
export function cacheIt() {
return new HttpContext().set(CACHE_IT, true);
}
@Injectable()
export class CacheInterceptor implements HttpInterceptor {
intercept(request: HttpRequest, next: HttpHandler): Observable<HttpEvent> {
@Mustafa-Omran
Mustafa-Omran / angular-log-service.ts
Created January 22, 2023 12:58
Angular Log Service
import { Injectable } from "@angular/core";
export enum LogLevel {
DEBUG,
INFO,
ERROR,
}
@Injectable()
export class LogService {
minimumLevel: LogLevel = LogLevel.INFO;
@Mustafa-Omran
Mustafa-Omran / itersection.ts
Last active August 18, 2022 16:25
Intersection of two Strings JS
private itersection(textOne: string, textTwo: string): string {
let textOneIndex: number = 0;
let textTwoIndex: number = 0;
let matchedText: string = '';
textOne = textOne.toLowerCase();
textTwo = textTwo.toLowerCase();
while (textOneIndex < textOne.length && textTwoIndex < textTwo.length) {
if (textOne[textOneIndex] < textTwo[textTwoIndex]) {
@Mustafa-Omran
Mustafa-Omran / build-date.js
Created April 13, 2022 10:57
Angular - Save Build Time At Package.json
const { writeFileSync } = require('fs')
const { join } = require('path')
const BUILD_DATE_TIME_STAMP_PATH = join(__dirname, 'build-date.json');
const createBuildDate = {
buildDate: new Date()
}
writeFileSync(TIME_STAMP_PATH, JSON.stringify(createBuildDate, null, 2));
@Mustafa-Omran
Mustafa-Omran / localstorage-changes-angular.ts
Created March 14, 2022 17:39
Angular - Listen to local storage changes angular
import { Component, HostListener, OnInit } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {