91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
import * as fs from "fs";
 | 
						|
import path from "path";
 | 
						|
import { AllbidsApiBid } from "../models/allbids.com.au/allbids-api-bid.js";
 | 
						|
import { AllbidsProductBid } from "../models/allbids.com.au/allbids-product-bid.js";
 | 
						|
import { GrayApiBid } from "../models/grays.com/grays-api-bid.js";
 | 
						|
import { GraysProductBid } from "../models/grays.com/grays-product-bid.js";
 | 
						|
import { LangtonsApiBid } from "../models/langtons.com.au/langtons-api-bid.js";
 | 
						|
import { LangtonsProductBid } from "../models/langtons.com.au/langtons-product-bid.js";
 | 
						|
import { LawsonsApiBid } from "../models/lawsons.com.au/lawsons-api-bid.js";
 | 
						|
import { LawsonsProductBid } from "../models/lawsons.com.au/lawsons-product-bid.js";
 | 
						|
import { PicklesApiBid } from "../models/pickles.com.au/pickles-api-bid.js";
 | 
						|
import { PicklesProductBid } from "../models/pickles.com.au/pickles-product-bid.js";
 | 
						|
import configs from "../system/config.js";
 | 
						|
import CONSTANTS from "../system/constants.js";
 | 
						|
import { sanitizeFileName } from "../system/utils.js";
 | 
						|
 | 
						|
// Time to update
 | 
						|
const TIME = 30 * 1000;
 | 
						|
 | 
						|
export const handleCloseRemoveProduct = (data) => {
 | 
						|
  if (!Array.isArray(data)) return;
 | 
						|
 | 
						|
  data.forEach(async (item) => {
 | 
						|
    if (item.page_context) {
 | 
						|
      safeClosePage(item);
 | 
						|
    }
 | 
						|
  });
 | 
						|
};
 | 
						|
 | 
						|
export const createBidProduct = (web, data) => {
 | 
						|
  switch (web.origin_url) {
 | 
						|
    case configs.WEB_URLS.GRAYS: {
 | 
						|
      return new GraysProductBid({ ...data });
 | 
						|
    }
 | 
						|
    case configs.WEB_URLS.LANGTONS: {
 | 
						|
      return new LangtonsProductBid({ ...data });
 | 
						|
    }
 | 
						|
    case configs.WEB_URLS.LAWSONS: {
 | 
						|
      return new LawsonsProductBid({ ...data });
 | 
						|
    }
 | 
						|
    case configs.WEB_URLS.PICKLES: {
 | 
						|
      return new PicklesProductBid({ ...data });
 | 
						|
    }
 | 
						|
    case configs.WEB_URLS.ALLBIDS: {
 | 
						|
      return new AllbidsProductBid({ ...data });
 | 
						|
    }
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
export const createApiBid = (web) => {
 | 
						|
  switch (web.origin_url) {
 | 
						|
    case configs.WEB_URLS.GRAYS: {
 | 
						|
      return new GrayApiBid({ ...web });
 | 
						|
    }
 | 
						|
    case configs.WEB_URLS.LANGTONS: {
 | 
						|
      return new LangtonsApiBid({ ...web });
 | 
						|
    }
 | 
						|
    case configs.WEB_URLS.LAWSONS: {
 | 
						|
      return new LawsonsApiBid({ ...web });
 | 
						|
    }
 | 
						|
    case configs.WEB_URLS.PICKLES: {
 | 
						|
      return new PicklesApiBid({ ...web });
 | 
						|
    }
 | 
						|
    case configs.WEB_URLS.ALLBIDS: {
 | 
						|
      return new AllbidsApiBid({ ...web });
 | 
						|
    }
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
export const deleteProfile = (data) => {
 | 
						|
  if (!data?.origin_url) return false;
 | 
						|
  const filePath = path.join(
 | 
						|
    CONSTANTS.PROFILE_PATH,
 | 
						|
    sanitizeFileName(data?.origin_url) + ".json"
 | 
						|
  );
 | 
						|
 | 
						|
  if (fs.existsSync(filePath)) {
 | 
						|
    fs.unlinkSync(filePath);
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
 | 
						|
  return false;
 | 
						|
};
 | 
						|
 | 
						|
export const shouldUpdateProductTab = (productTab) => {
 | 
						|
  const updatedAt = new Date(productTab.updated_at).getTime();
 | 
						|
  const now = Date.now();
 | 
						|
 | 
						|
  return now - updatedAt >= TIME;
 | 
						|
};
 |