{"version":3,"file":"main.50352288620f2d10.js","mappings":"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+IAAmC,CAAE,IAAI,CAAC0nB,mBAAmB,CAAE;MAC/D;MACC;MACD1nB,0JACO,CAAEd,0DAAS,CAAE,IAAI,CAACsG,iBAAiB,CAAE,CAAE,CAC3CgL,SAAS,CAAIC,MAAM,IAAK;QAEvB,IAAI,CAACjH,YAAY,GAAGiH,MAAsB,CAAC,CAAC;QAC5C,IAAI,CAACpF,cAAc,GAAG,IAAI,CAAC7B,YAAY,CAAC6B,cAAc;QACtD;MACJ,CAAC,CAAE;MAEH;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACArL,oJACO,CAAEd,0DAAS,CAAE,IAAI,CAACsG,iBAAiB,CAAE,CAAE,CAC3CgL,SAAS,CAAIC,MAAM,IAAK;QAEzB;QACA,IAAI,CAACzJ,MAAM,GAAGyJ,MAAM;QACpB,IAAI,CAACc,eAAe,EAAE;MAExB,CAAC,CAAE;MACH;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACF;MACA;MACA;MACC;MACA;MACA;MACA;MACA;MACA;MACD;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAC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AAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,CAAC;IACvV,IAAIC,OAAO,GAAiB,CAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAA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AClB;IACA;IACA;IACOC,yBAAyB;MAC9B,IAAI,CAAClC,oBAAoB,GAAG,EAAE;MAC9B,IAAI,CAACS,cAAc,EAAE;MACrB,OAAO,IAAI;IACb;IACA;IACO0B,wBAAwB;MAC7B,IAAI,CAAC5B,mBAAmB,GAAG,EAAE;MAC7B,IAAI,CAACE,cAAc,EAAE;MACrB,OAAO,IAAI;IACb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IAEA;IAEA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IAEA;IAEA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IAEA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IAEA;IAEA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IAEA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO2B,gCAAgC;MACrC;MACA,IAAI,CAAC7B,mBAAmB,GAAG,EAAE;MAC7B,IAAI,IAAI,CAAC1hF,OAAO,CAAC8F,SAAS,KAAK,IAAI,CAAC5H,YAAY,CAAC6B,cAAc,EAAE;QAC/D;QACA,IAAI,IAAI,CAACyjF,gBAAgB,CAAC,IAAI,CAAC9B,mBAAmB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;UACpE,IAAI,CAACA,mBAAmB,CAACh7D,IAAI,CAAC,QAAQ,CAAC;;;MAG3C,OAAO,IAAI,CAACg7D,mBAAmB;IACjC;IACA;IAGA;IACA;IACA;IACA;IACO59B,sCAAsC,CAAE2/B,GAAa;MAC1D,IAAI,CAACztF,yKAAkD,CAACytF,GAAG,CAAC,EAAE;QAC5D,IAAIroC,GAAG,GAA2B,IAAIJ,+FAAqB,EAAE;QAC7DI,GAAG,GAAG,IAAIJ,+FAAqB,EAAE,CAAC+yB,eAAe,CAAC0V,GAAG,CAAC;QACtDroC,GAAG,CAAC7yC,OAAO,GAAGk7E,GAAG;QAEjB,IAAI71E,CAAC,GAAG,CAAC;QAET;QACA,IAAI,CAAC5X,yKAAkD,CAAColD,GAAG,CAAC,EAAE;UAC5D,IAAI,CAACvoC,4BAA4B,GAAG,IAAI,CAACqwE,sCAAsC,CAAC9nC,GAAG,CAAC;UACpFxtC,CAAC,GAAG,CAAC;UACL,IAAI,CAACiF,4BAA4B,CAAC1J,OAAO,CAACoQ,CAAC,IAAG;YAC5CA,CAAC,CAAC2jC,MAAM,GAAG,kBAAkB,GAAGtvC,CAAC;YACjCA,CAAC,EAAE;UACL,CAAC,CAAC;UACF,IAAI,CAACnW,IAAI,CAACwsD,sCAAsC,CAACw/B,GAAG,CAAC;UACrD,OAAO,IAAI,CAAC5wE,4BAA4B;;OAE3C,MACI,OAAO,EAAE;IAChB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACOquC,mCAAmC,CAAExd,GAAa;MACvD;MACA,IAAI,CAAC1tC,yKAAkD,CAAC0tC,GAAG,CAAC,IAAI,CAAC1tC,yKAAkD,CAAC0tC,GAAG,CAACr2B,KAAK,CAAC,IAAIq2B,GAAG,CAACr2B,KAAK,CAACtF,MAAM,GAAG,CAAC,EAAE;QACtJrT,0IAAuC,CAACgvC,GAAG,CAAC;QAC5C,IAAI,CAACg9C,kBAAkB,GAAG,IAAI,CAAC58B,sCAAsC,CAACpgB,GAAG,CAAC;QAC1E;QACAhvC,0JAAuD,CAAC,IAAI,CAACgsF,kBAAkB,CAAC,CAAC,CAAC;QAClF;;;MAEF,OAAO,IAAI,CAACA,kBAAkB;IAChC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO98B,qCAAqC;MAC1C,IAAI,CAAC1lD,YAAY,GAAGxJ,wIAAqC,EAAE;MAC3D,IAAI,CAACsB,yKAAkD,CAAC,IAAI,CAACkI,YAAY,CAAC,IAAI,IAAI,CAACA,YAAY,CAAC6B,cAAc,GAAG,CAAC,EAAE;QAClH;QACA,IAAIg2E,cAAc,GAAGxhF,wIAA2C,CAAC,IAAI,CAAC2J,YAAY,CAAC;QACnF,IAAI,CAAClI,yKAAkD,CAAC+/E,cAAc,CAAC,KACjE,CAAC//E,yKAAkD,CAAC+/E,cAA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A;UACA;UACA;UACA;UACA;UACA;UACA,KAAK,WAAW;YACd;YACA,IAAI,CAACu2C,mBAAmB,GAAG,IAAIv2C,oDAAU,EAAiC;YAC1E;UACF;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,KAAK,WAAW;YACd;YACA,IAAI,CAAC+wB,mBAAmB,GAAG,IAAI/wB,oDAAU,EAAiC;YAC1E;UACF;UACA,KAAK,UAAU;YACb;YACA,IAAI,CAAC08C,kBAAkB,GAAG,IAAI18C,oDAAU,EAAe;YACvD;UACF;UACA,KAAK,SAAS;YACZ;YACA,IAAI,CAACjsC,iBAAiB,GAAG,IAAIisC,oDAAU,EAAmB;YAC1D;UACF;UACA,KAAK,cAAc;YACjB;YACA,IAAI,CAAC68C,sBAAsB,GAAG,IAAI78C,oDAAU,EAAwB;YACpE;UACF;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,KAAK,kBAAkB;UACvB,KAAK,oBAAoB;YACvB;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACF;UACA;UACA,KAAK,yBAAyB;UAC9B,KAAK,2BAA2B;YAC9B;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACF;UACA;UACA,KAAK,0BAA0B;UAC/B,KAAK,4BAA4B;YAC/B;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UAEF;UACA;UACA;UACA;UACA,KAAK,UAAU;YACb;YACA;YACA;UACF;UACA;UACA,KAAK,QAAQ;YACX;YACA;YACA;UACF;UACA;UACA;UACA;UACA,KAAK,gBAAgB;YACnB;YACA;YACA;UACF;UACA;UACA,KAAK,cAAc;YACjB;YACA;YACA;UACF;UACA;UACA;UACA;UACA,KAAK,WAAW;YACd;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACF;UACA;UACA,KAAK,SAAS;YACZ;YACA;YACA;UACF;UACA;UACA;UACA;UACA,KAAK,kBAAkB;YACrB;YACA;YACA;UACF;UACA,KAAK,gBAAgB;YACnB;YACA;YACA;UACF;UACA;UACA;UACA;UACA,KAAK,WAAW;YACd;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACF;UACA;UACA,KAAK,SAAS;YACZ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UAEF;UACA;UACA,KAAK,OAAO;YACV;YACA;YACA;UACF;UACA;UACA,KAAK,YAAY;YACf;YACA;YACA;UACF;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,KAAK,aAAa;YAChB;YACA;YACA;UACF;UACA,KAAK,gBAAgB;YACnB;YACA;YACA;UACF;UACA;UACA,KAAK,aAAa;YAChB;YACA;YACA;UACF;UACA;UACA;UACA,KAAK,eAAe;YAClB;YACA;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UAEF;UACA;UACA,KAAK,aAAa;YAChB;YACA;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YAEA;YACA;YAEA;YACA;UACF;UACA;UACA;UACA;UACA;UACA,KAAK,WAAW;YACd;YACA;YACA;YACA;YACA;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACF;UACA;UACA,KAAK,SAAS;YACZ;YACA;YACA;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UAEF;UACA;UACA,KAAK,cAAc;YACjB;YACD;YACC;YAEA;UACF,KAAK,iBAAiB;YACpB;YACA,IAAI,CAACC,yBAAyB,GAAG,IAAID,oDAAU,EAAmB;YAElE;UACF,KAAK,mBAAmB;YACtB,IAAI,CAACl1B,2BAA2B,GAAG,IAAIk1B,oDAAU,EAAmB;YAEpE;UACF;YACE;YACA;UACF;QAAA;QAEF;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAEA;;IAEJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACOqnD,sBAAsB,CAAGC,OAAa;MAE3C;MACA,IAAK,CAAC9mI,yKAAkD,CAAE8mI,OAAO,CAAE,IAAIA,OAAO,CAAC/0H,MAAM,GAAG,CAAC,EACzF;QACE,IAAI8yF,OAAO,GAAGxwF,IAAI,CAACC,KAAK,CAACwyH,OAAO,CAAC;QACjC;QACA,IAAI,CAAC9mI,yKAAkD,CAAC6kG,OAAO,CAAC,IAAIA,OAAO,CAAC9yF,MAAM,GAAG,CAAC,EAAE;UACtF,KAAK,IAAI6F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGitF,OAAO,CAAC9yF,MAAM,EAAE6F,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC5X,yKAAkD,CAAC6kG,OAAO,CAAEjtF,CAAC,CAAE,CAAC,IAChEitF,OAAO,CAAEjtF,CAAC,CAAE,CAACy4C,iBAAiB,KAAK,IAAI,CAACnoD,YAAY,CAAC6B,cAAc,CAAC;YAAA,GACpE,IAAI,CAAC+rH,gBAAgB,CAAC5+G,GAAG,CAAC2tF,OAAO,CAAEjtF,CAAC,CAAE,CAACw4C,eAAe,CAAC;cAAE;cAC9D;gBACE,IAAI,CAAC0lE,gBAAgB,CAACtgH,MAAM,CAACqvF,OAAO,CAAEjtF,CAAC,CAAE,CAACw4C,eAAe,CAAC;;YAE5D,IAAI,CAAC0lE,gBAAgB,CAAC3+G,GAAG,CAAC0tF,OAAO,CAAEjtF,CAAC,CAAE,CAACw4C,eAAe,EAAEy0C,OAAO,CAAEjtF,CAAC,CAAE,CAAC;;UACtE;;;IAGP;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;;;;IAMOmvH,kBAAkB;MAEvB,OAAO,IAAI,CAAChJ,sBAAsB;IACpC;IACOiJ,yBAAyB,CAAGlD,OAA4C;MAE7E,IAAI,CAAC/F,sBAAsB,GAAG+F,OAAO;IACvC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACOmD,0BAA0B;MAE/B,OAAO,IAAI,CAACjJ,uBAAuB;IACrC;IACOkJ,0BAA0B,CAAG/C,WAAgD;MAElF,IAAI,CAACnG,uBAAuB,GAAGmG,WAAW;IAC5C;IACA;IACOgD,4BAA4B;MAEjC,OAAO,IAAI,CAAClJ,yBAAyB;IACvC;IACOmJ,4BAA4B,CAAG3C,UAA+C;MAEnF,IAAI,CAACxG,yBAAyB,GAAGwG,UAAU;IAC7C;IACA;IACO4C,0BAA0B;MAE/B,OAAO,IAAI,CAACnJ,uBAAuB;IACrC;IACOoJ,0BAA0B,CAAG3C,QAA6C;MAE/E,IAAI,CAACzG,uBAAuB,GAAGyG,QAAQ;IACzC;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACO4C,wBAAwB,CAAG7U,QAAgB,EAAEoT,QAA6C;MAE/F,IAAK,CAAC,CAACpT,QAAQ,IAAIA,QAAQ,CAAC3gH,MAAM,GAAG,CAAC,EACtC;QACE2gH,QAAQ,CAACtjG,GAAG,CAAI7L,CAAC,IAAK;UAEpBuiH,QAAQ,CAAC3uH,GAAG,CAAEoM,CAAC,CAACzT,SAAS,EAAEyT,CAAC,CAAE;QAChC,CAAC,CAAE;;IAEP;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA1Q,WAAW;MACT;;;;;;MAMA,IAAI,CAAC3O,iBAAiB,CAAC4O,IAAI,CAAC,IAAI,CAAC;MACjC,IAAI,CAAC5O,iBAAiB,CAAC6O,QAAQ,EAAE;MACjC;;;;IAIF;;;uBAp9EW6tF,iBAAiB;IAAA;;aAAjBA,iBAAiB;MAAAnsD,SAAjBmsD,iBAAiB;MAAAlsD,YANhB;IAAM;;SAMPksD,iBAAiB;AAAA;;;;;;;;;;;;;;;;;;ACtDkC;AACI;;;;AAM7D,IAAMp6E,wBAAwB;EAA/B,MAAOA,wBAAwB;IAEzBE;IACA7kB;IAFViK,YACU4a,iBAAqC,EACrC7kB,mBAAyC;MADzC,sBAAiB,GAAjB6kB,iBAAiB;MACjB,wBAAmB,GAAnB7kB,mBAAmB;IAG7B;IACA;IACA2lI,oBAAoB,CAAEhO,EAAsB;MAC1C,IAAI,CAAC9yG,iBAAiB,GAAG8yG,EAAE;MAC1B;IACF;IACDryG,oBAAoB;MAClB,OAAO,IAAI,CAACT,iBAAiB;IAC9B;IACD;IACAgzG,sBAAsB,CAAE+N,IAA0B;MAChD,IAAI,CAAC5lI,mBAAmB,GAAG4lI,IAAI;MAC/B;IACF;IACAr6H,sBAAsB;MACpB,OAAO,IAAI,CAACvL,mBAAmB;IACjC;;uBAtBW2kB,wBAAwB;IAAA;;aAAxBA,wBAAwB;MAAAiuB,SAAxBjuB,wBAAwB;MAAAkuB,YAFvB;IAAM;;SAEPluB,wBAAwB;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLM;AAC4B;AACV;AACQ;AAIP;AACsB;AACI;AACV;AACX;AACE;AACA;AACA;AACqB;AACV;AACR;AACM;AACsB;AACN;AACJ;AACZ;AAC+B;AACrB;AACK;AACJ;AACA;AACzF;AAC+E;AACU;AACF;AACQ;AACN;AACA;AACI;AACuB;AAClB;AAChB;AACc;AAEe;AACmC;AAC1D;;;;;;;;;;;;;;;;;;;;;;;;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIO,IAAMy5B,qBAAqB;EAA5B,MAAOA,qBAAqB;IAmDvBwJ;IACA7nD;IACA8kB;IACA7kB;IACAC;IACAE;IACAw1C;IACAyG;IACAx7C;IACAC;IACA5B;IACAuB;IACAq+C;IACAjD;IACAlG;IACA2G;IACAnJ;IACAt4B;IACAhb;IACAkB;IACAC;IACA1B;IAvET;IACOy/C,cAAc,GAAa,IAAIrhD,mEAAO,EAAE;IACxCgsG,QAAQ,GAAG,EAAE;IACbpnG,iBAAiB,GAAsB,IAAIxG,0CAAO,EAAE;IACpD1C,MAAM;IACNyuH,UAAU;IACV7oE,QAAQ,GAAG,KAAK;IAChBC,QAAQ,GAAG,KAAK;IAChBC,QAAQ,GAAG,KAAK;IAChBC,QAAQ,GAAG,KAAK;IAChBC,WAAW,GAAG,KAAK;IACnB76C,WAAW,GAAG,KAAK;IACnBG,WAAW,GAAG,KAAK;IACnBI,WAAW,GAAG,KAAK;IACnBa,YAAY,GAAG,KAAK;IACpBgkG,EAAE;IACF7jG,sBAAsB,GAA6B,EAAE;IACrDC,uBAAuB,GAA6B,EAAE;IACtDkV,4BAA4B,GAA6B,EAAE;IAC3DskC,6BAA6B,GAA6B,EAAE;IAC5Dv5C,UAAU,GAAe,EAAE;IAC3BC,gBAAgB,GAAe,EAAE;IACjCK,YAAY,GAAkB,IAAItJ,4EAAY,EAAE;IAChDqS,OAAO,GAAG,EAAE;IACZy4G,mBAAmB,GAAyB,IAAI1vC,yFAAmB,EAAE;IACrEnxE,QAAQ,GAAG,CAAC;IACZI,gBAAgB,GAAoB,IAAIzJ,mFAAc,EAAE;IACxD0J,6BAA6B,GAAyB,IAAInL,6FAAmB,EAAE;IAC/EoL,8BAA8B,GAAyB,IAAIpL,6FAAmB,EAAE;IAChF6pI,SAAS,GAAoB,IAAI54D,0EAAc,EAAE;IACjDrxB,UAAU,GAAgB,IAAIJ,wEAAU,EAAE;IAC1CtF,kBAAkB,GAAa,EAAE;IACjCiC,WAAW,GAAiB,IAAIxN,0EAAW,EAAE;IAC7CE,eAAe,GAAiB,IAAIF,0EAAW,EAAE;IACjDljC,WAAW,GAAiB,IAAI/J,0EAAW,EAAE;IAC7CgK,WAAW,GAAiB,IAAIzL,2EAAW,EAAE;IAC7C6pI,sBAAsB,GAAY,EAAE;IACpCC,yBAAyB,GAAc,CAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAE;IACxFr8B,WAAW,GAAa,IAAIs8B,GAAG,EAAM;IACrC99H,YAAY,GAAa,IAAIpL,kEAAO,EAAE;IACtCkL,cAAc,GAAY,CAAC;IAC3Bw3C,4BAA4B,GAAoB,IAAI/hD,mFAAc,EAAE;IACpE8hD,sBAAsB,GAAe,EAAE;IACvCt3C,OAAO,GAAa,IAAInL,kEAAO,EAAE;IACjCswH,QAAQ,GAAY,CAAC;IAErBr0H,KAAK;IACL6uH,UAAU;IAEjB79G,YACS29C,6BAA6D,EAC7D7nD,0BAAuD,EACvD8kB,iBAAqC,EACrC7kB,mBAAyC,EACzCC,oBAA2C,EAC3CE,WAAyB,EACzBw1C,cAA+B,EAC/ByG,aAA6B,EAC7Bx7C,qBAA6C,EAC7CC,mBAAyC,EACzC5B,mBAAyC,EACzCuB,cAA+B,EAC/Bq+C,mBAAyC,EACzCjD,iBAAqC,EACrClG,qBAA6C,EAC7C2G,kBAAuC,EACvCnJ,kBAAuC,EACvCt4B,kBAAuC,EACvChb,IAAsC,EACtCkB,cAA+B,EAC/BC,mBAAyC,EACzC1B,sBAA+C;MArB/C,kCAA6B,GAA7BuoD,6BAA6B;MAC7B,+BAA0B,GAA1B7nD,0BAA0B;MAC1B,sBAAiB,GAAjB8kB,iBAAiB;MACjB,wBAAmB,GAAnB7kB,mBAAmB;MACnB,yBAAoB,GAApBC,oBAAoB;MACpB,gBAAW,GAAXE,WAAW;MACX,mBAAc,GAAdw1C,cAAc;MACd,kBAAa,GAAbyG,aAAa;MACb,0BAAqB,GAArBx7C,qBAAqB;MACrB,wBAAmB,GAAnBC,mBAAmB;MACnB,wBAAmB,GAAnB5B,mBAAmB;MACnB,mBAAc,GAAduB,cAAc;MACd,wBAAmB,GAAnBq+C,mBAAmB;MACnB,sBAAiB,GAAjBjD,iBAAiB;MACjB,0BAAqB,GAArBlG,qBAAqB;MACrB,uBAAkB,GAAlB2G,kBAAkB;MAClB,uBAAkB,GAAlBnJ,kBAAkB;MAClB,uBAAkB,GAAlBt4B,kBAAkB;MAClB,SAAI,GAAJhb,IAAI;MACJ,mBAAc,GAAdkB,cAAc;MACd,wBAAmB,GAAnBC,mBAAmB;MACnB,2BAAsB,GAAtB1B,sBAAsB;MAE7B;IACF;IACA;IACA2R,WAAW;MACT;MACA,IAAI,CAAC3O,iBAAiB,CAAC4O,IAAI,CAAC,IAAI,CAAC;MACjC,IAAI,CAAC5O,iBAAiB,CAAC6O,QAAQ,EAAE;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IAEA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACOi1H,yCAAyC,CAAEvoC,SAAkB;MAClE,IAAInuE,IAAI,GAAG,IAAIvsB,IAAI,EAAE;MACrB,IAAI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AC1FynI,WAAW,GAAGF,SAAS;QACvBC,SAAS,CAACnqH,GAAG,CAAE7L,CAAC,IAAI;UAClBi2H,WAAW,CAACpqH,GAAG,CAAEkO,CAAC,IAAI;YACpB,IAAI/Z,CAAC,CAAC/Q,GAAG,CAACyO,QAAQ,EAAE,CAACxO,WAAW,EAAE,CAACC,OAAO,CAAC4qB,CAAC,CAAC9qB,GAAG,CAACyO,QAAQ,EAAE,CAACxO,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;cACjFlU,kIAAqC,CAAC++B,CAAC,EAAE/Z,CAAC,CAAC;aAC5C,MAAM;cACLi2H,WAAW,CAAC9oH,IAAI,CAACnN,CAAC,CAAC;;UAEvB,CAAC,CAAC;QACJ,CAAC,CAAC;OACH,MAAM;QACL,IAAI,CAACvjB,kLAAkD,CAACu5I,SAAS,CAAC,IAAIA,SAAS,CAACxnI,MAAM,GAAG,CAAC,EAAE;UAC1FynI,WAAW,GAAGD,SAAS;;;MAG3B,OAAOC,WAAW;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IAEA;IACA;;;;;IAKAC,MAAM,CAAE79F,KAAW;MACjB;MACA,IAAIA,KAAK,EAAE;QACT,OAAOn9C,oIAAiC,CAACm9C,KAAK,CAAC;;MAEjD,OAAO,IAAI;IACb;;uBAzzB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AAc,CAAC;;MAEtE,IAAI,CAACA,WAAW,GAAG,IAAI,CAACknJ,uBAAuB,CAACvyI,KAAK,CAAC;MAEtD;MACA,IAAI,CAACpe,yKAAkD,CAAC,IAAI,CAACyJ,WAAW,CAAC,IAAI,IAAI,CAACA,WAAW,CAACqG,SAAS,GAAG,CAAC,EAAE;QAC3G;QACApR,uIAAoC,CAAC,IAAI,CAAC+K,WAAW,CAAC;QACtD;QAEA,IAAI,CAACigH,mBAAmB,GAAG,IAAI,CAAC8lC,yCAAyC,CAAC,IAAI9iH,2EAAW,EAAE,EAAE,IAAI,CAACjjC,WAAW,CAAC;QAC9G;QACA;QACA;QACA;QACA;QAGA;QACA;QACA;QACA;QAEA;QACA;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAGA;QACA;QACA;;MAGF;MACF,IAAI,CAACzJ,yKAAkD,CAAC,IAAI,CAACyJ,WAAW,CAAC0M,YAAY,CAAC,IAAI,IAAI,CAAC1M,WAAW,CAAC0M,YAAY,CAACpE,MAAM,GAAG,CAAC,EAAE;QAChI;QACA,IAAI,CAACtQ,IAAI,CAACovJ,6BAA6B,CAAC,IAAI,CAACpnJ,WAAW,CAAC;;MAG3D;MACA/K,gJAA6C,CAAC,IAAI,CAACgrH,mBAAmB,CAAC,CAAC,CAAC;MACzE;MACA;MACF,OAAO,IAAI,CAACA,mBAAmB;MAC/B;IACF;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IACA;IA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EAAE;MACjC,OAAO,IAAI;IACb;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO4rC,cAAc,CAAEkD,SAAkB;MACvC,IAAIuxG,OAAa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O,IAAI;IAClB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IAEA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACSgyI,aAAa,CAAEhyI,KAAmB;MACzC,IAAI,CAACpe,yKAAkD,CAACoe,KAAK,CAAC,IAAI,CAACpe,yKAAkD,CAACoe,KAAK,CAAC2sB,KAAK,CAAC,EAAE;QAClI,IAAI3sB,KAAK,CAACusD,QAAQ,GAAG,GAAG,EAAE;UACxBvsD,KAAK,CAACusD,QAAQ,GAAGvsD,KAAK,CAACusD,QAAQ,GAAG,IAAI;UACtCvsD,KAAK,CAACisD,IAAI,GAAG,IAAI,CAACA,IAAI,GAAG,IAAI;SAC9B,MAAM;UACLjsD,KAAK,CAACisD,IAAI,GAAG,IAAI,CAACA,IAAI,GAAG,GAAG;;QAE9B,OAAO,IAAI,CAACA,IAAI;OACjB,MACI,OAAO,GAAG;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACOgmF,eAAe,CAAEnjH,KAAmB,EAAE9uB,KAAmB;MAC9D;MACA,IAAI,CAACpe,yKAAkD,CAACktC,KAAK,CAAC,EAAE;QAC9D,IAAI,CAACgN,WAAW,GAAGhN,KAAK;QACxB,IAAI,CAACltC,yKAAkD,CAAC,IAAI,CAACk6C,WAAW,CAAC,IAAI,IAAI,CAACA,WAAW,CAACpqC,SAAS,GAAG,CAAC,EAAE;UAC3G;UACA,IAAI,CAACwgJ,uBAAuB,CAAC,IAAI,CAACp2G,WAAW,CAAC,CAAChrC,SAAS,CAAC1T,IAAI,IAAG;YAC9D,IAAI,CAAC0+C,WAAW,GAAG1+C,IAAI;YACvB,IAAI,CAACq1D,QAAQ,GAAG,IAAI,CAACknD,cAAc,CAACx5D,mCAAmC,CAAC,IAAI,CAACrE,WAAW,CAAC;YACzF;YACA,IAAI,CAAC+/B,sBAAsB,GAAG,IAAI,CAAC1iC,qBAAqB,CAACyxF,4BAA4B,CAAC,IAAI,CAAC9uF,WAAW,CAAC;YAEvG;YACA,IAAI,CAACwvE,mBAAmB,CAACvvC,iBAAiB,CAAC,IAAI,CAACjgC,WAAW,EAAE,IAAI,CAAC+/B,sBAAsB,EAAE,IAAI,CAACppB,QAAQ,CAAC;YACxG,IAAI,CAACjkB,eAAe,CAAC+zB,IAAI,CAAC,IAAI,CAACzmB,WAAW,CAAC;UAC7C,CAAC,CAAC;UACF;UACA,IAAI,CAACyD,UAAU,GAAG,IAAI,CAACj3B,iBAAiB,CAACo3B,oBAAoB,CAACzF,GAAG,CAAC,IAAI,CAAC6B,WAAW,CAACpqC,SAAS,CAAe;UAC3G;UACA,IAAI,CAAC9P,yKAAkD,CAAC,IAAI,CAAC29C,UAAU,CAAC,EAAE;YACxE;YACA,IAAI,CAACM,aAAa,CAACu8E,aAAa,CAAC,IAAI,CAAC78E,UAAU,CAAC;YACjD,IAAI,CAAC1F,kBAAkB,GAAG,IAAI,CAACT,cAAc,CAAC6vE,sBAAsB,CAAC,IAAI,CAAC1pE,UAAU,CAAC;YAErF;YACA,IAAI,CAAC+rE,mBAAmB,CAACvvC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAACx8B,UAAU,EAAE,IAAI,CAACzD,WAAW,EAAE,IAAI,CAACtN,eAAe,EAAE,IAAI,CAACnjC,WAAW,EAAE,IAAI,EAAE,IAAI,CAACwwE,sBAAsB,EAAE,IAAI,CAAChiC,kBAAkB,EAAE,IAAI,CAAC4Y,QAAQ,CAAC;;;QAG1M,OAAO,IAAI,CAAC64D,mBAAmB;OAChC,MACI,OAAO,IAAI;IAClB;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACOmf,6BAA6B,CAAE0nB,KAAmB;MAEvD,OAAO,IAAI9jH,6CAAU,CAAOY,UAAU,IAAI;QACxC,IAAIH,KAAK,GAAGqjH,KAAK;QACjB,IAAIj/H,IAAI,GAAG,IAAIvsB,IAAI,EAAE;QAErB;QACA,IAAI,CAAC2kH,mBAAmB,GAAGhrH,+IAA4C,EAAE;QACzE;QACA,IAAI,CAACsB,yKAAkD,CAACktC,KAAK,CAAC,EAAE;UAC9D,IAAI,CAACgN,WAAW,GAAGhN,KAAK;UACxB,IAAI,CAACltC,yKAAkD,CAAC,IAAI,CAACk6C,WAAW,CAAC,IAAI,IAAI,CAACA,WAAW,CAACpqC,SAAS,GAAG,CAAC,EAAE;YAC3G;YACA,IAAI,CAACwgJ,uBAAuB,CAAC,IAAI,CAACp2G,WAAW,CAAC,CAAChrC,SAAS,CAAC1T,IAAI,IAAG;cAC9D,IAAI,CAACkuH,mBAAmB,GAAGluH,IAAI;cAC/B6xC,UAAU,CAACv6B,IAAI,CAAC,IAAI,CAAC42G,mBAAmB,CAAC;cACzCr8E,UAAU,CAACt6B,QAAQ,EAAE;cACrB;YACF,CAAC,CAAC;YACF;YACA;YACA,IAAI,IAAI,CAAC2T,iBAAiB,CAACo3B,oBAAoB,CAAC5mC,GAAG,CAAC,IAAI,CAACgjC,WAAW,CAACpqC,SAAS,CAAC,EAAE;cAC/E,IAAI,CAAC6tC,UAAU,GAAG,IAAI,CAACj3B,iBAAiB,CAACo3B,oBAAoB,CAACzF,GAAG,CAAC,IAAI,CAAC6B,WAAW,CAACpqC,SAAS,CAAe;cAE3G;cACA,IAAI,CAAC9P,yKAAkD,CAAC,IAAI,CAAC29C,UAAU,CAAC,IAAI,IAAI,CAACA,UAAU,CAAC7tC,SAAS,GAAG,CAAC,EAAE;gBACzG;gBACA,IAAI,CAACmuC,aAAa,CAACu8E,aAAa,CAAC,IAAI,CAAC78E,UAAU,CAAC;gBACjD,IAAI,CAAC1F,kBAAkB,GAAG,IAAI,CAACT,cAAc,CAAC6vE,sBAAsB,CAAC,IAAI,CAAC1pE,UAAU,CAAC;gBAErF;gBACA,IAAI,CAAC+rE,mBAAmB,CAACvvC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAACx8B,UAAU,EAAEzQ,KAAK,EAAEA,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC+K,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC;gBAChI5K,UAAU,CAACv6B,IAAI,CAAC,IAAI,CAAC42G,mBAAmB,CAAC;gBACzCr8E,UAAU,CAACt6B,QAAQ,EAAE;;;YAGzB;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA,IAAI,CAACwkC,qBAAqB,CAACk5G,kCAAkC,CAAC,IAAI,CAACv2G,WAAW,CAAC,CAACv+C,IAAI,CAACwT,MAAM,IAAG;cAC5F;cACA,IAAIA,MAAM,EAAE;gBACV;gBACA,IAAI,CAACu6G,mBAAmB,GAAGv6G,MAAM;gBACjCk+B,UAAU,CAACv6B,IAAI,CAAC,IAAI,CAAC42G,mBAAmB,CAAC;gBACzCr8E,UAAU,CAACt6B,QAAQ,EAAE;eACtB,MACI;gBACH;gBACAmF,OAAO,CAACC,GAAG,CAACmZ,IAAI,CAACtsB,OAAO,EAAE,GAAG,+GAA+G,CAAC;;YAEjJ,CAAC,CAAC,CAACi6D,KAAK,CAAClyC,KAAK,IAAG;cACf;cACA7U,OAAO,CAACC,GAAG,CAACmZ,IAAI,CAACtsB,OAAO,EAAE,GAAG,uHAAuH,CAAC;YACvJ,CAAC,CAAC;YACN;YACI;YACA;;;MAIN,CAAC,CAAC;IACJ;IACA;IACO4qJ,qBAAqB,CAAExxI,KAAmB,EAAEsyI,YAAqB;MACtE;MACA,IAAI,CAAC1wJ,yKAAkD,CAACoe,KAAK,CAAC,IAAIA,KAAK,CAACtO,SAAS,GAAG,CAAC,EAAE;QACrFsO,KAAK,CAACozD,OAAO,GAAGk/E,YAAY,GAAGtyI,KAAK,CAACtO,SAAS,CAACmR,QAAQ,EAAE;QAEzD7C,KAAK,GAAG,IAAI,CAACuyI,uBAAuB,CAACvyI,KAAK,CAAC;QAE3C;QACA,IAAIpe,yKAAkD,CAACoe,KAAK,CAAC2nD,MAAM,CAAC,IAC/D,CAAC/lE,yKAAkD,CAAC0wJ,YAAY,CAAC,EACpE;UAAEtyI,KAAK,CAAC2nD,MAAM,GAAG2qF,YAAY,GAAGtyI,KAAK,CAACtO,SAAS;;QAEjD;QACA,IAAI,CAAC9P,yKAAkD,CAACoe,KAAK,CAACjI,YAAY,CAAC,EAAE;UAC3EiI,KAAK,CAAC00D,eAAe,GAAG,IAAI;UAC5B10D,KAAK,CAAC20D,mBAAmB,GAAG,IAAI;UAChC;;QAEF;QACA,OAAO30D,KAAK;OACb,MACI;QAAE,OAAO,IAAI;;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACOkyI,uBAAuB,CAAEC,KAAmB;MACjD,IAAIrjH,KAAK,GAAGqjH,KAAK;MACjB,OAAO,IAAI9jH,6CAAU,CAAOY,UAAU,IAAI;QAExC,IAAI,CAACrtC,yKAAkD,CAACktC,KAAK,CAAC,IAAIA,KAAK,CAACp9B,SAAS,GAAG,CAAC,EAAE;UAErF;UACA;UACA,IAAI,CAAC45G,mBAAmB,GAAG,IAAI,CAAC8lC,yCAAyC,CAACtiH,KAAK,EAAE,IAAIlvC,2EAAW,EAAE,CAAC;UACnG;UAEA;UACA;UACAqvC,UAAU,CAACv6B,IAAI,CAAC,IAAI,CAAC42G,mBAAmB,CAAC;UACzCr8E,UAAU,CAACt6B,QAAQ,EAAE;;MAEzB,CAAC,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACC;IACD;IACA;IACA;IACA;IACA;IACF;IACS41H,uBAAuB,CAAE6U,OAAqB;MACnD;MACE;MACA,IAAIp/H,KAAW;MACf,IAAI8yC,MAAY;MAChB,IAAI,CAACxqD,WAAW,GAAGhI,uIAAoC,EAAE;MACzD,IAAI,CAAC4H,WAAW,GAAG5H,uIAAoC,EAAE;MACzD,IAAI,CAAC6I,YAAY,GAAG7I,uIAAoC,EAAE;MAE1D,IAAI,CAACsB,yKAAkD,CAACw9I,OAAO,CAAC,IAAKA,OAAO,CAAC1tI,SAAS,GAAG,CAAC,EAAE;QAC1F,IAAI,CAACrG,WAAW,CAAC+U,uBAAuB,CAAC,IAAI,CAAC/U,WAAW,EAAE+zI,OAAO,CAAC;OACpE,MACI,IAAI,IAAI,CAACj2I,YAAY,EAAE;QAC1B,IAAI,CAACkC,WAAW,GAAG/K,+IAA4C,EAAE;OAClE,MACI,IAAI,IAAI,CAACgI,WAAW,IAAI,IAAI,CAACJ,WAAW,EAAE;QAC7C,IAAI,CAACmD,WAAW,GAAG/K,6IAA0C,EAAE;OAChE,MACI;QACH,IAAI,CAACsB,yKAAkD,CAAC,IAAI,CAACgK,OAAO,CAAC,IAAI,IAAI,CAACA,OAAO,CAAC8F,SAAS,GAAG,CAAC,EAAE;UACnG,IAAI,CAACrG,WAAW,GAAG,IAAI,CAACid,iBAAiB,CAAC+3G,yBAAyB,CAAC,IAAI,CAACz0H,OAAO,CAAC8F,SAAS,CAAC;;;MAG/F;MACA;MACA,IAAI,CAAC9P,yKAAkD,CAAC,IAAI,CAACyJ,WAAW,CAAC,IAAI,IAAI,CAACA,WAAW,CAACqG,SAAS,GAAG,CAAC,EAAE;QAE3G;QACA;QACA;QACA;QACA;QAEAsO,KAAK,GAAG,IAAI,CAACwxI,qBAAqB,CAAC,IAAI,CAACnmJ,WAAW,EAAE,cAAc,CAAC;;MAEtE,IAAI,CAACA,WAAW,GAAG,IAAI,CAACknJ,uBAAuB,CAACvyI,KAAK,CAAC;MAEtD;MACA,IAAI,CAACpe,yKAAkD,CAAC,IAAI,CAACyJ,WAAW,CAAC,IAAI,IAAI,CAACA,WAAW,CAACqG,SAAS,GAAG,CAAC,EAAE;QAC3G;QACApR,uIAAoC,CAAC,IAAI,CAAC+K,WAAW,CAAC;QACtD;QAEA,IAAI,CAACigH,mBAAmB,GAAG,IAAI,CAAC8lC,yCAAyC,CAAC,IAAI9iH,2EAAW,EAAE,EAAE,IAAI,CAACjjC,WAAW,CAAC;QAC9G,IAAI,CAACigH,mBAAmB,CAAC55G,SAAS,GAAG,IAAI,CAACrG,WAAW,CAACqG,SAAS;QAC/D;QACA;QACA;QACA;QACA;QAGA;QACA;QACA;QACA;QAEA;QACA;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAGA;QACA;QACA;;MAGF;MACF,IAAI,CAAC9P,yKAAkD,CAAC,IAAI,CAACyJ,WAAW,CAAC0M,YAAY,CAAC,IAAI,IAAI,CAAC1M,WAAW,CAAC0M,YAAY,CAACpE,MAAM,GAAG,CAAC,EAAE;QAChI;QACA,IAAI,CAACtQ,IAAI,CAACovJ,6BAA6B,CAAC,IAAI,CAACpnJ,WAAW,CAAC;;MAG3D;MACA/K,gJAA6C,CAAC,IAAI,CAACgrH,mBAAmB,CAAC,CAAC,CAAC;MACzE;MACA;MACF,OAAO,IAAI,CAACA,mBAAmB;MAC/B;IACF;IACA;IACA;IACA;IACA;IACA;IACO6zB,2CAA2C,CAAEC,OAAqB;MACvE,OAAO,IAAI/wG,6CAAU,CAAOY,UAAU,IAAI;QACxC;QACA;QACA;QACA;QACA;QACA;QACA;QACA,IAAI,CAAC9lC,YAAY,GAAG7I,wIAAqC,EAAE;QAC3D,IAAI,CAACgI,WAAW,GAAGhI,uIAAoC,EAAE;QACzD,IAAI,CAAC4H,WAAW,GAAG5H,uIAAoC,EAAE;QAEzD,IAAI,CAACsB,yKAAkD,CAACw9I,OAAO,CAACjrI,OAAO,CAAC,KAEnE,CAACvS,yKAAkD,CAACw9I,OAAO,CAACjrI,OAAO,CAACo7B,KAAK,CAAC,IAAI6vG,OAAO,CAACjrI,OAAO,CAACo7B,KAAK,CAAC57B,MAAM,GAAG,CAAC,IAC3G,CAAC/R,yKAAkD,CAACw9I,OAAO,CAACjrI,OAAO,CAAC8E,KAAK,CAAC,IAAImmI,OAAO,CAACjrI,OAAO,CAAC8E,KAAK,CAACtF,MAAM,GAAG,CAAE,CACpH,EAED;UACA,IAAI,CAACtI,WAAW,GAAG+zI,OAAO;UAC1B,IAAI17F,YAAY,GAAG,IAAI,CAACp/C,mBAAmB,CAAC4mI,wCAAwC,CAAC,CAAE,IAAI,CAAC7/H,WAAW,CAAC8I,OAAO,CAAE,EAAE,mBAAmB,CAAC;UACvI,IAAI,CAACvS,yKAAkD,CAAC8hD,YAAY,CAAC,IAAIA,YAAY,CAAC/vC,MAAM,GAAG,CAAC,EAAE;YAChG,IAAI,CAACtI,WAAW,CAAC8I,OAAO,GAAGuvC,YAAY,CAAE,CAAC,CAAE;;UAG/C;UAEC;UACA,IAAI,IAAI,CAACv6C,YAAY,EAAE;YACrB;YACA;YACA,IAAI,CAACW,YAAY,GAAGxJ,wIAAqC,EAAE;YAC3D,IAAI,IAAI,CAACwJ,YAAY,CAAC6B,cAAc,KAAK,IAAI,CAACN,WAAW,CAACqG,SAAS,EAAE;cACnE;cACA;cACA;YAAA;YAEF,IAAI,CAAC9P,yKAAkD,CAAC,IAAI,CAACiJ,gBAAgB,CAAC,EAAE;cAC9E;cACA,IAAI,CAACA,gBAAgB,CAACk4C,6BAA6B,GAAG,IAAI,CAACA,6BAA6B;;;UAG5F,IAAI,IAAI,CAACz6C,WAAW,IAAI,IAAI,CAACJ,WAAW,EAAE;YACxC;YAEA,IAAI,CAACuW,4BAA4B,GAAG,IAAI,CAAC/a,oBAAoB,CAACopD,mCAAmC,CAAC,IAAI,CAACzhD,WAAW,CAAC8I,OAAO,CAAC,CAAC,CAAC;YAC7H,IAAI,CAACtJ,gBAAgB,CAAC4T,4BAA4B,GAAG,IAAI,CAACA,4BAA4B;;UAGxF;UACAne,oJAAiD,CAAC,IAAI,CAACuK,gBAAgB,CAAC;UACxE;UACAokC,UAAU,CAACv6B,IAAI,CAAC,IAAI,CAAC7J,gBAAgB,CAAC;SACvC,MACI;UACH,IAAI,CAACgI,OAAO,GAAG,mHAAmH;UAClIiH,OAAO,CAACC,GAAG,CAAC,IAAI,CAAClH,OAAO,CAAC;;MAE7B,CAAC,CAAC;IACJ;IACA;IACOk5C,0CAA0C,CAAEqzF,OAAqB;MACtE,OAAO,IAAI/wG,6CAAU,CAAOY,UAAU,IAAI;QACxC;QACA;QACA;QACA;QACA;QACA;QACA;QACA,IAAI,CAAC9lC,YAAY,GAAG7I,wIAAqC,EAAE;QAC3D,IAAI,CAACgI,WAAW,GAAGhI,uIAAoC,EAAE;QACzD,IAAI,CAAC4H,WAAW,GAAG5H,uIAAoC,EAAE;QAEzD,IAAI,CAACsB,yKAAkD,CAACw9I,OAAO,CAACjrI,OAAO,CAAC,KAEnE,CAACvS,yKAAkD,CAACw9I,OAAO,CAACjrI,OAAO,CAACo7B,KAAK,CAAC,IAAI6vG,OAAO,CAACjrI,OAAO,CAACo7B,KAAK,CAAC57B,MAAM,GAAG,CAAC,IAC3G,CAAC/R,yKAAkD,CAACw9I,OAAO,CAACjrI,OAAO,CAAC8E,KAAK,CAAC,IAAImmI,OAAO,CAACjrI,OAAO,CAAC8E,KAAK,CAACtF,MAAM,GAAG,CAAE,CACpH,EACD;UACA,IAAI,CAACtI,WAAW,GAAG+zI,OAAO;UAC1B,IAAI17F,YAAY,GAAG,IAAI,CAACp/C,mBAAmB,CAAC4mI,wCAAwC,CAAC,CAAE,IAAI,CAAC7/H,WAAW,CAAC8I,OAAO,CAAE,EAAE,mBAAmB,CAAC;UACvI,IAAI,CAACvS,yKAAkD,CAAC8hD,YAAY,CAAC,IAAIA,YAAY,CAAC/vC,MAAM,GAAG,CAAC,EAAE;YAChG,IAAI,CAACtI,WAAW,CAAC8I,OAAO,GAAGuvC,YAAY,CAAE,CAAC,CAAE;;UAE/C;UACA;UAEC;UACA,IAAI,IAAI,CAACv6C,YAAY,EAAE;YACrB;YACA,IAAIyC,OAAO,GAAatL,wIAAqC,EAAE;YAC/D,IAAIsL,OAAO,CAAC8F,SAAS,KAAK,IAAI,CAACrG,WAAW,CAACqG,SAAS,EAAE;cACpD;cACA;cACA;cACA;cACA;cACA;cAEA,IAAI,CAAC7G,gBAAgB,GAAG,IAAI,CAACwgD,6BAA6B,CAAC0zF,yCAAyC,CAAC,IAAI,CAAC1zI,WAAW,CAAC8I,OAAO,EAAE,CAAE,IAAI,CAAC9I,WAAW,CAAC8I,OAAO,CAAE,CAAC;cAC5J;cACA,IAAI,CAACvS,yKAAkD,CAAC,IAAI,CAACiJ,gBAAgB,CAAC,EAAE;gBAC9E;gBACA,IAAI,CAACA,gBAAgB,CAACk4C,6BAA6B,GAAG,IAAI,CAACA,6BAA6B;;;WAG7F,MACI,IAAI,IAAI,CAAC76C,WAAW,EAAE;YACxB;YACD;YACA;YACA,IAAI,CAAC2C,gBAAgB,GAAG,IAAI,CAACwgD,6BAA6B,CAAC0zF,yCAAyC,CAAC,IAAI,CAAC1zI,WAAW,CAAC8I,OAAO,EAAE,CAAE,IAAI,CAAC9I,WAAW,CAAC8I,OAAO,CAAE,CAAC;YAC5J;YACA,IAAI,CAACvS,yKAAkD,CAAC,IAAI,CAACiJ,gBAAgB,CAAC,IACzE,CAACjJ,yKAAkD,CAAC,IAAI,CAACiJ,gBAAgB,CAAC04C,UAAU,CAAC,IACrF,IAAI,CAAC14C,gBAAgB,CAAC04C,UAAU,CAAC5vC,MAAM,GAAG,CAAC,EAAE;cAChD;cACA,IAAI,CAAC8K,4BAA4B,GAAG,IAAI,CAAC/a,oBAAoB,CAAC8rD,qCAAqC,EAAE;;WAExG,MACI,IAAI,IAAI,CAAClnD,WAAW,EAAE;YACzB;YACA,IAAI,CAACmW,4BAA4B,GAAG,IAAI,CAAC/a,oBAAoB,CAACopD,mCAAmC,CAAC,IAAI,CAACzhD,WAAW,CAAC8I,OAAO,CAAC,CAAC,CAAC;YAC7H,IAAI,CAACtJ,gBAAgB,CAAC4T,4BAA4B,GAAG,IAAI,CAACA,4BAA4B;;UAExFwwB,UAAU,CAACv6B,IAAI,CAAC,IAAI,CAAC7J,gBAAgB,CAAC;;MAE1C,CAAC,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO8nJ,kBAAkB;MACvB,OAAO,IAAI,CAAC9B,kBAAkB;IAChC;IACA;IACOe,mDAAmD,CAAE34H,YAAmB;MAC7E,IAAI,CAACr3B,yKAAkD,CAACq3B,YAAY,CAAC,IAChE,CAACr3B,yKAAkD,CAACq3B,YAAY,CAACszC,QAAQ,CAAC,IAC1EtzC,YAAY,CAACszC,QAAQ,IAAI,CAAC,IAC1B,CAAC3qE,yKAAkD,CAACq3B,YAAY,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nE;QACF;QACA,KAAK,UAAU;UACb,IAAI,CAAC/3D,kBAAkB,GAAG,IAAI+3D,oDAAU,EAA0B;UAClE;QACF,KAAK,YAAY;UACf,IAAI,CAACi4C,oBAAoB,GAAG,IAAIj4C,oDAAU,EAA0B;UACpE;QACF;QACA,KAAK,QAAQ;UACX,IAAI,CAACw3C,gBAAgB,GAAG,IAAIx3C,oDAAU,EAA0B;UAChE;QACF,KAAK,UAAU;UACb,IAAI,CAACk4C,kBAAkB,GAAG,IAAIl4C,oDAAU,EAA0B;UAClE;QACF;QACA;QACA,KAAK,QAAQ;QACb,KAAK,UAAU;UACb;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,SAAS;QACd,KAAK,WAAW;UACd;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,QAAQ;QACb,KAAK,UAAU;UACb;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,UAAU;QACf,KAAK,YAAY;UACf;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,kBAAkB;QACvB,KAAK,oBAAoB;UACvB;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,yBAAyB;QAC9B,KAAK,2BAA2B;UAC9B;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,+BAA+B;QACpC,KAAK,iCAAiC;UACpC;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QAEF;QACA;QACA;QACA;QACA,KAAK,UAAU;UACb;UACA;UACA;QACF;QACA;QACA,KAAK,QAAQ;UACX;UACA;UACA;QACF;QACA;QACA;QACA;QACA,KAAK,WAAW;UACd;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,SAAS;UACZ;UACA;UACA;QACF;QACA;QACA;QACA;QACA,KAAK,kBAAkB;UACrB;UACA;UACA;QACF;QACA,KAAK,gBAAgB;UACnB;UACA;UACA;QACF;QACA;QACA;QACA;QACA,KAAK,WAAW;UACd;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,SAAS;UACZ;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QAEF;QACA;QACA,KAAK,OAAO;UACV;UACA;UACA;QACF;QACA;QACA,KAAK,YAAY;UACf;UACA;UACA;QACF;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,KAAK,aAAa;UAChB;UACA;UACA;QACF;QACA;QACA,KAAK,aAAa;UAChB;UACA;UACA;QACF;QACA;QACA;QACA,KAAK,eAAe;UAClB;UACA;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QAEF;QACA;QACA,KAAK,aAAa;UAChB;UACA;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UAEA;UACA;UAEA;UACA;QACF;QACA;QACA;QACA;QACA;QACA,KAAK,WAAW;UACd;UACA;UACA;UACA;UACA;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;QACA,KAAK,SAAS;UACZ;UACA;UACA;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QAEF;QACA;QACA,KAAK,cAAc;UACjB;UACD;UACC;UAEA;QACF,KAAK,iBAAiB;UACpB;UACA,IAAI,CAACC,yBAAyB,GAAG,IAAID,oDAAU,EAAmB;UAElE;QACF,KAAK,mBAAmB;UACtB,IAAI,CAACl1B,2BAA2B,GAAG,IAAIk1B,oDA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;;EAKA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;;;;;;EAOC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACD;;;;;;;;;;;;;EAcA;EAEA;;;;EAIA;EACA,OAAOw2F,mBAAmB,GAAG,MAAK;IAEhC,MAAMggD,IAAI,GAAG,IAAIC,OAAO,EAAE;IAC1B,OAAO,CAACxlK,GAAS,EAAE6E,KAAW,KAAK;MAEjC,IAAK,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAChD;QACE,IAAK0gK,IAAI,CAAC7gK,GAAG,CAAEG,KAAK,CAAE,EACtB;UACE;;QAEF0gK,IAAI,CAACE,GAAG,CAAE5gK,KAAK,CAAE;;MAEnB,OAAOA,KAAK;IACd,CAAC;EACH,CAAC;EAED;EACY;EACZ;EACA;EACA;EACO,OAAO2uL,YAAY,CAAClxL,KAAa,EAAEisB,OAAe;IACvD,IAAI,CAAC,IAAI,CAAC1yB,aAAa,CAACyG,KAAK,CAAC,EAAE;MAC9B,OAAOA,KAAK,CAACpC,OAAO,CAACquB,OAAO,CAAC;;EAEjC;EACA;EACO,OAAOmwK,UAAU,CAACp8L,KAAa;IACpC,IAAI,CAAC,IAAI,CAACzG,aAAa,CAACyG,KAAK,CAAC,EAAE;MAC9B,IAAImpJ,IAAI,GAAGnpJ,KAAK,CAACoyB,IAAI,EAAE,CAACpY,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;MAEzC,IAAI,CAAC,IAAI,CAACzgB,aAAa,CAAC4vJ,IAAI,CAAC,EAAE;QAC7BA,IAAI,GAAGA,IAAI,CAAC/2H,IAAI,EAAE,CAACpY,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;;MAEtC,IAAI,CAAC,IAAI,CAACzgB,aAAa,CAAC4vJ,IAAI,CAAC,EAAE;QAC7BA,IAAI,GAAGA,IAAI,CAAC/2H,IAAI,EAAE,CAACpY,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;;MAErC,OAAOmvI,IAAI;;IAEb,OAAOnpJ,KAAK;EACd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACO,OAAOuxL,yBAAyB,CAAEl1K,GAAU;IAChD;IACA;IACA;IAED;IACA;IAEA;IACC,IAAI,CAAC,IAAI,CAAC9iB,aAAa,CAAC8iB,GAAG,CAAC,EAAE;MAC7B,OAAOA,GAAG,CAAC1e,WAAW,EAAE,CAACqc,OAAO,CAAC,qBAAqB,EAAE,CAACw3K,GAAG,EAAEC,GAAG,KAAKA,GAAG,KAAK,CAAC,GAAGD,GAAG,CAAC7zL,WAAW,EAAE,GAAG6zL,GAAG,CAAC/kK,WAAW,EAAE,CAAC,CAACzS,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;KAC5I,MACI,OAAO,EAAE;EACjB;EACA;EACA;EACA;EACO,OAAO03K,qBAAqB,CAAEC,MAAY;IAC/C,OAAOA,MAAM,CAACzjK,MAAM,CAAC,CAAC,CAAC,CAACzB,WAAW,EAAE,GAAGklK,MAAM,CAAC19J,KAAK,CAAC,CAAC,CAAC;EACzD;EACA;EACA;EACA;EACA;EACO,OAAO29J,oBAAoB,CAAEv1K,GAAW;IAC7C,OAAOA,GAAG,CAAC6R,MAAM,CAAC,CAAC,CAAC,CAACvwB,WAAW,EAAE,GAAG0e,GAAG,CAAC4X,KAAK,CAAC,CAAC,CAAC;EACnD;EAGA;EACO,OAAO49J,YAAY,CAAEx1K,GAAW;IACrC,CAAC;IACD,OAAO,EAAE;EACX;EACA;EACO,OAAOqb,gBAAgB,CAACzjC,SAAiB;IAC9C;;;;;;;;;;;;;;IAcA,IAAI,CAAC,IAAI,CAACsF,aAAa,CAACtF,SAAS,CAAC,EAAE;MAClC,MAAMooM,KAAK,GAAG,IAAI11K,KAAK,CAAC,GAAG1yB,SAAS,CAAC,CAAC,CAAC;MACvC,IAAIk1J,IAAI,GAAG,EAAE;MACb,IAAIrmJ,CAAC,GAAG,CAAC;MAET,OAAOA,CAAC,GAAGu5L,KAAK,CAACp/L,MAAM,IAAIo/L,KAAK,CAACv5L,CAAC,CAAC,KAAK,GAAG,EAAE;QAC3CqmJ,IAAI,IAAIkzC,KAAK,CAACv5L,CAAC,CAAC;QAChBA,CAAC,EAAE;;MAELqmJ,IAAI,IAAI,GAAG;MACXA,IAAI,IAAIkzC,KAAK,CAACv5L,CAAC,CAAC;MAChBA,CAAC,EAAE;MACH,OAAOA,CAAC,GAAGu5L,KAAK,CAACp/L,MAAM,EAAE;QACvBksJ,IAAI,IAAIkzC,KAAK,CAACv5L,CAAC,CAAC;QAChBA,CAAC,EAAE;;MAEL;;;;;;MAMA,MAAM4sB,KAAK,GAAGy5H,IAAI,CAACrvI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;MAChC;MAEA,IAAI,CAAC,IAAI,CAACvgB,aAAa,CAACm2B,KAAK,CAAC,IAAIA,KAAK,CAACzyB,MAAM,KAAK,CAAC,EAAE;QACpD,IAAI,CAAC,IAAI,CAAC1D,aAAa,CAACm2B,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACjC,MAAM4sK,UAAU,GAAG,GAAG,GAAG5sK,KAAK,CAAC,CAAC,CAAC;UACjC;UACA,MAAM6sK,SAAS,GAAGD,UAAU,CAACxiL,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;UAC1C;UAEA,IAAI,CAAC,IAAI,CAACvgB,aAAa,CAACgjM,SAAS,CAAC,IAAIA,SAAS,CAACt/L,MAAM,GAAG,CAAC,EAAE;YAC1D;YACA,OAAQhJ,SAAS,GAAGy7B,KAAK,CAAC,CAAC,CAAC,CAAC0C,IAAI,EAAE,GAAG,YAAY,GAAGmqK,SAAS,CAAC,CAAC,CAAC;;;;;IAKzE,OAAOtoM,SAAS;EAClB;EACA;EACA,OAAO69L,eAAe,CAACC,YAAoB;IACzC;IACA,IAAI,CAAC,IAAI,CAACx4L,aAAa,CAACw4L,YAAY,CAAC,EAAE;MACrC,IAAIA,YAAY,CAACn0L,OAAO,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,EAAE;QAC7D;QACA,OAAO,4BAA4B,GAAGm0L,YAAY;;;IAGtD,OAAOA,YAAY;EACrB;EACA;EACA,OAAOx4L,aAAa,CAAGyG,KAAW;IAEhC,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,EAAE,IAAIA,KAAK,KAAKqvB,SAAS,IAAKrvB,KAAK,KAAK,IAAI,KAAKA,KAAK,CAACmM,QAAQ,EAAE,CAACxO,WAAW,EAAE,KAAK,MAAM,IAAIqC,KAAK,CAACmM,QAAQ,EAAE,CAACxO,WAAW,EAAE,KAAK,WAAW,CAAE,EAAE;MAC9K,OAAO,IAAI;;IAEb,OAAO,KAAK;EACd;EACA;EACA;EACA;EACA;EACA,OAAOwwF,aAAa,CAAE5rF,KAAW;IAC/B;IACA,IAAIy5L,MAAM,GAAG,EAAE;IACf,IAAI,CAACf,OAAO,GAAG,EAAE;IACjB,IAAI,CAAC,IAAI,CAAC1hM,aAAa,CAACgJ,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC,EAAE;MAC7C;MACA,IAAI,CAAC04L,OAAO,CAACr/K,IAAI,CAACrZ,KAAK,CAAC;MACxB,IAAI,CAAC04L,OAAO,CAACz7B,IAAI,CAAC,EAAE,CAAC;KACtB,MACI,IAAI,CAACy7B,OAAO,IAAI14L,KAAK;IAC1By5L,MAAM,GAAG,IAAI,CAACf,OAAO,CAACz7B,IAAI,CAAC,EAAE,CAAC;IAC9B,OAAOw8B,MAAM;EACf;EAEA;EACA,OAAOplF,sBAAsB,CAAE52G,KAAc;IAC3C,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAO,CAAC;;IAEVA,KAAK,GAAIA,KAAK,KAAM,GAAG,GAAI,IAAI,GAAGA,KAAK,GAAIA,KAAK;IAChD;IACA,MAAM62G,MAAM,GAAG,IAAIzqF,MAAM,CAACpsB,KAAK,EAAE,GAAG,CAAC;IACrC,OAAO62G,MAAM;EACf;EACA;EACA;EACA;EACA,OAAOJ,iBAAiB,CAAEC,UAAmB,EAAEC,WAAoB;IACjE;IACA,OAAO,CAAC,CAACA,WAAW,IAAI,EAAE,EAAExwE,KAAK,CAACuwE,UAAU,CAAC,IAAI,EAAE,EAAEz5G,MAAM;EAE7D;EACA;EACA,OAAO+0L,eAAe,CAAC1gK,CAAS;IAC9B,OAAOuP,UAAU,CAACgF,IAAI,CAACosJ,IAAI,CAAC,IAAI,CAAC7xE,WAAW,CAAC9uF,CAAC,CAAC,CAAC,EAAG/P,CAAC,IAAKA,CAAC,CAAC2L,UAAU,CAAC,CAAC,CAAC,CAAC;EAC3E;EACA,OAAOglK,YAAY,CAACroH,CAAK;IACvB,OAAOsoH,IAAI,CAAChlK,MAAM,CAACC,YAAY,CAAC,GAAG,IAAIyT,UAAU,CAACgpC,CAAC,CAAC,CAAC,CAAC;EACxD;EACA;;;;;EAKA,OAAO1T,SAAS,CAACtxC,GAAQ;IACvB,IAAI,CAAC,IAAI,CAACtrB,aAAa,CAACsrB,GAAG,CAAC,EAAE;MAC5B;MACA,QAAQ,OAAOA,GAAG;QAChB;QACA,KAAK,WAAW;UACd,OAAO,WAAW;QACpB,KAAK,SAAS;UACZ,OAAO,SAAS;QAClB,KAAK,QAAQ;UACX,OAAO,QAAQ;QACjB,KAAK,QAAQ;UACX,OAAO,QAAQ;QACjB,KAAK,QAAQ;UACX,IAAIA,GAAG,YAAY8B,KAAK,EAAE;YACxB,OAAO,OAAO;WACf,MACI,IAAI9B,GAAG,YAAYsI,MAAM,EAAE;YAC9B,OAAO,QAAQ;WAChB,MACI,IAAItI,GAAG,YAAY0mC,MAAM,EAAE;YAC9B,OAAO,QAAQ;WAChB,MACI,IAAI1mC,GAAG,YAAY50B,IAAI,EAAE;YAC5B,OAAO,MAAM;WACd,MACI,IAAI40B,GAAG,YAAYihB,MAAM,EAAE;YAC9B,OAAO,QAAQ;WAChB,MACI,IAAIjhB,GAAG,YAAYuH,MAAM,EAAE;YAC9B,OAAO,QAAQ;WAChB,MACI,IAAIvH,GAAG,YAAYwxC,QAAQ,EAAE;YAChC,OAAO,UAAU;WAClB,MACI,IAAIxxC,GAAG,YAAYyxC,MAAM,EAAE;YAC9B,OAAO,QAAQ;WAChB,MACI,OAAO,QAAQ;QACtB;QACA;UACE,OAAO,OAAOzxC,GAAG;MAAC;;EAG1B;EACA;EACA,OAAOmjB,qBAAqB,CAACD,KAAa;IACxC,IAAI,CAAC,IAAI,CAACxuC,aAAa,CAACwuC,KAAK,CAAC,EAAE;MAC9B,OAAOjZ,QAAQ,CAACiZ,KAAK,EAAE,EAAE,CAAC;;IAE5B,OAAO,CAAC,CAAC;EACX;EACA;;;;EAIA,OAAOiyH,gBAAgB,CAACnjJ,GAAW;IACjC,IAAIb,GAAG,GAAG,CAAC;IAEX,IAAI,CAAC,IAAI,CAACzc,aAAa,CAACsd,GAAG,CAAC,EAAE;MAC5B,MAAMyC,GAAG,GAAG,IAAIrpB,IAAI,EAAE;MACtB,MAAMspB,OAAO,GAAGD,GAAG,CAACE,WAAW,EAAE;MACjC,MAAMC,QAAQ,GAAGH,GAAG,CAACI,QAAQ,EAAE,GAAG,CAAC;MACnC,MAAMC,MAAM,GAAGL,GAAG,CAACM,OAAO,EAAE;MAC5B,MAAMC,QAAQ,GAAGhD,GAAG,CAACiD,KAAK,CAAC,GAAG,CAAC;MAE/B,IAAID,QAAQ,CAAC5c,MAAM,GAAG,CAAC,EAAE;QACvB,MAAMg9J,OAAO,GAAGnrI,QAAQ,CAACjV,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,MAAMqgJ,KAAK,GAAGprI,QAAQ,CAACjV,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACvC,MAAMsgJ,KAAK,GAAGrrI,QAAQ,CAACjV,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAEvC7D,GAAG,GAAGuD,OAAO,GAAG0gJ,OAAO;QACvB,IAAIxgJ,QAAQ,GAAGygJ,KAAK,IAAIlkJ,GAAG,GAAG,CAAC,EAAE;UAC/BA,GAAG,EAAE;;QAEP,IAAIyD,QAAQ,KAAKygJ,KAAK,IAAIvgJ,MAAM,GAAGwgJ,KAAK,IAAInkJ,GAAG,GAAG,CAAC,EAAE;UACnDA,GAAG,EAAE;;;;IAIX,OAAOA,GAAG;EACZ;EACA;EACA,OAAOunI,eAAe,CAACqb,KAAa;IAClC,IAAI,CAAC,IAAI,CAACr/J,aAAa,CAACq/J,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;MAC3C,OAAO,IAAI,CAACoB,gBAAgB,CAAC,IAAI,CAACO,aAAa,CAAC3B,KAAK,CAAC,CAAC;;IAEzD,OAAO,CAAC;EACV;EACA;;;;EAIA,OAAO4jC,aAAa,CAAE91M,IAAU,EAAE+1M,QAAc;IAC9C,IAAI,CAAC,IAAI,CAACljM,aAAa,CAAC7S,IAAI,CAAC,EAAE;MAC7B;;;;MAIA,MAAMg2M,SAAS,GAAGh2M,IAAI,CAACy/C,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;MAEzC,IAAI,CAAC,IAAI,CAAC5sC,aAAa,CAACmjM,SAAS,CAAC,IAAIA,SAAS,CAACz/L,MAAM,GAAG,CAAC,EAAE;QAC1D,MAAM0/L,IAAI,GAAGD,SAAS,CAAC,CAAC,CAAC;QACzB,MAAME,IAAI,GAAG3K,IAAI,CAACE,IAAI,CAACzrM,IAAI,CAAC,CAAC;QAC7B,IAAI0hK,CAAC,GAAGw0C,IAAI,CAAC3/L,MAAM;QACnB,MAAM4/L,KAAK,GAAG,IAAIh8J,UAAU,CAACunH,CAAC,CAAC;QAE/B,OAAOA,CAAC,EAAE,EAAE;UACVy0C,KAAK,CAACz0C,CAAC,CAAC,GAAGw0C,IAAI,CAAC1vK,UAAU,CAACk7H,CAAC,CAAC;;QAG/B,OAAO,IAAIjxF,IAAI,CAAC,CAAC0lI,KAAK,CAAC,EAAEJ,QAAQ,EAAE;UAAE/tL,IAAI,EAAEiuL;QAAI,CAAC,CAAC;;;EAGvD;EACA;EACA,OAAOpiC,aAAa,CAACe,OAAY;IAC/B,MAAM1C,KAAK,GAAG9pI,QAAQ,CAACwsI,OAAO,EAAE,EAAE,CAAC;IACnC;;;;;;;;;IAUA;;;;;IAKA,MAAMxnG,EAAE,GAAGvmC,IAAI,CAAC4nD,KAAK,CAACyjF,KAAK,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/C,MAAM7kG,EAAE,GAAGxmC,IAAI,CAAC4nD,KAAK,CAACrhB,EAAE,GAAG,EAAE,CAAC;IAC9B,MAAME,MAAM,GAAGzmC,IAAI,CAAC4nD,KAAK,CAACphB,EAAE,GAAG,EAAE,CAAC;IAClC,MAAME,IAAI,GAAG1mC,IAAI,CAAC4nD,KAAK,CAACnhB,MAAM,GAAG,EAAE,CAAC;IACpC,MAAM35D,MAAM,GAAG,IAAI,CAACilK,OAAO,CAACrrG,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAACsrG,OAAO,CAACvrG,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAACurG,OAAO,CAACxrG,EAAE,CAAC;IACvF;;;;;;IAOA,OAAO15D,MAAM;EACf;EACA;EACA,OAAOokK,GAAG,CAAErW,CAAO,EAAE00C,IAAU;IAC7B10C,CAAC,GAAGA,CAAC,GAAG,EAAE;IACV,OAAOA,CAAC,CAACnrJ,MAAM,IAAI6/L,IAAI,GAAG10C,CAAC,GAAG,IAAIzhI,KAAK,CAACm2K,IAAI,GAAG10C,CAAC,CAACnrJ,MAAM,GAAG,CAAC,CAAC,CAACuiK,IAAI,CAAC,GAAG,CAAC,GAAGpX,CAAC;EAC5E;EACA,OAAOmX,OAAO,CAAE5wI,GAAS;IACvBA,GAAG,GAAG,GAAG,GAAGA,GAAG;IACf,OAAOA,GAAG,CAACtH,MAAM,CAACsH,GAAG,CAAC1xB,MAAM,GAAG,CAAC,CAAC;EACnC;EACA,OAAOqiK,OAAO,CAAE3wI,GAAS;IACvBA,GAAG,GAAG,GAAG,GAAGA,GAAG;IACf,OAAOA,GAAG,CAACtH,MAAM,CAACsH,GAAG,CAAC1xB,MAAM,GAAG,CAAC,CAAC;EACnC;EACA;EACA,OAAO2c,OAAO,CAAE4C,IAAU;IACxB;IACA,IAAIA,IAAI,EAAE;MACR,MAAM68I,SAAS,GAAG78I,IAAI,CAAC1C,KAAK,CAAC,GAAG,CAAC;MAEjC,IAAIu/I,SAAS,CAACp8J,MAAM,GAAG,CAAC,EAAE;QACxB,OAAOo8J,SAAS,CAAC,CAAC,CAAC,CAACltJ,QAAQ,EAAE;;MAEhC,OAAO,EAAE;;IAEX,OAAO,EAAE;EACX;EACA;EACA,OAAOmtJ,UAAU,CAAE98I,IAAU;IAC3B,IAAIA,IAAI,EAAE;MACR,MAAMkT,KAAK,GAAGlT,IAAI,CAAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;MAE/B,IAAI4V,KAAK,CAACzyB,MAAM,GAAG,CAAC,EAAE;QACpB,OAAO,IAAI,CAACm1L,YAAY,CAACtjK,QAAQ,CAACY,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAGA,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGA,KAAK,CAAC,CAAC,CAAC;;;IAGvF,OAAOlT,IAAI;EACb;EACA;EACA,OAAO41K,YAAY,CAAE5tH,KAAW;IAC9B,IAAIA,KAAK,GAAG,CAAC,EAAE;MACb,QAAQA,KAAK;QACX,KAAK,CAAC;UACJ,OAAO,SAAS;QAClB,KAAK,CAAC;UACJ,OAAO,UAAU;QACnB,KAAK,CAAC;UACJ,OAAO,OAAO;QAChB,KAAK,CAAC;UACJ,OAAO,OAAO;QAChB,KAAK,CAAC;UACJ,OAAO,KAAK;QACd,KAAK,CAAC;UACJ,OAAO,MAAM;QACf,KAAK,CAAC;UACJ,OAAO,MAAM;QACf,KAAK,CAAC;UACJ,OAAO,QAAQ;QACjB,KAAK,CAAC;UACJ,OAAO,WAAW;QACpB,KAAK,EAAE;UACL,OAAO,SAAS;QAClB,KAAK,EAAE;UACL,OAAO,UAAU;QACnB,KAAK,EAAE;UACL,OAAO,UAAU;QACnB;UACE,OAAO,EAAE;MAAC;;IAGhB,OAAO,EAAE;EACX;EACA;EACA,OAAOmuH,gBAAgB,CAAEC,aAAmB;IAC1C,IAAIz/H,QAAQ,GAAG,EAAG;IAElB,QAAQy/H,aAAa,CAACj1L,WAAW,EAAE;MACjC,KAAK,KAAK;MACV,KAAK,MAAM;QACTw1D,QAAQ,GAAG,oBAAoB;QAC/B;MACF,KAAK,MAAM;QACT,OAAO,WAAW;MACpB,KAAK,KAAK;MACV,KAAK,MAAM;QACTA,QAAQ,GAAG,0BAA0B;QACrC;MACF,KAAK,KAAK;MACV,KAAK,KAAK;QACRA,QAAQ,GAAG,+BAA+B;QAC1C;MACF,KAAK,KAAK;QACRA,QAAQ,GAAG,YAAY;QACvB;MACF,KAAK,KAAK;QACRA,QAAQ,GAAG,iBAAiB;QAC5B;MACF,KAAK,KAAK;QACRA,QAAQ,GAAG,iBAAiB;QAC5B;MACF,KAAK,KAAK;MACV,KAAK,KAAK;QACRA,QAAQ,GAAG,4BAA4B;QACvC;MACF,KAAK,KAAK;MACV,KAAK,KAAK;MACV,KAAK,KAAK;MACV,KAAK,KAAK;QACRA,QAAQ,GAAG,YAAY;QACvB;MACF,KAAK,KAAK;QACRA,QAAQ,GAAG,kBAAkB;QAC7B;MACF,KAAK,KAAK;QACRA,QAAQ,GAAG,8BAA8B;QACzC;MACF,KAAK,KAAK;QACRA,QAAQ,GAAG,8BAA8B;QACzC;IAAM;IAEV,OAAOA,QAAQ;EACjB;EACA;;;;;EAKA,OAAO0/H,SAAS;IACd,OAAO,IAAI,CAACC,YAAY;EAC1B;EACA,OAAOA,YAAY,CAAEhpK,IAAU;IAC7B,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAAC7sB,MAAM,EAAE;MACzB,OAAO6sB,IAAI;;IAGb,OAAOA,IAAI,CAAC9P,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC;EACtD;EACA;;;;;;;;EAUA;;;;;;EAOA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;EAKA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;EAKA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;EAMA,OAAO+4F,qBAAqB,CAACjsE,KAAU;IACrC,MAAMe,KAAK,GAAS,EAAE;IACtB,IAAI4uD,EAAE,GAAO,IAAIj0B,yDAAE,EAAE;IAErB,IAAI,CAAC,IAAI,CAACjpE,aAAa,CAACutC,KAAK,CAAC,EAAE;MAC9B,MAAMmsE,SAAS,GAAGtsF,KAAK,CAACkf,IAAI,CAACC,MAAM,CAACC,IAAI,CAACe,KAAK,CAAC,EAAGk0C,CAAC,IAAI;QACrDyb,EAAE,GAAG,IAAIj0B,yDAAE,EAAE;QACbi0B,EAAE,CA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","sources":["./src/app/animation.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/appComponentsModule/appComponents-routing.module.ts","./src/app/appComponentsModule/appComponents.module.ts","./src/app/appComponentsModule/avatar/avatar.component.ts","./src/app/appComponentsModule/avatar/avatar.component.html","./src/app/appComponentsModule/glyphiconMembers/glyphiconMembers.component.ts","./src/app/appComponentsModule/glyphiconMembers/glyphiconMembers.component.html","./src/app/appComponentsModule/homePage/homePage.component.ts","./src/app/appComponentsModule/homePage/homePage.component.html","./src/app/appComponentsModule/landingPage/landingPage.component.ts","./src/app/appComponentsModule/landingPage/landingPage.component.html","./src/app/appComponentsModule/leftRightLogoMenu/leftRightLogoMenu.component.ts","./src/app/appComponentsModule/leftRightLogoMenu/leftRightLogoMenu.component.html","./src/app/appComponentsModule/logRegButtonsAndNavArrows/logRegButtonsAndNavArrows.component.ts","./src/app/appComponentsModule/logRegButtonsAndNavArrows/logRegButtonsAndNavArrows.component.html","./src/app/appComponentsModule/logoMenu/logoMenu.component.ts","./src/app/appComponentsModule/logoMenu/logoMenu.component.html","./src/app/appComponentsModule/logo/logo.component.ts","./src/app/appComponentsModule/logo/logo.component.html","./src/app/appComponentsModule/messageBoard/messageBoard.component.ts","./src/app/appComponentsModule/messageBoard/messageBoard.component.html","./src/app/appComponentsModule/myStuff/myStuff.component.ts","./src/app/appComponentsModule/myStuff/myStuff.component.html","./src/app/appComponentsModule/navHeader/navHeader.component.ts","./src/app/appComponentsModule/navHeader/navHeader.component.html","./src/app/appComponentsModule/navSidebar/navSidebar.component.ts","./src/app/appComponentsModule/navSidebar/navSidebar.component.html","./src/app/appFeatureModule/appFeature-routing.module.ts","./src/app/appFeatureModule/appFeature.module.ts","./src/app/appFeatureModule/appFeatureValueDisplay/appFeatureValueDisplay.component.ts","./src/app/appFeatureModule/appFeatureValueDisplay/appFeatureValueDisplay.component.html","./src/app/appFeatureModule/appFeature/appFeature.component.ts","./src/app/appFeatureModule/appFeature/appFeature.component.html","./src/app/directiveFilterPipeModule/address/address.component.ts","./src/app/directiveFilterPipeModule/address/address.component.html","./src/app/directiveFilterPipeModule/array-pipe.pipe.ts","./src/app/directiveFilterPipeModule/checkButton/checkButton.component.ts","./src/app/directiveFilterPipeModule/checkButton/checkButton.component.html","./src/app/directiveFilterPipeModule/dateInput/dateInput.component.ts","./src/app/directiveFilterPipeModule/dateInput/dateInput.component.html","./src/app/directiveFilterPipeModule/directiveFilterPipe.module.ts","./src/app/directiveFilterPipeModule/directives/appsidebar.directive.ts","./src/app/directiveFilterPipeModule/directives/centerX.directive.ts","./src/app/directiveFilterPipeModule/directives/dateInputFormControl.directive.ts","./src/app/directiveFilterPipeModule/directives/disableElem.directive.ts","./src/app/directiveFilterPipeModule/directives/expandMenu.directive.ts","./src/app/directiveFilterPipeModule/directives/expandMenuHome.directive.ts","./src/app/directiveFilterPipeModule/directives/password.directive.ts","./src/app/directiveFilterPipeModule/directives/ref.directive.ts","./src/app/directiveFilterPipeModule/disableScroll/disableScroll.component.ts","./src/app/directiveFilterPipeModule/disableScroll/disableScroll.component.html","./src/app/directiveFilterPipeModule/distance/distance.component.ts","./src/app/directiveFilterPipeModule/distance/distance.component.html","./src/app/directiveFilterPipeModule/dropdownBox/dropdownBox.component.ts","./src/app/directiveFilterPipeModule/dropdownBox/dropdownBox.component.html","./src/app/directiveFilterPipeModule/epl/EPLStyleEventEmitter.ts","./src/app/directiveFilterPipeModule/epl/Key.ts","./src/app/directiveFilterPipeModule/epl/List.ts","./src/app/directiveFilterPipeModule/epl/Logger.ts","./src/app/directiveFilterPipeModule/epl/StringSearch.ts","./src/app/directiveFilterPipeModule/epl/StringUtils.ts","./src/app/directiveFilterPipeModule/epl/URLUtils.ts","./src/app/directiveFilterPipeModule/filters/logPipe.ts","./src/app/directiveFilterPipeModule/filters/profileTiles.pipe.ts","./src/app/directiveFilterPipeModule/filters/safeFilter.pipe.ts","./src/app/directiveFilterPipeModule/filters/safeKv.pipe.ts","./src/app/directiveFilterPipeModule/filters/safePipe.pipe.ts","./src/app/directiveFilterPipeModule/filters/textFilter.pipe.ts","./src/app/directiveFilterPipeModule/filters/toNumber.pipe.ts","./src/app/directiveFilterPipeModule/filters/upgradedTiles.pipe.ts","./src/app/directiveFilterPipeModule/incrementor/incrementor.component.ts","./src/app/directiveFilterPipeModule/incrementor/incrementor.component.html","./src/app/directiveFilterPipeModule/offOnProfileName/offOnProfileName.component.ts","./src/app/directiveFilterPipeModule/offOnProfileName/offOnProfileName.component.html","./src/app/directiveFilterPipeModule/offOn/offOn.component.ts","./src/app/directiveFilterPipeModule/offOn/offOn.component.html","./src/app/directiveFilterPipeModule/pageName/pageName.component.ts","./src/app/directiveFilterPipeModule/pageName/pageName.component.html","./src/app/directiveFilterPipeModule/profileName/profileName.component.ts","./src/app/directiveFilterPipeModule/profileName/profileName.component.html","./src/app/directiveFilterPipeModule/radioBox/radioBox.component.ts","./src/app/directiveFilterPipeModule/radioBox/radioBox.component.html","./src/app/imageUploadModule/component/imageUploadModule.component.ts","./src/app/imageUploadModule/component/imageUploadModule.component.html","./src/app/imageUploadModule/fileUpload/fileUpload.component.ts","./src/app/imageUploadModule/fileUpload/fileUpload.component.html","./src/app/imageUploadModule/image-upload/image-upload.component.ts","./src/app/imageUploadModule/image-upload/image-upload.component.html","./src/app/imageUploadModule/image-upload/services/imageUpload.service.ts","./src/app/imageUploadModule/imageUpload-routing.module.ts","./src/app/imageUploadModule/imageUpload.module.ts","./src/app/imageUploadModule/uploadFiles/uploadFilesComponent.component.ts","./src/app/imageUploadModule/uploadFiles/uploadFilesComponent.component.html","./src/app/keyValueModule/component/keyValueModule.component.ts","./src/app/keyValueModule/component/keyValueModule.component.html","./src/app/keyValueModule/contentKeyValueArr/contentKeyValueArr.component.ts","./src/app/keyValueModule/contentKeyValueArr/contentKeyValueArr.component.html","./src/app/keyValueModule/keyValue-routing.module.ts","./src/app/keyValueModule/keyValue.module.ts","./src/app/keyValueModule/keyValue/keyValueAnyArr/keyValueAnyArr.component.ts","./src/app/keyValueModule/keyValue/keyValueAnyArr/keyValueAnyArr.component.html","./src/app/keyValueModule/keyValue/keyValueAnyTemplate/keyValueAnyTemplate.component.ts","./src/app/keyValueModule/keyValue/keyValueAnyTemplate/keyValueAnyTemplate.component.html","./src/app/keyValueModule/keyValue/keyValueAny/keyValueAny.component.ts","./src/app/keyValueModule/keyValue/keyValueAny/keyValueAny.component.html","./src/app/keyValueModule/keyValue/keyValueArr/keyValueArr.component.ts","./src/app/keyValueModule/keyValue/keyValueArr/keyValueArr.component.html","./src/app/keyValueModule/keyValue/keyValue/keyValue.component.ts","./src/app/keyValueModule/keyValue/keyValue/keyValue.component.html","./src/app/keyValueModule/keyValue/profileImageKv/profileImageKv.component.ts","./src/app/keyValueModule/keyValue/profileImageKv/profileImageKv.component.html","./src/app/keyValueModule/keyValue/profilePicsKeyValueArr/profilePicsKeyValueArr.component.ts","./src/app/keyValueModule/keyValue/profilePicsKeyValueArr/profilePicsKeyValueArr.component.html","./src/app/keyValueModule/preferenceKeyValueArr/preferenceKeyValueArr.component.ts","./src/app/keyValueModule/preferenceKeyValueArr/preferenceKeyValueArr.component.html","./src/app/keyValueModule/profileInfoKeyValueArr/profileInfoKeyValueArr.component.ts","./src/app/keyValueModule/profileInfoKeyValueArr/profileInfoKeyValueArr.component.html","./src/app/keyValueModule/uploadFilesKeyValueArr/uploadFilesKeyValueArr.component.ts","./src/app/keyValueModule/uploadFilesKeyValueArr/uploadFilesKeyValueArr.component.html","./src/app/modalModule/modal-routing.module.ts","./src/app/modalModule/modal.module.ts","./src/app/modalModule/spinnerOverlay/spinnerOverlay.component.ts","./src/app/modalModule/spinnerOverlay/spinnerOverlay.component.html","./src/app/modalModule/spinner/spinner.component.ts","./src/app/modalModule/spinner/spinner.component.html","./src/app/modalModule/upgradePopup/upgradePopup.component.ts","./src/app/modalModule/upgradePopup/upgradePopup.component.html","./src/app/myModule/myPagerVPhotoNav/myPagerVPhotoNavService.service.ts","./src/app/pagerModule/aGlyphicon/aGlyphicon.component.ts","./src/app/pagerModule/aGlyphicon/aGlyphicon.component.html","./src/app/pagerModule/pager-routing.module.ts","./src/app/pagerModule/pager.module.ts","./src/app/pagerModule/pagerButton/pagerButton.component.ts","./src/app/pagerModule/pagerButton/pagerButton.component.html","./src/app/pagerModule/pagerChatHistory/pagerChatHistory.component.ts","./src/app/pagerModule/pagerChatHistory/pagerChatHistory.component.html","./src/app/pagerModule/pagerVPhotoNav/pagerVPhotoNav.component.ts","./src/app/pagerModule/pagerVPhotoNav/pagerVPhotoNav.component.html","./src/app/pagerModule/pagerVerticalGlyphForPhotoMgmt/pagerVerticalGlyphForPhotoMgmt.component.ts","./src/app/pagerModule/pagerVerticalGlyphForPhotoMgmt/pagerVerticalGlyphForPhotoMgmt.component.html","./src/app/pagerModule/pagerVerticalGlyphForViewMember/pagerVerticalGlyphForViewMember.component.ts","./src/app/pagerModule/pagerVerticalGlyphForViewMember/pagerVerticalGlyphForViewMember.component.html","./src/app/profileModule/preference/preference.component.ts","./src/app/profileModule/preference/preference.component.html","./src/app/profileModule/profile-routing.module.ts","./src/app/profileModule/profile.module.ts","./src/app/profileModule/profileContent/profileContent.component.ts","./src/app/profileModule/profileContent/profileContent.component.html","./src/app/profileModule/profile/profile.component.ts","./src/app/profileModule/profile/profile.component.html","./src/app/sharedModule/accordionGroup/accordionGroup.component.ts","./src/app/sharedModule/accordionGroup/accordionGroup.component.html","./src/app/sharedModule/accordion/accordion.component.ts","./src/app/sharedModule/accordion/accordion.component.html","./src/app/sharedModule/component/sharedModule.component.ts","./src/app/sharedModule/component/sharedModule.component.html","./src/app/sharedModule/shared-routing.module.ts","./src/app/sharedModule/shared.module.ts","./src/db.ts","./src/environments/environment.ts","./src/main.ts","./src/models/account/logReg.model.ts","./src/models/account/login.model.ts","./src/models/account/loginSuccess.model.ts","./src/models/account/register.model.ts","./src/models/account/sitUser.model.ts","./src/models/boxNonce/boxNonceEntity.model.ts","./src/models/boxNonce/dexieBne.model.ts","./src/models/breadcrum/brdcrmKvAny.model.ts","./src/models/breadcrum/pagerBreadcrum.model.ts","./src/models/chat/chat.model.ts","./src/models/chat/chatActivity.model.ts","./src/models/chat/chatConversationModel.ts","./src/models/chat/chatFileUpload.model.ts","./src/models/chat/chatMessage.model.ts","./src/models/common/actionId.model.ts","./src/models/common/address.model.ts","./src/models/common/appFeture.model.ts","./src/models/common/bool.model.ts","./src/models/common/clientApiModel.model.ts","./src/models/common/clientData.model.ts","./src/models/common/content.model.ts","./src/models/common/counters.model.ts","./src/models/common/dateAssay.model.ts","./src/models/common/emitCheckboxResult.model.ts","./src/models/common/emitDatePicResult.model.ts","./src/models/common/emitDropDownResult.model.ts","./src/models/common/emitOffOnResult.model.ts","./src/models/common/emitRadioboxResult.model.ts","./src/models/common/genericSearchSortFilter.model.ts","./src/models/common/heartbeat.model.ts","./src/models/common/messageModel.model.ts","./src/models/common/modalModel.model.ts","./src/models/common/moduleComponentLoader.model.ts","./src/models/common/photo.model.ts","./src/models/common/photoBn.model.ts","./src/models/common/photoMgmtAction.model.ts","./src/models/common/photoOmni.model.ts","./src/models/common/spinnerModel.model.ts","./src/models/common/unit.model.ts","./src/models/common/userAndPageTitle.model.ts","./src/models/common/viewportDimension.model.ts","./src/models/communication/boxEmailBn.model.ts","./src/models/communication/chatConnectionInfo.model.ts","./src/models/communication/communication.model.ts","./src/models/communication/communicationActivity.model.ts","./src/models/communication/communicationMessage.model.ts","./src/models/communication/communicator.model.ts","./src/models/communication/eNoteTile.model.ts","./src/models/communication/enoteBox.model.ts","./src/models/communication/mailBox.model.ts","./src/models/communication/senderReceiverEmails.model.ts","./src/models/crypto/naclPairClient.model.ts","./src/models/crypto/naclPairLocal.model.ts","./src/models/crypto/salt.model.ts","./src/models/data/clientHttpDataModel.model.ts","./src/models/data/remoteDataModel.model.ts","./src/models/emitter/profileTileArrEmitterModel.ts","./src/models/group/group.model.ts","./src/models/keyValue/keyValueResult.model.ts","./src/models/keyValue/kv.model.ts","./src/models/keyValue/kvAction.model.ts","./src/models/keyValue/kvAny.model.ts","./src/models/keyValue/kvAnyArr.model.ts","./src/models/keyValue/kvKv.model.ts","./src/models/keyValue/kvKvAnyArr.model.ts","./src/models/keyValue/kvMemberActivityGlyph.model.ts","./src/models/keyValue/kvPhoto.model.ts","./src/models/member/memberActivitesAndAction.model.ts","./src/models/member/memberActivity.model.ts","./src/models/member/memberViewMgmtModel.model.ts","./src/models/misc/centerCoordinates.model.ts","./src/models/misc/imageCounter.model.ts","./src/models/offOn/offOn.model.ts","./src/models/pagination/basicPagerKvGlyphModel.model.ts","./src/models/pagination/basicPagerModel.model.ts","./src/models/pagination/pager.model.ts","./src/models/pagination/pagerChat.model.ts","./src/models/pagination/pagerMemberActivity.model.ts","./src/models/pagination/pagerPhotoMgmt.model.ts","./src/models/profile/preference.model.ts","./src/models/profile/profile.model.ts","./src/models/profile/profileImage.model.ts","./src/models/profile/profileInfo.model.ts","./src/models/profile/profilePics.model.ts","./src/models/profile/profileTile.model.ts","./src/models/profile/upgradedTile.model.ts","./src/models/sales/amountModel.model.ts","./src/models/sales/creditCard.model.ts","./src/models/sales/name.model.ts","./src/models/sales/payPalAddress.model.ts","./src/models/sales/payPalBreakdown.model.ts","./src/models/sales/payPalCapture.model.ts","./src/models/sales/payPalCreditCardAddress.model.ts","./src/models/sales/payPalItemTotal.model.ts","./src/models/sales/payPalItems.model.ts","./src/models/sales/payPalOrder.ts","./src/models/sales/payPalPayee.ts","./src/models/sales/payPalPayer.ts","./src/models/sales/payPalPayment.model.ts","./src/models/sales/payPalPurchaseUnits.ts","./src/models/sales/payPalSellerProtection.ts","./src/models/sales/payPalShipping.model.ts","./src/models/upgrade/upgrade.model.ts","./src/models/upgrade/upgradeCost.model.ts","./src/services/GlyphiconService/glypgiconMenuService.service.ts","./src/services/GlyphiconService/glyphiconServiceService.service.ts","./src/services/appServiceService/appFeatureService.service.ts","./src/services/appServiceService/appServiceService.service.ts","./src/services/appServiceService/breakPointObserverService.service.ts","./src/services/appServiceService/swUpdateService.service.ts","./src/services/appServiceService/upgradedMemberService.service.ts","./src/services/commonServiceService/commonServiceService.service.ts","./src/services/commonServiceService/encodingService.service.ts","./src/services/commonServiceService/imageResizerService.service.ts","./src/services/commonServiceService/redirectionService.service.ts","./src/services/commonServiceService/signedInUserService.service.ts","./src/services/commonServiceService/sitUserService.service.ts","./src/services/communicationServiceService/chatService.ts","./src/services/communicationServiceService/communicationServiceService.service.ts","./src/services/communicationServiceService/communicatorService.service.ts","./src/services/communicationServiceService/emailService.ts","./src/services/communicationServiceService/enoteService.ts","./src/services/communicationServiceService/signalRService.ts","./src/services/communicationServiceService/swBackgroundFetchService.service.ts","./src/services/coreServiceService/checkConnectionService.service.ts","./src/services/coreServiceService/coreServiceService.service.ts","./src/services/coreServiceService/heartbeatService.service.ts","./src/services/coreServiceService/httpService.service.ts","./src/services/coreServiceService/kvArrayService.service.ts","./src/services/coreServiceService/liaisonService.service.ts","./src/services/coreServiceService/logRegService.service.ts","./src/services/coreServiceService/offOnService.ts","./src/services/coreServiceService/timerService.service.ts","./src/services/dbServiceService/dbDexieService.service.ts","./src/services/dbServiceService/dbDexieToDictionaryService.service.ts","./src/services/dbServiceService/dbServiceService.service.ts","./src/services/dbServiceService/localStorageService.service.ts","./src/services/dbServiceService/tempFileSaverService.service.ts","./src/services/dictionaryServiceService/dictionaryIOService.service.ts","./src/services/dictionaryServiceService/dictionaryService.service.ts","./src/services/dictionaryServiceService/dictionaryServiceService.service.ts","./src/services/displayProfileServiceService/displayProfileService.service.ts","./src/services/displayProfileServiceService/dsiplayProfileServiceService.service.ts","./src/services/memberServiceService/activityService.service.ts","./src/services/memberServiceService/memberService.service.ts","./src/services/memberServiceService/memberServiceService.service.ts","./src/services/modalServiceService/domService.service.ts","./src/services/modalServiceService/modalServiceService.service.ts","./src/services/modalServiceService/spinnerOverlayService.ts","./src/services/pagerServiceService/abstractPagerVPhotoNavService.service.ts","./src/services/pagerServiceService/basicPagerService.service.ts","./src/services/pagerServiceService/pagerPhotoMgmtService.service.ts","./src/services/pagerServiceService/pagerService.service.ts","./src/services/pagerServiceService/pagerServiceChatHistory.service.ts","./src/services/pagerServiceService/pagerServiceService.service.ts","./src/services/pagerServiceService/pagerSupportService.service.ts","./src/services/pagerServiceService/pagerVPhotoNavService.service.ts","./src/services/photoServiceService/kvPhotoService.service.ts","./src/services/photoServiceService/photoAndPrimaryPhotoMgmtService.service.ts","./src/services/photoServiceService/photoBnService.service.ts","./src/services/photoServiceService/photoPrivacyService.service.ts","./src/services/photoServiceService/photoServiceService.service.ts","./src/services/profileServiceService/abstractProfileService.service.ts","./src/services/profileServiceService/preferenceService.service.ts","./src/services/profileServiceService/profileContentService.service.ts","./src/services/profileServiceService/profileInfoService.service.ts","./src/services/profileServiceService/profileNameService.service.ts","./src/services/profileServiceService/profilePicsService.service.ts","./src/services/profileServiceService/profileServiceService.service.ts","./src/services/profileTileServiceService/profileTileService.service.ts","./src/services/profileTileServiceService/profileTileServiceService.service.ts","./src/services/rendererServiceService/backgroundImageAnimationService.service.ts","./src/services/rendererServiceService/rendererService.service.ts","./src/services/rendererServiceService/rendererServiceService.service.ts","./src/services/searchSortServiceService/binarySearchService.service.ts","./src/services/searchSortServiceService/genericSearchSortFilterService.service.ts","./src/services/searchSortServiceService/quicksort.service.ts","./src/services/searchSortServiceService/searchSortServiceService.service.ts","./src/services/staticServices/arrayServiceStatic.service.ts","./src/services/staticServices/arraySupportServiceStatic.service.ts","./src/services/staticServices/breadcrumServiceStatic.service.ts","./src/services/staticServices/commonStaticServices/copyServiceStatic.service.ts","./src/services/staticServices/commonStaticServices/dateStringServiceStatic.service.ts","./src/services/staticServices/commonStaticServices/hammerServiceStatic.service.ts","./src/services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service.ts","./src/services/staticServices/commonStaticServices/scrollTopServiceStatic.service.ts","./src/services/staticServices/commonStaticServices/slakezSaltServiceStatic.service.ts","./src/services/staticServices/commonStaticServices/whenScrollEndsServiceStatic.service.ts","./src/services/staticServices/constantServiceStatic.service.ts","./src/services/staticServices/defaultSetterServiceStatic.service.ts","./src/services/staticServices/dictionaryServiceStatic.service.ts","./src/services/staticServices/domUtilsServiceStatic.service.ts","./src/services/staticServices/emitterObserverStaticServices/emitterSubject.service.ts","./src/services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service.ts","./src/services/staticServices/inMemoryDataServiceStatic.service.ts","./src/services/staticServices/jsRegExpServiceStatic.service.ts","./src/services/staticServices/messgeBuilderServiceStatic.service.ts","./src/services/staticServices/staticServiceService.service.ts","./src/services/staticServices/stringServiceStatic.service.ts","./src/services/staticServices/uploadServiceStatic.service.ts","ignored|C:\\slakebitws\\slakez-1.0.9\\ClientApp\\node_modules\\tweetnacl|crypto"],"sourcesContent":["'use-strict'\nimport { AnimationBuilder, animate, animateChild, group, query, state, style, transition, trigger } from '@angular/animations';\n\n/*\n * ==========================================================================\n * slideInOut-Animations\n * --------------------------------------------------------------------------\n */\n// import the required animation functions from the angular animations module\n// ref: https://jasonwatmore.com/post/2019/11/04/angular-8-router-animation-tutorial-example\nexport const slideInOutAnimation =\n // trigger name for attaching this animation to an element using the [@triggerName] syntax\n trigger('slideInOutAnimation', [\n\n // end state styles for route container (host)\n state('*', style({\n // the view covers the whole screen with a semi tranparent background\n position: 'relative',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(255, 255, 255, 0)'\n })),\n\n // route 'enter' transition\n transition(':enter', [\n\n // styles at start of transition\n style({\n // start with the content positioned off the right of the screen, \n // -400% is required instead of -100% because the negative position adds to the width of the element\n right: '-400%',\n\n // start with background opacity set to 0 (invisible)\n backgroundColor: 'rgba(0, 0, 0, 0)'\n }),\n\n // animation and styles at end of transition\n animate('.5s ease-in-out', style({\n // transition the right position to 0 which slides the content into view\n right: 0,\n\n // transition the background opacity to 0.8 to fade it in\n backgroundColor: 'rgba(0, 0, 0, 0.8)'\n }))\n ]),\n\n // route 'leave' transition\n transition(':leave', [\n // animation and styles at end of transition\n animate('.5s ease-in-out', style({\n // transition the right position to -400% which slides the content out of view\n right: '-400%',\n\n // transition the background opacity to 0 to fade it out\n backgroundColor: 'rgba(0, 0, 0, 0)'\n }))\n ])\n ]);\n/*\n * ==========================================================================\n * Animations\n * --------------------------------------------------------------------------\n */\nexport const Animations = [\n \n //
\n // {{ item }}\n //
\n \n trigger('dropdownAnimation', [\n state(\n 'true',\n style({\n maxHeight: '{{numberOfDropdownItems}}px',\n overflow: 'scroll',\n opacity: 1,\n }),\n { params: { numberOfDropdownItems: 1}},\n ),\n state(\n 'false',\n style({\n maxHeight: '0px',\n overflow: 'hidden',\n opacity: 0,\n })\n ),\n transition('true => false', animate('600ms ease-in-out')),\n transition('false => true', animate('800ms ease-in-out')),\n ]),\n trigger('glideUpGrowShrink', [\n transition(':enter', [\n style({ transform: 'translateY(350%) scale(0.1)' }),\n animate('800ms ease-in', style({ transform: 'translateY(0%) scale(1)' })),\n ]),\n transition(':leave', [\n animate('800ms ease-in', style({ transform: 'translateX(300%) scale(0.1)' })),\n ]),\n ]),\n trigger('growShrink', [\n state(\n 'true',\n style({\n minHeight: '{{scale}}rem',\n fontSize: '{{scale}}rem',\n overflow: 'hidden',\n opacity: 1,\n }),\n { params: { scale: 10}},\n ),\n state(\n 'false',\n style({\n minHeight: '10rem',\n fontSize: '10rem',\n overflow: 'hidden',\n opacity: 0,\n })\n ),\n transition('true => false', animate('600ms ease-out')),\n transition('false => true', animate('1000ms ease-in')),\n ]),\n\n trigger('rotateInSlideOutVanish', [\n transition(':enter', [\n // style({ transform: 'translateX(-100%)' }),\n style({ transform: 'translateY(-100%)'}),\n \n // style({ transform: 'scale(0.1)'}),\n // animate('500ms ease-in', style({ transform: 'translateX(0%)' })),\n \n animate('1000ms ease-in-out', style({ transform: 'translateY(-50%) rotateY(360deg)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n animate('900ms ease-in-out', style({ transform: 'translateX(-100%) scale(0.1)'})),\n \n // animate('900ms ease-out', style({ transform: 'translateY(-100%)' })),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n \n ]),\n ]),\n\n trigger('slideX', [\n transition(':enter', [\n style({ transform: 'translateX(-100%)'}),\n // style({ transform: 'scale(0.1)'}),\n animate('1000ms ease-in', style({ transform: 'translateX(0%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n animate('700ms ease-in', style({ transform: 'translateX(-100%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ]),\n ]),\n trigger('slide-X', [\n transition(':enter', [\n style({ transform: 'translateX(350%)'}),\n // style({ transform: 'scale(0.1)'}),\n animate('1000ms ease-in', style({ transform: 'translateX(0%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n animate('700ms ease-in', style({ transform: 'translateX(-100%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ]),\n ]),\n trigger('slideXRotateX', [\n transition(':enter', [\n // style({ transform: 'translateX(-100%)' }),\n style({ transform: 'translateX(-100%)'}),\n \n // style({ transform: 'scale(0.1)'}),\n // animate('500ms ease-in', style({ transform: 'translateX(0%)' })),\n \n animate('1000ms ease-in-out', style({ transform: 'translateX(0%) rotateX(360deg)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n // animate('500ms ease-in', style({ transform: 'translateX(-100%)' })),\n animate('1000ms ease-in-out', style({ transform: 'translateX(-100%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ]),\n ]),\n trigger('slideXRotateY', [\n transition(':enter', [\n // style({ transform: 'translateX(-100%)' }),\n style({ transform: 'translateX(-100%)'}),\n \n // style({ transform: 'scale(0.1)'}),\n // animate('500ms ease-in', style({ transform: 'translateX(0%)' })),\n \n animate('800ms ease-in-out', style({ transform: 'translateX(0%) rotateY(360deg)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n // animate('500ms ease-in', style({ transform: 'translateX(-100%)' })),\n animate('700ms ease-in-out', style({ transform: 'translateX(-100%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ]),\n ] ),\n trigger( 'slide-XRotateY', [\n transition( ':enter', [\n style( { transform: 'translateX(350%)' } ),\n // style({ transform: 'scale(0.1)'}),\n animate( '1000ms ease-in', style( { transform: 'translateX(0%) rotateY(360deg)' } ) ),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ] ),\n transition( ':leave', [\n animate( '700ms ease-in', style( { transform: 'translateX(-100%)' } ) ),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ] ),\n ] ),\n trigger('slideY', [\n transition(':enter', [\n // style({ transform: 'translateX(-100%)' }),\n style({ transform: 'translateY(-100%)'}),\n \n // style({ transform: 'scale(0.1)'}),\n // animate('500ms ease-in', style({ transform: 'translateX(0%)' })),\n \n animate('700ms ease-out', style({ transform: 'translateY(0%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n // animate('500ms ease-in', style({ transform: 'translateX(-100%)' })),\n animate('500ms ease-out', style({ transform: 'translateY(300%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ]),\n ]),\n\n trigger('slide-Y', [\n transition(':enter', [\n // style({ transform: 'translateX(-100%)' }),\n style({ transform: 'translateY(200%)'}),\n \n // style({ transform: 'scale(0.1)'}),\n // animate('500ms ease-in', style({ transform: 'translateX(0%)' })),\n \n animate('800ms ease-out', style({ transform: 'translateY(0%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n animate('500ms ease-in', style({ transform: 'translateX(-100%)'})),\n \n // animate('1000ms ease-out', style({ transform: 'translateY(300%)' })),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n \n ]),\n ]),\n trigger('slideYRotateY', [\n transition(':enter', [\n // style({ transform: 'translateX(-100%)' }),\n style({ transform: 'translateY(-100%)'}),\n \n // style({ transform: 'scale(0.1)'}),\n // animate('500ms ease-in', style({ transform: 'translateX(0%)' })),\n \n animate('1000ms ease-out', style({ transform: 'translateY(0%) rotateY(360deg)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n // animate('500ms ease-in', style({ transform: 'translateX(-100%)' })),\n animate( '1000ms ease-out', style( { transform: 'translateY(-100%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ]),\n ]),\n trigger('slideYRotateX', [\n transition(':enter', [\n // style({ transform: 'translateX(-100%)' }),\n style({ transform: 'translateY(-100%)'}),\n \n // style({ transform: 'scale(0.1)'}),\n // animate('500ms ease-in', style({ transform: 'translateX(0%)' })),\n \n animate('800ms ease-out', style({ transform: 'translateY(0%) rotateX(360deg)'})),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n // animate('500ms ease-in', style({ transform: 'translateX(-100%)' })),\n animate('800ms ease-out', style({ transform: 'translateY(-100%)'})),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ]),\n ]),\n trigger('slideInYSlideOutX', [\n transition(':enter', [\n // style({ transform: 'translateX(-100%)' }),\n style({ transform: 'translateY(-100%)' }),\n\n // style({ transform: 'scale(0.1)'}),\n // animate('500ms ease-in', style({ transform: 'translateX(0%)' })),\n\n animate('800ms ease-out', style({ transform: 'translateY(0%) translateX(0%)' })),\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n // animate('500ms ease-in', style({ transform: 'translateX(-100%)' })),\n animate('800ms ease-out', style({ transform: 'translateX(-10%)' })),\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\n ]),\n ]),\n trigger( 'slideYGrow', [\n transition( ':enter', [\n // style({ transform : 'translateX(-100%)' }),\n style( { transform: 'translateY(-50%) scale(0.1)' } ),\n /*\n * style({ transform : 'scale(0.1)'}),\n * animate('500ms ease-in', style({ transform : 'translateX(0%)' })),\n */\n animate( '800ms ease-out', style( { transform: 'translateY(0%) scale(1)' } ) ),\n // animate('500ms ease-in', style({ transform : 'scale(1)' }))\n ] ),\n transition( ':leave', [\n // animate('500ms ease-in', style({ transform : 'translateX(-100%)' })),\n animate( '500ms ease-out', style( { transform: 'translateY(-100%) scale(0.1)' } ) ),\n // animate('500ms ease-in', style({ transform : 'scale(0.1)' }))\n ] ),\n ] ),\n trigger('slideYVanishX', [\n transition('* <=> home', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':enter', animateChild(), { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('900ms ease-out', style({ transform: 'translateX(70%) scale(0.01)'}))], { optional: true}),\n query(':enter', [animate('1200ms ease-in-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n ]),\n ] ),\n trigger( 'yUp-XOut', [\n transition( ':enter', [\n // style({ transform : 'translateX(-100%)' }),\n style( { transform: 'translateY(125%)' } ),\n style( { transform: 'scale(0.1)' } ),\n animate( '800ms ease-in', style( { transform: 'translateY(0%)' } ) ),\n // animate('200ms ease', style({ transform : 'translateY(10%)' })),\n animate( '900ms ease-in', style( { transform: 'scale(1)' } ) ),\n ] ),\n transition( ':leave', [\n // animate('500ms ease-in', style({ transform : 'translateX(-100%)' })),\n animate( '900ms ease-in-out', style( { transform: 'translateX(300%)' } ) ),\n animate( '500ms ease-in', style( { transform: 'scale(0.1)' } ) ),\n ] ),\n ] ),\n trigger( 'slideInOut', [\n transition( ':enter', [\n style( { transform: 'translateY(-100%)' } ),\n \n // style({ transform : 'scale(0.1)'}),\n // animate('1000ms ease-in-out', style({ transform : 'translateX(0%)' })),\n \n animate( '500ms ease-out', style( { transform: 'translateY(0%)' } ) ),\n // animate('500ms ease-in', style({ transform : 'scale(1)' }))\n ] ),\n transition( ':leave', [\n animate( '400ms ease-in-out', style( { transform: 'translateX(-100%)' } ) ),\n \n // animate('500ms ease-out', style({ transform : 'translateY(-100%)' })),\n // animate('500ms ease-in', style({ transform : 'scale(0.1)' }))\n \n ] ),\n ] ),\n \n //
\n // {{ paragraph }}\n //
\n \n trigger('blindsDown', [\n state(\n 'show',\n style({\n height: '{{heightInRem}}rem',\n opacity: 1,\n transform: 'translateY(0%)',\n }),\n { params: { heightInRem: 1}},\n ),\n state(\n 'hide',\n style({\n height: 0,\n opacity: 0,\n transform: 'translateY(-500%)',\n })\n ),\n\n transition('show => hide', animate('1500ms ease-in-out')),\n transition('hide => show', animate('1100ms ease-in-out')),\n ]),\n \n // \n // \n //
\n //
\n //
\n //\n //angular-component\n // private opened: boolean = false;\n // get stateName() {\n // return this.opened ? 'show' : 'hide'\n // }\n \n trigger('fader', [\n state(\n 'show',\n style({\n height: 400,\n // opacity: 1\n transform: 'translateX(0%)',\n })\n ),\n state(\n 'hide',\n style({\n height: 0,\n // opacity: 0\n transform: 'translateX(-500%)',\n })\n ),\n\n transition('show => hide', animate('700ms ease-in')),\n transition('hide => show', animate('700ms ease-out')),\n ]),\n /*\n * ==========================================================================\n * Router-Animations\n * --------------------------------------------------------------------------\n */\n trigger('routeAnimations', [\n // ------------------------------------------------------------\n transition('* <=> about', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n query(':enter', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('900ms ease-out', style({ transform: 'translateX(50%) scale(0.1)'}))], { optional: true}),\n query(':enter', [animate('900ms ease-in-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n ]),\n // ------------------------------------------------------------\n transition('* <=> home', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true}\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':enter', animateChild(), { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('900ms ease-out', style({ transform: 'translateX(70%) scale(0.01)'}))], { optional: true}),\n query(':enter', [animate('1200ms ease-in-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n // // query(':enter, :leave', [\n // // // style({\n // // // position: 'absolute',\n // // // top: '-100%',\n // // // left: 0,\n // // // width: '100%'\n // // // })\n // // style({ transform: 'translateY(-100%) scale(0.1)' }),\n // // ], { optional: true }),\n // // query(':enter', [\n // // // style({ top: '-100%', transform: 'rotateY(360deg)' })\n // // animate('500ms ease-out', style({ transform: 'translateY(-100%) scale(0.1) rotateY(360deg)' })),\n // // ], { optional: true }),\n // // query(':leave', animateChild(), { optional: true }),\n // // group([\n // // query(':leave', [\n // // animate('500ms ease-out', style({ transform: 'translateX(-100%) rotateY(-360deg)' }))\n // // ], { optional: true }),\n // // query(':enter', [\n // // animate('500ms ease-out', style({ transform: 'translateY(0%) rotateY(360deg)' }))\n // // ], { optional: true })\n // // ]),\n // // query(':enter', animateChild(), { optional: true }),\n ]),\n \n // ------------------------------------------------------------\n // Stable. Do not change.\n // ------------------------------------------------------------\n transition('* <=> login', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':enter', animateChild(), { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('900ms ease-out', style({ transform: 'translateX(70%) scale(0.01)'}))], { optional: true}),\n query(':enter', [animate('1200ms ease-in-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n query(':enter', animateChild(), { optional: true}),\n \n // query(':leave', animateChild(), { optional: true }),\n // group([\n // query(':leave', [\n // animate('500ms ease-out', style({ transform: 'translateX(50%) scale(0.1)' }))\n // ], { optional: true }),\n // query(':enter', [\n // animate('500ms ease-out', style({ transform: 'translateY(0%) scale(1)' }))\n // ], { optional: true })\n // ]),\n // query(':enter', animateChild(), { optional: true }),\n \n ]),\n \n // -------------------------------------------------------------\n // UnderConstruction!!\n // -------------------------------------------------------------\n transition('* <=> logout', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(\n ':enter',\n [\n // style({ top: '-100%', transform: 'rotateY(360deg)' })\n style({ transform: 'translateY(-1%) scale(0.1)'}),\n ],\n { optional: true},\n ),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('800ms ease-out', style({ transform: 'translateX(50%) scale(0.1)'}))], { optional: true}),\n query(':enter', [animate('900ms ease-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n query(':enter', animateChild(), { optional: true}),\n ]),\n\n \n // ------------------------------------------------------------\n // Stable. Do not change.\n // ------------------------------------------------------------\n \n transition('* <=> membersIndividually', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('700ms ease-in-out', style({ transform: 'translateX(-50%) scale(0.1)'}))], { optional: true}),\n query(':enter', [animate('900ms ease-in-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n query(':enter', animateChild(), { optional: true}),\n ]),\n // ------------------------------------------------------------\n transition('* <=> memberView', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('700ms ease-out', style({ transform: 'translateX(50%) scale(0.1) '}))], { optional: true}),\n query(':enter', [animate('900ms ease-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n query(':enter', animateChild(), { optional: true}),\n ]),\n // ------------------------------------------------------------\n transition('* <=> preference', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('700ms ease-out', style({ transform: 'translateX(50%) scale(0.1)'}))], { optional: true}),\n query(':enter', [animate('900ms ease-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n query(':enter', animateChild(), { optional: true}),\n ]),\n // ------------------------------------------------------------\n transition('* <=> preScreen', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('700ms ease-out', style({ transform: 'translateX(50%) scale(0.1)'}))], { optional: true}),\n query(':enter', [animate('900ms ease-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n query(':enter', animateChild(), { optional: true}),\n ]),\n // ------------------------------------------------------------\n transition('* <=> profileInfo', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('700ms ease-out', style({ transform: 'translateX(50%) scale(0.1)'}))], { optional: true}),\n query(':enter', [animate('900ms ease-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n query(':enter', animateChild(), { optional: true}),\n ]),\n \n // ------------------------------------------------------------\n // Stable. Do not change.\n // ------------------------------------------------------------\n transition('* <=> register', [\n style({ position: 'relative'}),\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true},\n ),\n query(':enter', [style({ transform: 'translateY(-1%) scale(0.1)'})], { optional: true}),\n query(':leave', animateChild(), { optional: true}),\n group([\n query(':leave', [animate('700ms ease-in-out', style({ transform: 'translateX(-50%) scale(0.1)'}))], { optional: true}),\n query(':enter', [animate('900ms ease-in-out', style({ transform: 'translateY(0%) scale(1)'}))], { optional: true}),\n ]),\n query(':enter', animateChild(), { optional: true}),\n ]),\n \n // -------------------------------------------------------------\n // Duplicate\n // transition('* <=> register2', [\n // style({ position: 'relative' }),\n // query(':enter, :leave', [\n // style({\n // position: 'absolute',\n // top: 0,\n // left: 0,\n // width: '100%'\n // })\n // ], { optional: true }),\n // query(':enter', [\n // style({ left: '100%' })\n // ], { optional: true }),\n // query(':leave', animateChild(), { optional: true }),\n // group([\n // query(':leave', [\n // animate('700ms ease-in-out', style({ left: '100%' }))\n // ], { optional: true }),\n // query(':enter', [\n // animate('900ms ease-in-out', style({ left: '0%' }))\n // ], { optional: true })\n // ]),\n // query(':enter', animateChild(), { optional: true }),\n // ]),\n // ------------------------------------------------------------\n \n ]),\n];\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LandingPageComponent } from './appComponentsModule/landingPage/landingPage.component';\r\n\r\n/*\r\n * ----------------------------------------------------------------------------------------------------\r\n * Note: the following is the initial attempt to lazy-load-modules, and dynamically loading components,\r\n * which fails in case of nested - child - components of any parent - component\r\n * Attempt#1:\r\n * ref:https://stackblitz.com/github/mokkapps/angular-manual-lazy-load-demo?file=src%2Fapp%2Flazy-loader.service.ts\r\n * ----------------------------------------------------------------------------------------------------\r\n */\r\n\r\nlet lChildren: any;\r\nconst appRoutes : Routes = [\r\n\r\n\r\n // --------------------------------------------------------------------------------------\r\n // ---------------------------------------------------------------------------------------\r\n { path: 'index', component: LandingPageComponent, data: { preload: true } },\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'appcomponentsm',\r\n loadChildren: () => import('./appComponentsModule/appComponents.module').then(m => { return m.AppComponentsModule })\r\n },\r\n // ---------------------------------------------------------------------------------------\r\n {\r\n path: 'publicm',\r\n loadChildren: () => import('./publicModule/public.module').then(m => { return m.PublicModule; })\r\n },\r\n // ---------------------------------------------------------------------------------------\r\n {\r\n path: 'loginm',\r\n loadChildren: () => import('./loginModule/login.module').then((m) => { return m.LoginModule; })\r\n },\r\n // --------------------------------------------------------------------------------------\r\n //{\r\n // path: 'membersm',\r\n // loadChildren: () => import(\"./membersModule/members.module\").then(m => { return m.MembersModule; })\r\n //},\r\n // ---------------------------------------------------------------------------------------\r\n //{\r\n // path: 'memberscrollm',\r\n // loadChildren: () => import(\"./memberInfiniteScrollModule/memberInfiniteScroll.module\").then(m => { return m.MemberInfiniteScrollModule; })\r\n //},\r\n // ---------------------------------------------------------------------------------------\r\n {\r\n path: 'profiletilescrollm',\r\n loadChildren: () => import(\"./profileTileScrollModule/profileTileScroll.module\").then(m => { return m.ProfileTileScrollModule; })\r\n },\r\n // ---------------------------------------------------------------------------------------\r\n {\r\n path: 'memberViewAndUpgradedm',\r\n loadChildren: () =>\r\n import(\"./memberViewAndUpgradedModule/memberViewAndUpgraded.module\").then(m => { return m.MemberViewAndUpgradedModule; })\r\n },\r\n // -------------------------------------------------------------------------------------- \r\n {\r\n path: 'mym',\r\n loadChildren: () => import('./myModule/my.module').then(m => { return m.MyModule; }) \r\n },\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'profilem',\r\n loadChildren: () => import('./profileModule/profile.module').then(m => { return m.ProfileModule; }) \r\n },\r\n // --------------------------------------------------------------------------------------\r\n //{\r\n // path: 'registerm',\r\n // loadChildren: () => import('./registerModule/register.module').then(m => { return m.RegisterModule; }) \r\n //},\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'chatm',\r\n loadChildren: () => import('./chatModule/chat.module').then(m => { return m.ChatModule; })\r\n },\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'communicationm',\r\n loadChildren: () => import('./communicationModule/communication.module').then(m => { return m.CommunicationModule; })\r\n },\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'activitym',\r\n loadChildren: () => import('./memberActivityModule/memberActivity.module').then(m => { return m.ActivityModule; }) \r\n },\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'signupm',\r\n loadChildren: () => import('./signupModule/signup.module').then(m => { return m.SignupModule; })\r\n },\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'salesm',\r\n loadChildren: () => import('./salesModule/sales.module').then(m => { return m.SalesModule; })\r\n },\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'salestestm',\r\n loadChildren: () => import('./salesTestModule/salesTest.module').then(m => { return m.SalesTestModule; })\r\n },\r\n // ---------------------------------------------------------------------------------------\r\n {\r\n path: 'sandboxm',\r\n loadChildren: () => import('./sandBoxModule/sandBox.module').then(m => { return m.SandBoxModule; })\r\n },\r\n // --------------------------------------------------------------------------------------\r\n // {\r\n // path: 'modalm',\r\n // loadChildren: async () => await import( './modalModule/modal.module' ).then( m => m.ModalModule )\r\n // },\r\n // --------------------------------------------------------------------------------------\r\n // {\r\n // path: 'gesture',\r\n // loadChildren: async () => await import( './gestureModule/gesture.module' ).then( m => m.GestureModule )\r\n // },\r\n // --------------------------------------------------------------------------------------\r\n {\r\n path: 'appadminm',\r\n loadChildren: () => import( './appAdminModule/app-admin.module' ).then( m => m.AppAdminModule )\r\n },\r\n \r\n // --------------------------------------------------------------------------------------\r\n \r\n // { path: '', redirectTo: 'index', pathMatch: 'full' },\r\n // --------------------------------------------------------------------------------------\r\n //{\r\n // path: '',\r\n // redirectTo: '/index',\r\n // pathMatch: 'full',\r\n //},\r\n // --------------------------------------------------------------------------------------\r\n { path: '**', component: LandingPageComponent, data: { preload: true } },\r\n // --------------------------------------------------------------------------------------\r\n];\r\n\r\n\r\n@NgModule({ \r\n imports: [\r\n RouterModule.forRoot(appRoutes, {\r\n // initialNavigation: true || 'enabled',\r\n // relativeLinkResolution: 'corrected', // ref: https://github.com/angular/angular/issues/17957\r\n }),\r\n ],\r\n exports: [ RouterModule ]\r\n})\r\nexport class AppRoutingModule { }\r\n","'use-strict'\r\n// import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef, Component, ElementRef,\r\n Inject, NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Route, Router, RouterOutlet } from '@angular/router';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n// import { DeviceDetectorService } from 'ngx-device-detector';\r\n// import * as log4js from 'log4js';\r\nimport { Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { PhotoBn } from '../models/common/photoBn.model';\r\nimport { SpinnerModel } from '../models/common/spinnerModel.model';\r\nimport { ViewportDimension } from '../models/common/viewportDimension.model';\r\nimport { KvMemberActivityGlyph } from '../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { PagerMemberActivity } from '../models/pagination/pagerMemberActivity.model';\r\nimport { ProfileTile } from '../models/profile/profileTile.model';\r\nimport { SWUpdateService } from '../services/appServiceService/swUpdateService.service';\r\n// import { SWUpdateService } from '../services/appServiceService/swUpdateService.service';\r\nimport { SignedInUserService } from '../services/commonServiceService/signedInUserService.service';\r\nimport { HeartbeatService } from '../services/coreServiceService/heartbeatService.service';\r\nimport { HttpService } from '../services/coreServiceService/httpService.service';\r\nimport { DbDexieToDictionaryService } from '../services/dbServiceService/dbDexieToDictionaryService.service';\r\nimport { GlyphiconMenuService } from '../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { PagerPhotoMgmtService } from '../services/pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerSupportService } from '../services/pagerServiceService/pagerSupportService.service';\r\nimport { PhotoBnService } from '../services/photoServiceService/photoBnService.service';\r\nimport { PhotoServiceService } from '../services/photoServiceService/photoServiceService.service';\r\nimport { ProfileServiceService } from '../services/profileServiceService/profileServiceService.service';\r\nimport { RendererServiceService } from '../services/rendererServiceService/rendererServiceService.service';\r\nimport { MessageModel } from '../models/common/messageModel.model';\r\nimport { MemberActivity } from '../models/member/memberActivity.model';\r\nimport { RedirectionService } from '../services/commonServiceService/redirectionService.service';\r\nimport { LogRegService } from '../services/coreServiceService/logRegService.service';\r\nimport { GlyphiconServiceService } from '../services/GlyphiconService/glyphiconServiceService.service';\r\nimport { BreadcrumServiceStatic } from '../services/staticServices/breadcrumServiceStatic.service';\r\nimport { CopyServiceStatic } from '../services/staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { HammerServiceStatic } from '../services/staticServices/commonStaticServices/hammerServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../services/staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { InMemoryDataServiceStatic } from '../services/staticServices/inMemoryDataServiceStatic.service';\r\nimport { LoginSuccess } from './../models/account/loginSuccess.model';\r\nimport { SitUser } from './../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from './../models/boxNonce/boxNonceEntity.model';\r\nimport { BrdCrmKvAny } from './../models/breadcrum/brdcrmKvAny.model';\r\nimport { PagerBreadcrum } from './../models/breadcrum/pagerBreadcrum.model';\r\nimport { Heartbeat } from './../models/common/heartbeat.model';\r\nimport { ModuleComponentLoader } from './../models/common/moduleComponentLoader.model';\r\nimport { PhotoMgmtAction } from './../models/common/photoMgmtAction.model';\r\nimport { UserAndPageTitle } from './../models/common/userAndPageTitle.model';\r\nimport { NaclPairClient } from './../models/crypto/naclPairClient.model';\r\nimport { Salt } from './../models/crypto/salt.model';\r\nimport { KvAny } from './../models/keyValue/kvAny.model';\r\nimport { KvPhoto } from './../models/keyValue/kvPhoto.model';\r\nimport { CenterCoordinates } from './../models/misc/centerCoordinates.model';\r\nimport { PagerPhotoMgmt } from './../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfilePics } from './../models/profile/profilePics.model';\r\nimport { AppServiceService } from './../services/appServiceService/appServiceService.service';\r\nimport { BreakPointObserverService } from './../services/appServiceService/breakPointObserverService.service';\r\nimport { CommonServiceService } from './../services/commonServiceService/commonServiceService.service';\r\nimport { SitUserService } from './../services/commonServiceService/sitUserService.service';\r\nimport { CheckConnectionService } from './../services/coreServiceService/checkConnectionService.service';\r\nimport { CoreServiceService } from './../services/coreServiceService/coreServiceService.service';\r\nimport { DbServiceService } from './../services/dbServiceService/dbServiceService.service';\r\nimport { LocalStorageService } from './../services/dbServiceService/localStorageService.service';\r\nimport { ActivityService } from './../services/memberServiceService/activityService.service';\r\nimport { MemberServiceService } from './../services/memberServiceService/memberServiceService.service';\r\nimport { PagerServiceService } from './../services/pagerServiceService/pagerServiceService.service';\r\nimport { BackgroundImageAnimationService } from './../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from './../services/rendererServiceService/rendererService.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from './animation';\r\nimport { DictionaryIOService } from '../services/dictionaryServiceService/dictionaryIOService.service';\r\n\r\n// import { SignalRService } from '../services/communicationServiceService/signal-r.service';\r\n\r\n/*\r\n * declare let jQuery: any;\r\n * declare let $: any;\r\n */\r\n\r\n/*\r\n * ---------------------------------------------------------------------------------------\r\n * ref:https://www.tektutorialshub.com/angular/angular-canonical-url/\r\n * Usage example: this.seoService.updateCanonicalUrl(hostName+'/first');\r\n */\r\nconst hostName = 'https:// localhost:44392'; // 'http:// slakez.com/slakez/'; // ;'https:// localhost:44371/'\r\n// --------------------------------------------------------------------------------------\r\n\r\n// @DestroySubscribers()\r\n@Component({\r\n /*moduleId: module.id,*/\r\n // standalone: true, // needed for hammerGestureConfig\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css'],\r\n animations: [Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy, AfterViewInit {\r\n loading$ : Observable = of(false); // rout-change-spinner\r\n /*\r\n * ref: https://medium.com/angular-in-depth/lazy-loading-angular-modules-with-ivy-92c3a890eae1\r\n * partOf Lazy-Loading; Note: Ancors are always to be ViewContainerRef\r\n */\r\n // @ViewChild( 'appAnchor', { read: ViewContainerRef } ) appAnchor! : ViewContainerRef;\r\n @ViewChild('appElementRef', { static: false }) appElementRef! : ElementRef;\r\n @ViewChild( 'appSidebar', { static: false } ) appSidebar! : ElementRef;\r\n\r\n public subscribers: any = { }; // must be used for @DestroySubscribers()\r\n /*\r\n * -------------------------------------------------------------\r\n * @ViewChild(HelloComponent, { static: false }) hello: HelloComponent;\r\n * -------------------------------------------------------------\r\n */\r\n public bias !: BackgroundImageAnimationService;\r\n public breakpointObserverService!: BreakPointObserverService;\r\n public checkConnectionService! : CheckConnectionService;\r\n public dbDexieToDictionaryService! : DbDexieToDictionaryService;\r\n public dictionaryIOService! : DictionaryIOService;\r\n // public errorLogService!: ErrorLogService;\r\n // public gestureService!: GestureService;\r\n public glyphiconMenuService! : GlyphiconMenuService;\r\n public heartbeatService!: HeartbeatService;\r\n public httpService! : HttpService; // primarily to set at Emitter so that others can get it\r\n public localStorageService! : LocalStorageService;\r\n public logRegService : LogRegService;\r\n public masterData: any;\r\n public activityService!: ActivityService;\r\n public photoBnService! : PhotoBnService;\r\n public redirectionService! : RedirectionService;\r\n public rendererService!: RendererService;\r\n public renderer! : Renderer2;\r\n public pagerPhotoMgmtService! : PagerPhotoMgmtService;\r\n public pagerSupportService! : PagerSupportService;\r\n public sitUserService! : SitUserService;\r\n public signedInUserService! : SignedInUserService;\r\n public swUpdateService! : SWUpdateService;\r\n // public signalRService! : SignalRService;\r\n // ------------------------------------------\r\n public activeComponentIds: string[] = [];\r\n public activeModuleComponentIds : string[] = [];\r\n public biasKvPhotoArr: KvPhoto[] = [];\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public bottom : any;\r\n public breadcrumRing : ModuleComponentLoader[] = [];\r\n public breadCrmRngLength = 0;\r\n public callerName = '';\r\n public cart: any;\r\n public cartItemsCount = 0;\r\n public centerCoordinates : CenterCoordinates = new CenterCoordinates();\r\n public componentViewportDimension : ViewportDimension = new ViewportDimension();\r\n public currentRoute = '';\r\n public defaultPics : KvPhoto[] = [];\r\n public defaultImageKvPhotos : KvPhoto[] = [];\r\n // these images are in 'wwwroot/assets/photos/' folder\r\n public defaultImageNameArr : string[] = [];\r\n public defaultImageNames : string[] = [\r\n './assets/photos/gay-couple-1.jpg',\r\n './assets/photos/gay3.jpg',\r\n './assets/photos/leatherCouple-2.png',\r\n './assets/photos/gay1.1.png',\r\n './assets/photos/leatherMan-2.png',\r\n './assets/photos/gay2.1.png',\r\n './assets/photos/leatherMan-4.png',\r\n './assets/photos/leatherMasterSlave.png',\r\n ];\r\n public defaultGlyphNames: string[] = [];\r\n public deviceInfo :any;\r\n public document !: Document;\r\n public window ! : Window;\r\n private emitterDestroyed$: Subject = new Subject();\r\n public enums: any;\r\n public enumDataObservable: any;\r\n public enumDataSubscription: Subscription = new Subscription();\r\n public gestureDivId = 'bodyBackgroundImageId';\r\n public glyphPhotoMgmtMenuSubscription : Subscription = new Subscription();\r\n public hb : any;\r\n public heartbeatCounter = 0;\r\n public hasEmittedLoginSuccess = false;\r\n public hubConnection : signalR.HubConnection;\r\n public intervalDbg: any; // Dbg==defalt background\r\n public intervalMsg : any;\r\n public initTime = new Date().getTime();\r\n public endTime : any;\r\n public isAuthorized = false;\r\n public isBusy = false;\r\n public isConnectionEstablished = false;\r\n public isDefault = false;\r\n public isDesktopvar = false;\r\n public isDisabled = false;\r\n public isEmployee = false;\r\n public isEditProfile = false;\r\n public isHome = false;\r\n public isInitHeartbeat = true;\r\n public isInizializationComplete = false;\r\n public isLocalStorageProcessed = false;\r\n public isLoading = false;\r\n public isLoggedIn = false;\r\n public isLoggedOutByUser = false;\r\n public isMessageBoardVisible = false;\r\n public isMgmt = false;\r\n public isMobilevar = false;\r\n public isModal = false;\r\n public isMouseIn = false;\r\n public isMyProfile = false;\r\n public isMyStuffOpen = false;\r\n public isOnLine = false;\r\n public isOpen = false;\r\n public isPhotoMgmt = false;\r\n public isPremium = false;\r\n public isReviewer = false;\r\n public isSidebarOpen = false;\r\n public isSetPage = false;\r\n public isSingletap = true;\r\n public isSignup = true;\r\n public isSpinner = false;\r\n public isSpinnerRunning = false;\r\n public isSuccess = true;\r\n public isSuperUser = false;\r\n public isTabletvar = false;\r\n public isValued = false;\r\n public isViewMember = false;\r\n public isVsScroll = false;\r\n public kvGlyphArr : KvMemberActivityGlyph[] = [];\r\n public kvGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public kvPhotoArrBackup : KvPhoto[] = [];\r\n public kvPhotoLock: KvPhoto = new KvPhoto();\r\n public kvPhotoUnLock: KvPhoto = new KvPhoto();\r\n public kvPhotoPrivate: KvPhoto = new KvPhoto();\r\n public kvPhotoPublic: KvPhoto = new KvPhoto();\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public logregFactory: any;\r\n public mainTop = 0; // DO NOT DELETE: this is a CSS-top-property on .mainROutlet class to be set by each component when rendered\r\n public mc: any;\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public memberActivities : MemberActivity[] = [];\r\n public messageModel: MessageModel = new MessageModel();\r\n public messages: string[] = [];\r\n public naclClient: NaclPairClient = new NaclPairClient();\r\n public ngAfterViwInitCounter = 0;\r\n private onDestroy$ : Subject = new Subject();\r\n\r\n public pageSize = 6; // default value\r\n public pageNo = 0;\r\n public pageTitle = '';\r\n public pagerV : PagerMemberActivity = new PagerMemberActivity();\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public pagerVMemActGlyphForPhotoMgmt : PagerMemberActivity = new PagerMemberActivity(); // pagerVMemActGlyphForViewMember\r\n public pagerVMemActGlyphForViewMember : PagerMemberActivity = new PagerMemberActivity();\r\n public pagerBrdCrm: PagerBreadcrum = new PagerBreadcrum();\r\n public pagerPhotoMgmt: PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public photoMgmtAction: PhotoMgmtAction = new PhotoMgmtAction();\r\n public pauseTimer: any;\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profileImageKvPhotos: KvPhoto[] = [];\r\n public profileNameChars: any[] = [];\r\n public returnUrl = '';\r\n public routedElementId = '';\r\n public routes: Route[] = [];\r\n public signedInUserId = 0;\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n public selectedProfileTile : ProfileTile = new ProfileTile();\r\n public spinnerRequestCounter = 0;\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n public tempElem: any;\r\n public title = 'Slakez';\r\n public tobeRemovedComponentName = '';\r\n public top : any;\r\n public tSitUserId = 0;\r\n public unsaltedIndexedDbData: any;\r\n public urlString = '';\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n public viewportDimension : ViewportDimension = new ViewportDimension();\r\n public wishListCount = 0;\r\n public width = 0;\r\n public height = 0;\r\n \r\n // -------------------------\r\n // Breadcrum vaiables:\r\n // -------------------------\r\n public routerKvAny: BrdCrmKvAny = new BrdCrmKvAny();\r\n public pagedBreadcrumArr: KvAny[] = [];\r\n public navEventObserver: Subscription = new Subscription();\r\n public numberOfTicks = 0;\r\n public callStackCount = 0;\r\n public timer: any;\r\n public timerMap: Map = new Map();\r\n public yourLoginSuccess: LoginSuccess = new LoginSuccess();\r\n \r\n // ------------------------------------\r\n // Background-Image-Rotaion-Vars\r\n // ------------------------------------\r\n\r\n // -------------------------------------\r\n // Timer Vars\r\n // -------------------------------------\r\n public idleState = 'Not started.';\r\n public isTimedOut = false;\r\n public isPaused = false;\r\n public lastPing!: Date;\r\n public intervalPeriod = 1000;\r\n public idlePeriod = 500;\r\n public timeoutPeriod = 500;\r\n // ----------------------------------------------------------\r\n\r\n public constructor (\r\n private activatedRoute: ActivatedRoute,\r\n public cdr: ChangeDetectorRef,\r\n\r\n // lazy-loading-injections:\r\n private deviceService : DeviceDetectorService,\r\n private elementRef: ElementRef, // partOf Lazy-UnLoading\r\n private vc : ViewContainerRef,\r\n\r\n private appServiceService: AppServiceService,\r\n private commonServiceService: CommonServiceService,\r\n private coreServiceService: CoreServiceService,\r\n private dbServiceService : DbServiceService,\r\n private glyphiconServiceService: GlyphiconServiceService,\r\n private pagerServiceService : PagerServiceService,\r\n private photoServiceService : PhotoServiceService,\r\n private profileServiceService: ProfileServiceService,\r\n private memberServiceService : MemberServiceService,\r\n private rendererServiceService : RendererServiceService,\r\n // private signalRService : SignalRService,\r\n private ngZone: NgZone,\r\n private router: Router,\r\n @Inject( DOCUMENT ) Document: Document,\r\n @Inject( Window ) Window: Window,\r\n ) {\r\n // debugger;\r\n this.loginSuccess = new LoginSuccess();\r\n this.isAuthorized = false;\r\n this.isEmployee = false;\r\n this.isMgmt = false;\r\n this.signedInUserId = 0;\r\n this.document = Document;\r\n this.window = Window;\r\n if (this.appServiceService) {\r\n this.swUpdateService = this.appServiceService.getSWUpdateService();\r\n }\r\n\r\n this.deviceInfo = this.deviceService.getDeviceInfo();\r\n this.isMobilevar = this.deviceService.isMobile();\r\n this.isTabletvar = this.deviceService.isTablet();\r\n this.isDesktopvar = this.deviceService.isDesktop();\r\n // -----------------------------------------------------------------\r\n if ( this.commonServiceService )\r\n {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n this.sitUserService = this.commonServiceService.getSitUserService() as SitUserService;\r\n this.signedInUserService = this.commonServiceService.getSignedInUserService();\r\n }\r\n // -----------------------------------------------------------------\r\n if ( this.coreServiceService )\r\n {\r\n this.checkConnectionService = this.coreServiceService.getCheckConnectionService() as CheckConnectionService;\r\n // debugger;\r\n this.heartbeatService = this.coreServiceService.getHeartbeatService();\r\n this.httpService = this.coreServiceService.getHttpService();\r\n EmitterSubjectService.setHttpService(this.httpService);\r\n this.logRegService = this.coreServiceService.getLogRegService();\r\n }\r\n\r\n if (this.pagerServiceService) {\r\n this.pagerSupportService = this.pagerServiceService.getPagerSupportService();\r\n this.pagerPhotoMgmtService = this.pagerServiceService.getPagerPhotoMgmtService();\r\n }\r\n if (this.photoServiceService) {\r\n this.photoBnService = this.photoServiceService.getPhotoBnService();\r\n }\r\n if (this.rendererServiceService)\r\n {\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n this.rendererService = this.rendererServiceService.getRendererService() as RendererService;\r\n }\r\n if ( this.rendererService )\r\n {\r\n this.rendererService.setDocument( this.document);\r\n }\r\n // -----------------------------------------------------------------\r\n if (this.dbServiceService) {\r\n this.dictionaryIOService = this.dbServiceService.getDictionaryIOService();\r\n this.dbDexieToDictionaryService = this.dbServiceService.getDbDexieToDictionaryService() as DbDexieToDictionaryService;\r\n this.localStorageService = this.dbServiceService.getLocalStorageService() as LocalStorageService;\r\n }\r\n // -----------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.setDocument( this.document );\r\n EmitterSubjectService.setWindow( this.window );\r\n EmitterSubjectService.setIsMobile( this.isMobilevar );\r\n // debugger;\r\n\r\n EmitterSubjectService.setChangeDetectorRef( cdr );\r\n EmitterSubjectService.setAppElementRef( this.elementRef );\r\n // this.appAnchor = vc;\r\n\r\n // -----------------------------------------------------------------\r\n this.defaultImageNameArr = (this.bias as BackgroundImageAnimationService).getDefaultImageNameArr();\r\n this.defaultImageKvPhotos = (this.bias as BackgroundImageAnimationService).setDefaultImageNamesToKvPhotoArr(this.defaultImageNameArr);\r\n\r\n // -----------------------------------------------------------------\r\n if ( this.memberServiceService )\r\n {\r\n this.activityService = this.memberServiceService.getActivityService() as ActivityService;\r\n }\r\n\r\n // -----------------------------------------------------------------\r\n // debugger;\r\n if ( this.glyphiconServiceService )\r\n {\r\n this.glyphiconMenuService = this.glyphiconServiceService.getGlyphiconMenuService() as GlyphiconMenuService;\r\n }\r\n // -----------------------------------------------------------------\r\n if ( this.commonServiceService )\r\n {\r\n }\r\n // ===================================================================\r\n\r\n this.breadcrumRing = BreadcrumServiceStatic.getRing();\r\n this.pagerBrdCrm = BreadcrumServiceStatic.getPagerBreadcrum();\r\n // debugger;\r\n // -----------------------------------------------------------------\r\n if (this.rendererService) {\r\n this.renderer = (this.rendererService as RendererService).getRenderer();\r\n }\r\n // -----------------------------------------------------------------\r\n this.isOnLine = this.checkConnectionService.isOnline();\r\n EmitterSubjectService.setIsOnLine(this.isOnLine);\r\n\r\n // this.isBusyModel.isBusy = false;\r\n // -----------------------------------------------------------------\r\n this.enums = EmitterSubjectService.getEnums();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.enums))\r\n {\r\n this.enums = InMemoryDataServiceStatic.getEnums;\r\n }\r\n\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.enums ) )\r\n {\r\n // debugger;\r\n this.defaultImageNames = this.enums.defaultImageNames; // TODO: watch for its impact on current defaultNameArr\r\n this.defaultGlyphNames = this.enums.defaultGlyphNames;\r\n }\r\n\r\n // -----------------------------------------------------------\r\n this.deviceInfo = this.detectDevice();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.deviceInfo ) )\r\n {\r\n this.isMobilevar = this.deviceInfo.isMobile();\r\n EmitterSubjectService.setIsMobile( this.isMobilevar );\r\n }\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.setAppElementRef( this.appElementRef );\r\n // -----------------------------------------------------------\r\n\r\n this.viewportDimension = this.rendererService.getViewport();\r\n\r\n // this.spinnerLoader.setLoading(true);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnInit () : void {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dbDexieToDictionaryService)) {\r\n EmitterSubjectService.setDbDexieToDictionaryService(this.dbDexieToDictionaryService);\r\n\t\t}\r\n // force update the Service Worker:\r\n // --------------------------------\r\n this.swUpdateService.forceSwUpdateActivation();\r\n\r\n //if (SWUpdateServiceStatic.isEnabled) {\r\n // SWUpdateServiceStatic.forceSwUpdateActivation();\r\n //}\r\n // --------------------------------------------------------------------------\r\n // debugger;\r\n this.httpService = this.coreServiceService.getHttpService();\r\n EmitterSubjectService.setHttpService(this.httpService);\r\n EmitterSubjectService.setAppElementRef(this.elementRef);\r\n\r\n // -------------------------------------------------------------------------\r\n this.returnUrl = window.location.pathname + window.location.search;\r\n // -------------------------------------------------------------------------\r\n\r\n\r\n EmitterSubjectService.setReturnUrl(this.returnUrl);\r\n EmitterSubjectService.setHostName(hostName);\r\n // -------------------------------------------------------------------------\r\n // Begin of All-Emitters:\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.centerCoordinatesEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n this.centerCoordinates = result as CenterCoordinates;\r\n });\r\n // -------------------------Completed on 2021/04/10------------------------------------------------\r\n EmitterSubjectService.checkLocalStorageForLoginSuccessEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n if (!this.isLocalStorageProcessed) {\r\n // debugger;\r\n this.checkLocalStogareForLoginSuccess();\r\n }\r\n });\r\n // ------------------------------------------------------------\r\n // Create-Dictionary-From-IndexexDb:\r\n // ------------------------------------------------------------\r\n // debugger;\r\n if (!this.isOnLine) {\r\n debugger;\r\n this.checkLocalStogareForLoginSuccess();\r\n debugger;\r\n this.dictionaryIOService.createDictionaryFromDbDexieDb('all' as string);\r\n }\r\n // EmitterSubjectService.emitCreateDictionaryFromDbDixie('sitUser');\r\n // EmitterSubjectService.emitCreateDictionaryFromDbDixie('loginSuccess');\r\n // EmitterSubjectService.emitCreateDictionaryFromDbDixie('profileTile');\r\n // EmitterSubjectService.emitCreateDictionaryFromDbDixie('profileInfo');\r\n // EmitterSubjectService.emitCreateDictionaryFromDbDixie('kvPhoto');\r\n // EmitterSubjectService.emitCreateDictionaryFromDbDixie('photoBnId');\r\n\r\n // this.createAllDictionariesFromDbDexieDb();\r\n // ----------------------------------------------------\r\n // All the dictionaries can be created by this emitter-listener\r\n // ---------------------------------------------------\r\n EmitterSubjectService.createDictionaryFromDbDixieEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((entityName) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)) {\r\n this.dictionaryIOService.createDictionaryFromDbDexieDb(entityName as string);\r\n } \r\n });\r\n // ---------------------------------------------------\r\n EmitterSubjectService.avatarProfileTileEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(data => {\r\n // debugger;\r\n this.executeAvatarTasks(data as ProfileTile); \r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.heartbeatEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n const hbeat = result as Heartbeat;\r\n\r\n if (hbeat.sitUserId > 0) {\r\n this.loginSuccess.heartbeat = hbeat;\r\n }\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isHomeEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.isHome = result as boolean;\r\n this.redirectionService.routeToHomePage(this.router).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n });\r\n\r\n // ---------------------------------------------------\r\n EmitterSubjectService.isSidebarOpenEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(data => {\r\n // debugger;\r\n this.isSidebarOpen = data as boolean; \r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isMyStuffOpenEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.isMyStuffOpen = result as boolean;\r\n\r\n });\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.isPhotoMgmtEmitter.subscribe((result) => {\r\n // debugger;\r\n this.isPhotoMgmt = result as boolean;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n // turn off the pagerVGlyphMenuForViewMember:\r\n this.kvGlyphArrForViewMember = [];\r\n // debugger;\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n // TODO: check to see if it is needed!!\r\n // --------------------------------------------------------------------------\r\n //EmitterSubjectService.isViewMemberEmitter.subscribe((result) => {\r\n // // debugger;\r\n // this.isViewMember = result as boolean;\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.sitUser.sitUserId !== this.sitUser.sitUserId) {\r\n\r\n // // This method also check if the sitUserId === signedInUserId, and if true, displays signedInUser's PrimaryGlyphsMenu:\r\n // // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.sitUser.sitUserId); \r\n // }\r\n // else {\r\n // this.kvGlyphArrForViewMember = [];\r\n // }\r\n // this.ngAfterViewInit();\r\n //});\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.loadLandingPageEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.redirectionService.routeToHomePage(this.router).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n })\r\n });\r\n // -------------------------------------------------------------------------\r\n // Begin: isMobileVar and loginSuccess/logout emitters!!\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.loginSuccess = result;\r\n this.executeLoginSuccessTasks();\r\n this.executeAfterLoginSuccessTasks();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isLoginSuccessEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n this.executeAfterLoginSuccessTasks();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.logoutEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger; \r\n this.loginSuccess = new LoginSuccess().resetThat(this.loginSuccess);\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n this.logRegService.executeLogoutSuccessTasks();\r\n this.signedInUserId = 0;\r\n // debugger;\r\n this.isLoggedIn = false;\r\n this.isLoggedOutByUser = true;\r\n this.ngAfterViewInit();\r\n });\r\n\r\n // -------------------------------------------------------------------------\r\n // Begin of Message-Emitters:\r\n // -------------------------------------------------------------------------\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.messageEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n this.isMessageBoardVisible = true;\r\n if (result instanceof MessageModel) {\r\n this.messageModel = result;\r\n this.ngAfterViewInit();\r\n \r\n }\r\n else {\r\n this.messageModel.message = result as string;\r\n this.ngAfterViewInit();\r\n \r\n }\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n this.messageModel.message = '';\r\n this.isMessageBoardVisible = false;\r\n clearTimeout(this.timer);\r\n this.ngAfterViewInit();\r\n }, 20000);\r\n }\r\n });\r\n // -------------------------------------------------------------------------\r\n // TODO: remove once the issue is resolved\r\n // NOTE: This is a temporary solution to an unsubscribe error\r\n // We do not emit loginSuccess upon successful login from the LoginComponent\r\n // We use this emitter to indicate that login is successful, and any subsequent\r\n // computation that are necessary upon successful login is carried out here.\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.clearMessageEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.messageModel.message = '';\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n // End of Message-Emitters:\r\n // -------------------------------------------------------------------------\r\n // -------------------------------------------------------------------------\r\n // End: isMobileVar and loginSuccess/logout emitters!!\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.myErrorLogEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n /*\r\n * debugger;\r\n * this.message = result as string;\r\n * this.setMessageTimer();\r\n * this.logger.silly(result);\r\n * this.loggerTrace.info(result);\r\n * this.logEngineService.error(result);\r\n * this.message = result;\r\n * this.setMessageTimer();\r\n * this.errorLogService.log( result );\r\n */\r\n });\r\n // ------------------------------------------------------------------------- \r\n EmitterSubjectService.pageSizeEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n this.pageSize = result as number;\r\n // get initial pager which willbe used to\r\n this.ngAfterViewInit();\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.pagerBreadcrumEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.pagerBrdCrm = result as PagerBreadcrum;\r\n this.breadCrmRngLength = this.setBreadCrumRingLength(this.pagerBrdCrm);\r\n });\r\n // --------------------------------------------------------------\r\n // Note: 1) This should not have to update any data. It's job is to\r\n // render the data only.\r\n // 2) pagerVKvPhotoNav component is the driver/master of\r\n // 2.a) pagerVerticalGlyphForPhotoMgmt &\r\n // 2.b) pagerVerticalGlyphForViewMember,\r\n // though all three are children of appComponent.\r\n // Upon receiving data for pagerVKvPhotoNav, we compute and display 2.a) or 2.b)\r\n // depending on isPhotoMgmt or isViewMember values.\r\n // Note: the value of isPhotoMgmt (true/false) should have no effect on isViewMember.\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.refreshPageEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.returnUrlEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((result) => {\r\n this.returnUrl = result as string;\r\n });\r\n // -------------------------------------------------------------------------\r\n // Note: without this some children's images do not get rendered!!\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.runNgAfterViewInitEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.ngAfterViewInit();\r\n });\r\n // --------------------------------------------------------------\r\n // this selectedProfileEmitter will be emitted before even the\r\n // sitUser arrives from the server. But some values of the sitUser model\r\n // will be needed by other components and services.\r\n // Therefore we create a sitUser model from the profileTile model here\r\n // and save it to Emitter so that everyone can have accesss to this\r\n // sitUser.\r\n // Note: when the server's sitUser model arrives, it will replace this sitUser\r\n // --------------------------------------------------------------\r\n // TODO: remove before deployment\r\n // --------------------------------------------------------------\r\n //EmitterSubjectService.selectedProfileTileEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(result => {\r\n // // debugger;\r\n // this.selectedProfileTile = result as ProfileTile;\r\n\r\n // // create a sitUser from selectedProfileTile:\r\n // // ------------------------------------------\r\n // this.sitUser = CopyServiceStatic.copyProfileTileToSitUser(this.selectedProfileTile);\r\n // EmitterSubjectService.setSitUserModel(this.sitUser);\r\n // });\r\n // -----------------------------------------------------------------\r\n // Note: This emitter is to be used by any component that has a cancel-button.\r\n // Because once cancelled, the user should go back to the previous page (if that is the desired behavior)\r\n // -----------------------------------------------------------------\r\n EmitterSubjectService.setBreadcrumPageEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n debugger;\r\n // this.setBreadcrumPage( result );\r\n });\r\n // -------------------------------------------------------------------------\r\n // Begin of spinner-relaed-emitters:\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.showSpinnerEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result : any) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n this.spinnerModel = result as SpinnerModel;\r\n this.spinnerModel.isSpinner = true;\r\n this.spinnerModel.isOpen = true;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.spinnerModel.message) || this.spinnerModel.message.length === 0) {\r\n this.spinnerModel.message = \"Busy...\";\r\n }\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n this.spinnerModel.isSpinner = false;\r\n this.spinnerModel.isOpen = false;\r\n this.spinnerModel.message = '';\r\n clearTimeout(this.timer);\r\n this.ngAfterViewInit();\r\n }, 20000);\r\n this.ngAfterViewInit();\r\n }\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.hideSpinnerEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result : any) => { \r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.message)) {\r\n this.spinnerModel.message = result.message as string;\r\n }\r\n else this.spinnerModel.message = result; \r\n }\r\n this.spinnerModel.isSpinner = false;\r\n this.spinnerModel.isOpen = false;\r\n\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n this.spinnerModel.isSpinner = false;\r\n this.spinnerModel.isOpen = false;\r\n this.spinnerModel.message = '';\r\n clearTimeout(this.timer);\r\n this.ngAfterViewInit();\r\n }, 30000);\r\n this.ngAfterViewInit();\r\n });\r\n \r\n // -------------------------------------------------------------------------\r\n // End of spinner-relaed-emitters:\r\n // -------------------------------------------------------------------------\r\n \r\n\r\n /*\r\n * =========================================================================\r\n * Begin of PhotoLock/Unlock system\r\n * =========================================================================\r\n */\r\n EmitterSubjectService.setupLockPhotos();\r\n this.kvPhotoLock = EmitterSubjectService.getPhotoLock();\r\n this.kvPhotoUnLock = EmitterSubjectService.getPhotoUnLock();\r\n // --------------------------------------------------------\r\n this.kvPhotoPrivate = EmitterSubjectService.getPhotoPrivate();\r\n this.kvPhotoPublic = EmitterSubjectService.getPhotoPublic();\r\n // --------------------------------------------------------\r\n EmitterSubjectService.photoLockUnLockEmitter\r\n .pipe( takeUntil( this.onDestroy$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n const kvPhoto = result as KvPhoto;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.key)) {\r\n if (kvPhoto.key.toLowerCase().indexOf('tala') !== -1) {\r\n this.kvPhotoLock = kvPhoto;\r\n } else if (kvPhoto.key.toLowerCase().indexOf('unlock') !== -1) {\r\n this.kvPhotoUnLock = kvPhoto;\r\n } else if (kvPhoto.key.toLowerCase().indexOf('private') !== -1) {\r\n this.kvPhotoPrivate = kvPhoto;\r\n } else if (kvPhoto.key.toLowerCase().indexOf('public') !== -1) {\r\n this.kvPhotoPublic = kvPhoto;\r\n }\r\n }\r\n }\r\n });\r\n /*\r\n * =========================================================================\r\n * End of PhotoLock/Unlock system\r\n * =========================================================================\r\n */\r\n // --------------------------------------------------------------------------\r\n // Note: We are using upgradedEmitter to emit LoginSuccess because emitting\r\n // loginSuccess causes some errors.\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.upgradedEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n debugger;\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n debugger;\r\n this.isLoggedIn = true;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n });\r\n // --------------------Completed on 2021/---------------------------------------------\r\n // debugger;\r\n this.checkLocalStogareForLoginSuccess();\r\n \r\n // -----------------------------------------------------------------------\r\n // RedirectionServiceStatic.appStartUrlStringParser(this.router);\r\n // -----------------------------------------------------------------------\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.cdr)) {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n // Note: All the dictionaries are populated from inxedexDb if data exists:\r\n // -----------------------------------------------------------------------\r\n // --------------------------------------------------------------\r\n // populate the basic-dictionaries:\r\n // These methods are run afterLoginSuccess:\r\n // -------------------------------------------------\r\n // debugger;\r\n // this.dbDexieToDictionaryService.createAllDictionariesFromDbDexie();\r\n // this.dbDexieToDictionaryService.createAllMemberActivityDictionariesFromDbDexie();\r\n } // END of ngInit()\r\n\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit () : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.returnUrl)) {\r\n EmitterSubjectService.setReturnUrl(this.returnUrl);\r\n };\r\n // NOTE: if the memberViewMgmt even does not display besides myProileViewMgmt, uncomment this:\r\n // -------------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.cdr)) {\r\n this.cdr.detectChanges();\r\n }\r\n // debugger;\r\n //this.timer = setTimeout(() => {\r\n // debugger;\r\n // this.messageModel.message = '';\r\n // this.isMessageBoardVisible = false;\r\n // clearTimeout(this.timer);\r\n //}, 20000);\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() : void {\r\n /*\r\n * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n * (2) https://www.concretepage.com/angular-2/angular-4-renderer2-example\r\n * (3) https://stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n * (4) https://stackblitz.com/edit/timer-with-pdestroyed\r\n */\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.onDestroy$.next();\r\n this.onDestroy$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n\r\n clearInterval(this.pauseTimer);\r\n this.pauseMsgTimer();\r\n this.timerMap.forEach( ( timer ) => clearInterval( timer ) );\r\n this.isInizializationComplete = true;\r\n EmitterSubjectService.setIsInizializationComplete( true );\r\n this.isHome = false;\r\n // debugger;\r\n }\r\n /*\r\n * ===============================================================\r\n * NOTE: Important coding guidilines:\r\n * 1. In components, all the component specific methods appear before this notification/guidilines.\r\n * 1.1 The variables should be in lexicographic order.\r\n * 1.2 The methods should be in also lexicographic order.\r\n * 1.3 ngOnDestroy() shold be the last method of component-specific-methods.\r\n * 1.4 Emitters should be placed in ngOnItnit() in lexicographic order.\r\n * 2. All observables should be placed right after the ngOnDestroy(), in lexicographic order.\r\n * 3. All other behavioral/otherwise custom methods appear below all observables in lexicographic order.\r\n * 4. Any specific 'functionality/behaviour' which requires multiple functions, can be groupd together with clearly\r\n * delineated 'Begin and End' marker. Notice that this breaks the guideline#3.\r\n * Therefore, the guideline#4 can be considered as an exception to the guideline#3\r\n * inorder to make/facilitate the understanding of the 'functionality/behaviour'.\r\n * ===============================================================\r\n */\r\n\r\n // ===============================================================\r\n // *********Begin of custom functions/other methods:********\r\n // ===============================================================\r\n\r\n \r\n // ---------------------------------------------------------------\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: BEGIN of LogingSuccess-Salt/Unsalt-Process:\r\n * ---------------------------------------------------------------\r\n */\r\n checkLocalStogareForLoginSuccess () : void\r\n {\r\n this.mcLoader = new ModuleComponentLoader( );\r\n // debugger;\r\n if ( this.localStorageService as LocalStorageService && !this.isLocalStorageProcessed) {\r\n // debugger;\r\n const localSaltyPairClient = this.localStorageService.getLocalSaltyPair();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(localSaltyPairClient) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(localSaltyPairClient.in)) {\r\n // debugger;\r\n this.naclClient = new NaclPairClient();\r\n this.naclClient.secretKey = localSaltyPairClient.in;\r\n this.naclClient.publicKey = localSaltyPairClient.out;\r\n this.naclClient.id = localSaltyPairClient.id;\r\n // debugger;\r\n EmitterSubjectService.setSaltyPair(this.naclClient);\r\n\r\n\r\n const salt = new Salt();\r\n\r\n salt.publicKey = this.naclClient.publicKey;\r\n salt.secretKey = this.naclClient.secretKey;\r\n EmitterSubjectService.setSalty(salt);\r\n }\r\n // debugger;\r\n const localSaltedLS = (this.localStorageService as LocalStorageService).getLoginSuccess(); // TODO: Restore getLoginSuccess()\r\n /*\r\n * debugger;\r\n * -----------------------------------------------------------------------------------------\r\n * Note: During Logout(), client-side salting is done on LogingSuccess model using (JavaScript) and stored in localStorage.\r\n * To unslat a client-side salted model, it may not work.\r\n * TODO: Test and try to unsalt client-side-salted-model LogingSuccess (JS salted => JS unsalted).\r\n *\r\n * Note: After Login(), the salted LoginSuccess data (boxnonce) that is salted by the server(C#), is saved in the localStorage.\r\n * and we unsalt it here using JS.\r\n * Hence, without logout(), it is C# - salted => JS - unsalted process and\r\n * With logout(), it is JS-salted => JS-unsalted process.\r\n * -----------------------------------------------------------------------------------------\r\n */\r\n const localBoxNonce = new BoxNonceEntity();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(localSaltedLS)) {\r\n localBoxNonce.box = localSaltedLS.box;\r\n localBoxNonce.nonce = localSaltedLS.nonce;\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( localBoxNonce )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( localBoxNonce.box )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( localBoxNonce.nonce ) )\r\n {\r\n const unslatedLS = SlakezSaltServiceStatic.boxUnsalt(localBoxNonce);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unslatedLS)) {\r\n this.loginSuccess = JSON.parse(unslatedLS) as LoginSuccess;\r\n // debugger;\r\n }\r\n }\r\n }\r\n\r\n if ( ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n || this.loginSuccess.signedInUserId === 0 )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( localSaltedLS ) )\r\n {\r\n this.loginSuccess = this.unsaltFromCsSaltedToJsUnsalted(localSaltedLS);\r\n // debugger;\r\n }\r\n this.mcLoader = new ModuleComponentLoader();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === 0) {\r\n // alert ('localStorage.loginSuccess failed!')\r\n this.mcLoader.moduleName = 'loginm';\r\n this.mcLoader.componentName = 'login';\r\n } else {\r\n // alert( 'localStorage.loginSuccess successful!' )\r\n // EmitterSubjectService.setupLockPhotos(); // TODO: place it outside of this method\r\n // debugger;\r\n\r\n this.loginSuccess.controller = 'memberscrollm';\r\n this.loginSuccess.action = 'memberscroll'; // TODO: check if '/' is required eg: '/members'\r\n\r\n this.mcLoader.moduleName = 'memberscrollm';\r\n this.mcLoader.componentName = 'memberscroll';\r\n\r\n this.isLocalStorageProcessed = true;\r\n this.loginSuccess = this.executeLoginSuccessTasks();\r\n EmitterSubjectService.emitLocalStorageLoginSuccess(this.loginSuccess);\r\n // debugger;\r\n\r\n this.mcLoader.router = this.router;\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n } \r\n } \r\n }\r\n // ---------------------------------------------------------------\r\n //public createAllSitUserProfileDictionariesFromDbDexieDb () : void {\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('sitUserId') && this.dbDexieToDictionaryService.doesStoreHaveData('sitUserId')) {\r\n // this.dbDexieToDictionaryService.createSitUserIdDictionaryFromDbDexie();\r\n // }\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('sitUser') && this.dbDexieToDictionaryService.doesStoreHaveData('sitUser')) {\r\n // this.dbDexieToDictionaryService.createSitUserDictionaryFromDbDexie();\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n //public createAllProfileDictionariesFromDbDexieDb () : void {\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('kvPhoto') && this.dbDexieToDictionaryService.doesStoreHaveData('kvPhoto')) {\r\n // this.dbDexieToDictionaryService.createKvPhotoDictionaryFromDbDexie();\r\n // }\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('preference') && this.dbDexieToDictionaryService.doesStoreHaveData('preference')) {\r\n // this.dbDexieToDictionaryService.createPreferenceDictionaryFromDbDexie();\r\n // }\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('profileInfo') && this.dbDexieToDictionaryService.doesStoreHaveData('profileInfo')) {\r\n // this.dbDexieToDictionaryService.createProfileInfoDictionaryFromDbDexie();\r\n // }\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('profileTile') && this.dbDexieToDictionaryService.doesStoreHaveData('profileTile')) {\r\n // this.dbDexieToDictionaryService.createProfileTileDictionaryFromDbDexie();\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n //public createAllCommunicationDictionariesFromDbDexieDb () : void {\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('chat') && this.dbDexieToDictionaryService.doesStoreHaveData('chat')) {\r\n // this.dbDexieToDictionaryService.createAllChatDictionariesFromDbDexie();\r\n // }\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('emailTile') && this.dbDexieToDictionaryService.doesStoreHaveData('emailTile')) {\r\n // this.dbDexieToDictionaryService.createAllEmailDictionariesFromDbDexie();\r\n // }\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('enoteTile') && this.dbDexieToDictionaryService.doesStoreHaveData('enoteTile')) {\r\n // this.dbDexieToDictionaryService.createAllEnoteDictionariesFromDbDexie();\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n //public createAllDictionariesFromDbDexieDb () : void {\r\n // this.createAllSitUserProfileDictionariesFromDbDexieDb();\r\n // this.createAllProfileDictionariesFromDbDexieDb();\r\n // this.createAllCommunicationDictionariesFromDbDexieDb();\r\n // if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('memberActivity') && this.dbDexieToDictionaryService.doesStoreHaveData('memberActivity')) {\r\n // this.dbDexieToDictionaryService.createAllMemberActivityDictionariesFromDbDexie();\r\n\r\n // // this.dbDexieToDictionaryService.createPhotoDictionaryFromDbDexie();\r\n // // this.dbDexieToDictionaryService.createPhotoBnDictionaryFromDbDexie(); \r\n // // this.dbDexieToDictionaryService.createProfilePicsDictionaryFromDbDexie(); \r\n // }\r\n //}\r\n \r\n // ---------------------------------------------------------------\r\n unsaltFromCsSaltedToJsUnsalted(input: any): any {\r\n const localBoxNonce = new BoxNonceEntity();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(input) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(input.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(input.nonce)) {\r\n localBoxNonce.box = input.box;\r\n localBoxNonce.nonce = input.nonce;\r\n // debugger;\r\n const unslatedLS = SlakezSaltServiceStatic.boxUnsalt(localBoxNonce);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unslatedLS)) {\r\n this.loginSuccess = JSON.parse(unslatedLS) as LoginSuccess;\r\n // debugger;\r\n return this.loginSuccess;\r\n }\r\n }\r\n return null as any;\r\n }\r\n // ---------------------------------------------------------------\r\n unsaltFromJsSaltedToJsUnsalted(input: any) { }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: END of LogingSuccess-Salt/Unsalt-Process:\r\n * ---------------------------------------------------------------\r\n */\r\n \r\n // ----------------------------------------------------------------\r\n centerThisComponent ( id : string ) : void\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( id ) )\r\n {\r\n let componentElem = document.getElementById( id );\r\n this.componentViewportDimension = this.rendererService.getComponentViewport( id );\r\n let margin = 'calc( [ ( 100 - ' + this.componentViewportDimension.vw + ') /2]vh auto';\r\n this.renderer.setStyle( componentElem, 'width', this.componentViewportDimension.vw );\r\n this.renderer.setStyle( componentElem, 'height', this.componentViewportDimension.vh );\r\n this.renderer.setStyle(componentElem, 'margin', margin);\r\n componentElem.remove();\r\n }\r\n /*\r\n * @HostBinding( 'style.width' ) componentWidth: this.componentViewportDimension.vw;\r\n .centeredElem\r\n {\r\n width: --var(--anyHtmlElemWidth);\r\n height: --var( --anyHtmlElemHeight );\r\n margin: calc( [ ( 100 - --var( --anyHtmlElemWidth )) /2]vh auto;\r\n }\r\n */\r\n }\r\n // ----------------------------------------------------------------------------------\r\n closeModule (name : string) : any {\r\n debugger;\r\n this.router.navigate([ { outlets: { name: null } } ]);\r\n }\r\n // ---------------------------------------------------------------\r\n currentFocus (to: any) : any {\r\n EmitterSubjectService.emitCurrentFocus(to);\r\n return to;\r\n }\r\n // ---------------------------------------------------------------\r\n public detectDevice () : void {\r\n this.deviceInfo = this.deviceService.getDeviceInfo();\r\n }\r\n // ----------------------------------------------------------------------------------\r\n executeAfterLoginSuccessTasks () : void {\r\n let result = EmitterSubjectService.getLoginSuccess();\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n if (this.isInitHeartbeat) {\r\n // debugger;\r\n this.startSinginInUserHeartbeat(); // Important!\r\n this.isInitHeartbeat = false;\r\n } \r\n }\r\n }\r\n // ------------------------------------------------------------\r\n // Note: This method shold be in a Service since it gets the\r\n // heartbeat of any sitUser\r\n // ------------------------------------------------------------\r\n //executeHeartBeatTasks (sitId : number) : Promise {\r\n // // start the user's heartbeat: TODO: This was problematic. Fix is needed.\r\n // // -----------------------------\r\n // if (sitId > 0) {\r\n // // debugger;\r\n // // Send a heartbeat:\r\n // // ------------------\r\n // // Note: startSeningHeartbeat will save the returned heartbeat in loginSuccess and set the Emitter's loginSuccess\r\n // return this.heartbeatService.startSendingHeartbeat(sitId, 'AppComponent.heartbeat');\r\n // }\r\n // else return this.nullPromise();\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n executeAvatarTasks (data ?: ProfileTile) : any{\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n EmitterSubjectService.setAvatarProfileTile(this.profileTile);\r\n this.ngAfterViewInit();\r\n return true;\r\n\t\t}\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n this.profileTile = CopyServiceStatic.copyLoginSuccessToProfileTile(this.loginSuccess);\r\n // debugger;\r\n EmitterSubjectService.setAvatarProfileTile(this.profileTile);\r\n\r\n this.ngAfterViewInit();\r\n return true;\r\n }\r\n else return false;\r\n\t}\r\n // ---------------------------------------------------------------------------------\r\n public executeLoginSuccessTasks () : any {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.loginSuccess.signedInUserId > 0 && !this.isLoggedOutByUser) {\r\n this.isAuthorized = this.loginSuccess.isAuthorized;\r\n this.isEmployee = this.loginSuccess.isEmployee;\r\n this.isMgmt = this.loginSuccess.isMgmt;\r\n this.isPremium = this.loginSuccess.isPremium;\r\n this.isReviewer = this.loginSuccess.isReviewer;\r\n this.isSuperUser = this.loginSuccess.isSuperUser;\r\n this.isValued = this.loginSuccess.isValued;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryImage)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryPhotoBnJson)) {\r\n var pbn = this.photoBnService.unsaltPrimaryPicPhotoBnJson(JSON.parse(this.loginSuccess.primaryPhotoBnJson) as PhotoBn);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn)) {\r\n this.loginSuccess.primaryImage = this.photoBnService.getPrimaryPicFromPhotoBn(pbn);\r\n // debugger;\r\n\t\t\t\t}\r\n \r\n\t\t\t}\r\n this.isOnLine = navigator.onLine;\r\n this.isLoggedIn = this.loginSuccess.signedInUserId > 0 ? true : false;\r\n this.isSuccess = this.loginSuccess.isSuccess;\r\n // debugger;\r\n\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n\r\n // initliaitze signalR.hub:\r\n // ------------------------\r\n //this.signalRService.initialize().then(data => {\r\n // this.hubConnection = data;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.hubConnection)) {\r\n // EmitterSubjectService.setHubConnection(this.hubConnection);\r\n // }\r\n //})\r\n\r\n this.executeAvatarTasks(null);\r\n // debugger;\r\n // this.executeMyDictionaryTasks();\r\n // this.ngAfterViewInit();\r\n // debugger;\r\n\r\n // (this.bias as BackgroundImageAnimationService).startDefaultAnimation();\r\n // this.ngAfterViewInit();\r\n // this.heartbeatService.resetHeartbeat();\r\n // debugger;\r\n // debugger;\r\n\r\n /*\r\n * if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n * hb = this.dictionaryService.heartbeatDictionary.getValue( this.loginSuccess.signedInUserId );\r\n * }\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n * this.loginSuccess.heartbeat = hb;\r\n * }\r\n * debugger;\r\n */\r\n }\r\n\r\n // Note: populate all the indexedDb data into all dictionaries:\r\n // TODO: move this to a service worker that works as background process\r\n // ------------------------------------------------------------ \r\n // this.createAllDictionariesFromDbDexieDb();\r\n\r\n // this.ngAfterViewInit();\r\n return this.loginSuccess;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // This method gets the all of my memberActivities:\r\n // To get the activities with respect to specific user, \r\n // MemberTile call the prefetchMyMemberActivities() in ActivityService\r\n // ----------------------------------------------------------------------------------\r\n executeMyDictionaryTasks () : any {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n let myActivities : any;\r\n let myLockingActivities : any;\r\n let myTrkWnkStrActivities : any;\r\n\r\n // NOTE: though this methods gets the memberActivities, it does not have to return any obtained data to any other component/service.\r\n // all the data upon arrival are sequestered into its respective dictionary and indexedDB\r\n // ---------------------------------------------------------------------------------------------------------------------------------\r\n // debugger;\r\n (this.activityService as ActivityService).getMyActivities(this.loginSuccess.signedInUserId, '').subscribe(data => {\r\n myActivities = data;\r\n });\r\n (this.activityService as ActivityService).getMyActivities(this.loginSuccess.signedInUserId, 'unlock').subscribe(data => {\r\n myLockingActivities = data;\r\n\r\n });\r\n (this.activityService as ActivityService).getMyActivities(this.loginSuccess.signedInUserId, 'wink').subscribe(data => {\r\n myTrkWnkStrActivities = data;\r\n\r\n });\r\n // debugger;\r\n return true;\r\n }\r\n // TODO: check the necessity of this!!\r\n // ( this.createUserAlbumService as CreateUserAlbumService).setMemberViewGlyphMenu();\r\n else return false;\r\n }\r\n // --------------------------------------------------------------\r\n public gestureHub(): string {\r\n return 'url(\\'glyphicon-glyphicon-hand-up\\')';\r\n }\r\n // --------------------------------------------------------------\r\n public getUrl(): string {\r\n return 'url(\\'assets/photos/glyph-members-transparent.png\\')';\r\n }\r\n // --------------------------------------------------------------------------\r\n // ---------------------------------------------------------------------------------\r\n public isMobile () : void\r\n {\r\n this.deviceInfo = this.detectDevice();\r\n this.isMobilevar = this.deviceInfo.isMobile();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public isTablet () : void\r\n {\r\n this.deviceInfo = this.detectDevice();\r\n this.isTabletvar = this.deviceInfo.isTablet();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public isDesktop () : void\r\n {\r\n this.deviceInfo = this.detectDevice();\r\n this.isDesktopvar = this.deviceInfo.isDesktop();\r\n }\r\n // -----------------------------------------------------------\r\n nullPromise () : any {\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n }, 500);\r\n\r\n clearTimeout(this.timer);\r\n if (this.timer && !this.timerMap.has(this.timer)) {\r\n this.timerMap.set(this.timer, this.timer);\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public pauseMsgTimer(): any {\r\n clearInterval(this.intervalMsg);\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public photoMgmt(value: boolean): any {\r\n return (this.isPhotoMgmt = value);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public prepareRoute(outlet: RouterOutlet): any {\r\n const anim = 'animation';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outlet)) {\r\n return outlet && outlet.activatedRouteData && outlet.activatedRouteData[anim];\r\n }\r\n }\r\n\r\n // ----------------------------------------------------------------\r\n registerSpinnerModal () {\r\n // this.modalService.registerModal( this.spinnerModalComponent );\r\n }\r\n // ---------------------------------------------------------------\r\n removeChildren () : any {\r\n let i = 0;\r\n\r\n for (const item of this.activatedRoute.children) {\r\n this.activatedRoute.children.splice(i, 1);\r\n i++;\r\n }\r\n return this.activatedRoute;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public reRender(): any {\r\n /*\r\n * Re-rendering the view on changeDetection:\r\n * ref:https:// stackoverflow.com/questions/50383003/how-to-re-render-a-component-manually-angular-5\r\n */\r\n this.timer = setTimeout(() => {\r\n this.numberOfTicks++;\r\n // the following is required, otherwise the view will not be updated\r\n this.cdr.markForCheck();\r\n\r\n // this.setBreadcrumForPageSwitch();\r\n console.log('re-rendering-timer-Ticks: ' + this.numberOfTicks);\r\n }, 1000);\r\n\r\n clearTimeout(this.timer);\r\n\r\n this.timerMap.set(this.timer, this.timer);\r\n return true;\r\n } \r\n // ----------------------------------------------------- \r\n // Login-Register-Nav-Header-Buttons-Management-System:\r\n // -----------------------------------------------------\r\n resetLogRegBttns () {\r\n // debugger;\r\n // EmitterSubjectService.emitMessage('Render-Register-Login-Buttons');\r\n EmitterSubjectService.emitSetSignedInUserBackgroundImage(true);\r\n }\r\n // ---------------------------------------------------------------------------\r\n setBreadCrumRingLength (pagerBrdCrm : PagerBreadcrum) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerBrdCrm)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerBrdCrm.breadcrumRing)\r\n && this.pagerBrdCrm?.breadcrumRing?.length > 0) {\r\n this.breadCrmRngLength = pagerBrdCrm?.breadcrumRing?.length;\r\n }\r\n else this.breadCrmRngLength = 0;\r\n\r\n return this.breadCrmRngLength;\r\n }\r\n // ------------------------Completed on 2021/04/---------------------------------------\r\n setBreadcrumPage (direction : string) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(direction)) {\r\n this.pagerBrdCrm = BreadcrumServiceStatic.setBreadcrumPage(direction, this.router);\r\n this.breadCrmRngLength = this.setBreadCrumRingLength(this.pagerBrdCrm);\r\n }\r\n return true;\r\n }\r\n // --------------------------------------------------------------\r\n public setRoute (route : string, id : number) : void {\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\r\n }\r\n // ---------------------------------------------------------------------------------\r\n startSinginInUserHeartbeat () : void {\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n\r\n this.heartbeatService.startSendingHeartbeat(this.loginSuccess.signedInUserId, 'AppComponent').subscribe(hb => {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n if (hb.sitUserId === this.loginSuccess.signedInUserId) {\r\n // this.hb.isOnline = navigator.onLine;\r\n // hb.prevHeartbeat = hb.heartbeatTime;\r\n EmitterSubjectService.emitComputeDistance(hb);\r\n this.loginSuccess.heartbeat = hb;\r\n }\r\n // debugger;\r\n }\r\n // TODO: see if emitting this will help update relevant values or will it create a cycle?\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n });\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n updateApp(): any {\r\n document.location.reload();\r\n console.log('The app is updating right now');\r\n return true;\r\n }\r\n // -----------------------------------------------------------------------------------\r\n // --------------------------------------------------------------\r\n // Begin of hammer/gesture recognition methods:\r\n // --------------------------------------------------------------\r\n // gestureRecognizer (event : Event) : any {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.routedElementId)) {\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // }\r\n // }\r\n // onSwipe (event : Event) : void {\r\n // this.gestureRecognizer(event);\r\n // }\r\n // onSwipeLeft (event : Event) : void { \r\n // this.gestureRecognizer(event);\r\n // }\r\n // onSwipeRight (event : Event) : void {\r\n // this.gestureRecognizer(event);\r\n // }\r\n // onSwipeUp (event : Event) : void {\r\n // this.gestureRecognizer(event);\r\n // }\r\n // onSwipeDown (event : Event) : void {\r\n // this.gestureRecognizer(event);\r\n // }\r\n onSwipeDown (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event); page-content-wrapper\r\n HammerServiceStatic.hammeredElement('appRootId', event, this.router);\r\n }\r\n // --------------------------------------------------------------\r\n //onPan (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPanStart (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPanEnd (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPanMove (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPanCancel (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPanLeft (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPanRight (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPanUp (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPanDown (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onTap (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.routedElementId)) {\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // }\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n //onPress (event : Event) : void {\r\n // this.routedElementId = this.getRoutedElementId(this.document);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.routedElementId)) {\r\n // HammerServiceStatic.hammeredElement(this.routedElementId, event);\r\n // }\r\n // // HammerServiceStatic.hammeredElement('bodyId');\r\n //}\r\n // --------------------------------------------------------------\r\n // End of hammer/gesture recognition methods:\r\n // --------------------------------------------------------------\r\n\r\n // ===================================================================================\r\n // *********End of custom functions/other methods:********\r\n // ===================================================================================\r\n}\r\n// ===============================END OF CLASS==========================================\r\n\r\n\r\n\r\n\r\n// =======================================================================================\r\n\r\n"," 0 || isMessageBoardVisible\" [messageModel]=\"messageModel\">\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n","\r\n// import { OVERLAY_PROVIDERS } from '@angular/cdk/overlay';\r\nimport { APP_BASE_HREF, CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule, HAMMER_GESTURE_CONFIG, HammerGestureConfig, HammerModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { RouterModule, RouterOutlet } from '@angular/router';\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\n// import { ServiceWorkerModule } from '@angular/service-worker';\r\n// import { Idle } from '@ng-idle/core';\r\n// import { Keepalive } from '@ng-idle/keepalive';\r\nimport { AngularMyDatePickerModule } from 'angular-mydatepicker';\r\nimport { environment } from '../environments/environment';\r\nimport { AppServiceService } from '../services/appServiceService/appServiceService.service';\r\nimport { SWUpdateService } from '../services/appServiceService/swUpdateService.service';\r\nimport { CommonServiceService } from '../services/commonServiceService/commonServiceService.service';\r\nimport { CoreServiceService } from '../services/coreServiceService/coreServiceService.service';\r\nimport { DbServiceService } from '../services/dbServiceService/dbServiceService.service';\r\nimport { ActivityService } from '../services/memberServiceService/activityService.service';\r\nimport { MemberServiceService } from '../services/memberServiceService/memberServiceService.service';\r\nimport { PagerServiceService } from '../services/pagerServiceService/pagerServiceService.service';\r\nimport { ProfileServiceService } from '../services/profileServiceService/profileServiceService.service';\r\nimport { ProfileTileServiceService } from '../services/profileTileServiceService/profileTileServiceService.service';\r\nimport { RendererServiceService } from '../services/rendererServiceService/rendererServiceService.service';\r\nimport { SearchSortServiceService } from \"../services/searchSortServiceService/searchSortServiceService.service\";\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { AppComponentsModule } from './appComponentsModule/appComponents.module';\r\nimport { AppFeatureModule } from './appFeatureModule/appFeature.module';\r\nimport { DirectiveFilterPipeModule } from './directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { ImageUploadModule } from \"./imageUploadModule/imageUpload.module\";\r\nimport { ModalModule } from './modalModule/modal.module';\r\nimport { PagerModule } from './pagerModule/pager.module';\r\nimport { SharedModule } from \"./sharedModule/shared.module\";\r\nimport { DateValueAccessor, DateValueAccessorModule } from 'angular-date-value-accessor';\r\n\r\n// import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n// import { AngularIndexedDB } from \"../assets/js/angular2-indexeddb/angular2-indexeddb\";\r\n// import { ROUTER_PROVIDERS, ROUTER_DIRECTIVES } from 'angular2/router'\r\n\r\n@NgModule({\r\n \r\n imports: [ \r\n // Angular-modules:\r\n BrowserModule, // only for AppModule\r\n BrowserAnimationsModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n RouterOutlet,\r\n // ServiceWorkerModule.register('ngsw-worker.js', { enabled: true }),\r\n\r\n // 3rd-party-modules\r\n // AngularMyDatePickerModule,\r\n\r\n // https://stackblitz.com/edit/angular-date-input?file=src%2Fapp%2Fapp.module.ts\r\n DateValueAccessor, \r\n\r\n HammerModule,\r\n // MatProgressSpinnerModule,\r\n // NgxIndexedDBModule.forRoot(dbConfig),\r\n\r\n // Custom-lazy-modules:\r\n AppComponentsModule,\r\n AppFeatureModule,\r\n DirectiveFilterPipeModule,\r\n ImageUploadModule,\r\n ModalModule,\r\n PagerModule,\r\n SharedModule,\r\n // ServiceWorkerModule.register('ngsw-worker.js', {\r\n // enabled: environment.production,\r\n // // Register the ServiceWorker as soon as the application is stable\r\n // // or after 30 seconds (whichever comes first).\r\n // registrationStrategy: 'registerWhenStable:30000'\r\n // }),\r\n ServiceWorkerModule.register('/assets/js/slakezSW.js', {\r\n enabled: environment.production,\r\n // Register the ServiceWorker as soon as the application is stable\r\n // or after 30 seconds (whichever comes first).\r\n registrationStrategy: 'registerWhenStable:30000'\r\n }),\r\n\r\n AppRoutingModule,\r\n\r\n // ServiceWorkerModule.register('ngsw-worker.js', {\r\n // enabled: !isDevMode(),\r\n // // Register the ServiceWorker as soon as the application is stable\r\n // // or after 30 seconds (whichever comes first).\r\n // registrationStrategy: 'registerWhenStable:30000'\r\n // }),\r\n ],\r\n declarations: [\r\n AppComponent,\r\n ],\r\n exports: [\r\n\r\n AppComponentsModule,\r\n AppFeatureModule,\r\n DirectiveFilterPipeModule,\r\n ModalModule,\r\n PagerModule,\r\n SharedModule,\r\n AppRoutingModule,\r\n\r\n ],\r\n // entryComponents: [AppComponent, SpinnerOverlayComponent],\r\n entryComponents: [ AppComponent ],\r\n bootstrap: [ AppComponent ],\r\n\r\n\r\n providers: [ \r\n { provide: APP_BASE_HREF, useValue: '/' },\r\n { provide: ActivityService },\r\n { provide: AppServiceService},\r\n { provide: CommonServiceService},\r\n { provide: CoreServiceService},\r\n { provide: DbServiceService },\r\n { provide: MemberServiceService },\r\n // { provide: PhotoServiceService },\r\n // { provide: PhotoBnServiceService },\r\n { provide: PagerServiceService },\r\n { provide: ProfileServiceService },\r\n { provide: ProfileTileServiceService },\r\n { provide: RendererServiceService },\r\n { provide: SearchSortServiceService },\r\n { provide: SWUpdateService },\r\n { provide: Document, useValue: document },\r\n // { provide: DbDexieService },\r\n // { provide: DbDexieToDictionaryService },\r\n // { provide: DisplayServiceService },\r\n // { provide: DisplayProfileService },\r\n // { provide: IDLE_TOKEN, useValue: Idle, multi: true }, // custom-injector\r\n // { provide: KEEPALIVE_TOKEN, useValue: Keepalive, multi: true }, // custom-injector\r\n // { provide: NgModuleFactoryLoader, useClass: SystemJsNgModuleLoader },\r\n // { provide: PreferenceService },\r\n // { provide: ProfileContentService },\r\n // { provide: ProfileTileService },\r\n // { provide: ProfileNameService },\r\n // { provide: ProfilePicsService },\r\n // { provide: KvPhotoService },\r\n // { provide: PhotoBnServiceService },\r\n // { provide: PhotoAndPrimaryPhotoMgmtService },\r\n // { provide: PhotoBnService },\r\n // { provide: PhotoPrivacyService },\r\n // { provide: RendererService },\r\n\r\n //{\r\n // provide: APP_INITIALIZER,\r\n // useFactory: (SignalRService : SignalRService) => () => SignalRService.initialize(), // initiateSignalrConnection(),\r\n // deps: [ SignalRService ],\r\n // multi: true,\r\n //},\r\n // { provide: SignalRService },\r\n { provide: Window, useValue: window },\r\n { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: [] },\r\n // { provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true }\r\n ],\r\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ],\r\n})\r\nexport class AppModule {\r\n public prepareRoute (outlet : RouterOutlet) : any {\r\n const anim = 'animation';\r\n debugger;\r\n return outlet && outlet.activatedRouteData && outlet.activatedRouteData[anim];\r\n }\r\n}\r\n// https://stackoverflow.com/questions/52513466/angular-6-service-workers-are-disabled-or-not-supported-error\r\n// NOTE: This shouls be in main.ts:\r\n// --------------------------------\r\n// TODO: if the app does not work, remove the below section/comment it out and change polyfills.js\r\n// ref: https://indepth.dev/posts/1059/do-you-still-think-that-ngzone-zone-js-is-required-for-change-detection-in-angular\r\n //platformBrowserDynamic()\r\n // .bootstrapModule(AppModule, {\r\n // ngZone: 'noop',\r\n // }).catch(err => console.log(err));\r\n\r\n/*\r\n * ======================================================================\r\n * ---------------------------------------------------------------------------------\r\n * ngDoBootstrap(app) {\r\n * fetch('http://localhost:44305/src/app/appComponents/landingPage')\r\n * .then((name) => { this.bootstrapRootComponent(app, name) });\r\n * // this.bootstrapRootComponent(app);\r\n * }\r\n * =====================================================================\r\n * public appComponentsFactory: any;\r\n * constructor(private loader: NgModuleFactoryLoader,\r\n * private compiler: Compiler,\r\n * private injector: Injector,\r\n * private emitterService: EmitterService\r\n * ) {\r\n * this.emitterService.setAppModuleFactory(this.appComponentsFactory = this.loadModuleFactory(AppModule));\r\n * }\r\n * public async loadModuleFactory(t: any) {\r\n * if (t instanceof NgModuleFactory) {\r\n * return t;\r\n * } else {\r\n * return await this.compiler.compileModuleAsync(t);\r\n * }\r\n * }\r\n * }\r\n */\r\n\r\n/*\r\n * ======================================================================\r\n * DO NOT DELETE-Begin\r\n * Note: When saving NaclPairLocal model, publicKey-- > maps to-- > out, and secretKey-- > maps to-- > in.\r\n * e.g. localSalty.out = salty.publicKey;\r\n * DO NOT DELETE-End\r\n */\r\n","'use-strict'\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\nimport { GlyphiconMembersComponent } from './glyphiconMembers/glyphiconMembers.component';\r\nimport { LandingPageComponent } from './landingPage/landingPage.component';\r\nimport { LeftRightLogoMenuComponent } from './leftRightLogoMenu/leftRightLogoMenu.component';\r\nimport { LogoComponent } from './logo/logo.component';\r\nimport { LogoMenuComponent } from './logoMenu/logoMenu.component';\r\nimport { LogRegButtonsAndNavArrowsComponent } from './logRegButtonsAndNavArrows/logRegButtonsAndNavArrows.component';\r\nimport { MessageBoardComponent } from './messageBoard/messageBoard.component';\r\nimport { MyStuffComponent } from './myStuff/myStuff.component';\r\nimport { NavHeaderComponent } from './navHeader/navHeader.component';\r\nimport { NavSidebarComponent } from './navSidebar/navSidebar.component';\r\n\r\n\r\nexport const appComponentsRoutes: Routes = [\r\n {\r\n path: '',\r\n children: [\r\n { path: 'avatar', component: AvatarComponent }, \r\n { path: 'glyphiconMembers', component: GlyphiconMembersComponent },\r\n { path: 'index', component: LandingPageComponent },\r\n { path: 'leftRightLogoMenu', component: LeftRightLogoMenuComponent },\r\n { path: 'logo', component: LogoComponent },\r\n { path: 'logoMenu', component: LogoMenuComponent },\r\n { path: 'logRegButtonsAndNavArrows', component: LogRegButtonsAndNavArrowsComponent },\r\n { path: 'messageBoard', component: MessageBoardComponent },\r\n { path: 'myStuff', component: MyStuffComponent },\r\n { path: 'navHeader', component: NavHeaderComponent },\r\n { path: 'navSidebar', component: NavSidebarComponent },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule( {\r\n imports: [ RouterModule.forChild( appComponentsRoutes ) ],\r\n exports: [ RouterModule ],\r\n} )\r\n\r\nexport class AppComponentsRoutingModule { }\r\n\r\n\r\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DirectiveFilterPipeModule } from '../directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { KeyValueModule } from '../keyValueModule/keyValue.module';\r\nimport { PagerModule } from '../pagerModule/pager.module';\r\nimport { ProfileModule } from '../profileModule/profile.module';\r\nimport { AppComponentsRoutingModule } from './appComponents-routing.module';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\nimport { GlyphiconMembersComponent } from './glyphiconMembers/glyphiconMembers.component';\r\nimport { HomePageComponent } from './homePage/homePage.component';\r\nimport { LandingPageComponent } from './landingPage/landingPage.component';\r\nimport { LeftRightLogoMenuComponent } from './leftRightLogoMenu/leftRightLogoMenu.component';\r\nimport { LogoComponent } from './logo/logo.component';\r\nimport { LogoMenuComponent } from './logoMenu/logoMenu.component';\r\nimport { LogRegButtonsAndNavArrowsComponent } from './logRegButtonsAndNavArrows/logRegButtonsAndNavArrows.component';\r\nimport { MessageBoardComponent } from './messageBoard/messageBoard.component';\r\nimport { MyStuffComponent } from './myStuff/myStuff.component';\r\nimport { NavHeaderComponent } from './navHeader/navHeader.component';\r\nimport { NavSidebarComponent } from './navSidebar/navSidebar.component';\r\n\r\n@NgModule( {\r\n \r\n imports: [\r\n CommonModule, // to get ngIf, ngFor, etc.\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n DirectiveFilterPipeModule,\r\n KeyValueModule,\r\n PagerModule,\r\n ProfileModule,\r\n AppComponentsRoutingModule\r\n ],\r\n declarations: [\r\n AvatarComponent,\r\n GlyphiconMembersComponent,\r\n HomePageComponent,\r\n LandingPageComponent,\r\n LeftRightLogoMenuComponent,\r\n LogoMenuComponent,\r\n LogoComponent,\r\n LogRegButtonsAndNavArrowsComponent,\r\n MessageBoardComponent,\r\n MyStuffComponent,\r\n NavHeaderComponent,\r\n NavSidebarComponent,\r\n ],\r\n exports: [\r\n CommonModule, // to get ngIf, ngFor, etc.\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n\r\n AvatarComponent,\r\n GlyphiconMembersComponent,\r\n HomePageComponent,\r\n LandingPageComponent,\r\n LeftRightLogoMenuComponent,\r\n LogoMenuComponent,\r\n LogoComponent,\r\n LogRegButtonsAndNavArrowsComponent,\r\n MessageBoardComponent,\r\n MyStuffComponent,\r\n NavHeaderComponent,\r\n NavSidebarComponent,\r\n\r\n AppComponentsRoutingModule,\r\n ],\r\n \r\n providers: [\r\n ],\r\n})\r\nexport class AppComponentsModule { }\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { GlyphiconMenuService } from '../../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { SignedInUserService } from '../../../services/commonServiceService/signedInUserService.service';\r\nimport { PhotoAndPrimaryPhotoMgmtService } from '../../../services/photoServiceService/photoAndPrimaryPhotoMgmtService.service';\r\nimport { PhotoServiceService } from '../../../services/photoServiceService/photoServiceService.service';\r\nimport { ProfileTileService } from '../../../services/profileTileServiceService/profileTileService.service';\r\nimport { ProfileTileServiceService } from '../../../services/profileTileServiceService/profileTileServiceService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { CopyServiceStatic } from '../../../services/staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../../../services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n// import { ProfileTileService } from '../../../services/profileTileServiceService/profileTileService.service';\r\n// import { ProfileTileServiceService } from '../../../services/profileTileServiceService/profileTileServiceService.service';\r\nimport { GlyphiconServiceService } from '../../../services/GlyphiconService/glyphiconServiceService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { LogRegService } from '../../../services/coreServiceService/logRegService.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\n\r\n@Component({\r\n selector: 'app-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: [ './avatar.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AvatarComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public bias! : BackgroundImageAnimationService;\r\n public glyphiconMenuService! : GlyphiconMenuService;\r\n public logRegService : LogRegService;\r\n public profileTileService! : ProfileTileService;\r\n public photoAndPrimaryPhotoMgmtService! : PhotoAndPrimaryPhotoMgmtService;\r\n public redirectionService! : RedirectionService;\r\n public rendererService! : RendererService;\r\n public renderer! : Renderer2;\r\n public signedInUserService! : SignedInUserService;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isCameraVisible = true;\r\n public isEyeOpen = false;\r\n public isMobilevar = false;\r\n public isPhotoMgmt = false;\r\n public isMyProfile = true;\r\n public isSuccess = true;\r\n public kvMemActGlyphArrForPhotoMgmt: KvMemberActivityGlyph[] = [];\r\n @Input() loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public profileName = '';\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public signedInUserId = 0;\r\n public signedInUser : SitUser = new SitUser();\r\n public sitUser : SitUser = new SitUser();\r\n constructor (\r\n private avatarElementRef : ElementRef,\r\n private cdr : ChangeDetectorRef,\r\n private commonServiceServie : CommonServiceService,\r\n private coreServiceServie : CoreServiceService,\r\n private glyphiconServiceService : GlyphiconServiceService,\r\n private photoServiceService : PhotoServiceService,\r\n public profileTileServiceService : ProfileTileServiceService,\r\n private rendererServiceService : RendererServiceService,\r\n private router : Router, )\r\n {\r\n // -----------------------------------------------------------------\r\n if (this.rendererServiceService) {\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n \r\n this.rendererService = this.rendererServiceService.getRendererService() as RendererService;\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n\r\n if (this.glyphiconServiceService) {\r\n this.glyphiconMenuService = this.glyphiconServiceService.getGlyphiconMenuService();\r\n }\r\n\r\n if (this.profileTileServiceService) {\r\n this.profileTileService = this.profileTileServiceService.getProfileTileService();\r\n }\r\n if (this.coreServiceServie) {\r\n this.logRegService = this.coreServiceServie.getLogRegService();\r\n }\r\n\r\n if (this.commonServiceServie) {\r\n this.redirectionService = this.commonServiceServie.getRedirectionService();\r\n this.signedInUserService = this.commonServiceServie.getSignedInUserService();\r\n }\r\n if (this.photoServiceService) {\r\n this.photoAndPrimaryPhotoMgmtService = this.photoServiceService.getPhotoAndPrimaryPhotoMgmtService();\r\n\t\t}\r\n this.bias.setAvatarElementRef(this.avatarElementRef);\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n ngOnInit () : void\r\n {\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.toggleUploadUi();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // debugger\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) || this.loginSuccess.signedInUserId === 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\t\t}\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.executeLoginSuccessTasks();\r\n }\r\n \r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.setElementRef(this.avatarElementRef);\r\n \r\n // -------------------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result)); \r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.executeLoginSuccessTasks();\r\n }\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isLoginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.logoutEmitter.subscribe((result) => {\r\n // debugger;\r\n if (result) {\r\n // debugger;\r\n this.loginSuccess = new LoginSuccess();\r\n \r\n this.signedInUserId = 0;\r\n this.bias.clearPrimaryImage();\r\n this.ngAfterViewInit();\r\n // -----------------------------------------------------------------------\r\n // NOTE: we do not emitToClearUserData in all logout-listeners, but only here\r\n // logout-listener appears in appComponent, navHeaderComponent and navSidebarComponent.\r\n // since signedInUser's primary-photo is located here, we make this the point from\r\n // where the emitToClearUserData is emitted.\r\n // -----------------------------------------------------------------------\r\n\r\n // DefaultSetterServiceStatic.clearUserData();\r\n }\r\n });\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.toggleThisEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n switch ((result as string).toLowerCase()) {\r\n case 'iseyeclose-memberviewmgmt':\r\n case 'iseyeclose-myphotomgmt':\r\n case 'iseyeclose-myprofileviewmgmt':\r\n this.isEyeOpen = true;\r\n break;\r\n default:\r\n this.isEyeOpen = false;\r\n break;\r\n\t\t\t\t}\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n this.profileTile = this.setupAvatarProfileTile(this.profileTile);\r\n // debugger;\r\n }\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.currentPageOnGlyphiconChangeEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n var currentItemKvPhoto = result as KvPhoto;\r\n this.loginSuccess.primaryImage = currentItemKvPhoto.value;\r\n this.loginSuccess.primaryPhotoBnId = currentItemKvPhoto.photoBnId;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n this.bias.setPrimaryImage('primaryPhotoBnId', true);\r\n this.ngAfterViewInit();\r\n // debugger;\r\n });\r\n // --------------------------------------------------------------------------\r\n // Note: We are using upgradedEmitter to emit LoginSuccess because emitting\r\n // loginSuccess causes some errors.\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.upgradedEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n debugger;\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n debugger;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n // this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit () : any {\r\n this.cdr.detectChanges();\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n \r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public executeLoginSuccessTasks () : void {\r\n // debugger;\r\n \r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.isSuccess = this.loginSuccess.isSuccess;\r\n this.profileName = this.loginSuccess.profileName;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.loginSuccess.primaryImage = this.photoAndPrimaryPhotoMgmtService.getPrimaryImageFromLoginSuccess();\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryImage)) {\r\n // debugger;\r\n this.signedInUserService.getSingedInSitUser().subscribe(data => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)){\r\n this.signedInUser = data;\r\n EmitterSubjectService.setSignedInUser(this.signedInUser);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUser.primaryImage)) {\r\n this.loginSuccess = new LoginSuccess().copyFromSitUser(this.loginSuccess, this.signedInUser);\r\n \r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n }\r\n } \r\n })\r\n }\r\n this.bias.setPrimaryImage('primaryPhotoBnId', true);\r\n }\r\n }\r\n // --------------------------------------------------------\r\n public executeAvatarProfileTileTasks () : void {\r\n // debugger;\r\n this.bias.setPrimaryImage('primaryPhotoBnId', true);\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) || this.profileTile.sitUserId === 0) {\r\n this.profileTileService.getProfileTile(this.loginSuccess.signedInUserId).subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // debugger;\r\n this.profileTile = this.setupAvatarProfileTile(data);\r\n this.ngAfterViewInit();\r\n }\r\n });\r\n }\r\n else {\r\n this.profileTile = this.setupAvatarProfileTile(this.profileTile);\r\n this.ngAfterViewInit();\r\n // debugger;\r\n\t\t}\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public executeLogoutSuccessTasks () : void {\r\n this.isSuccess = false;\r\n // debugger;\r\n // this.bias.clearPrimaryImage();\r\n this.signedInUserId = 0;\r\n this.ngAfterViewInit();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setupAvatarProfileTile (pTile : ProfileTile) : ProfileTile {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) || pTile.sitUserId === 0) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n pTile = CopyServiceStatic.copyLoginSuccessToProfileTile(this.loginSuccess);\r\n this.profileTile = JSON.parse(JSON.stringify(pTile));\r\n EmitterSubjectService.setAvatarProfileTile(this.profileTile); // will setProfileTile also.\r\n // debugger;\r\n return this.profileTile;\r\n }\r\n }\r\n else if (pTile.sitUserId > 0){\r\n pTile.isPrimaryPhoto = true;\r\n // debugger; \r\n\r\n // display the vertical-menues of this tile's kvPhoto if exists:\r\n // -------------------------------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.kvPhoto)\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.kvPhoto.value)\r\n || pTile.kvPhoto.value.length === 0) {\r\n pTile.kvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n }\r\n // debugger;\r\n this.profileTile = new ProfileTile().copySourceToDestination(this.profileTile, pTile); // will cureate a KvPhoto model and populate its data from ProfileTile\r\n EmitterSubjectService.setAvatarProfileTile(this.profileTile); // will setProfileTile also.\r\n // debugger;\r\n }\r\n return this.profileTile;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n toggleUploadUi () {\r\n // debugger;\r\n this.isCameraVisible = !this.isCameraVisible;\r\n // this.isShowPhotoUploadUi.isOpened = !this.isShowPhotoUploadUi.isOpened;\r\n\r\n // open/close the PhotoUploadUI:\r\n EmitterSubjectService.emitIsCameraVisible(this.isCameraVisible);\r\n\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.router = this.router;\r\n this.mcLoader.returnUrl = this.redirectionService.getUrlAddress();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0)\r\n {\r\n if (this.isCameraVisible) {\r\n this.mcLoader.router = this.router;\r\n this.mcLoader.moduleName = this.mcLoader.moduleName = 'mym';\r\n this.mcLoader.componentName = this.mcLoader.componentName = 'myPhotoMgmt';\r\n\r\n // debugger;\r\n this.redirectionService.setRoute(this.mcLoader.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n EmitterSubjectService.emitIsShowPhotoUpload(true); \r\n }\r\n }\r\n else { \r\n // debugger;\r\n //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.mcLoader.componentName)) {\r\n // this.mcLoader.moduleName = this.mcLoader.moduleName = 'app';\r\n // this.mcLoader.componentName = this.mcLoader.componentName = 'index';\r\n // debugger;\r\n //}\r\n this.redirectionService.setRoute(this.mcLoader.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\t\t}\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n toggleIsEyeOpen () : any{\r\n // debugger;\r\n EmitterSubjectService.emitToggleThis('isEyeClose-avatar'); // avatar eye is closed\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: Whenever there is a 'my' on the method name, it is of/related to signedInUser:\r\n // ---------------------------------------------------------------------------------\r\n public viewMyProfile () : void {\r\n // debugger;\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.router = this.router;\r\n this.mcLoader.moduleName = this.mcLoader.moduleName = 'mym';\r\n this.mcLoader.componentName = this.mcLoader.componentName = 'myProfileViewMgmt';\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // this.mcLoader.id = this.mcLoader.sitUserId = this.loginSuccess.signedInUserId;\r\n //}\r\n this.mcLoader.returnUrl = this.redirectionService.getUrlAddress();\r\n //ndebugger;\r\n EmitterSubjectService.setMCLoader(this.mcLoader);\r\n // -----------------------------------------------\r\n // NOTE: we do not want to run the executeProfileImagesTasks() in appComponent/avatarComponent\r\n // until the page switches to the myProfileViewMgmt page!!\r\n // Instead set the necessary variables on the EmitterSubjectService.\r\n // ----------------------------------------------------------------------------\r\n //EmitterSubjectService.setIsViewMember(false);\r\n //EmitterSubjectService.setIsPhotoMgmt(false);\r\n this.isMyProfile = true;\r\n EmitterSubjectService.setIsMyProfile(this.isMyProfile);\r\n // -----------------------------------------------\r\n this.profileTile = this.setupAvatarProfileTile(this.profileTile);\r\n \r\n this.redirectionService.setRoute(this.mcLoader.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n // debugger;\r\n EmitterSubjectService.emitAvatarProfileTile(this.profileTile); \r\n }\r\n // ----------------------------------------------------------------\r\n}\r\n","\r\n\r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {{loginSuccess.profileName}}\r\n
\r\n \r\n \r\n\r\n
\r\n","'use-strict'\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Animations, slideInOutAnimation } from '../../../app/animation';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Component({\r\n selector: 'app-glyphicon-members',\r\n templateUrl: './glyphiconMembers.component.html',\r\n styleUrls: ['./glyphiconMembers.component.scss'],\r\n animations: [\r\n Animations, slideInOutAnimation\r\n /*\r\n * trigger('slideInOut', [\r\n * transition(':enter', [\r\n * //style({ transform : 'translateX(-100%)' }),\r\n * style({ transform : 'translateY(-100%)' }),\r\n * //style({ transform : 'scale(0.1)'}),\r\n * //animate('500ms ease-in', style({ transform : 'translateX(0%)' })),\r\n * animate('1000ms ease-out', style({ transform : 'translateY(0%) rotateY(360deg)' })),\r\n * //animate('500ms ease-in', style({ transform : 'scale(1)' }))\r\n * ]),\r\n * transition(':leave', [\r\n * //animate('500ms ease-in', style({ transform : 'translateX(-100%)' })),\r\n * animate('1000ms ease-out', style({ transform : 'translateY(-100%)' })),\r\n * //animate('500ms ease-in', style({ transform : 'scale(0.1)' }))\r\n * ])\r\n * ])\r\n */\r\n\r\n /*\r\n * trigger('slideInOut', [\r\n * transition(':enter', [\r\n * style({ transform : 'scale(0.1)' }),\r\n * animate('500ms ease-in', style({ transform : 'scale(1)' }))\r\n * ]),\r\n * transition(':leave', [\r\n * animate('500ms ease-in', style({ transform : 'scale(0.1)' }))\r\n * ])\r\n * ])\r\n */\r\n ],\r\n})\r\nexport class GlyphiconMembersComponent implements OnInit, OnDestroy {\r\n public isDropdownOpen = false;\r\n public isMembersOpen = false;\r\n public isMobile = false;\r\n public dropdownItems: string[] = ['Your', 'First', 'Angular', 'Animation', 'With', 'Parameters'];\r\n public glyphs: number[] = [1, 2, 3, 4];\r\n private emitterDestroyed$: Subject = new Subject();\r\n\r\n constructor(private activatedRoute: ActivatedRoute, private coreServiceService: CoreServiceService) { }\r\n\r\n ngOnInit() {\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.isMobile = result;\r\n });\r\n this.isMobile = EmitterSubjectService.getIsMobile();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { Animations, slideInOutAnimation } from '../../../app/animation';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { CenterCoordinates } from '../../../models/misc/centerCoordinates.model';\r\nimport { AppServiceService } from '../../../services/appServiceService/appServiceService.service';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { LogRegService } from '../../../services/coreServiceService/logRegService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { ScrollTopServiceStatic } from '../../../services/staticServices/commonStaticServices/scrollTopServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-home-page',\r\n templateUrl: './homePage.component.html',\r\n styleUrls : ['./homePage.component.scss'],\r\n animations: [\r\n Animations, slideInOutAnimation\r\n ],\r\n})\r\nexport class HomePageComponent implements OnInit, OnDestroy, AfterViewInit {\r\n // public breakpointObserverService!: BreakPointObserverService;\r\n public redirectionService! : RedirectionService;\r\n public rendererService! : RendererService;\r\n // ---------------------------------------------------------\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n private centerCoordinates : CenterCoordinates = new CenterCoordinates();\r\n public centerWidth = 0;\r\n public centerHeight = 0;\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isHome : boolean = true;\r\n public isLoggedIn: boolean = false;\r\n public isMobilevar : boolean = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n public message: any;\r\n // public modalModel : ModalModel = new ModalModel();\r\n // ---------------------------------------------------------\r\n public signedInUserId : number = 0;\r\n private showDialog : boolean = false;\r\n private visible : boolean = false;\r\n private closable : boolean = true;\r\n public userAndPageTitle: UserAndPageTitle = new UserAndPageTitle();\r\n // ---------------------------------------------------------\r\n constructor (private cdr : ChangeDetectorRef,\r\n private appServiceService : AppServiceService,\r\n private bias: BackgroundImageAnimationService,\r\n private commonServiceService: CommonServiceService,\r\n private coreServiceService : CoreServiceService,\r\n private logRegService : LogRegService,\r\n\r\n private rendererServiceService: RendererServiceService,\r\n private router: Router,\r\n ) {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n if (this.rendererServiceService ){\r\n this.rendererService = this.rendererServiceService.getRendererService();\r\n }\r\n\r\n // ------------------------------------------------\r\n\r\n // this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // ------------------------------------------------\r\n\r\n // selfCenter()\r\n // ------------\r\n let point = EmitterSubjectService.getCenteringHeightWidth('landingPageComponentId'); // 'landingPageComponentId'\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(point))\r\n {\r\n this.centerHeight = point.height;\r\n this.centerWidth = point.width;\r\n // alert( 'in LandingPageComponent! \\n centerWidth: ' + this.centerWidth + '\\n centerHeight: ' + this.centerHeight );\r\n }\r\n\r\n // ------------------------------------------------\r\n // if (this.loginSuccess.signedInUserId > 0) {\r\n // this.isLoggedIn = true;\r\n // }\r\n // EmitterSubjectService.loginSuccessEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // this.loginSuccess = result; // JSON.parse(JSON.stringify(result));\r\n // // debugger;\r\n // if (this.loginSuccess.signedInUserId > 0) {\r\n // this.isLoggedIn = true;\r\n // }\r\n // } );\r\n // ------------------------------------------------\r\n }\r\n\r\n ngOnInit() {\r\n // debugger;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n\r\n // EmitterSubjectService.emitResetDbgi(true);\r\n this.setPageTitle();\r\n /*\r\n * ---------------------------------------------------\r\n * Note : to achieve this simple objective of clearing all glyphicons from the dynamyc-graphicon-menu,\r\n * it requires these following to be complied:\r\n * 1. have the ChangeDetection run in here at the PagerVerticalComponent.\r\n * 2. have the ChangeDetection run at the AppComponent.ts which the PagerVerticalComponent.ts is the child of,\r\n * 3. have the component which wants to clear the glyphicon menu such as this LandingPageComponent.ts,\r\n * emit a message to crear the glyphicon menu.\r\n * ---------------------------------------------------\r\n */\r\n EmitterSubjectService.emitClearGlyphiconMenu(true);\r\n\r\n EmitterSubjectService.emitSetBreadcrumForPageSwitch(true);\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n this.isLoggedIn = true;\r\n }\r\n\r\n // EmitterSubjectService.centerCoordinatesEmitter.subscribe((result) => {\r\n // this.centerCoordinates = result;\r\n // });\r\n\r\n\r\n // TODO: test\r\n // ScrollTopServiceStatic.scrollToBottom( 'routerOutletId' );\r\n // ScrollTopServiceStatic.scrollToLocation( 'allScrollTotId', 'start' );\r\n\r\n // EmitterSubjectService.removeComponentEmitter.subscribe((result) => {\r\n // this.isHome = false;\r\n // this.ngAfterViewInit();\r\n // });\r\n\r\n /*\r\n * EmitterSubjectService.toggleModalDialogEmitter.subscribe(result => {\r\n * if (result) {\r\n * this.showDialog = result;\r\n * let inputs = {\r\n * isMobile : false\r\n * }\r\n * this.modalService.init(ModalDialogComponent, inputs, {});\r\n * }\r\n * else this.modalService.destroy();\r\n */\r\n\r\n // });\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit ()\r\n {\r\n this.cdr.detectChanges();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n this.isLoggedIn = true;\r\n EmitterSubjectService.emitSetSignedInUserBackgroundImage(true);\r\n \r\n }\r\n else {\r\n this.bias.resetDefaultBias();\r\n }\r\n // debugger;\r\n EmitterSubjectService.emitHideSpinner(\"\");\r\n ScrollTopServiceStatic.scrollToTop('allScrollToTopId');\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n\r\n // EmitterSubjectService.emitClearGlyphiconMenu(true);\r\n }\r\n // ---------------------------------------------------------------\r\n // ----------------------------------------------------- \r\n // Login-Register-Nav-Header-Buttons-Management-System:\r\n // -----------------------------------------------------\r\n emitLoginButtonRenderedMsg () {\r\n // EmitterSubjectService.emitMessage('Render-Login-Button');\r\n }\r\n // ---------------------------------------------------------------\r\n emitRegisterButtonRenderedMsg () {\r\n // EmitterSubjectService.emitMessage('Render-Register-Button');\r\n }\r\n // --------------------------------------------------------------\r\n public executeLogoutSuccessTasks () {\r\n debugger;\r\n this.loginSuccess = new LoginSuccess();\r\n debugger;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n EmitterSubjectService.setIsLoggedOutByUser(true);\r\n this.logRegService.executeLogoutSuccessTasks();\r\n this.signedInUserId = 0;\r\n debugger;\r\n this.isLoggedIn = false;\r\n EmitterSubjectService.emitLogout(this.loginSuccess);\r\n this.ngAfterViewInit();\r\n }\r\n // ---------------------------------------------------------------\r\n setRoute (route : string, id : number) : void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(route)) {\r\n switch (route?.toString().toLowerCase()) {\r\n case 'login': \r\n this.emitLoginButtonRenderedMsg();\r\n break;\r\n case 'logout':\r\n this.executeLogoutSuccessTasks();\r\n break;\r\n case 'signup':\r\n // this.emitRegisterButtonRenderedMsg();\r\n // debugger;\r\n break;\r\n default:\r\n break;\r\n }\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n // debugger;\r\n this.pagerBrdCrm = data;\r\n this.ngAfterViewInit();\r\n EmitterSubjectService.emitCloseSidebar(true);\r\n });\r\n // debugger;\r\n }\r\n else {\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.redirectionService.routeToMembersPage(this.router).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n this.ngAfterViewInit();\r\n EmitterSubjectService.emitCloseSidebar(true);\r\n });\r\n }\r\n else {\r\n this.redirectionService.routeToHomePage(this.router).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n this.ngAfterViewInit();\r\n EmitterSubjectService.emitCloseSidebar(true);\r\n });\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n //setRouteOld(route: string, id: number): void {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(route)) {\r\n // if (route?.toString().toLowerCase().indexOf('login') !== -1) {\r\n // this.emitLoginButtonRenderedMsg();\r\n // }\r\n // else if (route?.toString().toLowerCase().indexOf('register') !== -1) {\r\n // this.emitRegisterButtonRenderedMsg();\r\n // this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n // debugger;\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // }\r\n // else if (route?.toString().toLowerCase().indexOf('logout') !== -1) {\r\n // var timer = setTimeout(() => {\r\n // this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // // debugger;\r\n // clearTimeout(timer);\r\n // }, 1000);\r\n // }\r\n // else {\r\n // debugger;\r\n // this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n // debugger;\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // // this.setRouteBreadCrum(route, id);\r\n\t\t//\t}\r\n // }\r\n // else {\r\n // if (this.loginSuccess.signedInUserId > 0) {\r\n // this.redirectionService.routeToMembersPage(this.router).subscribe(data => {\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // // this.setRouteBreadCrum(route, id);\r\n // }\r\n // else {\r\n // this.redirectionService.routeToHomePage(this.router).subscribe(data => {\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // // this.setRouteBreadCrum(route, id);\r\n // }\r\n // }\r\n //}\r\n // --------------------------------------------------------------\r\n public setRouteBreadCrum (route : string, id : number) : void {\r\n // debugger;\r\n this.redirectionService.setRouteforSignedInUser(this.router, route, id).then(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Emit the title of the page:\r\n * ---------------------------------------------------------------\r\n */\r\n setPageTitle() {\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n this.userAndPageTitle.isPrepared = true;\r\n\r\n /*\r\n * line#1\r\n * this.userAndPageTitle.pageTitle = '-:Home:-
';\r\n */\r\n\r\n // line#2\r\n const welcomePre = '';\r\n const welcomePost = '
';\r\n // line#1 + line#2\r\n\r\n this.userAndPageTitle.pageTitle = welcomePre + 'Welcome to Slakez!' + welcomePost;\r\n\r\n // line#3\r\n const gayPre = '';\r\n const gayPost = '';\r\n // line#1 + line#2 + line#3\r\n\r\n this.userAndPageTitle.pageTitle += gayPre + 'A new social networking app!' + gayPost;\r\n\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n /*\r\n * mouseEnter(page) {\r\n * setTimeout(() => {\r\n * this.router.navigate([page]);\r\n * }, 500);\r\n * }\r\n */\r\n\r\n onTap(event: any) { }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * openModal() {\r\n * EmitterSubjectService.emitIsModal(true);\r\n * let inputs = {\r\n * isMobile : false\r\n * }\r\n * this.modalService.init(ModalDialogComponent, inputs, {});\r\n */\r\n\r\n /*\r\n * EmitterSubjectService.emitToggleModalDialog();\r\n * }\r\n */\r\n\r\n /*\r\n * closeModal() {\r\n * this.modalService.destroy();\r\n * EmitterSubjectService.emitIsModal(false);\r\n * EmitterSubjectService.emitToggleModalDialog();\r\n * }\r\n * ---------------------------------------------------------------------------------\r\n * toggleDialog() {\r\n * EmitterSubjectService.emitToggleModalDialog();\r\n * }\r\n * removeModal() {\r\n * this.modalService.destroy();\r\n * }\r\n * ---------------------------------------------------------------------------------\r\n */\r\n}\r\n","\r\n\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { Animations, slideInOutAnimation } from '../../../app/animation';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { CenterCoordinates } from '../../../models/misc/centerCoordinates.model';\r\nimport { AppServiceService } from '../../../services/appServiceService/appServiceService.service';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { LogRegService } from '../../../services/coreServiceService/logRegService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { ScrollTopServiceStatic } from '../../../services/staticServices/commonStaticServices/scrollTopServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-landing-page',\r\n templateUrl: './landingPage.component.html',\r\n styleUrls : ['./landingPage.component.scss'],\r\n animations: [\r\n Animations, slideInOutAnimation\r\n ],\r\n})\r\nexport class LandingPageComponent implements OnInit, OnDestroy, AfterViewInit {\r\n // public breakpointObserverService!: BreakPointObserverService;\r\n public redirectionService! : RedirectionService;\r\n public rendererService! : RendererService;\r\n // ---------------------------------------------------------\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n private centerCoordinates : CenterCoordinates = new CenterCoordinates();\r\n public centerWidth = 0;\r\n public centerHeight = 0;\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isHome : boolean = true;\r\n public isLoggedIn: boolean = false;\r\n public isMobilevar : boolean = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n public message: any;\r\n // public modalModel : ModalModel = new ModalModel();\r\n // ---------------------------------------------------------\r\n public signedInUserId : number = 0;\r\n private showDialog : boolean = false;\r\n private visible : boolean = false;\r\n private closable : boolean = true;\r\n public userAndPageTitle: UserAndPageTitle = new UserAndPageTitle();\r\n // ---------------------------------------------------------\r\n constructor (private cdr : ChangeDetectorRef,\r\n private appServiceService : AppServiceService,\r\n private bias: BackgroundImageAnimationService,\r\n private commonServiceService: CommonServiceService,\r\n private coreServiceService : CoreServiceService,\r\n private logRegService : LogRegService,\r\n\r\n private rendererServiceService: RendererServiceService,\r\n private router: Router,\r\n ) {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n if (this.rendererServiceService ){\r\n this.rendererService = this.rendererServiceService.getRendererService();\r\n }\r\n\r\n // ------------------------------------------------\r\n\r\n // this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // ------------------------------------------------\r\n\r\n // selfCenter()\r\n // ------------\r\n let point = EmitterSubjectService.getCenteringHeightWidth('landingPageComponentId'); // 'landingPageComponentId'\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(point))\r\n {\r\n this.centerHeight = point.height;\r\n this.centerWidth = point.width;\r\n // alert( 'in LandingPageComponent! \\n centerWidth: ' + this.centerWidth + '\\n centerHeight: ' + this.centerHeight );\r\n }\r\n\r\n // ------------------------------------------------\r\n // if (this.loginSuccess.signedInUserId > 0) {\r\n // this.isLoggedIn = true;\r\n // }\r\n // EmitterSubjectService.loginSuccessEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // this.loginSuccess = result; // JSON.parse(JSON.stringify(result));\r\n // // debugger;\r\n // if (this.loginSuccess.signedInUserId > 0) {\r\n // this.isLoggedIn = true;\r\n // }\r\n // } );\r\n // ------------------------------------------------\r\n }\r\n\r\n ngOnInit() {\r\n // debugger;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n\r\n // EmitterSubjectService.emitResetDbgi(true);\r\n this.setPageTitle();\r\n /*\r\n * ---------------------------------------------------\r\n * Note : to achieve this simple objective of clearing all glyphicons from the dynamyc-graphicon-menu,\r\n * it requires these following to be complied:\r\n * 1. have the ChangeDetection run in here at the PagerVerticalComponent.\r\n * 2. have the ChangeDetection run at the AppComponent.ts which the PagerVerticalComponent.ts is the child of,\r\n * 3. have the component which wants to clear the glyphicon menu such as this LandingPageComponent.ts,\r\n * emit a message to crear the glyphicon menu.\r\n * ---------------------------------------------------\r\n */\r\n EmitterSubjectService.emitClearGlyphiconMenu(true);\r\n\r\n EmitterSubjectService.emitSetBreadcrumForPageSwitch(true);\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n this.isLoggedIn = true;\r\n }\r\n\r\n // EmitterSubjectService.centerCoordinatesEmitter.subscribe((result) => {\r\n // this.centerCoordinates = result;\r\n // });\r\n\r\n\r\n // TODO: test\r\n // ScrollTopServiceStatic.scrollToBottom( 'routerOutletId' );\r\n // ScrollTopServiceStatic.scrollToLocation( 'allScrollTotId', 'start' );\r\n\r\n // EmitterSubjectService.removeComponentEmitter.subscribe((result) => {\r\n // this.isHome = false;\r\n // this.ngAfterViewInit();\r\n // });\r\n\r\n /*\r\n * EmitterSubjectService.toggleModalDialogEmitter.subscribe(result => {\r\n * if (result) {\r\n * this.showDialog = result;\r\n * let inputs = {\r\n * isMobile : false\r\n * }\r\n * this.modalService.init(ModalDialogComponent, inputs, {});\r\n * }\r\n * else this.modalService.destroy();\r\n */\r\n\r\n // });\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit ()\r\n {\r\n this.cdr.detectChanges();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n this.isLoggedIn = true;\r\n EmitterSubjectService.emitSetSignedInUserBackgroundImage(true);\r\n \r\n }\r\n else {\r\n this.bias.resetDefaultBias();\r\n }\r\n // debugger;\r\n EmitterSubjectService.emitHideSpinner(\"\");\r\n ScrollTopServiceStatic.scrollToTop('allScrollToTopId');\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n\r\n // EmitterSubjectService.emitClearGlyphiconMenu(true);\r\n }\r\n // ---------------------------------------------------------------\r\n // ----------------------------------------------------- \r\n // Login-Register-Nav-Header-Buttons-Management-System:\r\n // -----------------------------------------------------\r\n emitLoginButtonRenderedMsg () {\r\n // EmitterSubjectService.emitMessage('Render-Login-Button');\r\n }\r\n // ---------------------------------------------------------------\r\n emitRegisterButtonRenderedMsg () {\r\n // EmitterSubjectService.emitMessage('Render-Register-Button');\r\n }\r\n // --------------------------------------------------------------\r\n public executeLogoutSuccessTasks () {\r\n // debugger;\r\n this.loginSuccess = new LoginSuccess();\r\n // debugger;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n EmitterSubjectService.setIsLoggedOutByUser(true);\r\n this.logRegService.executeLogoutSuccessTasks();\r\n this.signedInUserId = 0;\r\n // debugger;\r\n this.isLoggedIn = false;\r\n EmitterSubjectService.emitLogout(this.loginSuccess);\r\n this.ngAfterViewInit();\r\n }\r\n // ---------------------------------------------------------------\r\n setRoute (route : string, id : number) : void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(route)) {\r\n switch (route?.toString().toLowerCase()) {\r\n case 'login': \r\n this.emitLoginButtonRenderedMsg();\r\n break;\r\n case 'logout':\r\n this.executeLogoutSuccessTasks();\r\n break;\r\n //case 'signup':\r\n // // this.emitRegisterButtonRenderedMsg();\r\n // // debugger;\r\n // break;\r\n default:\r\n break;\r\n }\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n // debugger;\r\n this.pagerBrdCrm = data;\r\n this.ngAfterViewInit();\r\n EmitterSubjectService.emitCloseSidebar(true);\r\n });\r\n // debugger;\r\n }\r\n else {\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.redirectionService.routeToMembersPage(this.router).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n this.ngAfterViewInit();\r\n EmitterSubjectService.emitCloseSidebar(true);\r\n });\r\n }\r\n else {\r\n this.redirectionService.routeToHomePage(this.router).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n this.ngAfterViewInit();\r\n EmitterSubjectService.emitCloseSidebar(true);\r\n });\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n //setRouteOld(route: string, id: number): void {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(route)) {\r\n // if (route?.toString().toLowerCase().indexOf('login') !== -1) {\r\n // this.emitLoginButtonRenderedMsg();\r\n // }\r\n // else if (route?.toString().toLowerCase().indexOf('register') !== -1) {\r\n // this.emitRegisterButtonRenderedMsg();\r\n // this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n // debugger;\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // }\r\n // else if (route?.toString().toLowerCase().indexOf('logout') !== -1) {\r\n // var timer = setTimeout(() => {\r\n // this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // // debugger;\r\n // clearTimeout(timer);\r\n // }, 1000);\r\n // }\r\n // else {\r\n // debugger;\r\n // this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n // debugger;\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // // this.setRouteBreadCrum(route, id);\r\n\t\t//\t}\r\n // }\r\n // else {\r\n // if (this.loginSuccess.signedInUserId > 0) {\r\n // this.redirectionService.routeToMembersPage(this.router).subscribe(data => {\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // // this.setRouteBreadCrum(route, id);\r\n // }\r\n // else {\r\n // this.redirectionService.routeToHomePage(this.router).subscribe(data => {\r\n // this.pagerBrdCrm = data;\r\n // });\r\n // // this.setRouteBreadCrum(route, id);\r\n // }\r\n // }\r\n //}\r\n // --------------------------------------------------------------\r\n public setRouteBreadCrum (route : string, id : number) : void {\r\n // debugger;\r\n this.redirectionService.setRouteforSignedInUser(this.router, route, id).then(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Emit the title of the page:\r\n * ---------------------------------------------------------------\r\n */\r\n setPageTitle() {\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n this.userAndPageTitle.isPrepared = true;\r\n\r\n /*\r\n * line#1\r\n * this.userAndPageTitle.pageTitle = '-:Home:-
';\r\n */\r\n\r\n // line#2\r\n const welcomePre = '';\r\n const welcomePost = '
';\r\n // line#1 + line#2\r\n\r\n this.userAndPageTitle.pageTitle = welcomePre + 'Welcome to Slakez!' + welcomePost;\r\n\r\n // line#3\r\n const gayPre = '';\r\n const gayPost = '';\r\n // line#1 + line#2 + line#3\r\n\r\n this.userAndPageTitle.pageTitle += gayPre + 'A new social networking app!' + gayPost;\r\n\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n /*\r\n * mouseEnter(page) {\r\n * setTimeout(() => {\r\n * this.router.navigate([page]);\r\n * }, 500);\r\n * }\r\n */\r\n\r\n onTap(event: any) { }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * openModal() {\r\n * EmitterSubjectService.emitIsModal(true);\r\n * let inputs = {\r\n * isMobile : false\r\n * }\r\n * this.modalService.init(ModalDialogComponent, inputs, {});\r\n */\r\n\r\n /*\r\n * EmitterSubjectService.emitToggleModalDialog();\r\n * }\r\n */\r\n\r\n /*\r\n * closeModal() {\r\n * this.modalService.destroy();\r\n * EmitterSubjectService.emitIsModal(false);\r\n * EmitterSubjectService.emitToggleModalDialog();\r\n * }\r\n * ---------------------------------------------------------------------------------\r\n * toggleDialog() {\r\n * EmitterSubjectService.emitToggleModalDialog();\r\n * }\r\n * removeModal() {\r\n * this.modalService.destroy();\r\n * }\r\n * ---------------------------------------------------------------------------------\r\n */\r\n}\r\n","\r\n\r\n\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\n\r\n@Component({\r\n selector: 'app-left-right-logo-menu',\r\n templateUrl: './leftRightLogoMenu.component.html',\r\n styleUrls: [ './leftRightLogoMenu.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LeftRightLogoMenuComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public redirectionService! : RedirectionService;\r\n public deviceInfo : any;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isMobilevar = false;\r\n public isPhotoMgmt = false;\r\n public isSuccess = true;\r\n public isViewMember = false;\r\n public index = -1;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message : string = '';\r\n public pageTitle = '';\r\n @Input() pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUserId = 0;\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n constructor (\r\n private commonServiceService: CommonServiceService,\r\n private cdr : ChangeDetectorRef,\r\n private router : Router, )\r\n {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n ngOnInit () : void {\r\n\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // -------------------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit () : any\r\n {\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public executeLoginSuccessTasks () : any\r\n {\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.isSuccess = this.loginSuccess.isSuccess;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n return this.loginSuccess;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n public setRoute (route : string, id : number) : void {\r\n debugger;\r\n this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\r\n }\r\n // ----------------------------------------------------------------\r\n}\r\n","
0\" style=\"position: relative; display: flex; top: 0.15rem; width: 100%; height: 1.25rem; margin: 0; justify-content: center; padding: 0; z-index: 7; opacity: 1; background-color: transparent; \">\r\n\r\n \r\n
0\" routerLink=\"\" routerLinkActive=\"active\" aria-expanded=\"true\"\r\n (click)=\"setRoute('register', loginSuccess.signedInUserId);\"\r\n class=\"hvr-underline-from-center whiteBlueInvSB increase\"\r\n [ngClass]=\"{'bttn-xxs-transparent':!isMobilevar, 'bttn-xs-transparent':isMobilevar}\"\r\n style=\"display: inline-block;\r\n height: 1.25rem;\r\n z-index: 9;\r\n width: 40%;\r\n right: 0.5rem;\r\n margin: 0 0.15rem 0 0.25rem;\r\n padding: 0.01rem 0.25rem 0.1rem 0.75rem;\">\r\n \r\n SignupFree\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n Login\r\n \r\n
\r\n
\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { TimerService } from '../../../services/coreServiceService/timerService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { BreadcrumServiceStatic } from '../../../services/staticServices/breadcrumServiceStatic.service';\r\nimport { ScrollTopServiceStatic } from '../../../services/staticServices/commonStaticServices/scrollTopServiceStatic.service';\r\nimport { DefaultSetterServiceStatic } from '../../../services/staticServices/defaultSetterServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n// ===========================================================================================================================\r\n// ----------------------------------------------------- \r\n// Login-Register-Nav-Header-Buttons-Management-System:\r\n// -----------------------------------------------------\r\n// Login-Register-Nav-Header-Buttons-Management-System is a system where the 'SignupFree', and 'Login' buttons at the\r\n// adjacent to the Logo of the application are controlled at LogRegButtonsAndArrows.Component via MessageEmitter emitted\r\n// from LandingPageComponent, LoginComponent, LogoComponent and RegisterComponet.\r\n//\r\n// MessageEmitter has a pattern of messages which the LogRegButtonsAndArrows.ts parses and determines the visibility state\r\n// of these two buttons.\r\n//\r\n// The visibility of these two button depends on the folloing conditions:\r\n// 1) default behavior of these buttons is to show/be visible at startup of the app\r\n// 2) if the 'Login' component is displayed by any of these following buttons the 'Login' button should disappear:\r\n// 2.1) by clicking the LogRegButtonsAndArrowsComponent.loginButton,\r\n// 2.2) LangingPageComponent.loginButton\r\n// 2.3 the X(close) button of RegisterComponent\r\n// 3) if the 'Register' component is displayed by any of these following buttons the 'Registe' button should disappear:\r\n// 2.1) by clicking the LogRegButtonsAndArrowsComponent.registerButton,\r\n// 2.2) LangingPageComponent.signupFreeButton\r\n// 2.3 the X(close) button of LoginComponent\r\n//\r\n// Both SignupFree button and Login button should display when LandingPage is displayed either initially or clicking the logo\r\n// subsequently at any time later.\r\n//\r\n// The messagees has the following patters:\r\n// 1) When loginComponent is displayed, it should send a message containing the word 'Register' in the message in order to display RegisterComponent:\r\n// Example: emitMessage('Register-component-display');\r\n// 2) When registerComponent is displayed, it should send a message containing the word 'Login' in the message in order to display LoginComponent:\r\n// Example: emitMessage('Login-component-display');\r\n// 3) When both login button and signUpFree button neds to be displayed, it should send a message containing the word 'Register' and 'Login',\r\n// in the message in order to display both SingupFree and Login button at the Header \r\n// Example: emitMessage('Register-Login-buttons-display');\r\n// \r\n// ===========================================================================================================================\r\n\r\n@Component({\r\n selector: 'app-log-reg-buttons-and-nav-arrows',\r\n templateUrl: './logRegButtonsAndNavArrows.component.html',\r\n styleUrls: [ './logRegButtonsAndNavArrows.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LogRegButtonsAndNavArrowsComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public bias ! : BackgroundImageAnimationService;\r\n public redirectionService! : RedirectionService;\r\n public timerService! : TimerService;\r\n // ----------------------------------------------\r\n public breadcrumRing : ModuleComponentLoader[] = [];\r\n public breadCrmRngLength = 0;\r\n public currentUrl = '';\r\n public deviceInfo : any;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isLoginPageRendered = false;\r\n public isMobilevar = false;\r\n public isRegisterPageRendered = false;\r\n public isSuccess = true;\r\n @Input() loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message : string = '';\r\n public pageTitle = '';\r\n @Input() pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public signedInUserId = 0;\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n constructor (\r\n private cdr : ChangeDetectorRef,\r\n private commonServiceService: CommonServiceService,\r\n public coreServiceService : CoreServiceService,\r\n public rendererServiceService : RendererServiceService,\r\n public router : Router, )\r\n {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n if (this.coreServiceService) {\r\n this.timerService = this.coreServiceService.getTimerService();\r\n }\r\n if (this.rendererServiceService) {\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n }\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n ngOnInit () : void {\r\n\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n\r\n this.currentUrl = this.getCurrentUrl()\r\n // -------------------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n\r\n });\r\n // -------------------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.localStorageLoginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.pagerBreadcrumDirectionEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n this.setBreadcrumPage(result);\r\n }\r\n });\r\n // -----------------------------------------------------------------\r\n EmitterSubjectService.pagerBreadcrumEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.pagerBrdCrm = result as PagerBreadcrum;\r\n this.ngAfterViewInit();\r\n })\r\n // ----------------------------------------------------- \r\n // Login-Register-Nav-Header-Buttons-Management-System:\r\n // -----------------------------------------------------\r\n // Note: this emitter is listened to only for the purpose of\r\n // determining the login / register page being rendered or not\r\n // -----------------------------------------------------\r\n EmitterSubjectService.messageEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n if (typeof result === 'string' && (result.indexOf('Login') !== -1 || result.indexOf('Signup') !== -1)) {\r\n let url = this.checkCurrentUrl(result);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n this.currentUrl = this.getCurrentUrl();\r\n }\r\n\r\n this.timerService.resetMessageTimer(2000);\r\n }\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit () : any\r\n {\r\n this.cdr.detectChanges();\r\n this.breadcrumRing = BreadcrumServiceStatic.getRing();\r\n this.pagerBrdCrm = BreadcrumServiceStatic.getPagerBreadcrum();\r\n // debugger;\r\n this.breadCrmRngLength = this.setBreadCrumRingLength(this.pagerBrdCrm);\r\n this.executeLoginSuccessTasks();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public executeLoginSuccessTasks () : any\r\n {\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.isSuccess = this.loginSuccess.isSuccess;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n this.isLoginPageRendered = true;\r\n this.isRegisterPageRendered = true;\r\n return this.loginSuccess;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n public setRoute (route : string, id : number) : void {\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\r\n }\r\n // --------------------------------------------------------------\r\n public setRouteBreadcrum (route : string, id : number) : void {\r\n // debugger;\r\n this.pagerBrdCrm = this.redirectionService.setRouteforSignedInUser(this.router, route, id);\r\n\r\n }\r\n // ----------------------------------------------------- \r\n // Login-Register-Nav-Header-Buttons-Management-System:\r\n // -----------------------------------------------------\r\n checkCurrentUrl (currentPage : string) : string {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentPage)) {\r\n if (currentPage?.toString().toLowerCase().indexOf('login') !== -1 && currentPage?.toString().toLowerCase().indexOf('signup') !== -1) {\r\n this.isLoginPageRendered = false;\r\n this.isRegisterPageRendered = false;\r\n }\r\n else if (currentPage?.toString().toLowerCase().indexOf('login') !== -1 && currentPage?.toString().toLowerCase().indexOf('signup') === -1) {\r\n this.isLoginPageRendered = true;\r\n this.isRegisterPageRendered = false;\r\n }\r\n else if (currentPage?.toString().toLowerCase().indexOf('signup') !== -1 && currentPage?.toString().toLowerCase().indexOf('login') === -1) {\r\n this.isRegisterPageRendered = true;\r\n this.isLoginPageRendered = false;\r\n }\r\n else {\r\n // debugger;\r\n return this.getCurrentUrl();\r\n }\r\n return currentPage;\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n // ----------------------------------------------------- \r\n // Login-Register-Nav-Header-Buttons-Management-System:\r\n // -----------------------------------------------------\r\n getCurrentUrl () : string {\r\n this.currentUrl = this.redirectionService.getUrlAddress();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentUrl)) {\r\n if (this.currentUrl.toLowerCase().indexOf('login') !== -1) {\r\n this.isLoginPageRendered = true;\r\n }\r\n if (this.currentUrl.toLowerCase().indexOf('signup') !== -1) {\r\n this.isRegisterPageRendered = true;\r\n }\r\n }\r\n return this.currentUrl;\r\n }\r\n // ------------------------Completed on 2021/04/---------------------------------------\r\n setBreadcrumPage (direction : string) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(direction)) {\r\n this.pagerBrdCrm = BreadcrumServiceStatic.setBreadcrumPage(direction, this.router);\r\n this.breadCrmRngLength = this.setBreadCrumRingLength(this.pagerBrdCrm);\r\n\r\n DefaultSetterServiceStatic.clearUserData();\r\n ScrollTopServiceStatic.scrollToTop('allScrollToId');\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------\r\n setBreadCrumRingLength (pagerBrdCrm : PagerBreadcrum) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerBrdCrm)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerBrdCrm.breadcrumRing)\r\n && this.pagerBrdCrm?.breadcrumRing?.length > 0) {\r\n this.breadCrmRngLength = pagerBrdCrm?.breadcrumRing?.length;\r\n }\r\n else this.breadCrmRngLength = 0;\r\n\r\n return this.breadCrmRngLength;\r\n }\r\n // ----------------------------------------------------------------\r\n}\r\n","
\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\n\r\n@Component({\r\n selector: 'app-logo-menu',\r\n templateUrl: './logoMenu.component.html',\r\n styleUrls: [ './logoMenu.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LogoMenuComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public redirectionService! : RedirectionService;\r\n public deviceInfo : any;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isMobilevar = false;\r\n public isPhotoMgmt = false;\r\n public isSuccess = true;\r\n public isViewMember = false;\r\n public index = -1;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message : string = '';\r\n public pageTitle = '';\r\n @Input() pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUserId = 0;\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n constructor (\r\n private commonServiceService: CommonServiceService,\r\n private cdr : ChangeDetectorRef,\r\n private router : Router, )\r\n {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n ngOnInit () : void {\r\n\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // -------------------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit () : any\r\n {\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public executeLoginSuccessTasks () : any\r\n {\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.isSuccess = this.loginSuccess.isSuccess;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n return this.loginSuccess;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n public setRoute (route : string, id : number) : void {\r\n debugger;\r\n this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\r\n }\r\n // ----------------------------------------------------------------\r\n}\r\n","\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { MessageModel } from '../../../models/common/messageModel.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { PagerPhotoMgmtService } from '../../../services/pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerServiceService } from '../../../services/pagerServiceService/pagerServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n@Component({\r\n selector: 'app-logo',\r\n templateUrl: './logo.component.html',\r\n styleUrls: [ './logo.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LogoComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public redirectionService! : RedirectionService;\r\n public pagerPhotoMgmtService! : PagerPhotoMgmtService;\r\n public deviceInfo : any;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isMobilevar = false;\r\n public isMouseIn = false;\r\n public isOnScroll = false;\r\n public isPhotoMgmt = false;\r\n public isSpinner = false;\r\n public isSuccess = true;\r\n public isViewMember = false;\r\n public index = -1;\r\n @Input() loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public message : string = '';\r\n public messageModel : MessageModel = new MessageModel();\r\n public pageTitle = '';\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUserId = 0;\r\n public tempElem : any;\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n constructor (private cdr : ChangeDetectorRef,\r\n private commonServiceServie: CommonServiceService,\r\n private logoElementRef : ElementRef,\r\n private pagerServiceService : PagerServiceService,\r\n private router : Router,)\r\n {\r\n if (this.pagerServiceService) this.pagerPhotoMgmtService = this.pagerServiceService.getPagerPhotoMgmtService();\r\n\r\n if (this.commonServiceServie) {\r\n this.redirectionService = this.commonServiceServie.getRedirectionService();\r\n }\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n ngOnInit () : void\r\n {\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n \r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.clearPageTitleEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.clearPageTitle();\r\n });\r\n \r\n // -------------------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n this.executeLoginSuccessTasks();\r\n });\r\n\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.messageEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result : any) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (result instanceof MessageModel) {\r\n this.messageModel = result;\r\n this.message = this.messageModel.message;\r\n }\r\n else {\r\n this.messageModel.message = result as string;\r\n this.message = this.messageModel.message;\r\n }\r\n }\r\n this.ngAfterViewInit();\r\n });\r\n // -----------------------------------------------------------------\r\n EmitterSubjectService.pagerBreadcrumEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.pagerBrdCrm = result as PagerBreadcrum;\r\n this.ngAfterViewInit();\r\n })\r\n // -------------------------------------------------------------\r\n //EmitterSubjectService.userAndPageTitleEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((result) => {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // this.userAndPageTitle = result as UserAndPageTitle;\r\n\r\n // this.sitUser.sitUserId = this.userAndPageTitle.sitUserId;\r\n // this.pageTitle = this.userAndPageTitle.pageTitle;\r\n // // debugger;\r\n // if (!this.userAndPageTitle.isPrepared && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.userAndPageTitle.pageTitle)) {\r\n // this.pageTitle = StringServiceStatic.preparePageTitle(this.userAndPageTitle.pageTitle);\r\n // // debugger;\r\n // }\r\n // // debugger;\r\n // }\r\n // this.ngAfterViewInit();\r\n // // EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n\r\n // });\r\n\r\n // -----------------------------------------------------------------\r\n }\r\n // -------------------------------------------------------------------\r\n ngAfterViewInit () : any\r\n {\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n }\r\n // ---------------------------------------------------------------\r\n clearPageTitle () : any {\r\n this.userAndPageTitle = new UserAndPageTitle();\r\n this.pageTitle = '';\r\n // this.ngAfterViewInit();\r\n // debugger;\r\n return true;\r\n\r\n }\r\n // ---------------------------------------------------------------------------------\r\n //clearVerticalMenues () {\r\n // // debugger;\r\n // //EmitterSubjectService.emitIsViewMember(false);\r\n // //EmitterSubjectService.emitIsPhotoMgmt(false);\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n public executeLoginSuccessTasks () : any\r\n {\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n this.isSuccess = this.loginSuccess.isSuccess;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n }\r\n return this.loginSuccess;\r\n }\r\n // ---------------------------------------------------------------\r\n getOnScroll () {\r\n // debugger;\r\n const pageContentWrapper = this.getNavHeaderElementById('page-content-wrapper');\r\n\r\n pageContentWrapper.onscroll = this.logScroll;\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n logScroll (e: any) {\r\n // debugger;\r\n this.getOnScroll();\r\n if (e && e.type) {\r\n this.isOnScroll = true;\r\n // debugger;\r\n }\r\n else {\r\n this.isOnScroll = false;\r\n // debugger;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n mouseOver (e : Event) {\r\n if (e && e.type) {\r\n this.isMouseIn = true;\r\n }\r\n else {\r\n this.isMouseIn = false;\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n getNavHeaderElementById (id : string) : any {\r\n this.tempElem = document.getElementById(id);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.logoElementRef) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.logoElementRef.nativeElement)) {\r\n this.tempElem = this.logoElementRef.nativeElement.querySelector(id);\r\n }\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem)) {\r\n this.tempElem = this.logoElementRef.nativeElement.querySelector('#' + id);\r\n }\r\n // debugger;\r\n return this.tempElem;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ----------------------------------------------------- \r\n // Login-Register-Nav-Header-Buttons-Management-System:\r\n // -----------------------------------------------------\r\n resetLogRegBttns () {\r\n // debugger;\r\n EmitterSubjectService.emitSetSignedInUserBackgroundImage(true);\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.moduleName = 'app';\r\n this.mcLoader.componentName = 'index';\r\n //if (this.loginSuccess.signedInUserId > 0) {\r\n\r\n // this.mcLoader.sitUserId = this.loginSuccess.signedInUserId;\r\n //}\r\n //else {\r\n\r\n // this.mcLoader.sitUserId = 0;\r\n //}\r\n\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n}\r\n","\r\n\r\n\r\n
\r\n
\r\n \r\n
Slakez
\r\n
\r\n
","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { MessageModel } from '../../../models/common/messageModel.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n@Component({\r\n selector: 'app-message-board',\r\n templateUrl: './messageBoard.component.html',\r\n styleUrls: [ './messageBoard.component.scss' ],\r\n /*animations: [ Animations, slideInOutAnimation ],*/\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MessageBoardComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public deviceInfo : any;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isMobilevar = false;\r\n public isPhotoMgmt = false;\r\n public isSuccess = false;\r\n public isViewMember = false;\r\n public index = -1;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n @Input() messageModel : MessageModel = new MessageModel();\r\n public message = '';\r\n public messages : string[] = [];\r\n public pageTitle = '';\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUserId = 0;\r\n public timer : any;\r\n public timerMap : Map = new Map();\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n constructor (private cdr : ChangeDetectorRef,)\r\n {\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n ngOnInit () : void\r\n {\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.clearMessageEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n this.message = '';\r\n this.messageModel = new MessageModel();\r\n //this.timerMap.forEach(t => clearTimeout(t));\r\n //this.timerMap.clear();\r\n this.ngAfterViewInit();\r\n } );\r\n\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.messageEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result: any ) =>\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n {\r\n // debugger;\r\n if (result instanceof MessageModel) {\r\n this.messageModel = result;\r\n this.message = result.message;\r\n this.isSuccess = result.isSuccess;\r\n this.resetMessageTimer(10000);\r\n }\r\n else {\r\n this.message = this.messageModel.message = result as string;\r\n this.isSuccess = false;\r\n this.resetMessageTimer(15000);\r\n }\r\n }\r\n });\r\n // -------------------------------------------------------------------------\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit () : void\r\n {\r\n this.resetMessageTimer(1500);\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.timerMap.forEach( ( timer ) => clearInterval( timer ) );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n\r\n public resetMessageTimer (interval: number) : any\r\n {\r\n // debugger;\r\n this.timer = setTimeout( () =>\r\n {\r\n this.message = '';\r\n this.messageModel = new MessageModel();\r\n this.messageModel.message = this.message;\r\n //clearTimeout(this.timer);\r\n //if (this.timerMap.has(this.timer)) {\r\n // this.timerMap.delete(this.timer);\r\n //}\r\n // debugger;\r\n\r\n }, interval && interval > 0 ? interval : 15000);\r\n return true;\r\n }\r\n // ----------------------------------------------------------------\r\n}\r\n","\r\n\r\n\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../../../services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\n\r\n@Component({\r\n selector: 'app-my-stuff',\r\n templateUrl: './myStuff.component.html',\r\n styleUrls: ['./myStuff.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MyStuffComponent implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n public redirectionService! : RedirectionService;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isAuthorized = false;\r\n public isClosed = true;\r\n public isDesktopvar = false;\r\n public isEmployee = false;\r\n public isLoggedIn = false;\r\n public isLogingTasksExecuted = false;\r\n public isMgmt = false;\r\n public isMobilevar = false;\r\n public isMouseIn = false;\r\n public isMyStuffClosedBool : Bool = new Bool();\r\n public isMyStuffOpen = false;\r\n public isOnLine = false;\r\n public isPhotoMgmt = false;\r\n public isPremium = false;\r\n public isProfilePics = false;\r\n public isReviewer = false;\r\n public isSingletap = true;\r\n public isSuperUser = false;\r\n public isTabletvar = false;\r\n public isValued = false;\r\n public isViewMember = false;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public message = '';\r\n public pagerBreadcrum : PagerBreadcrum = new PagerBreadcrum();\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n public signedInUserId = 0;\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n constructor (\r\n private commonServiceService: CommonServiceService,\r\n private router : Router)\r\n {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n this.isMyStuffClosedBool.isClosed = true; // so that the ui will be displayed\r\n }\r\n\r\n ngOnInit () : void\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0)\r\n {\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n // -------------------------------------------------------------------------\r\n // TODO: remove once the issue is resolved\r\n // NOTE: This is a temporary solution to an unsubscribe error\r\n // We do not emit loginSuccess upon successful login from the LoginComponent\r\n // We use this emitter to indicate that login is successful, and any subsequent\r\n // computation that are necessary upon successful login is carried out here.\r\n // --------------------------------------------------------------------------\r\n // EmitterSubjectService.clearMessageEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // this.message = '';\r\n // this.executeLoginSuccessTasks();\r\n // this.ngAfterViewInit();\r\n // } );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit ()\r\n {\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy ()\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public executeLoginSuccessTasks () : any\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n this.isAuthorized = this.loginSuccess.isAuthorized;\r\n this.isEmployee = this.loginSuccess.isEmployee;\r\n this.isMgmt = this.loginSuccess.isMgmt;\r\n this.isReviewer = this.loginSuccess.isReviewer;\r\n this.isSuperUser = this.loginSuccess.isSuperUser;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.isLoggedIn = this.loginSuccess.signedInUserId > 0 ? true : false;\r\n this.isOnLine = navigator.onLine;\r\n this.isValued = this.loginSuccess.isValued;\r\n this.isPremium = this.loginSuccess.isPremium;\r\n if ( this.loginSuccess.profileName.length === 0 && this.loginSuccess.email.length > 0)\r\n {\r\n this.loginSuccess.profileName = StringServiceStatic.getUserNameFromEmail(this.loginSuccess.email);\r\n }\r\n // debugger;\r\n\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n toggleIsClosed () : any\r\n {\r\n this.isMyStuffClosedBool.isClosed = !this.isMyStuffClosedBool.isClosed;\r\n // debugger;\r\n this.emitIsMyStuffOpen( this.isMyStuffClosedBool.isClosed );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n emitIsMyStuffOpen (value: any) : any\r\n {\r\n this.isMyStuffOpen = value;\r\n // debugger;\r\n EmitterSubjectService.emitIsMyStuffOpen( this.isMyStuffOpen );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n resetLoginSuccess () : any\r\n {\r\n this.isLoggedIn = false;\r\n this.isOnLine = false;\r\n this.isPremium = false;\r\n this.isValued = false;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess ) )\r\n {\r\n this.loginSuccess.action = '';\r\n this.loginSuccess.blogId = 0;\r\n this.loginSuccess.businessKey = '';\r\n this.loginSuccess.code = '';\r\n this.loginSuccess.controller = '';\r\n this.loginSuccess.email = '';\r\n this.loginSuccess.isAuthorized = this.isAuthorized = false;\r\n this.loginSuccess.isEmailConfirmed = false;\r\n this.loginSuccess.isEmployee = this.isEmployee = false;\r\n this.loginSuccess.isForgotPassword = false;\r\n this.loginSuccess.isMgmt = this.isMgmt = false;\r\n this.loginSuccess.isPic = false;\r\n this.loginSuccess.isPremium = this.isPremium = false;\r\n this.loginSuccess.isReviewer = this.isReviewer = false;\r\n this.loginSuccess.isSuperUser = this.isSuperUser = false;\r\n this.loginSuccess.imagePath = '';\r\n this.loginSuccess.iv = '';\r\n this.loginSuccess.message = '';\r\n this.loginSuccess.profileName = '';\r\n this.loginSuccess.id = 0;\r\n this.loginSuccess.likedArr = []; // who liked me\r\n this.loginSuccess.myBlockedArr = []; // whom I blocked\r\n this.loginSuccess.myBuddyArr = [];\r\n this.loginSuccess.myTrackedArr = []; // whom I tracked\r\n this.loginSuccess.myUnlockedArr = []; // from whom I unlocked\r\n this.loginSuccess.signedInUserId = 0;\r\n this.loginSuccess.signedInUserKey = '';\r\n this.loginSuccess.trackedArr = []; // who tracked me\r\n this.loginSuccess.unlockedArr = []; // who unlocked for me\r\n this.signedInUserId = 0;\r\n }\r\n this.ngAfterViewInit();\r\n return true;\r\n }\r\n // --------------------------------------------------------------\r\n // --------------------------------------------------------------\r\n public setRoute ( route : string, id : number ) : any\r\n {\r\n debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // let sitUser : any;\r\n \r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( route ) )\r\n {\r\n // start spinner:\r\n EmitterSubjectService.emitShowSpinner('Loading....');\r\n this.mcLoader = new ModuleComponentLoader();\r\n // this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.componentName = route;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n\r\n // Note: use the copyLoginSuccessToSitUser only in case of the MyStuff/MyProfile == signedInUserId. !important\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n switch ( route.toLowerCase() )\r\n {\r\n // case 'buddies':\r\n // case 'iblocked':\r\n // case 'myfriends':\r\n // case 'iliked':\r\n // case 'itracked':\r\n // case 'utracked':\r\n // case 'iwinked':\r\n // case 'uwinked':\r\n // // debugger;\r\n // this.mcLoader.moduleName = 'activitym';\r\n // break;\r\n case 'logout':\r\n this.resetLoginSuccess();\r\n this.signedInUserId = 0;\r\n this.isLoggedIn = false;\r\n this.mcLoader.moduleName = 'loginm';\r\n break;\r\n case 'membersIndividually': \r\n this.mcLoader.moduleName = 'memberm';\r\n break;\r\n case 'memberscroll':\r\n this.mcLoader.moduleName = 'memberscrollm';\r\n break;\r\n case 'memberview':\r\n this.loginSuccess.isEditProfile = false;\r\n EmitterSubjectService.emitIsEditProfile(false);\r\n this.isPhotoMgmt = false;\r\n EmitterSubjectService.emitIsPhotoMgmt(this.isPhotoMgmt);\r\n this.isViewMember = true;\r\n EmitterSubjectService.emitIsViewMember(this.isViewMember); \r\n\r\n this.mcLoader.moduleName = 'memberm';\r\n break;\r\n case 'memberedit':\r\n this.loginSuccess.isEditProfile = true;\r\n this.loginSuccess.isProfileInfoComplete = false;\r\n this.loginSuccess.isProfileContentComplete = false;\r\n this.loginSuccess.isPreferenceComplete = false;\r\n // EmitterSubjectService.setLoginSuccess( this.loginSuccess );\r\n EmitterSubjectService.emitIsEditProfile( true );\r\n this.mcLoader.moduleName = 'profilem';\r\n break;\r\n case 'myphotos':\r\n EmitterSubjectService.emitIsPhotoMgmt( true );\r\n EmitterSubjectService.emitIsViewMember( true );\r\n this.mcLoader.moduleName = 'memberm';\r\n break;\r\n\r\n //case 'mychats':\r\n // this.mcLoader.moduleName = 'chatm';\r\n // break;\r\n //case 'myemails':\r\n //case 'myenotes':\r\n //case 'viewemail':\r\n //case 'viewenote':\r\n //case 'composeemail':\r\n //case 'composeenote':\r\n // this.mcLoader.moduleName = 'communicationm';\r\n // break;\r\n //case 'about':\r\n //case 'contactus':\r\n //case 'notfound':\r\n //case 'privacy':\r\n //case 'terms':\r\n // this.mcLoader.moduleName = 'publicm';\r\n // break;\r\n //case 'login':\r\n // this.mcLoader.moduleName = 'loginm';\r\n // // alert('in navbarComponent->setRoute()-> emitting loadModule for: ' + this.mcLoader.componentName);\r\n\r\n // break;\r\n \r\n //case 'register':\r\n //case 'prescreen':\r\n // this.mcLoader.moduleName = 'registerm';\r\n // // alert('in navbarComponent->setRoute()-> emitting loadModule for: ' + this.mcLoader.componentName);\r\n\r\n // break;\r\n //case 'animation':\r\n //case 'boxnoncetest':\r\n //case 'errorlog':\r\n //case 'gesturetest':\r\n //case 'imageresizer':\r\n // this.mcLoader.moduleName = 'staffm';\r\n // break;\r\n default:\r\n // debugger;\r\n this.mcLoader.componentName = 'index';\r\n this.mcLoader.moduleName = 'app';\r\n break;\r\n }\r\n }\r\n else\r\n {\r\n this.mcLoader.componentName = 'index';\r\n this.mcLoader.moduleName = 'app';\r\n }\r\n let returnUrl = window.location.href;\r\n this.mcLoader.returnUrl = returnUrl;\r\n EmitterSubjectService.setReturnUrl(returnUrl);\r\n let pagerBrdCrm : any;\r\n // debugger;\r\n this.mcLoader.router = this.router;\r\n // this.mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(this.mcLoader);\r\n this.redirectionService.setRoute(this.mcLoader.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n pagerBrdCrm = data;\r\n });\r\n \r\n //debugger;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n}\r\n","\r\n\r\n\r\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { MessageModel } from '../../../models/common/messageModel.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { PhotoMgmtAction } from '../../../models/common/photoMgmtAction.model';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { Pager } from '../../../models/pagination/pager.model';\r\nimport { PagerPhotoMgmt } from '../../../models/pagination/pagerPhotoMgmt.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { SitUserService } from '../../../services/commonServiceService/sitUserService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { TimerService } from '../../../services/coreServiceService/timerService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { DomUtilsServiceStatic } from '../../../services/staticServices/domUtilsServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n@Component({\r\n selector: 'app-nav-header',\r\n templateUrl: './navHeader.component.html',\r\n styleUrls: [ './navHeader.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NavHeaderComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public bias! : BackgroundImageAnimationService;\r\n public redirectionService! : RedirectionService;\r\n public rendererService! : RendererService;\r\n public renderer! : Renderer2;\r\n public sitUserService! : SitUserService;\r\n // public spinnerOverlayService! : SpinnerOverlayService;\r\n public timerService! : TimerService;\r\n // ------------------------------------------\r\n public breadcrumRing : ModuleComponentLoader[] = [];\r\n public breadCrmRngLength = 0;\r\n public deviceInfo : any;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public intervalMsg : any;\r\n public isBusy = false;\r\n public isHome = false;\r\n public isLoggedIn = false;\r\n public isMobilevar = false;\r\n public isModal = false;\r\n public isMouseIn = false;\r\n public isOnScroll = false;\r\n public index = -1;\r\n public isOnLine = false;\r\n public isPhotoMgmt = false;\r\n public isSpinner = false;\r\n public isSuccess = true;\r\n public isViewMember = false;\r\n @Input() loginSuccess : LoginSuccess = new LoginSuccess();\r\n public messageCounter = 0;\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public mcLoaderRouter : any;\r\n // @Input() message : any = '';\r\n public messageModel : MessageModel = new MessageModel();\r\n public pageNo = 0;\r\n public pageTitle = '';\r\n public pagerV : Pager = new Pager();\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public pagerPhotoMgmt : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public photoMgmtAction : PhotoMgmtAction = new PhotoMgmtAction();\r\n public signedInUserId = 0;\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n public tempElem : any;\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n public document ! : Document;\r\n public window ! : Window;\r\n // public scrollY$! : Observable;\r\n\r\n // @HostListener( 'window:scroll' ) onScroll ( e : Event ) : void\r\n // {\r\n // ScrollTopServiceStatic.scrollY.next( this.getYPosition( e ) );\r\n // }\r\n\r\n constructor ( private cdr : ChangeDetectorRef,\r\n private commonServiceService : CommonServiceService,\r\n private coreServiceService : CoreServiceService,\r\n private navHeaderElementRef : ElementRef,\r\n /*private modalServiceService : ModalServiceService,*/\r\n private rendererServiceService: RendererServiceService,\r\n private router : Router,\r\n @Inject( DOCUMENT ) Document : Document,\r\n @Inject( Window ) Window : Window\r\n )\r\n {\r\n this.document = Document;\r\n this.window = Window;\r\n\r\n // debugger;\r\n // -----------------------------------------------------------------\r\n if ( this.commonServiceService )\r\n {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n this.sitUserService = this.commonServiceService.getSitUserService() as SitUserService;\r\n }\r\n // -----------------------------------------------------------------\r\n if ( this.coreServiceService )\r\n {\r\n this.timerService = this.coreServiceService.getTimerService();\r\n }\r\n // if (this.modalServiceService) {\r\n // this.spinnerOverlayService = this.modalServiceService.getSpinnerOverlayService();\r\n // }\r\n // -----------------------------------------------------------------\r\n if (this.rendererServiceService) {\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n this.rendererService = this.rendererServiceService.getRendererService() as RendererService;\r\n }\r\n this.renderer = this.rendererService.getRenderer();\r\n // -----------------------------------------------------------------\r\n\r\n // this.breadcrumRing = BreadcrumServiceStatic.getRing();\r\n // this.pagerBrdCrm = BreadcrumServiceStatic.getPagerBreadcrum();\r\n // debugger;\r\n // this.scrollY$ = ScrollTopServiceStatic.scrollY$;\r\n }\r\n\r\n ngOnInit () : void\r\n {\r\n // this.getOnScroll();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // -------------------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.setElementRef( this.navHeaderElementRef );\r\n // -------------------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n } );\r\n\r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.displayPrimaryImageEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n //{\r\n // // debugger;\r\n // this.ngAfterViewInit();\r\n // this.bias.setSignedInUserBackgroundImage();\r\n //} );\r\n\r\n //// -------------------------------------------------------------------------\r\n //EmitterSubjectService.updatePrimaryImageEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n //{\r\n // // debugger;\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n // if (\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result )\r\n // && result instanceof KvPhoto\r\n // && this.sitUser.sitUserId === this.loginSuccess.signedInUserId // has to be signedInUSer\r\n // && this.sitUser.primaryPhotoBnId === result.photoId // new kvPhotoId must be aligned with single-point-of-truth\r\n // && result.photoId !== this.loginSuccess.primaryPhotoBnId // loginsSuccess's primaryPhotoBnId must be different than single-point-of-truth\r\n // )\r\n // {\r\n // this.loginSuccess.primaryImage = JsRegExpServiceStatic.normalizeImageData( result.value );\r\n // this.loginSuccess.primaryPhotoBnId = result.photoId;\r\n // EmitterSubjectService.setLoginSuccess( this.loginSuccess );\r\n // }\r\n // this.bias.setSignedInUserBackgroundImage();\r\n //} );\r\n // -------------------------------------------------------------------------\r\n // EmitterSubjectService.messageEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$ ) )\r\n // .subscribe( ( result: any ) =>\r\n // {\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n // {\r\n // if (result instanceof MessageModel) {\r\n // this.isSpinner = result.isSpinner;\r\n // this.messageModel = result;\r\n // debugger;\r\n // }\r\n // else if (typeof result === 'string') {\r\n // debugger;\r\n // this.messageModel.message = result as string;\r\n // }\r\n // this.spinnerOverlayService.hide(false); // isOpen == false\r\n // // debugger;;\r\n // }\r\n // } );\r\n //// -------------------------------------------------------------------------\r\n // -------------------------------------------------------------------------\r\n \r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isHomeEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n this.isHome = result;\r\n this.routeToHomePage();\r\n\r\n } );\r\n // -------------------------------------------------------------------------\r\n // TODO: remove before deployment:\r\n // --------------------------------------------------------------------------\r\n // EmitterSubjectService.runNgAfterViewInitEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // debugger;\r\n // this.ngAfterViewInit();\r\n // });\r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.isPhotoMgmtEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n //{\r\n // // debugger;\r\n // this.isPhotoMgmt = result as boolean;\r\n // if ( this.isPhotoMgmt === true )\r\n // {\r\n // // debugger;\r\n // this.isViewMember = false;\r\n // }\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n //} );\r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.isViewMemberEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n //{\r\n // // debugger;\r\n // this.isViewMember = result as boolean;\r\n // if ( this.isViewMember === true ) { this.isPhotoMgmt = false; }\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // });\r\n // --------------------------------------------------------------\r\n // parent provides data to the child, hence profileImages listener\r\n // is at the parent component. childComponent=PagerPhotoNavComponent\r\n // Note: This is a part of the PhotoNav-System.\r\n // --------------------------------------------------------------\r\n //EmitterSubjectService.profileImagesEmitter\r\n //.pipe(takeUntil(this.emitterDestroyed$))\r\n //.subscribe(data => { // data:string[]; will lisen to photoMgmgtComponent\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0) {\r\n // // debugger;\r\n // this.kvPhotoArr = data;\r\n // this.isViewMember = true;\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // // this.ngAfterViewInit();\r\n // }\r\n //});\r\n // -------------------------------------------------------------------------\r\n // Note: without this some children's images do not get rendered!!\r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.runNgAfterViewInitEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((result) => {\r\n // // debugger;\r\n // this.ngAfterViewInit();\r\n // });\r\n // -------------------------------------------------------------------------\r\n // TODO: remove once the issue is resolved\r\n // NOTE: This is a temporary solution to an unsubscribe error\r\n // We do not emit loginSuccess upon successful login from the LoginComponent\r\n // We use this emitter to indicate that login is successful, and any subsequent\r\n // computation that are necessary upon successful login is carried out here.\r\n // --------------------------------------------------------------------------\r\n // EmitterSubjectService.clearMessageEmitter.subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // this.executeLoginSuccessTasks();\r\n // } );\r\n // -------------------------------------------------------------------------\r\n // EmitterSubjectService.clearPageTitleEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // this.clearPageTitle();\r\n // } );\r\n // --------------------------------Completed on 2021/03/15-------------------\r\n // EmitterSubjectService.userAndPageTitleEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n // {\r\n // this.clearPageTitle();\r\n\r\n // this.userAndPageTitle = result as UserAndPageTitle;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.userAndPageTitle ) )\r\n // {\r\n // if ( this.userAndPageTitle.sitUserId > 0 )\r\n // {\r\n // this.sitUser.sitUserId = this.userAndPageTitle.sitUserId;\r\n // }\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.userAndPageTitle.pageTitle ) && this.userAndPageTitle.pageTitle.length > 0 )\r\n // {\r\n // this.pageTitle = this.userAndPageTitle.pageTitle;\r\n // // debugger;\r\n // if ( !this.userAndPageTitle.isPrepared )\r\n // {\r\n // this.pageTitle = StringServiceStatic.preparePageTitle( this.userAndPageTitle.pageTitle );\r\n // // debugger;\r\n // }\r\n // }\r\n // }\r\n // // debugger;\r\n // this.ngAfterViewInit();\r\n // }\r\n // } );\r\n // -----------------------------------------------------------------\r\n // EmitterSubjectService.pagerBreadcrumEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // this.pagerBrdCrm = result as PagerBreadcrum;\r\n // this.breadCrmRngLength = this.setBreadCrumRingLength( this.pagerBrdCrm );\r\n // } );\r\n // -----------------------------------------------------------------\r\n // Note: This emitter is to be used by any component that has a cancel-button.\r\n // Because once cancelled, the user should go back to the previous page (if that is the desired behavior)\r\n // EmitterSubjectService.setBreadcrumPageEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // this.setBreadcrumPage( result );\r\n // } );\r\n // -------------------------------------------------------------------------\r\n // TODO: see if it is needed?\r\n // --------------------------------------------------------------------------\r\n // EmitterSubjectService.sitUserEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // this.sitUser = result as SitUser;\r\n // this.ngAfterViewInit();\r\n // } );\r\n // ------------------------------------------------------------------\r\n // debugger;\r\n\r\n // this.breadCrmRngLength = this.setBreadCrumRingLength(this.pagerBrdCrm);\r\n // -------------------------------------------------------------------------\r\n // EmitterSubjectService.runNgAfterViewInitEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // debugger;\r\n // this.ngAfterViewInit();\r\n // } );\r\n // -----------------------------------------------------------------\r\n // EmitterSubjectService.profileImagesEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( data =>\r\n // { // data:string[]; will lisen to photoMgmgtComponent\r\n // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( data ) && data.length > 0 )\r\n // {\r\n // // debugger;\r\n // this.kvPhotoArr = data as KvPhoto[];\r\n // debugger;\r\n // // ------------------------------------------------------------------------------------------\r\n // // Note: if value==/*/*.png such as '/photos/DefaultImageImoji.png' we do not prepend 'url('\r\n // // ------------------------------------------------------------------------------------------\r\n // for ( let i = 0; i < this.kvPhotoArr.length; i++ )\r\n // { \r\n // this.kvPhotoArr[ i ].value = JsRegExpServiceStatic.stripUrlForImageData( this.kvPhotoArr[ i ].value);\r\n // }\r\n // // debugger;\r\n // // EmitterSubjectService.emitCurrentPage( this.kvPhotoArr[ this.kvPhotoArr.length - 1 ] );\r\n // // EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n\r\n // this.ngAfterViewInit();\r\n // }\r\n // } );\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.logoutEmitter.subscribe((result) => {\r\n // debugger;\r\n if (result) {\r\n this.loginSuccess = new LoginSuccess().resetThat(this.loginSuccess);\r\n this.ngAfterViewInit();\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit () : any\r\n {\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n }\r\n // ---------------------------------------------------------------\r\n //clearPageTitle () : any\r\n //{\r\n // this.userAndPageTitle = new UserAndPageTitle();\r\n // this.pageTitle = '';\r\n // this.ngAfterViewInit();\r\n // // debugger;\r\n // return true;\r\n\r\n //}\r\n // ----------------------------------------------------------------\r\n executeLoginSuccessTasks ()\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess(); // JSON.parse(JSON.stringify(result));\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n //this.tempElem = this.getNavHeaderElementById( 'primaryPhotoBnId' );\r\n //this.setPrimaryImage( 'primaryPhotoBnId', this.tempElem );\r\n }\r\n // ----------------------------------------------------------------\r\n getNavHeaderElementById (id:string) : any\r\n {\r\n this.tempElem = document.getElementById( id );\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.tempElem ) )\r\n {\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.navHeaderElementRef ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.navHeaderElementRef.nativeElement ) )\r\n {\r\n this.tempElem = this.navHeaderElementRef.nativeElement.querySelector( id );\r\n }\r\n }\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.tempElem ) )\r\n {\r\n this.tempElem = this.navHeaderElementRef.nativeElement.querySelector( '#' + id );\r\n }\r\n // debugger;\r\n this.tempElem.remove();\r\n return this.tempElem;\r\n }\r\n //// -----------------------------------------------------------------\r\n //public setPrimaryImage (id : string, elem : HTMLElement) : any {\r\n // // debugger;\r\n // let imageData : any;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess(); // get the latest loginSuccess value\r\n // if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n // && this.loginSuccess.signedInUserId > 0)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryImage)) {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n // imageData = JsRegExpServiceStatic.normalizeImageData(this.loginSuccess.primaryImage); // test-2\r\n\r\n // // Case-1:(setting background-image)\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n // // debugger\r\n // this.renderer?.setStyle(elem, 'background-image', imageData);\r\n // }\r\n // /*\r\n // * this.renderer?.setStyle(pElem, 'transform', 'rotate(-45deg)');\r\n // * debugger;\r\n // */\r\n // // EmitterSubjectService.emitRunNgAfterViewInit( true );\r\n // // debugger;\r\n // }\r\n // }\r\n // }\r\n // return true;\r\n //}\r\n // -----------------------------------------------------------------\r\n // getYPosition ( e : Event ) : number\r\n // {\r\n // this.isOnScroll = true;\r\n // debugger;\r\n // return ( e.target as Element ).scrollTop;\r\n // }\r\n // ----------------------------------------------------------------\r\n getOnScroll ()\r\n {\r\n // debugger;\r\n // TODO: Test\r\n const pageContentWrapper = DomUtilsServiceStatic.getElementById('page-content-wrapper'); // this.getNavHeaderElementById( 'page-content-wrapper' );\r\n\r\n pageContentWrapper.onscroll = this.logScroll;\r\n pageContentWrapper.remove();\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n logScroll ( e: Event )\r\n {\r\n this.isOnScroll = true;\r\n // debugger;\r\n } \r\n // ---------------------------------------------------------------\r\n routeToHomePage () : any\r\n {\r\n this.redirectionService.setRoute(this.router, 'index', 0).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n return this.pagerBrdCrm;\r\n }\r\n // ---------------------------------------------------------------\r\n routeToMembersPage () : any\r\n {\r\n this.redirectionService.setRoute(this.router, 'memberscroll', this.loginSuccess.signedInUserId).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n return this.pagerBrdCrm;\r\n }\r\n //// ---------------------------------------------------------------------------\r\n //setBreadCrumRingLength (pagerBrdCrm : PagerBreadcrum) : any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerBrdCrm)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerBrdCrm.breadcrumRing)\r\n // && this.pagerBrdCrm?.breadcrumRing?.length > 0) {\r\n // this.breadCrmRngLength = pagerBrdCrm?.breadcrumRing?.length;\r\n // }\r\n // else this.breadCrmRngLength = 0;\r\n\r\n // return this.breadCrmRngLength;\r\n //}\r\n //// ------------------------Completed on 2021/04/---------------------------------------\r\n //setBreadcrumPage ( direction : string ) : any\r\n //{\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( direction ) )\r\n // {\r\n // this.pagerBrdCrm = BreadcrumServiceStatic.setBreadcrumPage( direction, this.router );\r\n // this.breadCrmRngLength = this.setBreadCrumRingLength( this.pagerBrdCrm );\r\n // }\r\n // return true;\r\n //}\r\n\r\n // --------------------------------------------------------------\r\n public setRoute ( route : string, id : number ) : void\r\n {\r\n debugger;\r\n this.redirectionService.setRoute(this.router, route, id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\r\n }\r\n // ---------------------------------------------------------------------------------\r\n //public viewMyProfile () : any\r\n //{\r\n // EmitterSubjectService.emitStartSpinner('Loading......');\r\n // this.mcLoaderRouter = new ModuleComponentRouter( this.router );\r\n // // debugger;\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.sitUser.sitUserId === this.loginSuccess.signedInUserId) {\r\n // this.isPhotoMgmt = true;\r\n // EmitterSubjectService.emitIsPhotoMgmt(this.isPhotoMgmt);\r\n // }\r\n // else {\r\n // this.isViewMember = true;\r\n // EmitterSubjectService.emitIsViewMember(this.isViewMember);\r\n // }\r\n // }\r\n\r\n // OR\r\n // EmitterSubjectService.emitIsPhotoMgmt( false );\r\n\r\n // EmitterSubjectService.emitIsViewMember( true );\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // this.mcLoaderRouter.router = this.router;\r\n // this.mcLoaderRouter.moduleName = this.mcLoader.moduleName = 'memberm';\r\n // this.mcLoaderRouter.componentName = this.mcLoader.componentName = 'memberView';\r\n // this.mcLoaderRouter.sitUserId = this.mcLoader.sitUserId = this.loginSuccess.signedInUserId;\r\n\r\n // this.pagerBrdCrm = RedirectionServiceStatic.fireMcLoaderRoute(this.mcLoaderRouter, this.router);\r\n\r\n // this.bias.setSignedInUserBackgroundImage();\r\n\r\n // let returnUrl = EmitterSubjectService.getReturnUrl();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // }\r\n\r\n //// -------------------------------------------------//\r\n //// Back-to-Back-memberView-pges-recognition-system: //\r\n //// -------------------------------------------------//\r\n //let prevPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 2 ];\r\n //let currentPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 1 ];\r\n //let prevPageComponentName = prevPage.componentName;\r\n //let currentPageComponentName = currentPage.componentName;\r\n //if (\r\n // (currentPageComponentName.toLowerCase().indexOf('myphotos') !== -1 // if current page is myPhotos\r\n // && prevPageComponentName.toLowerCase().indexOf('memberview') !== -1) // and if previous page was memberView\r\n // ||\r\n // (currentPageComponentName.toLowerCase().indexOf('memberview') !== -1 // if current page is memberView\r\n // && prevPageComponentName.toLowerCase().indexOf('myphotos') !== -1) // and if previous page was myPhotos\r\n // ||\r\n // (currentPageComponentName.toLowerCase().indexOf('memberview') !== -1 // if current page is my memberView ( can happen if top-right-profileImage is clicked )\r\n // && prevPageComponentName.toLowerCase().indexOf('memberview') !== -1\r\n // && prevPage.sitUserId == currentPage.sitUserId\r\n // && currentPage.sitUserId === this.loginSuccess.signedInUserId) // and if previous page was my memberView ( can happen if top-right-profileImage is clicked )\r\n //) {\r\n // // debugger;\r\n // ; //do nothing \r\n //}\r\n //else {\r\n // // debugger;\r\n // EmitterSubjectService.emitClearPagerPhotoNavData(true);\r\n //}\r\n //return true;\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { ModalModel } from '../../../models/common/modalModel.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { Pager } from '../../../models/pagination/pager.model';\r\nimport { GlyphiconMenuService } from '../../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { GlyphiconServiceService } from '../../../services/GlyphiconService/glyphiconServiceService.service';\r\nimport { AppServiceService } from '../../../services/appServiceService/appServiceService.service';\r\nimport { BreakPointObserverService } from '../../../services/appServiceService/breakPointObserverService.service';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { CheckConnectionService } from '../../../services/coreServiceService/checkConnectionService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { LogRegService } from '../../../services/coreServiceService/logRegService.service';\r\nimport { DbServiceService } from '../../../services/dbServiceService/dbServiceService.service';\r\nimport { DictionaryService } from '../../../services/dictionaryServiceService/dictionaryService.service';\r\nimport { DictionaryServiceService } from '../../../services/dictionaryServiceService/dictionaryServiceService.service';\r\nimport { PagerService } from '../../../services/pagerServiceService/pagerService.service';\r\nimport { PagerServiceService } from '../../../services/pagerServiceService/pagerServiceService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { HammerServiceStatic } from '../../../services/staticServices/commonStaticServices/hammerServiceStatic.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../../../services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n@Component({\r\n selector: 'app-nav-sidebar',\r\n templateUrl: './navSidebar.component.html',\r\n styleUrls: ['./navSidebar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //OnPush\r\n})\r\nexport class NavSidebarComponent implements OnInit, AfterViewInit, OnDestroy {\r\n public bias ! : BackgroundImageAnimationService;\r\n public breakpointObserverService!: BreakPointObserverService;\r\n public checkConnectionService! : CheckConnectionService;\r\n public dictionaryService! : DictionaryService;\r\n public glyphiconMenuService! : GlyphiconMenuService;\r\n public pagerService! : PagerService;\r\n public redirectionService! : RedirectionService;\r\n public rendererService!: RendererService;\r\n public renderer!: Renderer2;\r\n // ------------------------------------------\r\n public buddyCount = 0;\r\n public current: any;\r\n public currentRoute = '';\r\n public defaultPics: string[] = [];\r\n public deviceInfo = null;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public friendCount = 0;\r\n public gestureDivId = '';\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isPhotoMgmt = false;\r\n public isSingletap = true;\r\n public isTabletvar = false;\r\n public isDesktopvar = false;\r\n public isAuthorized = false;\r\n public isEmployee = false;\r\n public isMgmt = false;\r\n public isLoggedIn = false;\r\n public isLoginTasksExecuted = false;\r\n public isMouseIn = false;\r\n public isPremium = false;\r\n public isProfilePics = false;\r\n public isReviewer = false;\r\n public isSuperUser = false;\r\n public isValued = false;\r\n @Input() loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public message = '';\r\n public messages: string[] = [];\r\n public modalModel: ModalModel = new ModalModel();\r\n public pager : Pager = new Pager();\r\n public pagerBreadcrum : PagerBreadcrum = new PagerBreadcrum();\r\n public pagerV: Pager = new Pager();\r\n public pages: string[] = [];\r\n public returnUrl = '';\r\n @Input() signedInUserId = 0;\r\n public tempElem: any;\r\n public title = 'Slakez';\r\n public width = 0;\r\n public height = 0;\r\n constructor(\r\n private route : ActivatedRoute,\r\n public router: Router,\r\n public cdr: ChangeDetectorRef,\r\n private appServiceService : AppServiceService,\r\n private commonServiceService: CommonServiceService,\r\n private coreServiceService : CoreServiceService,\r\n private dbServiceService : DbServiceService,\r\n private dictionaryServiceService : DictionaryServiceService,\r\n private glyphiconServiceService : GlyphiconServiceService,\r\n private logRegService : LogRegService,\r\n private pagerServiceService: PagerServiceService,\r\n private rendererServiceService: RendererServiceService,\r\n private window: Window,\r\n ) {\r\n this.loginSuccess = new LoginSuccess();\r\n this.isAuthorized = false;\r\n this.isEmployee = false;\r\n this.isMgmt = false;\r\n this.signedInUserId = 0;\r\n // if (this.appServiceService) {\r\n // this.breakpointObserverService = this.appServiceService.getBreakPointObserverService();\r\n // }\r\n if (this.coreServiceService) {\r\n this.checkConnectionService = this.coreServiceService.getCheckConnectionService();\r\n }\r\n if (this.dictionaryServiceService) {\r\n this.dictionaryService = this.dictionaryServiceService.getDictionaryService();\r\n }\r\n if ( this.pagerServiceService )\r\n {\r\n this.pagerService = this.pagerServiceService.getPagerService();\r\n }\r\n this.glyphiconMenuService = this.glyphiconServiceService.getGlyphiconMenuService() as GlyphiconMenuService;\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n // -----------------------------------------------------------------\r\n if (this.rendererServiceService) {\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n this.rendererService = this.rendererServiceService.getRendererService() as RendererService;\r\n if (this.rendererService) {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n } \r\n // -----------------------------------------------------------------\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n || this.loginSuccess.signedInUserId === 0)\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n this.executeLoginSuccessTasks();\r\n }\r\n if ( this.glyphiconMenuService )\r\n {\r\n this.pagerV = this.glyphiconMenuService.setKvGlyphPager( 1 );\r\n }\r\n // -----------------------------------------------------------------\r\n\r\n this.isOnLine = this.checkConnectionService.isOnline();\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.isOnLine ) )\r\n {\r\n this.isOnLine = false;\r\n }\r\n this.returnUrl = window.location.pathname + window.location.search;\r\n // -----------------------------------------------------------------\r\n }\r\n\r\n ngOnInit () : void\r\n {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.executeLoginSuccessTasks();\r\n // debugger;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // -------------------------------------------------------------------------\r\n // TODO: remove once the issue is resolved\r\n // NOTE: This is a temporary solution to an unsubscribe error\r\n // We do not emit loginSuccess upon successful login from the LoginComponent\r\n // We use this emitter to indicate that login is successful, and any subsequent\r\n // computation that are necessary upon successful login is carried out here.\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.clearMessageEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n this.message = '';\r\n this.ngAfterViewInit();\r\n } );\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n this.isLoggedIn = true;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isLoginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n });\r\n // --------------------------------------------------------------------------\r\n //EmitterSubjectService.logoutEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // debugger;\r\n // this.loginSuccess = new LoginSuccess().resetThat(this.loginSuccess);\r\n // EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n // EmitterSubjectService.emitLogout(this.loginSuccess);\r\n // this.logRegService.executeLogoutSuccessTasks();\r\n // this.signedInUserId = 0;\r\n // debugger;\r\n // this.isLoggedIn = false;\r\n // this.ngAfterViewInit();\r\n // });\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.localStorageLoginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n\r\n // debugger;\r\n this.executeLoginSuccessTasks();\r\n this.isLoginTasksExecuted = false;\r\n });\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.centerCoordinatesEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // this.centerCoordinates = result;\r\n this.isLoginTasksExecuted = false;\r\n });\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.isMobilevar = result as boolean;\r\n this.isDesktopvar = !this.isMobilevar;\r\n // this.breakpointObserverService.breakpointObserving();\r\n // const hw = this.breakpointObserverService.determineHeightWidth();\r\n\r\n // this.width = hw.height;\r\n // this.height = hw.weight;\r\n this.isLoginTasksExecuted = false;\r\n });\r\n // --------------------------------------------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) || this.loginSuccess.signedInUserId === 0) {\r\n // debugger;\r\n // EmitterSubjectService.emitCheckLocalStorageForLoginSuccess(true);\r\n this.isLoginTasksExecuted = false;\r\n }\r\n // --------------------------------------------------------------------------\r\n // Note: We are using upgradedEmitter to emit LoginSuccess because emitting\r\n // loginSuccess causes some errors.\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.upgradedEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n debugger;\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n debugger;\r\n this.isLoggedIn = true;\r\n this.executeLoginSuccessTasks();\r\n this.ngAfterViewInit();\r\n });\r\n // --------------------------------------------------------------------------\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit () {\r\n this.cdr.detectChanges();\r\n // debugger;\r\n this.getCounts();\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.executeLoginSuccessTasks();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess.signedInUserId ) && this.loginSuccess.signedInUserId > 0 )\r\n {\r\n // debugger;\r\n this.isLoggedIn = true;\r\n }\r\n else\r\n {\r\n // debugger;\r\n this.isLoggedIn = false;\r\n }\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n /*\r\n * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n * (2) https:// www.concretepage.com/angular-2/angular-4-renderer2-example\r\n * (3) https:// stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n * (4) https:// stackblitz.com/edit/timer-with-pdestroyed\r\n */\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ----------------------------------------------------- \r\n // Login-Register-Nav-Header-Buttons-Management-System:\r\n // -----------------------------------------------------\r\n emitLoginButtonRenderedMsg () {\r\n // EmitterSubjectService.emitMessage('Render-Login-Button');\r\n }\r\n // ---------------------------------------------------------------\r\n emitRegisterButtonRenderedMsg () {\r\n // EmitterSubjectService.emitMessage('Render-Register-Button');\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public executeLoginSuccessTasks () : any\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n this.isAuthorized = this.loginSuccess.isAuthorized;\r\n this.isEmployee = this.loginSuccess.isEmployee;\r\n this.isLoggedIn = this.loginSuccess.signedInUserId > 0 ? true : false;\r\n this.isMgmt = this.loginSuccess.isMgmt;\r\n this.isOnLine = navigator.onLine;\r\n this.isPremium = this.loginSuccess.isPremium;\r\n this.isReviewer = this.loginSuccess.isReviewer;\r\n this.isSuperUser = this.loginSuccess.isSuperUser;\r\n this.isValued = this.loginSuccess.isValued;\r\n // debugger;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n\r\n return true;\r\n }\r\n // --------------------------------------------------------------\r\n public executeLogoutSuccessTasks () {\r\n // debugger;\r\n this.loginSuccess = new LoginSuccess();\r\n // debugger;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n EmitterSubjectService.setIsLoggedOutByUser(true);\r\n this.isAuthorized = false;\r\n this.isEmployee = false;\r\n this.isLoggedIn = false;\r\n this.isMgmt = false;\r\n this.isPremium = false;\r\n this.isReviewer = false;\r\n this.isSuperUser = false;\r\n this.isValued = false;\r\n this.signedInUserId = 0;\r\n // debugger;\r\n \r\n this.mcLoader.componentName = 'logout';\r\n this.mcLoader.moduleName = 'loginm';\r\n this.mcLoader.router = this.router;\r\n // this.ngAfterViewInit();\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, 0).subscribe(data => {\r\n this.pagerBreadcrum = data;\r\n });\r\n }\r\n // --------------------------------------------------------------\r\n public getCounts () : void\r\n {\r\n // debugger;\r\n this.buddyCount = this.dictionaryService.buddyDictionary.size;\r\n this.friendCount = this.dictionaryService.myFriendDictionary.size;\r\n }\r\n // --------------------------------------------------------------\r\n setupForEditProfile (route : string) : void {\r\n if (route.toLowerCase().indexOf('memberedit') !== -1) {\r\n // debugger;\r\n this.loginSuccess.isEditProfile = true;\r\n this.loginSuccess.isProfileInfoComplete = false;\r\n this.loginSuccess.isProfileContentComplete = false;\r\n this.loginSuccess.isPreferenceComplete = false;\r\n EmitterSubjectService.emitIsEditProfile(true);\r\n }\r\n\t}\r\n // --------------------------------------------------------------\r\n public setRouteBreadCrum (route : string, id : number) : void {\r\n // debugger;\r\n this.setupForEditProfile(route);\r\n this.redirectionService.setRouteforSignedInUser(this.router, route, id).then(data => {\r\n this.pagerBreadcrum = data;\r\n });\r\n\r\n }\r\n // --------------------------------------------------------------\r\n public setRoute ( route : string, id : number ) : any\r\n {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.mcLoader = new ModuleComponentLoader();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(route))\r\n {\r\n this.mcLoader.componentName = route;\r\n this.mcLoader.id = id;\r\n this.mcLoader.router = this.router;\r\n this.mcLoader.returnUrl = window.location.pathname + window.location.search;\r\n\r\n switch (route.toLowerCase()) { \r\n case 'login':\r\n this.emitLoginButtonRenderedMsg();\r\n break;\r\n case 'logout':\r\n // debugger;\r\n this.executeLogoutSuccessTasks();\r\n break;\r\n //case 'signup':\r\n // this.emitRegisterButtonRenderedMsg();\r\n // break;\r\n case \"memberedit\":\r\n this.setupForEditProfile(route);\r\n break;\r\n case 'myphotomgmt':\r\n EmitterSubjectService.emitIsPhotoMgmt(true);\r\n EmitterSubjectService.emitIsShowPhotoUpload(true);\r\n EmitterSubjectService.setIsMyProfile(false);\r\n // debugger;\r\n break;\r\n case 'myprofileviewmgmt':\r\n EmitterSubjectService.setIsPhotoMgmt(false);\r\n EmitterSubjectService.setIsShowPhotoUpload(false);\r\n return this.viewMyProfile();\r\n // debugger;\r\n // break;\r\n default:\r\n ;// do nothing\r\n break;\r\n }\r\n // this.mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(this.mcLoader);\r\n // debugger;\r\n // this.router.navigateByUrl(this.mcLoader.url);\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n // debugger;\r\n this.pagerBreadcrum = data;\r\n return true;\r\n });\r\n\r\n EmitterSubjectService.emitCloseSidebar(true);\r\n EmitterSubjectService.emitIsSidebarOpen(false);\r\n\r\n \r\n }\r\n else {\r\n this.redirectionService.routeToHomePage(this.router).subscribe(data => {\r\n this.pagerBreadcrum = data;\r\n // debugger;\r\n return true;\r\n });\r\n EmitterSubjectService.emitCloseSidebar(true);\r\n EmitterSubjectService.emitIsSidebarOpen(false);\r\n\t\t}\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public viewMyProfile () : any {\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.router = this.router;\r\n this.mcLoader.moduleName = this.mcLoader.moduleName = 'mym';\r\n this.mcLoader.componentName = this.mcLoader.componentName = 'myProfileViewMgmt';\r\n // debugger;\r\n //this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n //}\r\n this.mcLoader.returnUrl = this.redirectionService.getUrlAddress();\r\n // debugger;\r\n EmitterSubjectService.setMCLoader(this.mcLoader);\r\n // -----------------------------------------------\r\n // NOTE: we do not want to run the executeProfileImagesTasks() in appComponent/avatarComponent\r\n // until the page switches to the myProfileViewMgmt page!!\r\n // Instead set the necessary variables on the EmitterSubjectService.\r\n // ----------------------------------------------------------------------------\r\n EmitterSubjectService.emitIsMyProfile(true);\r\n // -----------------------------------------------\r\n // ----------------------------------------------------------------------------\r\n // this.mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(this.mcLoader);\r\n this.redirectionService.setRoute(this.mcLoader.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBreadcrum = data;\r\n });\r\n \r\n // ----------\r\n //debugger;\r\n \r\n //// debugger;\r\n //this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n //this.redirectionService.setRoute(this.router, 'myProfileViewMgmt', this.loginSuccess.signedInUserId).subscribe(data => {\r\n // this.pagerBreadcrum = data;\r\n\r\n // debugger;\r\n // EmitterSubjectService.emitIsMyProfile(true);\r\n // return true;\r\n //});\r\n return true;\r\n }\r\n // --------------------------------------------------------------\r\n // Begin of hammer/gesture recognition methods:\r\n // --------------------------------------------------------------\r\n onSwipe (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n // debugger;\r\n HammerServiceStatic.hammeredElement('navbarComponentId', event, this.router);\r\n }\r\n onSwipeLeft (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n HammerServiceStatic.hammeredElement('navbarComponentId', event, this.router);\r\n }\r\n onSwipeRight (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n HammerServiceStatic.hammeredElement('navbarComponentId', event, this.router);\r\n }\r\n onSwipeUp (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n HammerServiceStatic.hammeredElement('navbarComponentId', event, this.router);\r\n }\r\n onSwipeDown (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event); page-content-wrapper\r\n HammerServiceStatic.hammeredElement('navbarComponentId', event, this.router);\r\n }\r\n // --------------------------------------------------------------\r\n // (pan)=\"onPan($event)\"\r\n // (panstart) = \"onPanStart($event)\"\r\n // (panmove) = \"onPanMove($event)\"\r\n // (panend) = \"onPanEnd($event)\"\r\n // (pancancel) = \"onPanCancel($event)\"\r\n // (panleft) = \"onPanLeft($event)\"\r\n // (panright) = \"onPanRight($event)\"\r\n // (panup) = \"onPanUp($event)\"\r\n // (pandown) = \"onPanDown($event)\"\r\n //\r\n // (tap) = \"onTap($event)\"\r\n // (press) = \"onPress($event)\"\r\n // --------------------------------------------------------------\r\n // onPan (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPanStart (event : Event) : void {\r\n// HammerServiceStatic.hammeredElement('wrapper', event);\r\n// HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPanEnd (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPanMove (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n// HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPanCancel (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPanLeft (event : Event) : void {\r\n// HammerServiceStatic.hammeredElement('wrapper', event);\r\n// HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPanRight (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPanUp (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPanDown (event : Event) : void {\r\n// HammerServiceStatic.hammeredElement('wrapper', event);\r\n // HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onTap (event : Event) : void {\r\n // HammerServiceStatic.hammeredElement('wrapper', event);\r\n// HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // onPress (event : Event) : void {\r\n// HammerServiceStatic.hammeredElement('wrapper', event);\r\n// HammerServiceStatic.hammeredElement('bodyId', event);\r\n // HammerServiceStatic.hammeredElement('navbarComponentId', event);\r\n // }\r\n // --------------------------------------------------------------\r\n // Begin of hammer/gesture recognition methods:\r\n // --------------------------------------------------------------\r\n // --------------------------------------------------------------\r\n}\r\n\r\n// ====================================================================================\r\n","\r\n
\r\n \r\n
\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AppFeatureComponent } from './appFeature/appFeature.component';\r\n\r\nconst appFeatureRoutes: Routes = [\r\n {\r\n path: '',\r\n children: [\r\n { path: 'appfeature', component: AppFeatureComponent, data: { animation: 'register' } },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [ RouterModule.forChild(appFeatureRoutes)],\r\n exports: [RouterModule],\r\n})\r\nexport class AppFeatureRoutingModule { }\r\n","\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DirectiveFilterPipeModule } from '../directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { AppFeatureRoutingModule } from './appFeature-routing.module';\r\nimport { AppFeatureComponent } from './appFeature/appFeature.component';\r\nimport { AppFeatureValueDisplayComponent } from './appFeatureValueDisplay/appFeatureValueDisplay.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppFeatureComponent,\r\n AppFeatureValueDisplayComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n DirectiveFilterPipeModule,\r\n AppFeatureRoutingModule,\r\n ],\r\n exports: [\r\n AppFeatureComponent,\r\n AppFeatureValueDisplayComponent,\r\n AppFeatureRoutingModule,\r\n ],\r\n\r\n providers: [\r\n ],\r\n})\r\n\r\nexport class AppFeatureModule { }\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { AppFeature } from '../../../models/common/appFeture.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n@Component({\r\n selector: 'app-feature-value-display',\r\n templateUrl: './appFeatureValueDisplay.component.html',\r\n styleUrls: ['./appFeatureValueDisplay.component.scss'],\r\n animations: [ Animations, slideInOutAnimation],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n})\r\nexport class AppFeatureValueDisplayComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isLoggedIn = false;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n\r\n @Input() appFeature: AppFeature = new AppFeature();\r\n // -----------------------------------------------\r\n\r\n constructor (\r\n private cdr : ChangeDetectorRef,\r\n private router : Router,\r\n ){ }\r\n\r\n ngOnInit ()\r\n {\r\n\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n this.isLoggedIn = true;\r\n }\r\n else\r\n {\r\n this.isLoggedIn = false;\r\n }\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n this.isLoggedIn = true;\r\n }\r\n else\r\n {\r\n this.isLoggedIn = false;\r\n }\r\n } );\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit() {\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy ()\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n }\r\n}\r\n","
\r\n Feature-name :\r\n \r\n {{appFeature.featureName}}\r\n \r\n
\r\n
\r\n Premium (max):\r\n \r\n \r\n 0\" style=\"opacity:1;font-size:1rem;\">{{appFeature.maxPrimaryCount}}\r\n \r\n
\r\n
\r\n Valued (max):\r\n \r\n \r\n 0\" style=\"opacity:1;font-size:1rem;\">{{appFeature.maxValuedCount}}\r\n \r\n
\r\n
\r\n
\r\n Description: \r\n {{ appFeature.description}}\r\n
\r\n
\r\n\r\n\r\n","\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { AppFeature } from '../../../models/common/appFeture.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { KvAny } from '../../../models/keyValue/kvAny.model';\r\nimport { AppFeatureService } from '../../../services/appServiceService/appFeatureService.service';\r\nimport { AppServiceService } from '../../../services/appServiceService/appServiceService.service';\r\n// import { AppFeatureService } from '../../../services/appServiceService/appFeatureService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { ScrollTopServiceStatic } from '../../../services/staticServices/commonStaticServices/scrollTopServiceStatic.service';\r\n\r\n@Component({\r\n selector: 'app-feature',\r\n templateUrl: './appFeature.component.html',\r\n styleUrls: ['./appFeature.component.scss'],\r\n animations: [ Animations, slideInOutAnimation],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n})\r\nexport class AppFeatureComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public appFeatureService!: AppFeatureService;\r\n // public gestureService: GestureService;\r\n // -----------------------------------------------\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isLoggedIn = false;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n // --------------\r\n public askMe = 'Ask Me :)';\r\n public appFeatureArr : AppFeature[] = [];\r\n public arrKvAny : KvAny[] = [];\r\n public arrKvAnyLegend = 'Slakez Features';\r\n public arrKvAnyName = 'Features';\r\n\r\n public index = -1;\r\n public isRequired = false;\r\n public isAppFeatureClosedBool : Bool = new Bool();\r\n public isDropdownOpen = false;\r\n public kvLegend : string[] = [ 'Comparison: Premium Membership vs Valued Membership'];\r\n public kvName : string[] = [ 'Premium Membership vs Valued Membership' ];\r\n // public arrKvResult : KeyValueResult = new KeyValueResult();\r\n public selectedKvIndex = -1;\r\n\r\n constructor (\r\n private appServiceService : AppServiceService,\r\n private cdr : ChangeDetectorRef,\r\n private router : Router)\r\n {\r\n if ( this.appServiceService )\r\n {\r\n this.appFeatureService = this.appServiceService.getAppFeatureService();\r\n }\r\n this.mcLoader.componentName = 'appFeatureComponentId';\r\n this.mcLoader.moduleName = 'appfeaturem';\r\n this.mcLoader.callerName = 'appFeatureComponent';\r\n EmitterSubjectService.emitRemoveComponent( this.mcLoader );\r\n }\r\n\r\n ngOnInit ()\r\n {\r\n // debugger;\r\n EmitterSubjectService.emitIsAppFeaturePage(true);\r\n // debugger;\r\n this.appFeatureArr = this.appFeatureService.getAppFeatureArr();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.appFeatureArr) || this.appFeatureArr.length === 0) {\r\n this.appFeatureService.getAppFeaturesFromServer().subscribe(data => {\r\n this.appFeatureArr = data;\r\n this.arrKvAny = this.appFeatureService.getArrKvAny();\r\n this.ngAfterViewInit();\r\n // debugger;\r\n }) \r\n }\r\n\r\n // this.setPageTitle();\r\n\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n this.isLoggedIn = true;\r\n }\r\n else\r\n {\r\n this.isLoggedIn = false;\r\n }\r\n // ---------------------------------------------------------------\r\n EmitterSubjectService.appFeatureArrEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // this.appFeatureArr = result as AppFeature[]; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n this.arrKvAny = this.appFeatureService.getArrKvAny();\r\n this.ngAfterViewInit();\r\n } );\r\n // ---------------------------------------------------------------\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result as LoginSuccess; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n this.isLoggedIn = true;\r\n }\r\n else\r\n {\r\n this.isLoggedIn = false;\r\n }\r\n } );\r\n // ---------------------------------------------------------------\r\n let timer = setTimeout(() => {\r\n ScrollTopServiceStatic.scrollToTop('allScrollToTopId');\r\n }, 1000);\r\n clearTimeout(timer);\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit () {\r\n this.cdr.detectChanges();\r\n // \r\n ScrollTopServiceStatic.scrollToTop('allScrollToTopId');\r\n let timer = setTimeout(() => {\r\n ScrollTopServiceStatic.scrollToTop('allScrollToTopId');\r\n }, 1000);\r\n clearTimeout(timer);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy ()\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n EmitterSubjectService.emitIsAppFeaturePage(false);\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Emit the title of the page:\r\n * ---------------------------------------------------------------\r\n */\r\n setPageTitle() {\r\n this.userAndPageTitle.isPrepared = true;\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n this.userAndPageTitle.pageTitle = '-:App Features:-';\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n isOpen ( isClosed: boolean ): void\r\n {\r\n // debugger;\r\n let value = !isClosed;\r\n let IsOpen = new Bool();\r\n IsOpen.isClosed = value;\r\n IsOpen.name = 'appFetureComponentId';\r\n EmitterSubjectService.emitIsOpen( IsOpen );\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n'use-strict'\r\n","\r\n\r\n\r\n","'use-strict'\r\nimport { AfterViewInit, Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Animations } from '../../../app/animation';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { Register } from '../../../models/account/register.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { Address } from '../../../models/common/address.model';\r\nimport { EmitDatePickerResult } from '../../../models/common/emitDatePicResult.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { CheckConnectionService } from '../../../services/coreServiceService/checkConnectionService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { DateStringServiceStatic } from '../../../services/staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../../../services/staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\n\r\n@Component({\r\n selector: 'app-address',\r\n templateUrl: './address.component.html',\r\n styleUrls: ['./address.component.scss'],\r\n animations: [\r\n Animations,\r\n ],\r\n})\r\nexport class AddressComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public checkConnectionService! : CheckConnectionService;\r\n public httpService! : HttpService;\r\n // public inMemoryDataService: InMemoryDataService;\r\n // ----------------------------------------------------------\r\n\r\n @ViewChild( 'firstName', { read: ElementRef, static: true } )\r\n private firstNameFocus! : ElementRef;\r\n @ViewChild( 'lastName', { read: ElementRef, static: true } )\r\n private lastNameFocus! : ElementRef;\r\n @ViewChild( 'addressStr', { read: ElementRef, static: true } )\r\n private addressStrFocus! : ElementRef;\r\n @ViewChild( 'city', { read: ElementRef, static: true } )\r\n private cityFocus! : ElementRef;\r\n @ViewChild( 'state', { read: ElementRef, static: true } )\r\n private stateFocus! : ElementRef;\r\n @ViewChild( 'country', { read: ElementRef, static: true } )\r\n private countryFocus! : ElementRef;\r\n @ViewChild( 'zipCode', { read: ElementRef, static: true } )\r\n private zipCodeFocus! : ElementRef;\r\n @ViewChild( 'email', { read: ElementRef, static: true } )\r\n private emailFocus! : ElementRef;\r\n @ViewChild( 'addBttn', { read: ElementRef, static: true } )\r\n private submitBttnFocus! : ElementRef;\r\n // ----------------------------------------------------------\r\n public address: Address = new Address();\r\n public accountMessages: any;\r\n public age = 0;\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public centerHeight = 0;\r\n public centerWidth = 0;\r\n public datePickerResult: EmitDatePickerResult = new EmitDatePickerResult();\r\n public emailPattern = '^[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$';\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isAddressComplete = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isSuccess = false;\r\n public intervalMsg: any;\r\n public isDobErr = false;\r\n public isPasswordsMatch = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n public message : any = '';\r\n public msg: any;\r\n public passwordPattern = '^[a-zA-Z0-9.,;_%+-@#*&$]{8,30}$';\r\n public register: Register = new Register();\r\n @ViewChild( 'addressForm' ) addressForm : any;\r\n public addrTabIndexNum = 0;\r\n public titleDatePicker = 'DatePicker';\r\n public userAndPageTitle: UserAndPageTitle = new UserAndPageTitle();\r\n // ------------------------------------------------\r\n constructor (\r\n\r\n // private dbServiceService: DbServiceService,\r\n private coreServiceService: CoreServiceService,\r\n // private spinnerModalService: SpinnerModalService,\r\n private router: Router,\r\n ) {\r\n // to avoid DI circular-referencing\r\n if (coreServiceService) {\r\n this.checkConnectionService = coreServiceService.getCheckConnectionService();\r\n }\r\n if ( this.coreServiceService ) this.httpService = this.coreServiceService.getHttpService();\r\n // if (dbServiceService) {\r\n // this.inMemoryDataService = dbServiceService.getInMemoryDataService();\r\n // }\r\n // this.isOnline = this.checkConnectionService.isOnline();\r\n // this.accountMessages = this.inMemoryDataService.accountMessages; // TPDO: restore\r\n }\r\n\r\n ngOnInit ()\r\n {\r\n // this.setPageTitle();\r\n // ----------------------------------------\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.isMobilevar = result;\r\n } );\r\n // ----------------------------------------\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n // ----------------------------------------\r\n EmitterSubjectService.datePickerEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.datePickerResult = result;\r\n // debugger;\r\n this.register.dob = this.datePickerResult.pickedDate;\r\n this.register = this.determineAge(this.register.dob);\r\n // let event = this.datePickerResult.pickedDateEvent;\r\n } );\r\n // ----------------------------------------\r\n let point = EmitterSubjectService.getCenteringHeightWidth( 'registerComponentId' );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( point ) )\r\n {\r\n this.centerHeight = point.height;\r\n this.centerWidth = point.width;\r\n // alert( 'in registerComponent! \\n centerWidth: ' + this.centerWidth + '\\n centerHeight: ' + this.centerHeight );\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit ()\r\n {\r\n this.checkIsAddressComplete();\r\n // this.setPageTitle();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ---------------------------------------------------------------\r\n public onKeyDown ( event : KeyboardEvent )\r\n {\r\n switch ( event.key )\r\n {\r\n case 'Tab':\r\n if ( this.addrTabIndexNum === 1 )\r\n {\r\n this.firstNameFocus.nativeElement.focus();\r\n }\r\n if ( this.addrTabIndexNum === 2 )\r\n {\r\n this.lastNameFocus.nativeElement.focus();\r\n }\r\n if ( this.addrTabIndexNum === 3 )\r\n {\r\n this.addressStrFocus.nativeElement.focus();\r\n }\r\n if ( this.addrTabIndexNum === 4 )\r\n {\r\n this.cityFocus.nativeElement.focus();\r\n }\r\n if ( this.addrTabIndexNum === 5 )\r\n {\r\n this.stateFocus.nativeElement.focus();\r\n }\r\n if ( this.addrTabIndexNum === 6 )\r\n {\r\n this.countryFocus.nativeElement.focus();\r\n }\r\n if ( this.addrTabIndexNum === 7 )\r\n {\r\n this.zipCodeFocus.nativeElement.focus();\r\n }\r\n if ( this.addrTabIndexNum === 8 )\r\n {\r\n this.emailFocus.nativeElement.focus();\r\n }\r\n if ( this.addrTabIndexNum === 9 )\r\n {\r\n this.submitBttnFocus.nativeElement.focus();\r\n }\r\n\r\n this.addrTabIndexNum++;\r\n // if ( this.addrTabIndexNum > 3 ) this.addrTabIndexNum = 0;\r\n break;\r\n case 'Enter':\r\n // this.menuOpened = true;\r\n // make sure that the menu is open before setting focus\r\n // setTimeout( () => this.multiLevelDropDown.setFocusOnFirstMenuItem(), 1 );\r\n // this.sendWithGeoLocation();\r\n break;\r\n case 'Escape':\r\n // this.menuOpened = false;\r\n // this.menuTrigger.nativeElement.focus();\r\n break;\r\n case 'ArrowUp':\r\n // event.stopPropagation();\r\n // ( index === 0 ? this.menuItemsRef.las : this.menuItemsRef.get( index - 1 )).nativeElement.focus();\r\n break;\r\n case 'ArrowDown':\r\n // event.stopPropagation();\r\n // ( index === this.menuItemsRef.length - 1 ? this.menuItemsRef.first : this.menuItemsRef.get( index + 1 )\r\n // ).nativeElement.focus();\r\n break;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n login () : void\r\n {\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.componentName = 'login';\r\n this.mcLoader.moduleName = 'loginm';\r\n\r\n // EmitterSubjectService.emitLoadModule(this.mcLoader);\r\n this.router.navigate(['/loginm/login']);\r\n }\r\n // ---------------------------------------------------------------\r\n salt () : void\r\n {\r\n this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(this.address));\r\n }\r\n // ---------------------------------------------------------------\r\n setPageTitle(): void {\r\n this.userAndPageTitle.pageTitle = '-:Add Address:-';\r\n\r\n this.userAndPageTitle.isPrepared = true;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n // ---------------------------------------------------------------\r\n submitAddressForm () : void\r\n {\r\n // debugger;\r\n if ( this.checkIsAddressComplete() && this.addressForm.valid) {\r\n // debugger;\r\n // this.sendWithoutGeoLocation();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n sendWithoutGeoLocation() {\r\n if (this.addressForm.valid && this.isPasswordsMatch && this.age >= 18) {\r\n this.salt();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.box )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.nonce ) )\r\n {\r\n this.register = StringServiceStatic.maskPassword(this.register);\r\n EmitterSubjectService.emitResetPickedDate(true);\r\n\r\n // this.spinnerModalService.startSpinner( 'Registration is in progress...' );\r\n // this.spinnerModel.message = 'Registration is in progress...';\r\n // this.spinnerModel.isOpen = true;\r\n // EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n\r\n this.addressForm.reset();\r\n this.httpService\r\n .postObservable(\r\n '/Address/UpdateAddress',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json',\r\n )\r\n .subscribe(\r\n (result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const loginResult = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity));\r\n // debugger;\r\n\r\n this.loginSuccess = loginResult as LoginSuccess;\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.isSuccess = true;\r\n this.message = this.loginSuccess.message;\r\n this.setMessageTimer();\r\n // this.httpService.navigateTo('/login');\r\n } else {\r\n this.message = this.loginSuccess.message;\r\n this.setMessageTimer();\r\n this.msg = 'Error occured while registering! ;\\n Error-mag : ' + this.loginSuccess.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.msg});\r\n }\r\n } else {\r\n this.message = this.loginSuccess.message;\r\n this.setMessageTimer();\r\n if (result) {\r\n this.msg = 'Error occured while registering! \\n Error-mag : ' + result.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.msg});\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured while registering!'});\r\n }\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag : ' + error);\r\n this.message = this.loginSuccess.message;\r\n this.setMessageTimer();\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured while registering! \\n Error-mag : ' + error.message});\r\n },\r\n );\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n sendWithGeoLocation() {\r\n // debugger;\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition((position: any) => {\r\n if (position) {\r\n console.log('Latitude : ' + position.coords.latitude + '; Longitude : ' + position.coords.longitude);\r\n this.register.latitude = position.coords.latitude;\r\n this.register.longitude = position.coords.longitude;\r\n\r\n // this.isSubmitted = true;\r\n if ( this.addressForm.valid && this.isPasswordsMatch && this.age >= 18) {\r\n this.salt();\r\n // debugger;\r\n if (\r\n this.isOnLine &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)\r\n ) {\r\n this.register = StringServiceStatic.maskPassword(this.register);\r\n this.addressForm.reset();\r\n EmitterSubjectService.emitResetPickedDate(true);\r\n\r\n // this.spinnerModalService.startSpinner( 'Registration is in progress...' );\r\n // this.spinnerModel.message = 'Registration is in progress...';\r\n // this.spinnerModel.isBusy = true;\r\n // EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n\r\n this.httpService\r\n .postObservable(\r\n '/Address/UpdateAddress',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json',\r\n )\r\n .subscribe(\r\n (result) => {\r\n // debugger;\r\n // this.spinnerModalService.stopSpinner(); // TPDO: restore\r\n // this.isBusy = new IsBusy();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const loginResult = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity));\r\n // debugger;\r\n\r\n this.loginSuccess = loginResult as LoginSuccess;\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.isSuccess = true;\r\n this.message = '' + this.loginSuccess.message + '';\r\n // EmitterSubjectService.emitMessage(this.message);\r\n /*\r\n * this.setMessageTimer();\r\n * this.httpService.navigateTo('/login');\r\n */\r\n } else {\r\n this.message = this.loginSuccess.message;\r\n this.setMessageTimer();\r\n // EmitterSubjectService.emitMessage(this.message);\r\n this.msg = 'Error occured while registering! ;\\n Error-mag : ' + this.loginSuccess.message;\r\n // EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.msg});\r\n }\r\n } else {\r\n this.message = this.loginSuccess.message;\r\n this.setMessageTimer();\r\n if (result) {\r\n this.msg = 'Error occured while registering! \\n Error-mag : ' + result.message;\r\n // EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.msg});\r\n } else {\r\n // EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured while registering!'});\r\n }\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag : ' + error);\r\n this.message = this.loginSuccess.message;\r\n // EmitterSubjectService.emitMessage(this.message);\r\n this.msg = 'Error occured while registering! \\n Error-mag : ' + error.message;\r\n // EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.msg});\r\n },\r\n );\r\n }\r\n }\r\n } else {\r\n console.log('Geolocation is not supported by this browser.');\r\n this.sendWithoutGeoLocation();\r\n }\r\n });\r\n } else {\r\n console.log('Geolocation is not supported by this browser.');\r\n this.sendWithoutGeoLocation();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getUrl() {\r\n return 'url(\\'assets/photos/glyph-members-transparent.png\\')';\r\n }\r\n // ---------------------------------------------------------------\r\n onDateChanged(event: Register): void {\r\n this.register = this.determineAge(this.register.dob);\r\n }\r\n // ---------------------------------------------------------------\r\n checkPasswords() {\r\n if (this.register && this.register.password && this.register.confirmPassword) {\r\n this.isPasswordsMatch = this.register.confirmPassword.localeCompare(this.register.password) === 0;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n checkIsAddressComplete (): boolean\r\n {\r\n debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.address )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.address.firstName ) && this.address.firstName.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.address.lastName ) && this.address.lastName.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.address.addressStr ) && this.address.addressStr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.address.city ) && this.address.city.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.address.state ) && this.address.state.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.address.country ) && this.address.country.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.address.zipCode ) && this.address.zipCode.length > 0\r\n )\r\n {\r\n this.isAddressComplete = true;\r\n debugger;\r\n }\r\n else this.isAddressComplete = false;\r\n debugger;\r\n EmitterSubjectService.emitIsAddressComplete( this.isAddressComplete );\r\n return this.isAddressComplete;\r\n }\r\n // ---------------------------------------------------------------\r\n editAddress ()\r\n {\r\n this.isAddressComplete = false;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : dob is sent in yyyy/mm/dd format\r\n */\r\n calculateAge(dob: any): any {\r\n let age = 0;\r\n\r\n if (dob) {\r\n const now = new Date();\r\n const nowYear = now.getFullYear();\r\n const nowMonth = now.getMonth() + 1;\r\n const nowDay = now.getDate();\r\n const dobParts = dob.split('/');\r\n\r\n if (dobParts.length > 2) {\r\n age = nowYear - dobParts[0];\r\n if (nowMonth < dobParts[1] && age > 0) {\r\n age--;\r\n }\r\n if (nowMonth === dobParts[1] && nowDay < dobParts[2] && age > 0) {\r\n age--;\r\n }\r\n }\r\n }\r\n return age;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref : https:// stackoverflow.com/questions/22982647/how-to-set-an-input-field-to-ng-invalid-in-angularjs\r\n */\r\n determineAge(dob: any): any {\r\n if (dob) {\r\n const ymd = dob.replace(/-/g, '/'); // tranaform the dob from yyyy-mm-dd to yyyy/mm/dd form\r\n\r\n if (ymd) {\r\n // debugger;\r\n this.age = this.calculateAge(ymd); // profileFactory.calculateAge() expects input in yyyy/mm/dd format\r\n this.register.age = this.age;\r\n if (this.age >= 18) {\r\n this.register.dob = ymd;\r\n this.register.dobTicks = DateStringServiceStatic.getJsDateMinusJsOffsetToNetTicks(new Date(dob));\r\n } else {\r\n if (this.register.dob.length > 5) {\r\n this.isDobErr = true;\r\n this.register.message = this.getDisclaimerAgeAccountMessage(this.age);\r\n }\r\n }\r\n return this.register;\r\n } else if (this.register.dob.length > 5) {\r\n this.isDobErr = true;\r\n }\r\n } else if (this.register.dob.length > 5) {\r\n this.isDobErr = true;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getDisclaimerAgeAccountMessage(age: number) {\r\n let yourAgeMsg = '';\r\n let disaclaimerMsg = '';\r\n\r\n this.accountMessages.map((e: any) => {\r\n if (e.Key.toLowercase().indexOf('yourAge') !== -1) {\r\n yourAgeMsg = e.Value;\r\n }\r\n if (e.Key.toLowercase().indexOf('disclaimerAge') !== -1) {\r\n disaclaimerMsg = e.Value;\r\n }\r\n });\r\n this.msg = ' ' + yourAgeMsg + age + '. ' + disaclaimerMsg;\r\n return this.msg;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setMessageTimer() {\r\n this.intervalMsg = setInterval(() => {\r\n this.message = '';\r\n this.httpService.navigateTo('/login');\r\n clearInterval(this.intervalMsg);\r\n }, 30000);\r\n\r\n clearInterval(this.intervalMsg);\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n
\r\n\r\n
\r\n
Card Holder Explanation:
\r\n
\r\n\r\n
0\" class=\"flex-container\">\r\n
\r\n \r\n {{message}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n First Name* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n First Name is required\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Last Name* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n Last Name is required\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Address * :\r\n
\r\n
\r\n \r\n
\r\n
\r\n Complete address with street name and number is required.\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n City* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n City is required\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n State/Province* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n State/Province is required.\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n Country* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n Country is required\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ZipCode/PostalCode* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n Postal/Zip Code is required.\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Email ( )* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n Valid email is required\r\n The email address must contain at least the @ character and format should be john@doe.com.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
Name: {{address.firstName}} {{address.lastName}}
\r\n
Address: {{address.addressStr}}
\r\n
City: {{address.city}}
\r\n
State/Province: {{address.state}}
\r\n
Country: {{address.country}}
\r\n
Zip/Postal Code: {{address.zipCode}}
\r\n
Email ( ): {{address.email}}
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n","'use-strict'\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'arrayPipe'\n})\nexport class ArrayPipe implements PipeTransform {\n\n transform ( arr : any[] )\n {\n return arr.map( value =>\n {\n alert( 'value.toString()=>' + value.toString() );\n return value;\n } );\n }\n\n}\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { EmitCheckboxResult } from '../../../models/common/emitCheckboxResult.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n@Component({\r\n selector: 'app-check-button',\r\n templateUrl: './checkButton.component.html',\r\n styleUrls: [ './checkButton.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CheckButtonComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n @Input() checkboxArr : string[] = [];\r\n @Input() checkboxLegend = '';\r\n @Input() checkboxName = '';\r\n @Input() isFormSubmitted = false;\r\n @Input() minRequired = 0;\r\n @Input() selectedChkBoxArr : string[] = []; // needed to maintain checked-status\r\n public checkboxForm! : FormGroup;\r\n public checkboxResult : EmitCheckboxResult = new EmitCheckboxResult();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isMobilevar! : boolean;\r\n public loginSuccess! : LoginSuccess;\r\n // ---------------------------------------------------------------\r\n constructor ( public cdr : ChangeDetectorRef, private coreServiceService : CoreServiceService, @Inject( DOCUMENT ) document: any )\r\n {\r\n this.checkboxResult.checkboxName = this.checkboxName;\r\n }\r\n ngOnInit ()\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit ()\r\n {\r\n // debugger;\r\n this.cdr.detectChanges();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy ()\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ---------------------------------------------------------------\r\n updateSelectedCheckBoxArray (selected:any, index:any )\r\n {\r\n if ( index > -1 )\r\n {\r\n // Is currently deselected\r\n this.selectedChkBoxArr.splice( index, 1 );\r\n } else\r\n {\r\n // Is newly selected\r\n this.selectedChkBoxArr.push( selected );\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onCheckboxChange ( e:any, index:any ):any\r\n {\r\n // debugger;\r\n if ( e.target.checked )\r\n {\r\n this.checkboxResult.checkboxSelectionsIndex = index;\r\n this.selectedChkBoxArr.push( e.target.value ); // needed to maintain checked-status\r\n } else\r\n {\r\n let i = 0;\r\n\r\n this.selectedChkBoxArr.forEach( ( item : any ) =>\r\n {\r\n // debugger;\r\n if ( item === e.target.value )\r\n {\r\n this.selectedChkBoxArr.splice( i, 1 ); // needed to maintain checked-status\r\n }\r\n i++;\r\n } );\r\n }\r\n this.checkboxResult.checkboxName = this.checkboxName;\r\n this.checkboxResult.selectedCheckboxsArr = this.selectedChkBoxArr;\r\n this.checkboxResult.isRequiredPassed = this.isRequiredPassed();\r\n // debugger;\r\n EmitterSubjectService.emitCheckboxResult( this.checkboxResult );\r\n this.ngAfterViewInit();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n commaSeparatedCheckboxSelectionsString () : string\r\n {\r\n let str = '';\r\n\r\n this.selectedChkBoxArr.forEach( ( item ) =>\r\n {\r\n str += item + ',';\r\n } );\r\n return str;\r\n }\r\n // ---------------------------------------------------------------\r\n isChecked ( item: any ) : boolean\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.selectedChkBoxArr ) && this.selectedChkBoxArr.length > 0 )\r\n {\r\n for ( const e of this.selectedChkBoxArr )\r\n {\r\n if ( item.indexOf( e ) !== -1 )\r\n {\r\n // debugger;\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * createCheckboxArrayGroup(groupName : string) {\r\n * this.dataChkBoxArr = this.checkboxForm.get('dataChkBoxArr') as FormArray;\r\n * for (var i = 0; i < this.checkboxArr.length; i++) {\r\n * this.dataChkBoxArr.push(this.fb.control(this.checkboxArr[i]));\r\n * }\r\n * return this.dataChkBoxArr;\r\n * }\r\n * ---------------------------------------------------------------\r\n */\r\n\r\n // ---------------------------------------------------------------\r\n isRequiredPassed ()\r\n {\r\n return this.checkboxResult.selectedCheckboxsArr.length >= this.minRequired;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
\r\n
\r\n 0\" class=\"nvyB\">{{checkboxLegend}} \r\n 0 && minRequired > 0\" class=\"errSub\" style=\"margin-left:0px;\">*\r\n \r\n
\r\n -1\" />\r\n \r\n
\r\n
\r\n
\r\n \r\n {{checkboxName}} is required, please select at leaset one value.\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { Register } from '../../../models/account/register.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n// ref: https://coryrylan.com/blog/using-html5-date-input-with-date-objects-and-angular\r\n\r\n@Component({\r\n selector: 'app-date-input',\r\n templateUrl: './dateInput.component.html',\r\n styleUrls: ['./dateInput.component.scss'],\r\n // 1)OnPush->requires an Observable to refresh the view; 2)Default->automatic refresh\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n\r\nexport class DateInputComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n private emitterDestroyed$: Subject = new Subject();\r\n // ---------------------------------------------------------------\r\n date = new Date();\r\n dateObj : any;\r\n // dateObjectControl = new FormControl(new Date());\r\n // @Input() register : Register = new Register();\r\n // ----------------------------------------------------------------\r\n constructor (private cdr : ChangeDetectorRef) {\r\n }\r\n // ----------------------------------------------------------------\r\n ngOnInit () : void\r\n { \r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit (): void\r\n {\r\n // debugger;\r\n // DO NOT get ProfileTile from Emitter here!\r\n this.cdr.detectChanges();\r\n }\r\n // ----------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n // debugger;\r\n }\r\n // ----------------------------------------------------------------\r\n updateDate (event) {\r\n debugger;\r\n this.date = event.target.valueAsDate;\r\n EmitterSubjectService.emitDob(this.date);\r\n }\r\n}\r\n\r\n","\r\n
\r\n \r\n
\r\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AddressComponent } from './address/address.component';\r\nimport { ArrayPipe } from './array-pipe.pipe';\r\nimport { CheckButtonComponent } from './checkButton/checkButton.component';\r\nimport { DateInputComponent } from './dateInput/dateInput.component';\r\nimport { AppSideBarDirective } from './directives/appsidebar.directive';\r\n// import { DirectiveFilterPipeRoutingModule } from './directiveFilterPipe-routing.module';\r\nimport { CenterXDirective } from './directives/centerX.directive';\r\nimport { DateInputFormControlDirective } from './directives/dateInputFormControl.directive';\r\nimport { DisableElemDirective } from './directives/disableElem.directive';\r\nimport { ExpandMenuDirective } from './directives/expandMenu.directive';\r\nimport { ExpandMenuHomeDirective } from './directives/expandMenuHome.directive';\r\nimport { CheckPasswordDirective } from './directives/password.directive';\r\nimport { RefDirective } from './directives/ref.directive';\r\nimport { DisableScrollComponent } from './disableScroll/disableScroll.component';\r\nimport { DistanceComponent } from './distance/distance.component';\r\n// import { GestureDirective } from './directives/gestureDirective.directive';\r\n// import { GestureService } from '../../services/appServiceService/gestureService.service';\r\nimport { DropdownBoxComponent } from './dropdownBox/dropdownBox.component';\r\nimport { LogPipe } from './filters/logPipe';\r\nimport { ProfileTilesPipe } from './filters/profileTiles.pipe';\r\nimport { SafeFilterPipe } from './filters/safeFilter.pipe';\r\nimport { SafeKvPipe } from './filters/safeKv.pipe';\r\nimport { Safe } from './filters/safePipe.pipe';\r\nimport { TextFilterPipe } from './filters/textFilter.pipe';\r\nimport { ToNumberPipe } from './filters/toNumber.pipe';\r\nimport { UpgradedTilesPipe } from './filters/upgradedTiles.pipe';\r\nimport { IncrementorComponent } from './incrementor/incrementor.component';\r\nimport { OffOnComponent } from './offOn/offOn.component';\r\nimport { PageNameComponent } from './pageName/pageName.component';\r\nimport { ProfileNameComponent } from './profileName/profileName.component';\r\nimport { RadioBoxComponent } from './radioBox/radioBox.component';\r\nimport { OffOnProfileNameComponent } from './offOnProfileName/offOnProfileName.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AddressComponent,\r\n AppSideBarDirective,\r\n ArrayPipe,\r\n CheckButtonComponent,\r\n CenterXDirective,\r\n DateInputComponent,\r\n DateInputFormControlDirective,\r\n DisableElemDirective,\r\n DisableScrollComponent,\r\n DistanceComponent,\r\n DropdownBoxComponent,\r\n ExpandMenuDirective,\r\n ExpandMenuHomeDirective,\r\n IncrementorComponent,\r\n LogPipe,\r\n OffOnComponent,\r\n CheckPasswordDirective,\r\n PageNameComponent,\r\n ProfileNameComponent,\r\n ProfileTilesPipe,\r\n RadioBoxComponent,\r\n RefDirective,\r\n SafeKvPipe,\r\n Safe,\r\n SafeFilterPipe,\r\n TextFilterPipe,\r\n ToNumberPipe,\r\n UpgradedTilesPipe,\r\n OffOnProfileNameComponent,\r\n ],\r\n imports: [ CommonModule, FormsModule, RouterModule, ],\r\n exports: [\r\n AddressComponent,\r\n AppSideBarDirective,\r\n ArrayPipe,\r\n CheckButtonComponent,\r\n CenterXDirective,\r\n DateInputComponent,\r\n DateInputFormControlDirective,\r\n DisableElemDirective,\r\n DisableScrollComponent,\r\n DistanceComponent,\r\n DropdownBoxComponent,\r\n ExpandMenuDirective,\r\n ExpandMenuHomeDirective,\r\n IncrementorComponent,\r\n LogPipe,\r\n OffOnComponent,\r\n OffOnProfileNameComponent,\r\n PageNameComponent,\r\n ProfileNameComponent,\r\n ProfileTilesPipe,\r\n RadioBoxComponent,\r\n RefDirective,\r\n Safe,\r\n SafeFilterPipe,\r\n SafeKvPipe,\r\n TextFilterPipe,\r\n ToNumberPipe,\r\n UpgradedTilesPipe ],\r\n\r\n providers: [\r\n { provide: AppSideBarDirective },\r\n { provide: ArrayPipe },\r\n { provide: CenterXDirective }, // horizontally self-centering-pipe\r\n { provide: ExpandMenuDirective },\r\n { provide: ExpandMenuHomeDirective },\r\n { provide: DateInputFormControlDirective },\r\n { provide: DisableElemDirective },\r\n { provide: LogPipe },\r\n { provide: ProfileTilesPipe },\r\n { provide: RefDirective },\r\n { provide: Safe },\r\n { provide: SafeFilterPipe },\r\n { provide: SafeKvPipe },\r\n { provide: TextFilterPipe },\r\n { provide: ToNumberPipe },\r\n { provide: UpgradedTilesPipe },\r\n ],\r\n})\r\nexport class DirectiveFilterPipeModule { }\r\n","'use-strict'\r\nimport { Directive, HostBinding, HostListener } from '@angular/core';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Directive({\r\n selector: '[app-sidebar]',\r\n exportAs: 'appSidebar',\r\n})\r\nexport class AppSideBarDirective {\r\n private count = 0;\r\n @HostBinding('class.is-open') click = false;\r\n /*@HostBinding('class.is-open') swipe = false;*/\r\n private mc : any;\r\n constructor () {\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.gestureEmitter.subscribe((result) => {\r\n // debugger;\r\n this.click = !this.click;\r\n\r\n });\r\n EmitterSubjectService.closeSidebarEmitter.subscribe((result) => {\r\n // debugger;\r\n if (this.click) {\r\n this.click = !this.click;\r\n }\r\n else {\r\n ;// do nothing; \r\n }\r\n });\r\n }\r\n @HostListener('click') close () {\r\n if (this.click) {\r\n this.click = !this.click;\r\n }\r\n else {\r\n ;// do nothing; \r\n }\r\n }\r\n\r\n @HostListener('click') onClic () {\r\n // debugger;\r\n this.click = !this.click;\r\n /*this.swipe = !this.swipe;*/\r\n /*\r\n * this.count++;\r\n * if (this.count % 2 == 0) {\r\n * this.click = !this.click;\r\n * this.count = 0;\r\n * }\r\n */\r\n }\r\n}\r\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Directive, Inject, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\n\r\n/*\r\n* // Author: Sayeed Rahman\r\n* // Date: 2021/03/15, 8:17pm, Ottawa, ON, Canada\r\n* // CopyRight (C).\r\n*/\r\n\r\n@Directive( {\r\n selector: '[appCenterX]',\r\n exportAs: 'centerX',\r\n} )\r\nexport class CenterXDirective implements OnInit\r\n{\r\n public childElemId = '';\r\n // ----------------------------------------------------------------------------------------------------------------------\r\n // Note: this myId input array shpuld contain at most two values:\r\n // 1. the target element's id\r\n // 2. an optional isScreen==parentElement? boolean value\r\n // 2.a isScreent == true, then the parent element of the target element is the width of the device\r\n // 2.b isScreen == false, then the parent element of the target element is not the window element.\r\n // Note: there can be only one value provided to this directive, in which case it assumes that the iScreen == false.\r\n // ----------------------------------------------------------------------------------------------------------------------\r\n @Input() myId : any[] = [];\r\n\r\n public renderer! : Renderer2;\r\n constructor (\r\n private rendererServiceService : RendererServiceService,\r\n public rendererService : RendererService,\r\n @Inject( DOCUMENT ) document: any,\r\n @Inject( Window ) window: any )\r\n {\r\n if ( this.rendererServiceService )\r\n {\r\n this.rendererService = this.rendererServiceService.getRendererService() as RendererService;\r\n\r\n }\r\n if ( this.rendererService )\r\n {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n }\r\n\r\n ngOnInit ()\r\n {\r\n debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.myId ) && this.myId.length > 0)\r\n {\r\n this.centerSelf( this.myId[0] );\r\n }\r\n }\r\n public centerSelf ( myId : any[] ) : any\r\n {\r\n let childElemWidth : any;\r\n let parentElem : any;\r\n let parentElemWidth : any;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( myId ) && myId.length > 0)\r\n {\r\n let childElem = document.getElementById( myId[0] ) as HTMLElement;\r\n\r\n if ( this.myId.length > 1 )\r\n {\r\n if ( this.myId[ 1 ] === true )\r\n {\r\n parentElemWidth = window.innerWidth;\r\n }\r\n else if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( childElem ) )\r\n {\r\n parentElem = childElem.parentElement;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( parentElem ) )\r\n {\r\n parentElemWidth = parentElem.style.width;\r\n }\r\n }\r\n }\r\n else\r\n {\r\n this.childElemId = this.myId[ 0 ];\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.childElemId ) )\r\n {\r\n childElem = document.getElementById( this.childElemId ) as HTMLElement;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( childElem ) )\r\n {\r\n parentElem = childElem.parentElement;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( parentElem ) )\r\n {\r\n parentElemWidth = parentElem?.style.width; // or parentElem.clientWidth;\r\n }\r\n }\r\n }\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( childElem ) )\r\n {\r\n childElemWidth = childElem?.style.width;\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( parentElemWidth ) && parentElemWidth > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( childElemWidth ) && childElemWidth > 0 )\r\n {\r\n const diff = parentElemWidth / 2 - childElemWidth / 2;\r\n\r\n this.renderer?.setStyle( childElem, 'margin-left', diff );\r\n this.renderer?.setStyle( childElem, 'margin-right', diff );\r\n }\r\n childElem.remove();\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n// ref: https://coryrylan.com/blog/using-html5-date-input-with-date-objects-and-angular\r\n@Directive({\r\n selector: 'input[type=date][ngModel], input[type=date][formControl]',\r\n providers: [ {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateInputFormControlDirective),\r\n multi: true\r\n } ]\r\n})\r\nexport class DateInputFormControlDirective implements ControlValueAccessor {\r\n @HostListener('show', []) onTouched : any = () => { };\r\n @HostListener('input', [ '$event' ]) onChange : any = () => { };\r\n\r\n private valueType : 'value' | 'valueAsDate' = 'value';\r\n\r\n constructor (private renderer : Renderer2, private elementRef : ElementRef) { }\r\n\r\n registerOnTouched (fn : () => void) { this.onTouched = fn; }\r\n\r\n registerOnChange (fn : (value : any) => void) {\r\n this.onChange = (event : any) => fn(event.target[ this.valueType ])\r\n }\r\n\r\n writeValue (value : Date | string) {\r\n this.valueType = typeof value === 'string' ? 'value' : 'valueAsDate';\r\n this.renderer.setProperty(this.elementRef.nativeElement, this.valueType, value);\r\n }\r\n}","//ref: https://stackoverflow.com/questions/50798383/button-directive-to-bind-disable-attribute-via-input-in-angular\r\n'use-strict'\r\nimport { Directive, ElementRef, Input, OnChanges, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDisableElem]',\r\n})\r\nexport class DisableElemDirective implements OnInit, OnChanges {\r\n @Input() isDisable! : boolean;\r\n\r\n constructor (private renderer : Renderer2, private el : ElementRef) { }\r\n\r\n ngOnInit () {\r\n // debugger;\r\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', this.isDisable ? 'disabled' : '');\r\n }\r\n ngOnChanges () {\r\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', this.isDisable ? 'disabled' : '');\r\n }\r\n}\r\n","'use-strict'\nimport { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[appExpandMenu]',\n exportAs: 'appExpandMenu',\n})\nexport class ExpandMenuDirective {\n @HostBinding('class.active') isOpen = false;\n constructor() { }\n\n @HostListener('click') toggleOpen() {\n this.isOpen = !this.isOpen;\n }\n}\n// ref:https://medium.com/@alok.lko631/submenu-or-dropdown-menu-without-jquery-in-angular-2-4-5-6-using-only-bootstrap-and-custom-fd716db511be\n","'use-strict'\nimport { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[appExpandMenuHome]',\n exportAs: 'appExpandMenuHome',\n})\nexport class ExpandMenuHomeDirective {\n @HostBinding('class.active') isOpen = false;\n\n constructor() { }\n\n @HostListener('click') toggleOpen() {\n this.isOpen = !this.isOpen;\n }\n}\n// ref:https:// medium.com/@alok.lko631/submenu-or-dropdown-menu-without-jquery-in-angular-2-4-5-6-using-only-bootstrap-and-custom-fd716db511be\n","'use-strict'\r\nimport { Directive } from '@angular/core';\r\nimport { AbstractControl, FormGroup, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn } from \"@angular/forms\";\r\n\r\n// ref: https://www.htmlelements.com/docs/angular-template-driven-forms-validator/\r\n\r\n\r\nfunction validatePassword () : ValidatorFn {\r\n return (control : AbstractControl) => {\r\n let isValid = false;\r\n if (control && control instanceof FormGroup) {\r\n let group = control as FormGroup;\r\n if (group.controls[ 'passwordA' ] && group.controls[ 'passwordB' ]) {\r\n isValid = group.controls[ 'passwordA' ].value == group.controls[ 'passwordB' ].value;\r\n }\r\n }\r\n if (isValid) {\r\n return null;\r\n } else {\r\n return { 'passwordCheck': 'failed' }\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[appCheckPassword]',\r\n providers: [ { provide: NG_VALIDATORS, useExisting: CheckPasswordDirective, multi: true } ]\r\n})\r\nexport class CheckPasswordDirective implements Validator {\r\n private valFn;\r\n\r\n constructor () {\r\n this.valFn = validatePassword();\r\n }\r\n\r\n validate (c : AbstractControl) : ValidationErrors | null {\r\n return this.valFn(c);\r\n }\r\n\r\n}\r\n","'use-strict'\r\nimport { Directive, HostBinding, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ref]',\r\n exportAs: 'ref',\r\n})\r\nexport class RefDirective {\r\n private count = 0;\r\n @HostBinding('class.is-open') click = false;\r\n constructor() { }\r\n\r\n @HostListener('click') onClic () {\r\n // debugger;\r\n this.click = !this.click;\r\n /*\r\n * this.count++;\r\n * if (this.count % 2 == 0) {\r\n * this.click = !this.click;\r\n * this.count = 0;\r\n * }\r\n */\r\n }\r\n}\r\n","'use-strict'\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'app-disable-scroll',\r\n templateUrl: './disableScroll.component.html',\r\n styleUrls: ['./disableScroll.component.scss'],\r\n})\r\nexport class DisableScrollComponent implements OnInit, OnDestroy {\r\n public body_el : any;\r\n private emitterDestroyed$: Subject = new Subject();\r\n public scrollPosition = 0;\r\n constructor(\r\n private router: Router\r\n )\r\n {\r\n }\r\n\r\n ngOnInit () {\r\n this.noPageRefreshOnSwipeDown()\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // ----------------------------------------------------------------------------------\r\n // Begin-of-preventing-page-refresh-on-swipe-down/scroll-down:\r\n // Ref: https://github.com/bevacqua/dragula/issues/487\r\n // ----------------------------------------------------------------------------------\r\n\r\n noPageRefreshOnSwipeDown () {\r\n //const container = document.querySelector(...);\r\n\r\n this.body_el = document.getElementById('bodyId');\r\n const dragula = (window as any).dragula(\r\n [\r\n this.body_el\r\n ]);\r\n\r\n /* handle scroll */\r\n // this.body_el.addEventListener('touchmove', event => event.preventDefault());\r\n\r\n var _scroll_disable = this.scroll_disable;\r\n var _scroll_enable = this.scroll_enable\r\n dragula.on('drag', function (el: any) {\r\n _scroll_disable();\r\n });\r\n\r\n dragula.on('dragend', function (el : any) { _scroll_enable(); });\r\n this.body_el.remove();\r\n }\r\n\r\n\r\n scroll_disable () {\r\n console.log('scroll_disable()');\r\n this.scrollPosition = window.pageYOffset;\r\n this.body_el.style.overflow = 'hidden';\r\n this.body_el.style.position = 'fixed';\r\n this.body_el.style.top = `-${ this.scrollPosition }px`;\r\n this.body_el.style.width = '100%';\r\n }\r\n\r\n scroll_enable () {\r\n console.log('scroll_enable()');\r\n this.body_el.style.removeProperty('overflow');\r\n this.body_el.style.removeProperty('position');\r\n this.body_el.style.removeProperty('top');\r\n this.body_el.style.removeProperty('width');\r\n window.scrollTo(0, this.scrollPosition);\r\n }\r\n // ----------------------------------------------------------------------------------\r\n // End-of-preventing-page-refresh-on-swipe-down/scroll-down:\r\n // ----------------------------------------------------------------------------------\r\n // ==================================================================================\r\n\r\n}\r\n","
\r\n \r\n
\r\n\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component,\r\n ElementRef, Input, OnDestroy, OnInit, ViewChild\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject, takeUntil } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { Heartbeat } from '../../../models/common/heartbeat.model';\r\nimport { Unit } from '../../../models/common/unit.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { SitUserService } from '../../../services/commonServiceService/sitUserService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HeartbeatService } from '../../../services/coreServiceService/heartbeatService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-distance',\r\n templateUrl: './distance.component.html',\r\n styleUrls: ['./distance.component.scss'],\r\n // 1)OnPush->requires an Observable to refresh the view; 2)Default->automatic refresh\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n\r\nexport class DistanceComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public heartbeatService! : HeartbeatService;\r\n public sitUserService! : SitUserService;\r\n private emitterDestroyed$: Subject = new Subject();\r\n // ----------------------------------------------------------\r\n public isDefaultDistanceUnit = false;\r\n @Input() distanceUnit : Unit = new Unit();\r\n @Input() heartbeat: Heartbeat = new Heartbeat();\r\n public isMouseIn = false;\r\n public isMobilevar = false;\r\n public loginSuccess! : LoginSuccess;\r\n public message = '';\r\n @Input() profileTile : ProfileTile = new ProfileTile();\r\n @Input() sitUser : SitUser = new SitUser();\r\n public sitUserId = 0;\r\n public tempElem!: HTMLElement;\r\n public timer : any;\r\n public timerMap : Map = new Map();\r\n public tempElemName = '';\r\n // -----------------------------------------------------------\r\n @ViewChild('distanceunit') distanceUnitElem! : ElementRef;\r\n // ---------------------------------------------------------------------------------\r\n constructor(private cdr: ChangeDetectorRef,\r\n private coreServiceService : CoreServiceService,\r\n private commonServiceService : CommonServiceService,\r\n private router : Router\r\n ) {\r\n if (this.coreServiceService) {\r\n this.heartbeatService = this.coreServiceService.getHeartbeatService();\r\n }\r\n if (this.commonServiceService) {\r\n this.sitUserService = this.commonServiceService.getSitUserService();\r\n }\r\n // --------------------------------\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnInit () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.heartbeat)) {\r\n this.distanceUnit = this.heartbeatService.computeDistance(this.loginSuccess.latitude, this.loginSuccess.longitude, this.heartbeat.latitude, this.heartbeat.longitude, true);\r\n }\r\n // -------------------------------------------------------------- \r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n //if ((FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.distanceUnit) || this.distanceUnit.distance <= 0)) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n // this.heartbeatService.getDistanceUnit(this.sitUser).subscribe(data => {\r\n // this.distanceUnit = data;\r\n // })\r\n // } \r\n //}\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n this.heartbeatService.getDistanceUnit(this.sitUser).subscribe(data => {\r\n this.distanceUnit = data;\r\n this.ngAfterViewInit();\r\n })\r\n } \r\n // debugger\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.distanceEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n this.distanceUnit = result as Unit;\r\n this.ngAfterViewInit();\r\n });\r\n // --------------------------------------------------------------\r\n // debugger;\r\n EmitterSubjectService.computeDistanceEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => { // signedInUser's heartbeat'\r\n // debugger;\r\n this.loginSuccess.heartbeat = result;\r\n this.calcualateDistance(result, this.heartbeat);\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------\r\n this.isDefaultDistanceUnit = this.heartbeatService.isDefaultDistanceUnit(this.distanceUnit);\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit (): void\r\n {\r\n // debugger;\r\n // DO NOT get ProfileTile from Emitter here!\r\n this.cdr.detectChanges();\r\n // this.getDistanceUnit(this.sitUser).subscribe(data => {\r\n // this.distanceUnit = data;\r\n // })\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.heartbeat)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser.heartbeat)) {\r\n // debugger\r\n this.distanceUnit = this.heartbeatService.computeDistance(this.loginSuccess.latitude, this.loginSuccess.longitude, this.sitUser.heartbeat.latitude, this.sitUser.heartbeat.longitude, true);\r\n \r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n \r\n this.timerMap.forEach(timer => clearTimeout(timer));\r\n this.timerMap.clear();\r\n // debugger;\r\n }\r\n // --------------------------------------------------------------\r\n checkMouseEvent ( event : Event ) : boolean\r\n {\r\n if ( event ) { this.isMouseIn = event.type.indexOf( 'MouseEvent' ) !== -1 ? true : false; }\r\n this.isMouseIn = !this.isMouseIn;\r\n return this.isMouseIn;\r\n } \r\n // ---------------------------------------------------------------------------------\r\n clearTimerMap (): void {\r\n this.timerMap.clear();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n calcualateDistance (destHeartbeat: any, sourceHeartbeat: any) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destHeartbeat) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceHeartbeat)) {\r\n this.heartbeatService.calculateDistance(destHeartbeat, sourceHeartbeat, true); // (dest, source, isKm)\r\n\r\n }\r\n }\r\n \r\n \r\n \r\n // ---------------------------------------------------------------\r\n setDistanceUnit (dUnit: Unit) : void {\r\n this.distanceUnit = dUnit;\r\n // debugger;\r\n } \r\n}\r\n\r\n","\r\n
= 0\"\r\n id=\"distanceComponentId\"\r\n #distanceunit\r\n class=\"profileName text-left decrease\"\r\n style=\"font-size:0.65rem;font-weight:bold;display:inline;\">\r\n {{distanceUnit?.distance | toNumber | number:'1.2-2'}} {{distanceUnit?.unit}}\r\n 0\"\r\n style=\"width: auto; font-size: 0.65rem; font-weight: bold; display: inline;\"\r\n [innerHTML]=\"profileTile?.distanceStr | safe : 'html'\">\r\n {{ profileTile?.distanceStr }}\r\n \r\n
\r\n\r\n
\r\n {{distanceUnit?.unit}}\r\n 0\"\r\n style=\"width: auto; font-size: 0.65rem; font-weight: bold; display: inline;\"\r\n [innerHTML]=\"profileTile?.distanceStr | safe : 'html'\">\r\n {{ profileTile?.distanceStr }}\r\n \r\n
\r\n","'use-strict'\r\n// Ref:https://medium.com/@Idan_Co/angular-print-service-290651c721f9\r\nimport { Component, OnInit, Input, OnDestroy, AfterViewInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { EmitDropDownResult } from '../../../models/common/emitDropDownResult.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Component({\r\n selector: 'app-dropdown-box',\r\n templateUrl: './dropdownBox.component.html',\r\n styleUrls: ['./dropdownBox.component.scss'],\r\n})\r\nexport class DropdownBoxComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public dropdownBoxResult = new EmitDropDownResult();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n @Input() isRequired = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public signedInUserId = 0;\r\n public selectedItem: any;\r\n @Input() ddHeading = '';\r\n @Input() optionArr : string[] = [];\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit ()\r\n {\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy ()\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ---------------------------------------------------------------\r\n public selected ( dHeading : string, item : string, index : number ): any\r\n {\r\n this.selectedItem = item;\r\n this.dropdownBoxResult.index = index;\r\n this.dropdownBoxResult.dropdownBoxName = dHeading;\r\n this.dropdownBoxResult.dropdownSelection = item;\r\n this.dropdownBoxResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitDropDownResult( this.dropdownBoxResult );\r\n return true;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n isRequiredPassed ()\r\n {\r\n return this.dropdownBoxResult.dropdownSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n\r\n","
    \r\n
  • \r\n
    \r\n
    {{ddHeading}}* :
    {{selectedItem}}
    \r\n
      \r\n
    • {{item}}
    • \r\n
    \r\n
    \r\n
  • \r\n
\r\n","/**\r\n * EPLStyleEventEmitter (TypeScript)\r\n * - Simple extendable event dispatching class\r\n *\r\n * @version 0.1.5\r\n * @author John Vrbanac\r\n * @license MIT License\r\n *\r\n * modified by Eric Perron : Innovapost\r\n **/\r\n\r\nexport class Event {\r\n\r\n public static get COMPLETE() { return \"complete\"};\r\n public static get CHANGE() { return \"change\"};\r\n\r\n private _type:string;\r\n private _target:any;\r\n\r\n public data:any;\r\n\r\n constructor(type:string, targetObj:any) {\r\n this._type = type;\r\n this._target = targetObj;\r\n }\r\n\r\n public get target():any {\r\n return this._target;\r\n }\r\n\r\n public get type():string {\r\n return this._type;\r\n }\r\n\r\n public clone(targetObj:any):Event\r\n {\r\n let newEvent:Event = new Event(this.type,targetObj);\r\n newEvent.data = this.data;\r\n return newEvent;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport class PropertyChangeEvent extends Event\r\n{\r\n\r\n public static get BEFORE_CHANGE():string {return \"propertyChange\";};\r\n public static override get CHANGE():string {return \"beforePropertyChange\";};\r\n\r\n public oldValue:any;\r\n public newValue:any;\r\n public propertyName:string =\"\";\r\n\r\n public override clone(targetObj:any)\r\n {\r\n let newEvent:PropertyChangeEvent = new PropertyChangeEvent(this.type, targetObj);\r\n newEvent.data = this.data;\r\n newEvent.oldValue = this.oldValue;\r\n newEvent.newValue = this.newValue;\r\n newEvent.propertyName = this.propertyName;\r\n\r\n return newEvent;\r\n\r\n }\r\n\r\n constructor(type:string, obj:any)\r\n {\r\n super(type, obj);\r\n }\r\n\r\n}\r\n\r\n\r\nexport class EPLStyleEventEmitter {\r\n\r\n private _listeners:any[];\r\n\r\n constructor() {\r\n this._listeners = [];\r\n }\r\n\r\n private _mimicHandler(event:any, scope:any):void\r\n {\r\n let newEvent:any = event.clone(scope);\r\n scope.emit(newEvent);\r\n }\r\n\r\n public removeMimicEvent(type:string, dispatcherObj:EPLStyleEventEmitter):void\r\n {\r\n dispatcherObj.off(type,this._mimicHandler);\r\n }\r\n\r\n public mimicEvent(type:string, dispatcherObj:EPLStyleEventEmitter):void\r\n {\r\n dispatcherObj.on(type, this._mimicHandler, this);\r\n }\r\n\r\n public hasEventListener(type:string, listener:Function):Boolean {\r\n var exists:Boolean = false;\r\n for (var i = 0; i < this._listeners.length; i++) {\r\n if (this._listeners[i].type === type && this._listeners[i].listener === listener) {\r\n exists = true;\r\n }\r\n }\r\n\r\n return exists;\r\n }\r\n\r\n public on(type:string|Array, listenerFunc:Function, scope:any = null):void {\r\n\r\n if(typeof type == \"string\")\r\n {\r\n if (this.hasEventListener(type, listenerFunc))\r\n return;\r\n\r\n this._listeners.push({type: type, listener: listenerFunc, scope:scope});\r\n }\r\n else for(let typeItem of type)\r\n this.on(typeItem, listenerFunc, scope);\r\n }\r\n\r\n public off(type:string|Array, listenerFunc:Function):void {\r\n\r\n if(typeof type == \"string\")\r\n {\r\n for (var i = 0; i < this._listeners.length; i++) {\r\n if (this._listeners[i].type === type && this._listeners[i].listener === listenerFunc) {\r\n this._listeners.splice(i, 1);\r\n }\r\n }\r\n }\r\n else for(let typeItem of type)\r\n this.off(typeItem, listenerFunc);\r\n }\r\n\r\n public emit(evt:Event|string) {\r\n\r\n if(typeof evt == \"string\")\r\n evt = new Event(evt, this);\r\n\r\n for (var i = 0; i < this._listeners.length; i++)\r\n {\r\n if (this._listeners[i].type === evt.type)\r\n {\r\n this._listeners[i].listener.call(this, evt, this._listeners[i].scope);\r\n }\r\n }\r\n }\r\n}\r\n","import {EPLStyleEventEmitter, Event, PropertyChangeEvent} from \"./EPLStyleEventEmitter\";\r\nimport { StringUtils } from \"./StringUtils\";\r\n\r\n/**\r\n * Created by eric.perron on 19/07/2017.\r\n */\r\n\r\nexport class Key extends EPLStyleEventEmitter\r\n{\r\n public id:string = '';\r\n public get label():string { return this._label;};\r\n public get value():any { return this._value;};\r\n\r\n public set label(v:string)\r\n {\r\n if(this._label == v)\r\n return;\r\n\r\n // prepare the change event\r\n let e:PropertyChangeEvent = new PropertyChangeEvent(PropertyChangeEvent.CHANGE, this);\r\n e.newValue = v;\r\n e.oldValue = this._label;\r\n e.propertyName = \"label\";\r\n\r\n // change the value\r\n this._label = v;\r\n\r\n // dispatch the event\r\n this.emit(e);\r\n\r\n };\r\n\r\n\r\n public set value(v:any)\r\n {\r\n if(this._value == v)\r\n return;\r\n\r\n // prepare the change event\r\n let e:PropertyChangeEvent = new PropertyChangeEvent(PropertyChangeEvent.CHANGE, this);\r\n e.newValue = v;\r\n e.oldValue = this._value;\r\n e.propertyName = \"value\";\r\n\r\n // change the value\r\n this._value = v;\r\n\r\n // dispatch the event\r\n this.emit(e);\r\n\r\n };\r\n\r\n\r\n\r\n private _label:string;\r\n private _value:any;\r\n\r\n constructor(label:string = '', value:any, id:string = '')\r\n {\r\n super()\r\n\r\n this._label = label;\r\n this._value = value;\r\n\r\n if(!StringUtils.isNullOrEmpty(id))\r\n this.id = id;\r\n\r\n }\r\n\r\n}\r\n","import {EPLStyleEventEmitter, Event} from \"./EPLStyleEventEmitter\";\r\nimport { Logger } from \"./Logger\";\r\n\r\nexport class ListEvent extends Event {\r\n\r\n public static get ITEM_ADDED():string{ return \"itemAdded\";}\r\n public static get ITEM_REMOVED():string{ return \"itemRemoved\";}\r\n public static get ITEMS_ADDED():string{ return \"itemsAdded\";}\r\n public static get REMOVE_ALL():string{ return \"removeAll\";}\r\n public static get BEFORE_REMOVE_ALL():string{ return \"removeAll\";}\r\n\r\n public item:any;\r\n public items:Array = new Array();\r\n public index:number = -1;\r\n\r\n constructor(type:string, targetObj:any)\r\n {\r\n super(type, targetObj);\r\n }\r\n\r\n}\r\n\r\n\r\nexport class List extends EPLStyleEventEmitter{\r\n\r\n private _list:Array = [];\r\n\r\n\r\n constructor() {\r\n\r\n super();\r\n\r\n }\r\n\r\n public removeDuplicates():void\r\n {\r\n let outList:List = new List();\r\n let j:number;\r\n let found:Boolean = false;\r\n\r\n this.forEach((item:T, index:number)=>{\r\n let i:number = outList.indexOf(item);\r\n if(i != -1)\r\n this.removeItemAt(index);\r\n else\r\n outList.addItem(item);\r\n }, true);\r\n\r\n return ;\r\n\r\n }\r\n\r\n\r\n public getUniqueValues():List\r\n {\r\n let outList:List = new List();\r\n let j:number;\r\n let found:Boolean = false;\r\n\r\n this.forEach((item:T)=>{\r\n let i:number = outList.indexOf(item);\r\n if(i == -1)\r\n outList.addItem(item);\r\n });\r\n\r\n return outList;\r\n\r\n }\r\n\r\n public override toString():string\r\n {\r\n let result:string = \"\"\r\n this.forEach((item:any)=>{\r\n result += item.toString() +\",\";\r\n })\r\n result = result.substr(0,result.length-1);\r\n\r\n return result;\r\n }\r\n\r\n\r\n public get length():number\r\n {\r\n return this._list.length;\r\n }\r\n\r\n public get count():number\r\n {\r\n return this._list.length;\r\n }\r\n\r\n public removeItemAt(index:number):void {\r\n // remove from the list\r\n\r\n if(index < 0 && index > (this._list.length - 1))\r\n {\r\n Logger.debug(\"Index is out of range. index: \" + index + \".\")\r\n return;\r\n }\r\n\r\n let rslt: Array = this._list.splice(index, 1);\r\n\r\n if (rslt.length == 0)\r\n {\r\n Logger.debug(\"Unable to remove item at \" + index + \". Nothing returned by the splice method!\")\r\n return;\r\n }\r\n\r\n let item = rslt[0];\r\n\r\n let event:ListEvent = new ListEvent(ListEvent.ITEM_REMOVED, this);\r\n event.item = item;\r\n event.index = index;\r\n this.emit(event);\r\n\r\n return item;\r\n\r\n }\r\n\r\n public removeAll():void{\r\n\r\n let event:ListEvent = new ListEvent(ListEvent.BEFORE_REMOVE_ALL, this);\r\n this.emit(event);\r\n\r\n this._list = [];\r\n\r\n let event2:ListEvent = new ListEvent(ListEvent.REMOVE_ALL , this);\r\n this.emit(event2);\r\n\r\n }\r\n\r\n public itemAt(index:number):T\r\n {\r\n return this._list[index];\r\n }\r\n\r\n public find(callback:Function, data:any = null):number\r\n {\r\n let flag;\r\n let index:number = 0\r\n\r\n for(index; index=0; index--)\r\n {\r\n let flag: string = callback(this.itemAt(index), index);\r\n if (flag == \"break\")\r\n break;\r\n }\r\n } else {\r\n for (let index: number = 0; index < this.length; index++) {\r\n let flag:string = callback(this.itemAt(index), index);\r\n if (flag == \"break\")\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public async forEachAsync(callback:Function):Promise\r\n {\r\n for(let index:number = 0; index\r\n {\r\n let scope:List = this;\r\n let index = 0;\r\n\r\n return new Promise((resolve, reject)=> {\r\n\r\n let onFail:Function = function(error:any):void{\r\n reject(error);\r\n }\r\n\r\n let onSuccess: Function = function () {\r\n index++;\r\n if (index < scope.length)\r\n callback(scope.itemAt(index), index).then(onSuccess, onFail);\r\n else\r\n resolve(true);\r\n };\r\n\r\n // Start the iteration\r\n callback(this.itemAt(index), index).then(onSuccess);\r\n\r\n });\r\n }\r\n\r\n public updateItemAt(item:T, index:number = -1):T\r\n {\r\n this._list[index] = item;\r\n\r\n let event:ListEvent = new ListEvent(ListEvent.CHANGE, this);\r\n event.item = item;\r\n event.index = index;\r\n this.emit(event);\r\n\r\n return item;\r\n }\r\n\r\n public update(f:Function):void{\r\n for(let index:number = 0; index{\r\n for(let index:number = 0; index this._list.length)\r\n this._list.push(item);\r\n else\r\n this._list.splice(index, 0, item);\r\n\r\n let event:ListEvent = new ListEvent(ListEvent.ITEM_ADDED, this);\r\n event.item = item;\r\n event.index = index;\r\n this.emit(event);\r\n\r\n return item;\r\n }\r\n\r\n public addItem(item:T):T\r\n {\r\n this.addItemAt(item, -1);\r\n\r\n return item;\r\n }\r\n\r\n public addItemsByList(items:List):void\r\n {\r\n items.forEach((item:T)=>{\r\n this._list.push(item);\r\n });\r\n\r\n let event:ListEvent = new ListEvent(ListEvent.ITEMS_ADDED, this);\r\n event.items = items.toArray();\r\n this.emit(event);\r\n\r\n }\r\n\r\n public toArray():Array\r\n {\r\n let arr:Array = [];\r\n\r\n this.forEach((item:T)=>{\r\n arr.push(item);\r\n });\r\n\r\n return arr;\r\n }\r\n\r\n\r\n public addItems(items:Array):void\r\n {\r\n if(items == null || items.length == 0)\r\n return;\r\n\r\n for(let item of items )\r\n this._list.push(item);\r\n\r\n let event:ListEvent = new ListEvent(ListEvent.ITEMS_ADDED, this);\r\n event.items = items;\r\n this.emit(event);\r\n }\r\n\r\n public removeItem(item:T):void\r\n {\r\n let i:number = this.indexOf(item);\r\n if(i == -1)\r\n return;\r\n\r\n this.removeItemAt(i);\r\n\r\n }\r\n\r\n public removeAllItem(item:T):void\r\n {\r\n for(let i:number = this.length-1; i >= 0; i--)\r\n {\r\n if(this.itemAt(i) == item)\r\n this.removeItemAt(i);\r\n }\r\n\r\n }\r\n\r\n public indexOf(item:T):number\r\n {\r\n return this._list.indexOf(item);\r\n }\r\n\r\n public contains(item:T):boolean\r\n {\r\n return (this._list.indexOf(item) != -1);\r\n }\r\n\r\n\r\n public lastIndexOf(item:T):number\r\n {\r\n return this._list.lastIndexOf(item);\r\n }\r\n\r\n public getItemById(id:String, propertyName:string = \"id\", ignoreCase:boolean = false):any\r\n {\r\n for(let i:number = 0; i < this.length; i++)\r\n {\r\n let item:any = this.itemAt(i);\r\n if(item != null)\r\n {\r\n if(item[propertyName] == id)\r\n return item;\r\n else if(ignoreCase && item[propertyName].toLowerCase() == id.toLowerCase())\r\n return item;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public get list():Array\r\n {\r\n return this._list;\r\n }\r\n\r\n}\r\n","import { StringUtils } from \"./StringUtils\";\r\nexport class Logger {\r\n\r\n public static TAG:string = \"EPL\";\r\n private static _offset:number = 0;\r\n public static padding:number = 8;\r\n\r\n public static offset(f:Function):void{\r\n this.offsetMore();\r\n try{f()} catch(e){\r\n this.offsetLess();\r\n throw e;\r\n }\r\n this.offsetLess();\r\n };\r\n\r\n public static async asyncOffset(f:Function):Promise{\r\n this.offsetMore();\r\n try{await f()} catch(e){\r\n this.offsetLess();\r\n throw e;\r\n }\r\n this.offsetLess();\r\n };\r\n\r\n\r\n public static offsetMore(){\r\n\r\n this._offset += 2;\r\n }\r\n\r\n public static offsetLess(){\r\n\r\n this._offset -= 2;\r\n }\r\n\r\n private static tag(text:string = \"\"):string{\r\n\r\n return StringUtils.spacePadding(this.TAG + text, this.padding + this._offset)\r\n }\r\n\r\n public static title(msg:string):void\r\n {\r\n console.info(this.tag() + \"--------------------------------\");\r\n console.info(this.tag() + msg);\r\n console.info(this.tag() + \"--------------------------------\");\r\n }\r\n\r\n\r\n public static infoFormat(msg:string, values:Array):void {\r\n msg = StringUtils.Format(msg, values);\r\n Logger.info(msg);\r\n }\r\n\r\n public static info(msg:string):void\r\n {\r\n console.info(this.tag(\"[I]\") + msg);\r\n }\r\n\r\n public static debug(msg:string):void\r\n {\r\n console.debug(this.tag(\"[D]\") + msg);\r\n }\r\n\r\n public static warning(msg:string):void\r\n {\r\n console.warn(\"%c\"+ this.tag(\"[W]\") + msg + \" \", \"color:white; background:gray;\");\r\n }\r\n\r\n public static error(msg:string):void\r\n {\r\n console.error(\"%c\"+ this.tag(\"[E]\") + msg + \" \", \"color:white; background:red;\");\r\n }\r\n\r\n public static errorFormat(msg:string, values:Array):void {\r\n msg = StringUtils.Format(msg, values);\r\n Logger.error(msg);\r\n }\r\n\r\n public static debugFormat(msg:string, values:Array):void {\r\n msg = StringUtils.Format(msg, values);\r\n Logger.debug(msg);\r\n }\r\n\r\n public static warningFormat(msg:string, values:Array):void\r\n {\r\n msg = StringUtils.Format(msg, values);\r\n this.warning(msg);\r\n }\r\n\r\n public static titleFormat(msg:string, values:Array):void\r\n {\r\n msg = StringUtils.Format(msg, values);\r\n this.title(msg);\r\n }\r\n\r\n}\r\n","/**\r\n * Created by eric.perron on 11/07/2017.\r\n */\r\nexport class StringSearch {\r\n\r\n\r\n constructor(content:string, contentBeginsWith:string, contentEndsWith:string = \"\", caseSensitive:Boolean = false)\r\n {\r\n this.content = content;\r\n this.contentBeginsWith = contentBeginsWith;\r\n this.contentEndsWith = contentEndsWith;\r\n this.caseSensitive = caseSensitive;\r\n }\r\n\r\n\r\n// **************************************\r\n // PUBLIC GETS AND SETS\r\n // **************************************\r\n\r\n public get index():number\r\n {\r\n return this._index;\r\n }\r\n\r\n public get indexEnd():number\r\n {\r\n return this._indexEnd;\r\n }\r\n\r\n public get indexInnerStart():number\r\n {\r\n return this._indexInnerStart;\r\n }\r\n\r\n public get indexInnerEnd():number\r\n {\r\n return this._indexInnerEnd;\r\n }\r\n\r\n public get result():string\r\n {\r\n return this._result;\r\n }\r\n\r\n public get innerResult():string\r\n {\r\n return this._innerResult;\r\n }\r\n\r\n // **************************************\r\n // PUBLIC PROPERTIES\r\n // **************************************\r\n\r\n public content:string\r\n public contentBeginsWith:string = \"\";\r\n public contentEndsWith:string = \"\"\r\n public caseSensitive:Boolean = false;\r\n\r\n\r\n // **************************************\r\n // PRIVATE METHODS\r\n // **************************************\r\n\r\n public searchNext()\r\n {\r\n if(this.index+1 >= this.content.length)\r\n return -1;\r\n else\r\n return this.search(this.index+1);\r\n\r\n }\r\n\r\n public search(indexOffset:number = 0):number\r\n {\r\n\r\n this._resetResults();\r\n\r\n // makes sure there is something in this string;\r\n if(this.content == null || this.content == \"\")\r\n return -1;\r\n\r\n let clc:string = this.content.toLowerCase();\r\n\r\n if(!this.caseSensitive)\r\n this._index = clc.indexOf(this.contentBeginsWith.toLowerCase(), indexOffset);\r\n else\r\n this._index = this.content.indexOf(this.contentBeginsWith, indexOffset);\r\n\r\n if(this._index == -1)\r\n return -1;\r\n\r\n this._indexInnerStart = this._index + this.contentBeginsWith.length;\r\n\r\n if(this.contentEndsWith == \"\"){\r\n this._indexInnerStart = -1;\r\n this._indexEnd = this._indexInnerStart;\r\n return this._index;\r\n }\r\n\r\n if(!this.caseSensitive)\r\n this._indexInnerEnd = clc.indexOf(this.contentEndsWith.toLowerCase(), this._indexInnerStart);\r\n else\r\n this._indexInnerEnd = this.content.indexOf(this.contentEndsWith, this._indexInnerStart);\r\n\r\n if(this._indexInnerEnd == -1)\r\n {\r\n this._indexInnerStart = -1;\r\n this._indexEnd = this._indexInnerStart;\r\n return this._index;\r\n }\r\n\r\n this._innerResult = this.content.substring(this._indexInnerStart, this._indexInnerEnd);\r\n this._indexEnd = this._indexInnerEnd+this.contentEndsWith.length;\r\n this._result = this.content.substring(this._index, this._indexEnd);\r\n\r\n return this.index;\r\n }\r\n\r\n // **************************************\r\n // PRIVATE PROPERTIES\r\n // **************************************\r\n\r\n private _index:number = 0;\r\n private _indexOffset:number = 0;\r\n private _indexEnd:number = 0;\r\n private _indexInnerStart:number = 0;\r\n private _indexInnerEnd:number = 0;\r\n\r\n private _result : string = '';\r\n private _innerResult:string = '';\r\n\r\n // **************************************\r\n // PRIVATE METHODS\r\n // **************************************\r\n\r\n private _resetResults():void\r\n {\r\n\r\n this._index= -1;\r\n this._indexEnd = -1\r\n this._indexInnerStart = -1;\r\n this._indexInnerEnd = -1;\r\n\r\n this._result = \"\";\r\n this._innerResult = \"\";\r\n\r\n }\r\n\r\n // **************************************\r\n // CONSTRUCTOR\r\n // **************************************\r\n\r\n\r\n\r\n\r\n}\r\n","\r\nimport { ArrayServiceStatic } from \"../../../services/staticServices/arrayServiceStatic.service\";\r\nimport { ArraySupportServiceStatic } from \"../../../services/staticServices/arraySupportServiceStatic.service\";\r\nimport { StringSearch } from \"./StringSearch\";\r\n\r\nexport class StringUtils {\r\n\r\n\r\n constructor() {}\r\n\r\n\r\n\r\n public isPostalCode(str:string, advanced:boolean = false):Boolean {\r\n\r\n let pattern:string = '[A-Za-z][0-9][A-Za-z] ?[0-9][A-Za-z][0-9]';\r\n if(advanced){\r\n let letters = \"ABCEGHJKLMNPRSTVXY\";\r\n letters += letters.toLowerCase();\r\n pattern = '['+letters+'][0-9]['+letters+'] ?[0-9]['+letters+'][0-9]';\r\n }\r\n\r\n let ex:RegExp = new RegExp(pattern);\r\n\r\n return ex.test(str);\r\n }\r\n\r\n public static clip(str:string, length:number, threePoints:boolean = false)\r\n {\r\n if(str.length > length)\r\n {\r\n if(threePoints)\r\n length -= 3;\r\n str = str.substring(0,length);\r\n if(threePoints)\r\n str+=\"...\"\r\n }\r\n\r\n return str;\r\n }\r\n\r\n public static toTitleCase(str:string):string{\r\n let flag:boolean = false;\r\n let out:string = \"\";\r\n\r\n for(let i = 0; i < str.length; i++){\r\n let c:string = str[i];\r\n\r\n if(flag || i == 0)\r\n c = c.toUpperCase();\r\n else\r\n c = c.toLowerCase();\r\n\r\n out += c;\r\n flag = (c == \" \");\r\n\r\n }\r\n\r\n return out;\r\n }\r\n\r\n public static toSentenceCase(str:string):string{\r\n\r\n let out:string = \"\";\r\n let flag:boolean = true;\r\n\r\n for(let i = 0; i < str.length; i++){\r\n let c:string = str[i];\r\n\r\n c = flag? c.toUpperCase(): c = c.toLowerCase();\r\n\r\n if(c != \" \") flag = false;\r\n if(c == \".\") flag = true;\r\n\r\n out += c;\r\n\r\n }\r\n\r\n return out;\r\n }\r\n\r\n public static startsWith(str:string, subString:string, caseSensitive:boolean = true):boolean\r\n {\r\n if(str == null || subString == null)\r\n return false;\r\n\r\n if(caseSensitive)\r\n return str.indexOf(subString) == 0;\r\n\r\n return str.toLowerCase().indexOf(subString.toLowerCase()) == 0;\r\n\r\n }\r\n\r\n public static obfuscate(str:string, reverse:boolean = false, extendedChars:boolean = false)\r\n {\r\n /*\r\n this method can be useful to hide text in the javascript code that you don't want someone to\r\n be able to find by simply searching the source code.\r\n\r\n This method is not an encryption function in the sence that it should never be used for security\r\n measures. The reason for this is obvious, the key is right inline!!\r\n */\r\n\r\n let codes:Array = [48,98,65,83,121,46,101,114,119,88,106,42,37,58,107,122,38,70,59,92,43,50,125,110,80,67,124,91,73,77,111,127,89,34,120,63,90,82,96,126,109,112,118,36,44,97,84,87,115,102,105,116,41,32,47,62,54,99,104,33,53,79,69,51,45,117,61,94,95,85,72,113,78,40,75,108,39,52,35,123,100,68,55,56,81,74,49,71,86,93,76,60,66,57,64,103];\r\n let codeExt:Array = [197,148,45,143,150,168,121,85,149,116,255,127,144,92,195,59,125,252,60,193,179,134,91,93,76,219,100,215,50,202,94,151,162,48,246,177,175,126,139,114,241,63,83,110,136,49,210,205,79,42,172,35,109,70,201,236,122,111,234,224,187,181,137,176,159,212,77,206,138,105,160,64,178,170,104,115,192,117,145,86,142,166,120,101,82,38,222,61,155,199,58,214,174,130,229,66,98,68,211,107,141,54,203,247,129,132,223,188,171,228,158,74,218,189,227,99,221,239,220,108,80,51,46,102,180,52,88,78,184,208,216,209,191,89,163,207,198,36,97,186,173,250,230,55,251,34,242,237,135,217,39,167,183,200,106,243,133,226,165,123,235,62,154,249,153,118,190,213,161,71,75,65,128,124,140,47,185,119,37,231,182,238,225,204,146,72,33,244,69,248,157,156,103,112,254,84,245,95,152,131,96,81,67,90,169,44,113,164,53,73,194,87,32,196,233,41,56,240,147,40,253,232,57,43];\r\n let out:string = \"\";\r\n\r\n if(extendedChars)\r\n codes = codeExt;\r\n\r\n if(!reverse)\r\n {\r\n for(let char of str) {\r\n let code:number = char.charCodeAt(0)-32;\r\n out += String.fromCharCode(codes[code]);\r\n }\r\n return out;\r\n }\r\n else\r\n {\r\n for(let char of str)\r\n {\r\n let i:number = codes.indexOf(char.charCodeAt(0));\r\n out += String.fromCharCode(i+32);\r\n }\r\n\r\n return out;\r\n }\r\n }\r\n\r\n public static randomString(length:number):string\r\n {\r\n let str:string = \"\";\r\n\r\n for(let i:number = 0; i < length; i++)\r\n {\r\n let g:number = Math.round(Math.random()*2)\r\n let c:number = 0;\r\n\r\n // 48 to 57 [0 to 9]\r\n if(g == 0) c = Math.round(Math.random()*(57-48))+48\r\n\r\n // 65 to 90 [A to Z]\r\n if(g == 1) c = Math.round(Math.random()*(90-65))+65\r\n\r\n // 97 to 122 [a to a]\r\n if(g == 2) c = Math.round(Math.random()*(122-97))+97\r\n\r\n str+= String.fromCharCode(c);\r\n\r\n }\r\n\r\n return str;\r\n }\r\n\r\n public static Format(str:string, values:Array):string\r\n {\r\n for(let i:number = 0; i < values.length; i++)\r\n str = StringUtils.replace(str, \"{\"+i+\"}\", values[i]);\r\n\r\n return str;\r\n }\r\n\r\n public static splitAt(str:string, index:number):Array\r\n {\r\n let arr:Array = [];\r\n arr[0] = str.substring(0,index);\r\n arr[1] = str.substring(index+1,str.length + 1);\r\n\r\n return arr;\r\n }\r\n\r\n public static indexOfMany(text:string, arr:Array):number\r\n {\r\n let min:number = -1;\r\n\r\n for(let v of arr)\r\n {\r\n let i:number = text.indexOf(v);\r\n if(min == -1) min = i;\r\n\r\n if(i < min && i != -1)\r\n {\r\n min = i;\r\n }\r\n }\r\n\r\n return min;\r\n }\r\n\r\n public static isPostalCode(str:string):Boolean\r\n {\r\n str = StringUtils.replace(str, \" \",\"\");\r\n return StringUtils.validateMask(str, \"A#A#A#\");\r\n }\r\n\r\n public static charIsAnumber(char:string):Boolean\r\n {\r\n if(char.charCodeAt(0) >=48 && char.charCodeAt(0) <=57)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n public static charIsALetter(char:string):Boolean\r\n {\r\n // a to z\r\n if(char.charCodeAt(0) >=97 && char.charCodeAt(0) <=122)\r\n return true;\r\n\r\n // A to Z\r\n if(char.charCodeAt(0) >=65 && char.charCodeAt(0) <=90)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n public static validateMask(str:string, mask:string):Boolean\r\n {\r\n if(str.length != mask.length)\r\n return false;\r\n\r\n // A = Letter\r\n // # = number\r\n // exeample Masks: A#A#A#, (###) ###-####\r\n\r\n for(let i:number = 0; i < mask.length; i++)\r\n {\r\n let cMask:string = mask.charAt(i).toLowerCase();\r\n let cStr:string = str.charAt(i);\r\n\r\n // not enough characters!\r\n if(cStr == null)\r\n {\r\n // Logger.debug(\"StringUtils: cStr is null\");\r\n return false;\r\n }\r\n\r\n if(cMask == \"a\")\r\n {\r\n if( !StringUtils.charIsALetter(cStr) )\r\n return false;\r\n }\r\n else if(cMask == \"#\")\r\n {\r\n if(!StringUtils.charIsAnumber(cStr) )\r\n return false;\r\n }\r\n else if(cMask != cStr)\r\n {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n public static applyMask(str:string, mask:string):string\r\n {\r\n let output:string = \"\";\r\n let iStr:number = 0;\r\n\r\n for(let i:number = 0; i < mask.length; i++)\r\n {\r\n let c:string = mask.charAt(i).toLowerCase();\r\n if(c == \"a\" || c == \"#\")\r\n {\r\n output += str.charAt(iStr);\r\n iStr ++;\r\n }\r\n else\r\n output += c;\r\n }\r\n\r\n return output;\r\n }\r\n public static indexOfInArr (arr : Array, value : Object, subFieldName : any = null) : number {\r\n if (arr == null || arr.length == 0)\r\n return -1;\r\n for (let i : number = 0; i < arr.length; i++) {\r\n\r\n if (subFieldName != null && arr[ i ][ subFieldName ] == value)\r\n return i;\r\n else if (arr[ i ] == value)\r\n return i;\r\n }\r\n return -1;\r\n }\r\n public static toBool(str:string):boolean\r\n {\r\n if(str == null)\r\n return false;\r\n\r\n str = str.toLowerCase();\r\n\r\n if(this.indexOfInArr(['1','true','t','on','yes','y','oui'],str)!= -1)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n\r\n\r\n public static getValue(str:string):any\r\n {\r\n str = str.toLowerCase();\r\n if(str == \"false\") return false;\r\n if(str == \"true\") return true;\r\n\r\n let num:number = parseFloat(str);\r\n if(!isNaN(num))\treturn num;\r\n\r\n let i:number = parseInt(str);\r\n if(!isNaN(i)) return i;\r\n\r\n return str;\r\n }\r\n\r\n\r\n// Removes all spaces and sets the string to lower case.\r\n// then sends the index of str2 in str1.\r\n\r\n public static simplifyIndexOf(str1:string, str2:string):number\r\n {\r\n str1 = StringUtils.simplify(str1);\r\n str2 = StringUtils.simplify(str2);\r\n return str1.indexOf(str2);\r\n }\r\n\r\n// Removes all spaces and sets the string to lower case.\r\n// then verifies if both are the same.\r\n\r\n public static simplifyIsEqual(str1:string, str2:string):Boolean\r\n {\r\n return (StringUtils.simplify(str1) == StringUtils.simplify(str2));\r\n }\r\n\r\n public static isNullOrEmpty(str:string):boolean\r\n {\r\n return (str == null || str.length == 0 || str == \"\" || str == \"undefined\" || str == \"null\");\r\n }\r\n\r\n // Sayeed Rahman: 20220106: begin\r\n // -------------------------------------------------------\r\n public static isNullOrUndefined ( input: any )\r\n {\r\n if ( input === null || input === '' || input === undefined || ( input !== null && ( input.toString().toLowerCase() === 'null' || input.toString().toLowerCase() === 'undefined' ) ) )\r\n {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // -------------------------------------------------------\r\n // This method converts a string to Decimal number with up to two significant digits only\r\n public static toDecimal(numString: string){\r\n let result = 0.0;\r\n let decimalNum = 0;\r\n let baseNum = 0;\r\n if(numString)\r\n {\r\n numString = StringUtils.simplify(numString);\r\n if(numString.toString().indexOf('.') !== -1)\r\n {\r\n let parts = numString.toString().split('.');\r\n if(parts && parts.length > 1)\r\n {\r\n baseNum = parseInt(parts[0]);\r\n if(parts[1].toString().length > 1)\r\n {\r\n decimalNum = parseInt(parts[1]) / 100;\r\n }\r\n else decimalNum = parseInt(parts[1]) / 10;\r\n\r\n result = baseNum + decimalNum;\r\n }\r\n }\r\n else result = (parseInt(numString) * 100) / 100;\r\n }\r\n return result;\r\n }\r\n // --------------------------------------------------------\r\n // the input string may contain '$' sign, and comma\r\n // --------------------------------------------------------\r\n public static costStringToNum(inputTotalCost: string) : number{\r\n var tTotalCostNum = 0; \r\n var totalCostParts: any[] = []; \r\n var decimalCostParts: any[] = []; \r\n var decimalStr = '';\r\n var isDollarSignFound = false;\r\n var isCommaFound = false;\r\n var isDecimalPointFound = false;\r\n\r\n \r\n if(inputTotalCost){\r\n if(inputTotalCost.toString().indexOf('$') !== -1)\r\n {\r\n isDollarSignFound = true;\r\n }\r\n if(inputTotalCost.toString().indexOf(',') !== -1)\r\n {\r\n isCommaFound = true;\r\n }\r\n if(inputTotalCost.toString().indexOf('.') !== -1)\r\n {\r\n isDecimalPointFound = true;\r\n }\r\n } \r\n\r\n if(isCommaFound){\r\n inputTotalCost = inputTotalCost.toString().replace(',', '');\r\n }\r\n\r\n if(isDollarSignFound)\r\n {\r\n totalCostParts = inputTotalCost.toString().split('$');\r\n if(totalCostParts)\r\n {\r\n if(totalCostParts.length > 1){\r\n if(isDecimalPointFound){\r\n decimalCostParts = totalCostParts[1].toString().split('.');\r\n }\r\n else {\r\n decimalCostParts = [totalCostParts[1]];\r\n }\r\n }\r\n else {\r\n if(isDecimalPointFound){\r\n decimalCostParts = inputTotalCost.toString().split('.');\r\n }\r\n else {\r\n decimalCostParts = [inputTotalCost];\r\n }\r\n }\r\n }\r\n else if(isDecimalPointFound){\r\n decimalCostParts = inputTotalCost.toString().split('.');\r\n }\r\n }\r\n else if(isDecimalPointFound){\r\n decimalCostParts = inputTotalCost.toString().split('.');\r\n }\r\n else {\r\n decimalCostParts = [inputTotalCost];\r\n }\r\n \r\n if(decimalCostParts )\r\n {\r\n if(decimalCostParts.length == 2 ){\r\n if(!this.isNullOrUndefined(decimalCostParts[1]))\r\n { \r\n decimalStr = decimalCostParts[0] + '.' + decimalCostParts[1];\r\n }\r\n else {\r\n decimalStr = decimalCostParts[0]\r\n }\r\n }\r\n else if(decimalCostParts.length == 1)\r\n {\r\n decimalStr = decimalCostParts[0]\r\n }\r\n else {\r\n decimalStr = inputTotalCost;\r\n }\r\n }\r\n else {\r\n decimalStr = inputTotalCost;\r\n tTotalCostNum = this.toDecimal(inputTotalCost);\r\n // debugger;\r\n }\r\n\r\n if(decimalStr){ \r\n tTotalCostNum = this.toDecimal(decimalStr);\r\n // debugger;\r\n }\r\n // debugger;\r\n return tTotalCostNum;\r\n }\r\n // ------------------------------------------------------- \r\n // Sayeed Rahman: 20220106: end\r\n // -------------------------------------------------------\r\n public static spacePadding(str:string, length:number, left:Boolean = false, spaceChar:string = \" \"):string\r\n {\r\n if(str.length > length)\r\n return str;\r\n\r\n let spaces:string = \"\";\r\n\r\n for(let i:number = str.length; i < length; i++)\r\n spaces += spaceChar;\r\n\r\n if(left)\r\n return spaces + str;\r\n else\r\n return str + spaces;\r\n }\r\n\r\n public static spaceOffset(str:string, length:number, left:Boolean = true, spaceChar:string = \" \"):string\r\n {\r\n let spaces:string = \"\";\r\n\r\n for(let i:number = 0; i < length; i++)\r\n spaces += spaceChar;\r\n\r\n if(left)\r\n return spaces + str;\r\n else\r\n return str + spaces;\r\n }\r\n\r\n\r\n// Removes all spaces and sets the string to lower case.\r\n public static simplify(str:string):string\r\n {\r\n if (str == null || str == \"\")\r\n return str;\r\n\r\n str = StringUtils.replace(str, \" \", \"\", false, true);\r\n // str = str.toLowerCase(); // Sayeed Rahman: bug: toLowerCase() is not a funciton\r\n\r\n return str;\r\n }\r\n\r\n public static removeExtraSpaces(str:string, leadingSpaces:Boolean = true, endingSpaces:Boolean=true, doubleSpaces:Boolean = false):string\r\n {\r\n if(StringUtils.isNullOrEmpty(str))\r\n return \"\";\r\n\r\n let i:number = 0;\r\n let flag:Boolean = false;\r\n\r\n if(leadingSpaces)\r\n {\r\n\r\n do\r\n {\r\n flag = (str.charAt(i) == \" \" || str.charAt(i) == \"\\t\");\r\n if(flag) i++;\r\n }\r\n while(flag);\r\n\r\n str = str.substring(i, str.length);\r\n }\r\n\r\n if(endingSpaces)\r\n {\r\n i = str.length - 1;\r\n\r\n do\r\n {\r\n flag = (str.charAt(i) == \" \" || str.charAt(i) == \"\\t\");\r\n if(flag) i--;\r\n }\r\n while(flag);\r\n\r\n str = str.substring(0, i + 1);\r\n }\r\n\r\n if(doubleSpaces)\r\n str = StringUtils.replace(str, \" \", \" \", false, true);\r\n\r\n return str;\r\n }\r\n\r\n\r\n public static replaceVariables(str:string, variables:any[], caseSensitive:Boolean = false):string\r\n {\r\n for(let each in variables)\r\n str = StringUtils.replace(str, \"{\" + each + \"}\", variables[each] as any, caseSensitive);\r\n\r\n return str;\r\n }\r\n\r\n public static removeFrenchChars(str:string):string{\r\n\r\n let frenchCharsA:Array = ['À','Â','Ä','È','É','Ê','Ë','Î','Ï','Ô','Œ', 'Ù','Û','Ü','Ÿ','à','â','ä','è','é','ê','ë','î','ï','ô','œ', 'ù','û','ü','ÿ','Ç','ç','«','»','€'];\r\n let frenchCharsB:Array = ['A','A','A','E','E','E','E','I','I','O','OE','U','U','U','Y','a','a','a','e','e','e','e','i','i','o','oe','u','u','u','y','C','c','\"','\"','euro'];\r\n\r\n frenchCharsA.forEach((char, index)=>{\r\n str = StringUtils.replace(str, char, frenchCharsB[index],true, true);\r\n });\r\n\r\n return str;\r\n\r\n }\r\n\r\n public static indexOf(str:string, find:string, position:number = 0, caseSensitivte:boolean = false, ignoreFrenchChars:boolean = false):number\r\n {\r\n if(StringUtils.isNullOrEmpty(str) || StringUtils.isNullOrEmpty(find))\r\n return -1;\r\n\r\n if(!caseSensitivte) {\r\n str = str.toLowerCase();\r\n find = find.toLowerCase();\r\n }\r\n\r\n if(ignoreFrenchChars){\r\n str = StringUtils.removeFrenchChars(str);\r\n find = StringUtils.removeFrenchChars(find);\r\n }\r\n\r\n return str.indexOf(find);\r\n\r\n }\r\n\r\n\r\n public static replace(str:string, find:string, replaceWith:string, caseSensitive:Boolean = false, recursive:Boolean = false):string\r\n {\r\n if(typeof(str) != \"string\")\r\n return str;\r\n\r\n if(str == null || str == \"\")\r\n return str;\r\n\r\n if(find == replaceWith || str == null)\r\n return str;\r\n\r\n let strOut:string = \"\";\r\n\r\n let s:StringSearch = new StringSearch(str, find, \"\", caseSensitive);\r\n let i:number=0;\r\n let i2:number = 0;\r\n\r\n do\r\n {\r\n i2 = s.search(i);\r\n if(i2 != -1)\r\n {\r\n\r\n strOut += str.substring(i, i2)+replaceWith;\r\n\r\n i = i2+find.length;\r\n\r\n }\r\n else\r\n {\r\n strOut += str.substring(i, str.length);\r\n i = -1;\r\n }\r\n\r\n }\r\n while(i != -1);\r\n\r\n if(recursive && strOut.indexOf(find) != -1 )\r\n strOut = StringUtils.replace(strOut, find, replaceWith, caseSensitive, recursive);\r\n\r\n return strOut;\r\n }\r\n\r\n\r\n public static textFileToLines(str:string):Array\r\n {\r\n return StringUtils.splitWithMultipleDelimeter(str, [\"\\r\\n\", \"\\r\", \"\\n\"]);\r\n }\r\n\r\n public static parse(search:StringSearch, innerResultOnly:Boolean, f:Function):string\r\n {\r\n if(!search.content || search.content == \"\")\r\n return \"\";\r\n\r\n let i:number = 0;\r\n let i2:number = -1;\r\n let strOut:string = \"\";\r\n\r\n do\r\n {\r\n i2 = search.search(i);\r\n\r\n if(i2 != -1)\r\n {\r\n\r\n if(innerResultOnly)\r\n {\r\n strOut += search.content.substring(i, search.indexInnerStart) + f(search);\r\n i = search.indexInnerEnd;\r\n\r\n }\r\n else\r\n {\r\n strOut += search.content.substring(i, i2) + f(search);\r\n i = search.indexEnd;\r\n }\r\n\r\n\r\n }\r\n else\r\n {\r\n strOut += search.content.substring(i, search.content.length);\r\n i = -1;\r\n }\r\n }\r\n while(i != -1);\r\n\r\n\r\n return strOut;\r\n }\r\n\r\n public static split(str:string, delimeter:string, caseSensitive:Boolean = false):Array\r\n {\r\n\r\n let arr:Array = [];\r\n let tmp_str:string = str;\r\n let tmp_delimeter:string = delimeter;\r\n\r\n if(!caseSensitive)\r\n {\r\n if(tmp_str)\r\n tmp_str = tmp_str.toLowerCase();\r\n if(tmp_delimeter)\r\n tmp_delimeter = tmp_delimeter.toLowerCase();\r\n }\r\n\r\n let i:number = 0;\r\n let i2:number = tmp_str.indexOf(tmp_delimeter);\r\n\r\n if(i2 == -1)\r\n return [str];\r\n\r\n do\r\n {\r\n arr.push(str.substring(i, i2));\r\n i = i2 + tmp_delimeter.length;\r\n i2 = tmp_str.indexOf(tmp_delimeter, i2 + tmp_delimeter.length);\r\n }\r\n while(i2 != -1);\r\n\r\n arr.push(str.substring(i, tmp_str.length));\r\n\r\n return arr;\r\n\r\n }\r\n\r\n public static spitStrings(arrStr:Array, delimeter:string, caseSensitive:Boolean = false):Array\r\n {\r\n\r\n let outArr:Array = [];\r\n let tmpArr:Array;\r\n\r\n for (let i:number = 0; i < arrStr.length; i++)\r\n {\r\n tmpArr = StringUtils.split(arrStr[i], delimeter, caseSensitive);\r\n\r\n for (let j:number = 0; j < tmpArr.length; j++ )\r\n {\r\n outArr.push(tmpArr[j]);\r\n }\r\n }\r\n\r\n return outArr;\r\n }\r\n\r\n public static splitWithMultipleDelimeter(str:string, delimeters:Array, caseSensitive:Boolean = false):Array\r\n {\r\n\r\n let arrOut:Array = [str];\r\n\r\n for (let i:number = 0; i < delimeters.length; i++ )\r\n {\r\n arrOut = StringUtils.spitStrings(arrOut, delimeters[i], caseSensitive);\r\n }\r\n\r\n return arrOut;\r\n }\r\n\r\n public static trim(input:string):string\r\n {\r\n if (input == null || input.length == 0)\r\n return input;\r\n\r\n return this.removeExtraSpaces(input, true, true, false)\r\n\r\n // let rtrim:RegExp = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\r\n // return input.replace(rtrim, '');\r\n\r\n }\r\n\r\n\r\n}\r\n","import { StringUtils } from \"./StringUtils\";\r\nimport { Logger } from \"./Logger\";\r\nimport {Key} from \"./Key\";\r\nimport {List} from \"./List\";\r\n/**\r\n * Created by eric.perron on 18/07/2017.\r\n */\r\nexport class URLUtils {\r\n\r\n\r\n public static pathToURIParams(path:string = ''):List {\r\n\r\n if (path == null || path == \"\")\r\n path = window.location.href.split(\"?\")[1];\r\n\r\n if (path == null || path == \"\")\r\n return new List();\r\n\r\n let vars:Array = path.split(\"&\");\r\n let list:List = new List();\r\n\r\n for (let i:number = 0; i < vars.length; i++)\r\n {\r\n let pair:Array = vars[i].split(\"=\");\r\n let key:Key = new Key(decodeURIComponent(pair[1]), pair[0], pair[0]);\r\n if (list.getItemById(key.id) == null)\r\n list.addItem(key);\r\n }\r\n\r\n return list;\r\n };\r\n\r\n\r\n public static addPaths(basePath:string, subFolderPath:string):string{\r\n\r\n let newPath:string = basePath;\r\n\r\n if(newPath.charAt(newPath.length-1) != \"\\\\\" && newPath.charAt(newPath.length-1) != \"/\")\r\n {\r\n newPath += \"/\";\r\n }\r\n\r\n return newPath+subFolderPath;\r\n\r\n }\r\n\r\n\r\n public static objToForm(obj:any):string{\r\n let str = \"\";\r\n\r\n\r\n for (let key in obj) {\r\n if (str != \"\") {\r\n str += \"&\";\r\n }\r\n str += key + \"=\" + StringUtils.replace(obj[key],\"&\",\"&\");\r\n }\r\n\r\n return str;\r\n }\r\n\r\n public static objToURIParams(obj:any):string{\r\n\r\n let str = \"\";\r\n\r\n\r\n for (let key in obj) {\r\n if (str != \"\") {\r\n str += \"&\";\r\n }\r\n str += key + \"=\" + encodeURIComponent(obj[key]);\r\n }\r\n\r\n return str;\r\n }\r\n\r\n public static pathToLocation (path:string):URLLocation\r\n {\r\n return new URLLocation(path);\r\n }\r\n\r\n public static relativeToFullPath(path:string, defaultPath:string):string\r\n {\r\n path = StringUtils.replace(path, \"\\\\\", \"/\");\r\n\r\n let a:number = defaultPath.indexOf(\"://\");\r\n let urlProtocol:string = \"\";\r\n let urlDomain:string = \"\";\r\n\r\n if(a != -1)\r\n {\r\n let arrPath:Array = defaultPath.split(\"://\");\r\n urlProtocol = arrPath[0];\r\n urlDomain = arrPath[1];\r\n }\r\n else\r\n {\r\n urlProtocol = \"https\";\r\n urlDomain = defaultPath;\r\n }\r\n\r\n var i:number = path.indexOf(\"/\");\r\n var i2:number = path.indexOf(\"//\");\r\n\r\n if(i2 == 0) // url starts with \"//\"\r\n return urlProtocol+\":\"+ path;\r\n\r\n if(i == 0) // url starts with \"/\"\r\n return urlProtocol + \"://\" +urlDomain + path;\r\n\r\n if(i == i2) // url has \"//\" before any \"/\"\r\n return path;\r\n\r\n var i3:number = path.indexOf(\".\");\r\n\r\n if(i3 < i) // there is a \".\" before a \"/\".\r\n return urlProtocol + \"://\"+path;\r\n\r\n return urlProtocol + \"://\" +urlDomain + \"/\" + path;\r\n }\r\n\r\n}\r\n\r\n\r\nexport class URLLocation {\r\n\r\n public host:string = '';\r\n public hostName : string = '';\r\n public protocol : string = '';\r\n public pathName : string = '';\r\n public port : string = '';\r\n\r\n public get origin():string\r\n {\r\n\r\n if(StringUtils.isNullOrEmpty(this.protocol))\r\n return this.hostName;\r\n\r\n if(!StringUtils.isNullOrEmpty(this.port))\r\n {\r\n return StringUtils.Format(\"{0}:{1}//{2}\",[\r\n this.protocol,\r\n this.port,\r\n this.hostName\r\n ]);\r\n }\r\n else\r\n return StringUtils.Format(\"{0}://{1}\",[\r\n this.protocol,\r\n this.hostName\r\n ]);\r\n }\r\n\r\n public get fullPath():string\r\n {\r\n return StringUtils.Format(\"{0}{1}\",[\r\n this.origin,\r\n this.pathName,\r\n ]);\r\n }\r\n\r\n public set fullPath(str:string)\r\n {\r\n str = StringUtils.replace(str,\"\\\\\",\"/\");\r\n\r\n let iA:number = str.indexOf(\"//\");\r\n\r\n if(iA != -1)\r\n {\r\n let strA: string = str.slice(0, iA);\r\n let arrA: Array = strA.split(\":\");\r\n if (arrA[0]) this.protocol = arrA[0];\r\n if (arrA[1]) this.port = arrA[1];\r\n iA= iA + 2;\r\n }\r\n else\r\n iA = 0;\r\n\r\n let strB:string = str.slice(iA,str.length);\r\n\r\n let iB:number = strB.indexOf(\"/\");\r\n this.hostName = strB.slice(0,iB);\r\n this.pathName = strB.slice(iB,strB.length);\r\n\r\n }\r\n\r\n\r\n constructor(fullPath:string = ''){\r\n this.fullPath = fullPath;\r\n }\r\n\r\n}\r\n","'use-strict'\r\nimport { Inject, Pipe, PipeTransform, Renderer2 } from '@angular/core';\r\n@Pipe( { name: 'log' } )\r\nexport class LogPipe implements PipeTransform\r\n{\r\n public transform ( value : object ) : void\r\n {\r\n console.log( value );\r\n return;\r\n }\r\n}\r\n","'use-strict'\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\n\r\n@Pipe({\r\n name: 'profileTilesPipe',\r\n})\r\nexport class ProfileTilesPipe implements PipeTransform {\r\n\r\n // transform(value: unknown, ...args: unknown[]): unknown {\r\n // return null;\r\n // }\r\n transform ( pTileArr : ProfileTile[]): any\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTileArr ) )\r\n {\r\n return pTileArr.filter( profileTile => profileTile );\r\n }\r\n else return null;\r\n //return pTileArr.map( value =>\r\n //{\r\n // // alert( 'value.toString()=>' + value.toString());\r\n // return value;\r\n //});\r\n }\r\n}\r\n","'use-strict'\nimport { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n/*\n * import { SafePipe } from 'safe-pipe';\n * Ref;https:// medium.com/@swarnakishore/angular-safe-pipe-implementation-to-bypass-domsanitizer-stripping-out-content-c1bf0f1cc36b\n */\n\n@Pipe({\n name: 'safe',\n})\nexport class SafeFilterPipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) { }\n\n public transform(value: any, type: any): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n case 'product':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n case 'pic':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n/*\n * =================================================================\n * public transform(value: any, type: string): any {\n * switch (type) {\n * Note: the above was transformed on the basis of this ref:https:// github.com/angular/angular/issues/33028\n * case 'html': return this.sanitizer.sanitize(SecurityContext.HTML, value);\n * case 'style': return this.sanitizer.sanitize(SecurityContext.STYLE, value);\n * case 'script': return this.sanitizer.sanitize(SecurityContext.SCRIPT, value);\n * case 'url': return this.sanitizer.sanitize(SecurityContext.URL, value);\n * case 'resourceUrl': return this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, value);\n * default: throw new Error(`Invalid safe type specified: ${type}`);\n */\n","'use-strict'\nimport { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n/*\n * import { SafePipe } from 'safe-pipe';\n * Ref;https:// medium.com/@swarnakishore/angular-safe-pipe-implementation-to-bypass-domsanitizer-stripping-out-content-c1bf0f1cc36b\n */\n\n@Pipe({\n name: 'safe',\n})\nexport class SafeKvPipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) { }\n\n public transform(value: any, type: any): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n case 'product':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n case 'pic':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n/*\n * =================================================================\n * public transform(value: any, type: string): any {\n * switch (type) {\n * Note: the above was transformed on the basis of this ref:https:// github.com/angular/angular/issues/33028\n * case 'html': return this.sanitizer.sanitize(SecurityContext.HTML, value);\n * case 'style': return this.sanitizer.sanitize(SecurityContext.STYLE, value);\n * case 'script': return this.sanitizer.sanitize(SecurityContext.SCRIPT, value);\n * case 'url': return this.sanitizer.sanitize(SecurityContext.URL, value);\n * case 'resourceUrl': return this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, value);\n * default: throw new Error(`Invalid safe type specified: ${type}`);\n */\n","'use-strict'\r\nimport { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';\r\n\r\n// Ref: https://medium.com/@swarnakishore/angular-safe-pipe-implementation-to-bypass-domsanitizer-stripping-out-content-c1bf0f1cc36b\r\n\r\n@Pipe( {\r\n name: 'safe'\r\n} )\r\n\r\n\r\nexport class Safe implements PipeTransform\r\n{\r\n public sanitized : any;\r\n constructor ( protected sanitizer : DomSanitizer )\r\n {\r\n }\r\n\r\n public transform ( value : any, type : any ) : SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl\r\n {\r\n switch ( type )\r\n {\r\n case 'html': return this.sanitizer.bypassSecurityTrustHtml( value );\r\n case 'style': return this.sanitizer.bypassSecurityTrustStyle( value );\r\n case 'script': return this.sanitizer.bypassSecurityTrustScript( value );\r\n case 'url':\r\n this.sanitized = this.sanitizer.bypassSecurityTrustUrl(value);\r\n debugger;\r\n return this.sanitized;\r\n case 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl( value );\r\n case 'product': return this.sanitizer.bypassSecurityTrustResourceUrl( value );\r\n case 'pic':\r\n this.sanitized = this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n debugger;\r\n return this.sanitized;\r\n default: throw new Error( `Invalid safe type specified: ${ type }` );\r\n }\r\n }\r\n}\r\n// =================================================================\r\n// public transform(value: any, type: string): any {\r\n // switch (type) {\r\n // Note: the above was transformed on the basis of this ref:https:// github.com/angular/angular/issues/33028\r\n // case 'html': return this.sanitizer.sanitize(SecurityContext.HTML, value);\r\n // case 'style': return this.sanitizer.sanitize(SecurityContext.STYLE, value);\r\n // case 'script': return this.sanitizer.sanitize(SecurityContext.SCRIPT, value);\r\n // case 'url': return this.sanitizer.sanitize(SecurityContext.URL, value);\r\n // case 'resourceUrl': return this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, value);\r\n // default: throw new Error(`Invalid safe type specified: ${type}`);\r\n\r\n\r\n","/*\n * ref: https:// www.freakyjolly.com/angular-4-5-typescript-create-filter-list-with-check-boxes-to-select-from-list/\n * ref: https:// codepen.io/ryandrewjohnson/pen/VaPRNY\n */\n'use-strict'\nimport { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n name: 'textFilter',\n})\nexport class TextFilterPipe implements PipeTransform {\n transform(items: any[], searchText: string): any[] {\n if (!items) {\n return [];\n }\n if (!searchText) {\n return items;\n }\n\n searchText = searchText.toLowerCase();\n const filteredItems : any[] = [];\n\n for (const item of items) {\n filteredItems.push(this.linebreakFilter(item.toLowerCase()) as string);\n }\n return filteredItems;\n }\n // -------------------------------------------------------\n linebreakFilter(text: any) {\n if (!text || !text.length) {\n return text;\n }\n return text.replace(/(\\\\r\\\\n)|([\\r\\n])/gim, '<br/>');\n }\n // -------------------------------------------------------\n}\n","'use-strict'\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { parse } from 'querystring';\n\n@Pipe({\n name: 'toNumber',\n})\n\n// ref: https:// stackoverflow.com/questions/38461080/using-number-pipe-throws-invalidpipeargumentexception-invalid-argument-1-for\nexport class ToNumberPipe implements PipeTransform {\n transform(value: any, ...args: any[]): any {\n const retNumber = parseFloat(value);\n // debugger;\n\n return isNaN(retNumber) ? 0 : retNumber;\n }\n}\n\n/*\n * // You can use it like this:\n *

amount = { { amount | toNumber | number: '1.2-2' } }

\n * \n */\n","'use-strict'\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { UpgradedTile } from '../../../models/profile/upgradedTile.model';\r\n\r\n@Pipe({\r\n name: 'upgradedTilesPipe',\r\n})\r\nexport class UpgradedTilesPipe implements PipeTransform {\r\n\r\n transform ( uTileArr : UpgradedTile[])\r\n {\r\n return uTileArr.map( value =>\r\n {\r\n return value;\r\n });\r\n }\r\n}\r\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { PagerPhotoMgmt } from '../../../models/pagination/pagerPhotoMgmt.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n@Component({\r\n selector: 'app-incrementor',\r\n templateUrl: './incrementor.component.html',\r\n styleUrls: [ './incrementor.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IncrementorComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n @Input() pageSize = 6; \r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isMobilevar! : boolean;\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public loginSuccess! : LoginSuccess;\r\n public pagerVPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n // ---------------------------------------------------------------\r\n constructor (\r\n public cdr : ChangeDetectorRef,\r\n private coreServiceService : CoreServiceService,\r\n @Inject(DOCUMENT) document:any)\r\n {\r\n }\r\n ngOnInit ()\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.ngAfterViewInit();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit ()\r\n {\r\n // debugger;\r\n this.cdr.detectChanges();\r\n // debugger;\r\n this.kvPhotoArr = EmitterSubjectService.getProfileImages();\r\n this.pagerVPhotoNav = EmitterSubjectService.getPagerPhotoMgmt();\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy ()\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ---------------------------------------------------------\r\n public onPageSizeChange (event : (Event | KeyboardEvent), upOrDown : string) {\r\n // debugger;\r\n if (upOrDown.indexOf('up') !== -1) {\r\n if (this.kvPhotoArr.length > this.pageSize && this.pageSize < 11) {\r\n this.pageSize++;\r\n }\r\n }\r\n else { \r\n if (this.pageSize < 11 && this.pageSize > 3) {\r\n this.pageSize--;\r\n }\r\n }\r\n // debugger;\r\n EmitterSubjectService.setPageSize(this.pageSize);\r\n EmitterSubjectService.emitPageSize(this.pageSize);\r\n this.ngAfterViewInit();\r\n \r\n } \r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n
\r\n\r\n \r\n \r\n 3 && pageSize < 11\"\r\n (click)=\"onPageSizeChange($event, 'down');\"\r\n class=\"glyphicon glyphicon-minus-sign hvr-icon grnDrkRedB smallerPrimary increase text-center\"\r\n style=\"width: 1.45rem; height: 1.45rem; margin: 0.05em; padding: 0.05rem; border-radius: 100%; float: left; justify-content: center; border: 2px solid gold; font-size:1.25rem;\" aria-hidden=\"true\">\r\n \r\n\r\n \r\n pics per page: {{pageSize}}\r\n \r\n\r\n \r\n \r\n = 3 && pageSize < 10\"\r\n (click)=\"onPageSizeChange($event, 'up');\"\r\n class=\"glyphicon glyphicon-plus-sign hvr-icon grnDrkRedB smallerPrimary increase text-center\"\r\n style=\"width: 1.45rem; height: 1.45rem; margin: 0.05rem; padding: 0.05rem; border-radius: 100%; float: right; border: 2px solid gold; font-size: 1.25rem;\" aria-hidden=\"true\">\r\n \r\n
\r\n\r\n\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component,\r\n ElementRef,\r\n Inject, Input, OnDestroy, OnInit, Renderer2, ViewChild\r\n} from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { Heartbeat } from '../../../models/common/heartbeat.model';\r\nimport { OffOn } from '../../../models/offOn/offOn.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { MemberServiceService } from '../../../services/memberServiceService/memberServiceService.service';\r\nimport { ProfileServiceService } from '../../../services/profileServiceService/profileServiceService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { CopyServiceStatic } from '../../../services/staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { OffOnService } from '../../../services/coreServiceService/offOnService';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\nimport { ProfileNameService } from '../../../services/profileServiceService/profileNameService.service';\r\n\r\n\r\n// *****************************************************************************************\r\n// ref:1) https:// www.positronx.io/angular-checkbox-tutorial/\r\n// ref:2) https:// www.sitepoint.com/replacing-radio-buttons-without-replacing-radio-buttons/\r\n//\r\n// *****************************************************************************************\r\n// Note: The offOn indicator variables are moved to ProfileTile from component.\r\n// TODO: Once the heatrbeat-systems is complete, this component need to be updated.\r\n// *****************************************************************************************\r\n\r\n@Component({\r\n selector: 'app-off-on-profile-name',\r\n templateUrl: './offOnProfileName.component.html',\r\n styleUrls: ['./offOnProfileName.component.scss'],\r\n // 1)OnPush->requires an Observable to refresh the view; 2)Default->automatic refresh\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n\r\nexport class OffOnProfileNameComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public httpService! : HttpService;\r\n public offOnService! : OffOnService;\r\n public profileNameService! : ProfileNameService;\r\n public rendererService!: RendererService;\r\n public renderer: Renderer2;\r\n private emitterDestroyed$: Subject = new Subject();\r\n // ----------------------------------------------------------\r\n public hbCounter = 0;\r\n public heartbeat: Heartbeat = new Heartbeat();\r\n public isFormSubmitted = false;\r\n public isMouseIn = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isRequired = false;\r\n public loginSuccess! : LoginSuccess;\r\n @Input() offOn : OffOn = new OffOn();\r\n @Input() profileTile : ProfileTile = new ProfileTile();\r\n @Input() profileName = '';\r\n public returnUrl = '';\r\n @Input() sitUser: SitUser = new SitUser();\r\n public tempElem!: HTMLElement;\r\n public timer : any;\r\n public timerMap : Map = new Map();\r\n public tempElemName = '';\r\n // -----------------------------------------------------------\r\n @ViewChild('spanAway') spanAwayElem! : ElementRef;\r\n @ViewChild('spanRadio') spanRadioElem! : ElementRef;\r\n // ---------------------------------------------------------------------------------\r\n constructor(private cdr: ChangeDetectorRef,\r\n private coreServiceService : CoreServiceService,\r\n private memberServiceService : MemberServiceService,\r\n private profileServiceService : ProfileServiceService,\r\n private rendererServiceService: RendererServiceService,\r\n @Inject(Document) Document: any\r\n ) {\r\n if ( this.rendererServiceService ) { this.rendererService = this.rendererServiceService.getRendererService(); }\r\n if (this.coreServiceService) {\r\n this.httpService = this.coreServiceService.getHttpService();\r\n this.offOnService = this.coreServiceService.getOffOnService();\r\n }\r\n if (this.rendererService) { this.renderer = this.rendererService.getRenderer(); }\r\n \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n } \r\n if (this.profileServiceService) {\r\n this.profileNameService = this.profileServiceService.getProfileNameService();\r\n }\r\n\r\n // this.renderer = this.rendererFactory.createRenderer(null, null);\r\n // ref:https:// stackoverflow.com/questions/58989990/error-staticinjectorerrorappmodulesomecomponent-renderer2-when-creating\r\n this.renderer = this.rendererService?.getRenderer();\r\n // --------------------------------\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnInit () : void\r\n { \r\n // -------------------------------------------------------------- \r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n\r\n\r\n // debugger; \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.offOn) || this.offOn.sitUserId === 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile?.offOn) && this.profileTile?.offOn?.sitUserId > 0) {\r\n this.offOn = CopyServiceStatic.copyOffOnIfExists(this.offOn, this.profileTile.offOn); \r\n }\r\n } \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.offOn)) {\r\n // debugger; \r\n if (this.profileTile.offOn.sitUserId === 0 && this.profileTile.sitUserId > 0) { // debugger; \r\n this.profileTile.offOn.sitUserId = this.profileTile.sitUserId;\r\n\r\n // this.offOn = this.profileTile.offOn; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.offOn) && this.offOn.sitUserId === 0) {\r\n this.offOn.sitUserId = this.profileTile.sitUserId;\r\n }\r\n }\r\n }\r\n if (StringServiceStatic.isNullOrEmpty(this.profileName)) {\r\n this.profileName = this.profileTile.profileName;\r\n }\r\n if (StringServiceStatic.isNullOrEmpty(this.profileName)) {\r\n this.profileNameService.fetchProfileName(this.profileTile.sitUserId).subscribe(data => {\r\n this.profileName = data;\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n }\r\n // \r\n // --------------------------------------------------------------\r\n //EmitterSubjectService.checkOffOnStatusEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(result => {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.sitUserId > 0) {\r\n \r\n // this.offOn = JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n // // this.offOn = this.offOnService.setOffOnStatusColor(this.offOn);\r\n // this.ngAfterViewInit(); \r\n // }\r\n // })\r\n // --------------------------------------------------------------\r\n //EmitterSubjectService.checkOffOnStatusFromProfileTileEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(result => {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.sitUserId > 0) { \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.offOn) && result.offOn.sitUserId > 0) {\r\n // result.offOn = this.offOnService.setOffOnIds(result.offOn);\r\n\r\n // this.offOn = result.offOn;\r\n // this.offOn.offOnAwayElem = this.spanAwayElem;\r\n // this.offOn.offOnRadioElem = this.spanRadioElem;\r\n // console.log('checkOffOnStatusDiaApi.sitUserId = ' + this.offOn.sitUserId);\r\n // this.offOnService.checkOffOnStatusDiaApi(this.offOn); \r\n // }\r\n // }\r\n // })\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit (): void\r\n {\r\n // debugger;\r\n // DO NOT get ProfileTile from Emitter here!\r\n \r\n this.cdr.detectChanges();\r\n this.offOn = this.refreshNgAfterViewInit(this.offOn);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n \r\n this.timerMap.forEach(timer => clearTimeout(timer));\r\n this.timerMap.clear();\r\n\r\n this.offOn = new OffOn();\r\n // debugger;\r\n }\r\n // --------------------------------------------------------------\r\n checkMouseEvent ( event : Event ) : boolean\r\n {\r\n if ( event ) { this.isMouseIn = event.type.indexOf( 'MouseEvent' ) !== -1 ? true : false; }\r\n this.isMouseIn = !this.isMouseIn;\r\n return this.isMouseIn;\r\n }\r\n // --------------------------------------------------------------\r\n public checkOffOnStatusDiaApi (offOn : OffOn) : any {\r\n this.offOnService.checkOffOnStatusDiaApi(this.offOn); \r\n } \r\n //---------------------------------------------------------------\r\n // Note: calling this method is fastest thus far to update the UI\r\n // ---------------------------------------------------------------\r\n refreshNgAfterViewInit (offOn : OffOn) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId === this.offOn.sitUserId) {\r\n this.offOn = this.checkOffOnStatusDiaApi(offOn);\r\n\r\n // this.offOn = this.checkOffOnStatusDiaApi(offOn);\r\n // this.ngAfterViewInit();\r\n\r\n // debugger;\r\n return offOn;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n updateOffOnForHeartbeat (result : Heartbeat) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId === result.sitUserId){\r\n this.profileTile.heartbeat = result;\r\n\t\t\t}\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.offOn) && this.offOn.sitUserId === result.sitUserId) {\r\n this.offOn.heartbeat = result;\r\n }\r\n this.offOn = this.setupOffOn(this.offOn);\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.offOn)) {\r\n // debugger;\r\n this.offOn = this.offOnService.setOffOnStatusColor(this.offOn);\r\n \r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n clearTimerMap (): void {\r\n this.timerMap.clear();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n isRequiredPassed () {\r\n return this.offOn.offOnResult.offOnSelection.length > 0 ? true : false;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n getOffOn (): OffOn {\r\n return this.offOn;\r\n }\r\n // ---------------------------------------------------------------\r\n setOffOn (offon: OffOn) : void {\r\n this.offOn = offon;\r\n // debugger;\r\n this.ngAfterViewInit();\r\n } \r\n // ---------------------------------------------------------------\r\n setRadioElements () : void {\r\n this.offOnService.spanAwayElement = this.spanAwayElem;\r\n EmitterSubjectService.setOffOnElement(this.spanAwayElem as ElementRef, 'spanAway');\r\n this.offOnService.spanRadioElement = this.spanRadioElem;\r\n EmitterSubjectService.setOffOnElement(this.spanRadioElem as ElementRef, 'spanRadio');\r\n } \r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n setupOffOn (offOn : OffOn) : OffOn {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId > 0) {\r\n // debugger;\r\n offOn = this.offOnService.setOffOnIds(offOn);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.spanAwayElem)) {\r\n // debugger;\r\n offOn.offOnAwayElem = this.spanAwayElem.nativeElement;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnAwayElem)) {\r\n // debugger;\r\n EmitterSubjectService.setOffOnElement(offOn.offOnAwayElem as ElementRef, 'spanAway');\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.spanRadioElem)) {\r\n // debugger;\r\n offOn.offOnRadioElem = this.spanRadioElem.nativeElement;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnRadioElem)) {\r\n // debugger;\r\n EmitterSubjectService.setOffOnElement(offOn.offOnRadioElem as ElementRef, 'spanRadio');\r\n }\r\n }\r\n return offOn;\r\n }\r\n // --------------------------------------------------------------\r\n}\r\n\r\n","\r\n\r\n\r\n
\r\n 0\" class=\"nvyxxSB\">{{offOn.offOnLegend}} \r\n 0 && isRequired\" class=\"errSub\" style=\"margin-left:-2px;\">*\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component,\r\n ElementRef,\r\n Inject, Input, OnDestroy, OnInit, Renderer2, ViewChild\r\n} from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { Heartbeat } from '../../../models/common/heartbeat.model';\r\nimport { OffOn } from '../../../models/offOn/offOn.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { MemberServiceService } from '../../../services/memberServiceService/memberServiceService.service';\r\nimport { ProfileServiceService } from '../../../services/profileServiceService/profileServiceService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { CopyServiceStatic } from '../../../services/staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { OffOnService } from '../../../services/coreServiceService/offOnService';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\nimport { ProfileNameService } from '../../../services/profileServiceService/profileNameService.service';\r\n\r\n\r\n// *****************************************************************************************\r\n// ref:1) https:// www.positronx.io/angular-checkbox-tutorial/\r\n// ref:2) https:// www.sitepoint.com/replacing-radio-buttons-without-replacing-radio-buttons/\r\n//\r\n// *****************************************************************************************\r\n// Note: The offOn indicator variables are moved to ProfileTile from component.\r\n// TODO: Once the heatrbeat-systems is complete, this component need to be updated.\r\n// *****************************************************************************************\r\n\r\n@Component({\r\n selector: 'app-off-on',\r\n templateUrl: './offOn.component.html',\r\n styleUrls: ['./offOn.component.scss'],\r\n // 1)OnPush->requires an Observable to refresh the view; 2)Default->automatic refresh\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n\r\nexport class OffOnComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public httpService! : HttpService;\r\n public offOnService! : OffOnService;\r\n public profileNameService! : ProfileNameService;\r\n public rendererService!: RendererService;\r\n public renderer: Renderer2;\r\n private emitterDestroyed$: Subject = new Subject();\r\n // ----------------------------------------------------------\r\n public hbCounter = 0;\r\n public heartbeat: Heartbeat = new Heartbeat();\r\n public isFormSubmitted = false;\r\n public isMouseIn = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isRequired = false;\r\n public loginSuccess! : LoginSuccess;\r\n @Input() offOn : OffOn = new OffOn();\r\n @Input() profileTile : ProfileTile = new ProfileTile();\r\n @Input() profileName = '';\r\n public returnUrl = '';\r\n @Input() sitUser: SitUser = new SitUser();\r\n public tempElem!: HTMLElement;\r\n public timer : any;\r\n public timerMap : Map = new Map();\r\n public tempElemName = '';\r\n // -----------------------------------------------------------\r\n @ViewChild('spanAway') spanAwayElem! : ElementRef;\r\n @ViewChild('spanRadio') spanRadioElem! : ElementRef;\r\n // ---------------------------------------------------------------------------------\r\n constructor(private cdr: ChangeDetectorRef,\r\n private coreServiceService : CoreServiceService,\r\n private memberServiceService : MemberServiceService,\r\n private profileServiceService : ProfileServiceService,\r\n private rendererServiceService: RendererServiceService,\r\n @Inject(Document) Document: any\r\n ) {\r\n if ( this.rendererServiceService ) { this.rendererService = this.rendererServiceService.getRendererService(); }\r\n if (this.coreServiceService) {\r\n this.httpService = this.coreServiceService.getHttpService();\r\n this.offOnService = this.coreServiceService.getOffOnService();\r\n }\r\n if (this.rendererService) { this.renderer = this.rendererService.getRenderer(); }\r\n \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n } \r\n if (this.profileServiceService) {\r\n this.profileNameService = this.profileServiceService.getProfileNameService();\r\n }\r\n\r\n // this.renderer = this.rendererFactory.createRenderer(null, null);\r\n // ref:https:// stackoverflow.com/questions/58989990/error-staticinjectorerrorappmodulesomecomponent-renderer2-when-creating\r\n this.renderer = this.rendererService?.getRenderer();\r\n // --------------------------------\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnInit () : void\r\n { \r\n // -------------------------------------------------------------- \r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n\r\n\r\n // debugger; \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.offOn) || this.offOn.sitUserId === 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile?.offOn) && this.profileTile?.offOn?.sitUserId > 0) {\r\n this.offOn = CopyServiceStatic.copyOffOnIfExists(this.offOn, this.profileTile.offOn); \r\n }\r\n } \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.offOn)) {\r\n // debugger; \r\n if (this.profileTile.offOn.sitUserId === 0 && this.profileTile.sitUserId > 0) { // debugger; \r\n this.profileTile.offOn.sitUserId = this.profileTile.sitUserId;\r\n\r\n // this.offOn = this.profileTile.offOn; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.offOn) && this.offOn.sitUserId === 0) {\r\n this.offOn.sitUserId = this.profileTile.sitUserId;\r\n }\r\n }\r\n }\r\n if (StringServiceStatic.isNullOrEmpty(this.profileName)) {\r\n this.profileName = this.profileTile.profileName;\r\n }\r\n if (StringServiceStatic.isNullOrEmpty(this.profileName)) {\r\n this.profileNameService.fetchProfileName(this.profileTile.sitUserId).subscribe(data => {\r\n this.profileName = data;\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n }\r\n // \r\n // --------------------------------------------------------------\r\n //EmitterSubjectService.checkOffOnStatusEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(result => {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.sitUserId > 0) {\r\n \r\n // this.offOn = JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n // // this.offOn = this.offOnService.setOffOnStatusColor(this.offOn);\r\n // this.ngAfterViewInit(); \r\n // }\r\n // })\r\n // --------------------------------------------------------------\r\n //EmitterSubjectService.checkOffOnStatusFromProfileTileEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(result => {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.sitUserId > 0) { \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.offOn) && result.offOn.sitUserId > 0) {\r\n // result.offOn = this.offOnService.setOffOnIds(result.offOn);\r\n\r\n // this.offOn = result.offOn;\r\n // this.offOn.offOnAwayElem = this.spanAwayElem;\r\n // this.offOn.offOnRadioElem = this.spanRadioElem;\r\n // console.log('checkOffOnStatusDiaApi.sitUserId = ' + this.offOn.sitUserId);\r\n // this.offOnService.checkOffOnStatusDiaApi(this.offOn); \r\n // }\r\n // }\r\n // })\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit (): void\r\n {\r\n // debugger;\r\n // DO NOT get ProfileTile from Emitter here!\r\n \r\n this.cdr.detectChanges();\r\n this.offOn = this.refreshNgAfterViewInit(this.offOn);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n \r\n this.timerMap.forEach(timer => clearTimeout(timer));\r\n this.timerMap.clear();\r\n\r\n this.offOn = new OffOn();\r\n // debugger;\r\n }\r\n // --------------------------------------------------------------\r\n checkMouseEvent ( event : Event ) : boolean\r\n {\r\n if ( event ) { this.isMouseIn = event.type.indexOf( 'MouseEvent' ) !== -1 ? true : false; }\r\n this.isMouseIn = !this.isMouseIn;\r\n return this.isMouseIn;\r\n }\r\n // --------------------------------------------------------------\r\n public checkOffOnStatusDiaApi (offOn : OffOn) : any {\r\n this.offOnService.checkOffOnStatusDiaApi(this.offOn); \r\n } \r\n //---------------------------------------------------------------\r\n // Note: calling this method is fastest thus far to update the UI\r\n // ---------------------------------------------------------------\r\n refreshNgAfterViewInit (offOn : OffOn) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId === this.offOn.sitUserId) {\r\n this.offOn = this.checkOffOnStatusDiaApi(offOn);\r\n\r\n // this.offOn = this.checkOffOnStatusDiaApi(offOn);\r\n // this.ngAfterViewInit();\r\n\r\n // debugger;\r\n return offOn;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n updateOffOnForHeartbeat (result : Heartbeat) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId === result.sitUserId){\r\n this.profileTile.heartbeat = result;\r\n\t\t\t}\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.offOn) && this.offOn.sitUserId === result.sitUserId) {\r\n this.offOn.heartbeat = result;\r\n }\r\n this.offOn = this.setupOffOn(this.offOn);\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.offOn)) {\r\n // debugger;\r\n this.offOn = this.offOnService.setOffOnStatusColor(this.offOn);\r\n \r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n clearTimerMap (): void {\r\n this.timerMap.clear();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n isRequiredPassed () {\r\n return this.offOn.offOnResult.offOnSelection.length > 0 ? true : false;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n getOffOn (): OffOn {\r\n return this.offOn;\r\n }\r\n // ---------------------------------------------------------------\r\n setOffOn (offon: OffOn) : void {\r\n this.offOn = offon;\r\n // debugger;\r\n this.ngAfterViewInit();\r\n } \r\n // ---------------------------------------------------------------\r\n setRadioElements () : void {\r\n this.offOnService.spanAwayElement = this.spanAwayElem;\r\n EmitterSubjectService.setOffOnElement(this.spanAwayElem as ElementRef, 'spanAway');\r\n this.offOnService.spanRadioElement = this.spanRadioElem;\r\n EmitterSubjectService.setOffOnElement(this.spanRadioElem as ElementRef, 'spanRadio');\r\n } \r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n setupOffOn (offOn : OffOn) : OffOn {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId > 0) {\r\n // debugger;\r\n offOn = this.offOnService.setOffOnIds(offOn);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.spanAwayElem)) {\r\n // debugger;\r\n offOn.offOnAwayElem = this.spanAwayElem.nativeElement;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnAwayElem)) {\r\n // debugger;\r\n EmitterSubjectService.setOffOnElement(offOn.offOnAwayElem as ElementRef, 'spanAway');\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.spanRadioElem)) {\r\n // debugger;\r\n offOn.offOnRadioElem = this.spanRadioElem.nativeElement;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnRadioElem)) {\r\n // debugger;\r\n EmitterSubjectService.setOffOnElement(offOn.offOnRadioElem as ElementRef, 'spanRadio');\r\n }\r\n }\r\n return offOn;\r\n }\r\n // --------------------------------------------------------------\r\n}\r\n\r\n","\r\n\r\n\r\n
\r\n 0\" class=\"nvyxxSB\">{{offOn.offOnLegend}} \r\n 0 && isRequired\" class=\"errSub\" style=\"margin-left:-2px;\">*\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit\r\n} from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n// TODO: create a new service named ProfileNameService!! \r\n\r\n@Component({\r\n selector: 'app-page-name',\r\n templateUrl: './pageName.component.html',\r\n styleUrls: [ './pageName.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation ],\r\n // 1)OnPush->requires an Observable to refresh the view; 2)Default->automatic refresh\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n\r\nexport class PageNameComponent implements OnInit, OnDestroy, AfterViewInit { \r\n private emitterDestroyed$ : Subject = new Subject();\r\n // ----------------------------------------------------------------- \r\n public isMouseIn = false;\r\n public isMobilevar = false; \r\n public loginSuccess : LoginSuccess = new LoginSuccess(); \r\n public pageTitle = '';\r\n public sitUser : SitUser = new SitUser();\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n // ----------------------------------------------------------------\r\n constructor (private cdr : ChangeDetectorRef,) {\r\n }\r\n // ----------------------------------------------------------------\r\n ngOnInit () : void {\r\n // --------------------------------------------------------------\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n \r\n // -------------------------------------------------------------\r\n EmitterSubjectService.userAndPageTitleEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n this.userAndPageTitle = result as UserAndPageTitle;\r\n\r\n this.sitUser.sitUserId = this.userAndPageTitle.sitUserId;\r\n this.pageTitle = this.userAndPageTitle.pageTitle;\r\n // debugger;\r\n if (!this.userAndPageTitle.isPrepared && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.userAndPageTitle.pageTitle)) {\r\n this.pageTitle = StringServiceStatic.preparePageTitle(this.userAndPageTitle.pageTitle);\r\n // debugger;\r\n }\r\n // debugger;\r\n }\r\n this.ngAfterViewInit();\r\n // EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n\r\n });\r\n // ----------------------------------------------------------- \r\n }\r\n // -------------------------------------------------------------\r\n ngAfterViewInit () : void {\r\n this.cdr.detectChanges();\r\n }\r\n // ------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n // debugger;\r\n }\r\n // ------------------------------------------------------------\r\n}\r\n","
\r\n
0\"\r\n [@slide-X]\r\n (onmouseover)=\"isMouseIn=true;\"\r\n class=\"flex-button text-center whiteBlueInvB\"\r\n style=\"will-change: transform;width: 5rem; line-height: 0.8rem; height: 1.9rem; font-size: 17px; background-color: transparent; padding: 0.05rem;margin-left: -0.25rem;opacity: 1;z-index:12; \"\r\n [innerHTML]=\"pageTitle | safe: 'html'\">\r\n {{pageTitle}}\r\n
\r\n
","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component,\r\n ElementRef, Input, OnDestroy, OnInit, Renderer2, ViewChild\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject, takeUntil } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { Heartbeat } from '../../../models/common/heartbeat.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { ProfileInfo } from '../../../models/profile/profileInfo.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { SignedInUserService } from '../../../services/commonServiceService/signedInUserService.service';\r\nimport { SitUserService } from '../../../services/commonServiceService/sitUserService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { ProfileNameService } from '../../../services/profileServiceService/profileNameService.service';\r\nimport { ProfileServiceService } from '../../../services/profileServiceService/profileServiceService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../../../services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n// TODO: create a new service named ProfileNameService!! \r\n\r\n@Component({\r\n selector: 'app-profile-name',\r\n templateUrl: './profileName.component.html',\r\n styleUrls: [ './profileName.component.scss' ],\r\n // 1)OnPush->requires an Observable to refresh the view; 2)Default->automatic refresh\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n\r\nexport class ProfileNameComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public httpService! : HttpService;\r\n public profileNameService! : ProfileNameService;\r\n public redirectionService! : RedirectionService;\r\n public rendererService! : RendererService;\r\n public renderer : Renderer2;\r\n public sitUserService! : SitUserService;\r\n public signedInUserService! : SignedInUserService;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n // ----------------------------------------------------------\r\n public hbCounter = 0;\r\n public heartbeat : Heartbeat = new Heartbeat();\r\n public isMouseIn = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isRequired = false;\r\n public isPhotoMgmt = false;\r\n public isViewMember = false;\r\n public loginSuccess! : LoginSuccess;\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n @Input() profileName = '';\r\n public profileNameMap : Map = new Map();\r\n public profileInfoView : ProfileInfo = new ProfileInfo();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public sitUserId : number = 0;\r\n @Input() sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n public tempElem! : HTMLElement;\r\n public timer : any;\r\n public timerMap : Map = new Map();\r\n public tempElemName = '';\r\n // -----------------------------------------------------------\r\n constructor (private cdr : ChangeDetectorRef,\r\n private coreServiceService : CoreServiceService,\r\n private commonServiceService : CommonServiceService,\r\n private profileServiceService : ProfileServiceService,\r\n private rendererServiceService : RendererServiceService,\r\n private router : Router\r\n ) {\r\n if (this.rendererServiceService) { this.rendererService = this.rendererServiceService.getRendererService(); }\r\n if (this.coreServiceService) this.httpService = this.coreServiceService.getHttpService();\r\n if (this.commonServiceService) {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n this.sitUserService = this.commonServiceService.getSitUserService();\r\n this.signedInUserService = this.commonServiceService.getSignedInUserService();\r\n }\r\n if (this.rendererService) { this.renderer = this.rendererService.getRenderer(); }\r\n\r\n if (this.profileServiceService) this.profileNameService = this.profileServiceService.getProfileNameService();\r\n\r\n\r\n // this.renderer = this.rendererFactory.createRenderer(null, null);\r\n // ref:https:// stackoverflow.com/questions/58989990/error-staticinjectorerrorappmodulesomecomponent-renderer2-when-creating\r\n this.renderer = this.rendererService?.getRenderer();\r\n // --------------------------------\r\n }\r\n // ----------------------------------------------------------------\r\n ngOnInit () : void {\r\n // --------------------------------------------------------------\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n } \r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n\r\n // if parent-component-provided profileName is empty,\r\n // then get it from either loginSuccess or sitUser:\r\n // ----------------------------------------------------\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileName)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n if (this.sitUser.sitUserId === this.loginSuccess.signedInUserId) {\r\n this.profileName = this.loginSuccess.profileName;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser.profileName)){\r\n this.profileName = this.sitUser.profileName;\r\n }\r\n }\r\n }\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.profileInfoViewEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.profileInfoView = result as ProfileInfo;\r\n // We update only for non-signedInUser:\r\n // ------------------------------------\r\n this.getProfileNameFromProfileInfo(this.profileInfoView);\r\n });\r\n // debugger;\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.profileTileEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.profileTile = result as ProfileTile;\r\n this.getProfileNameFromTile(result); \r\n });\r\n // debugger;\r\n // -----------------------------------------------------------\r\n if (this.sitUser?.sitUserId > 0) {\r\n // debugger;\r\n this.getProfileName(this.sitUser.sitUserId).subscribe(data => {\r\n this.profileName = data;\r\n // debugger;\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n // -----------------------------------------------------------\r\n // this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit () : void {\r\n this.cdr.detectChanges();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n\r\n this.timerMap.forEach(timer => clearTimeout(timer));\r\n this.timerMap.clear();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n clearTimerMap () : void {\r\n this.timerMap.clear();\r\n }\r\n // --------------------------------------------------------------\r\n public getProfileNameFromProfileInfo (pInfo : ProfileInfo) : string {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileName)\r\n && pInfo.sitUserId !== this.loginSuccess.signedInUserId ) {\r\n this.profileName = this.profileNameService.getProfileNameFromProfileInfo(pInfo);\r\n }\r\n return this.profileName;\r\n }\r\n // --------------------------------------------------------------\r\n // Note: we prefer profileName from ProfileInfo to ProfileTile\r\n // and only for non-signedInUser:\r\n // --------------------------------------------------------------\r\n public getProfileNameFromTile (pTile : ProfileTile) : string {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileName)\r\n && pTile.sitUserId !== this.loginSuccess.signedInUserId\r\n && (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView))) {\r\n this.profileName = this.profileNameService.getProfileNameFromProfileTile(pTile);\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)) {\r\n this.profileName = this.getProfileNameFromProfileInfo(this.profileInfoView);\r\n }\r\n return this.profileName;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n getProfileName (sitId : number) : Observable {\r\n return new Observable(subscriber => {\r\n this.profileNameService.fetchProfileName(sitId).subscribe(data => {\r\n // debugger;\r\n this.profileName = data;\r\n this.ngAfterViewInit();\r\n subscriber.next(this.profileName);\r\n subscriber.complete();\r\n });\r\n })\r\n \r\n }\r\n // ---------------------------------------------------------------\r\n setProfileName (pName : string, sitId: number) : void {\r\n this.profileNameService.setProfileNameMap(pName, sitId);\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setupKvPhotoModel (kvp : KvPhoto) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n kvp.value = kvp.image;\r\n }\r\n else if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n kvp.image = kvp.value;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.pic)) {\r\n kvp.pic = kvp.image;\r\n }\r\n\r\n if (kvp.isPrimary) {\r\n kvp.key = kvp.glyphName = \"Primary\";\r\n kvp.privacy = \"Public\";\r\n }\r\n }\r\n return kvp;\r\n }\r\n // ---------------------------------------------------------------\r\n viewProfile () : void {\r\n this.mcLoader.router = this.router;\r\n this.mcLoader.moduleName = this.mcLoader.moduleName = 'memberm';\r\n this.mcLoader.componentName = this.mcLoader.componentName = 'memberViewMgmt';\r\n this.mcLoader.returnUrl = this.redirectionService.getUrlAddress();\r\n \r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n && this.loginSuccess.signedInUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)\r\n && this.sitUser.sitUserId > 0 ) {\r\n\r\n if (this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n // debugger; \r\n this.mcLoader.id = this.sitUser.sitUserId;\r\n // this.isViewMember = true;\r\n // EmitterSubjectService.emitIsViewMember(this.isViewMember);\r\n }\r\n else {\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n // this.isPhotoMgmt = true;\r\n // EmitterSubjectService.emitIsPhotoMgmt(this.isPhotoMgmt);\r\n }\r\n }\r\n // Note: setupMcLoderModel before fireMcLoaderRoute()!!\r\n // ---------------------------------------------------\r\n // this.mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(this.mcLoader);\r\n this.redirectionService.setRoute(this.mcLoader.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n this.profileTile.isPrimaryPhoto = true;\r\n this.profileTile.copyToKvPhoto(this.profileTile.kvPhoto, this.profileTile); // will create a new KvPhoto model and populate it's data from ProfileTile model\r\n EmitterSubjectService.emitProfileTile(this.profileTile); // will setProfileTile also.\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n\r\n {{profileName}}\r\n\r\n\r\n\r\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { EmitRadioboxResult } from '../../../models/common/emitRadioboxResult.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n/*\r\n * ref:1) https:// www.positronx.io/angular-checkbox-tutorial/\r\n * ref:2) https:// www.sitepoint.com/replacing-radio-buttons-without-replacing-radio-buttons/\r\n */\r\n\r\n@Component({\r\n selector: 'app-radio-box',\r\n templateUrl: './radioBox.component.html',\r\n styleUrls: ['./radioBox.component.scss'],\r\n})\r\nexport class RadioBoxComponent implements OnInit, OnDestroy {\r\n public askMe = 'Ask Me :)';\r\n @Input() radioboxArr: string[] = [];\r\n @Input() radioboxLegend = '';\r\n @Input() radioboxName = '';\r\n @Input() isFormSubmitted!: boolean;\r\n @Input() isRequired = false;\r\n public radioboxForm!: FormGroup;\r\n public radioboxResult: EmitRadioboxResult = new EmitRadioboxResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar!: boolean;\r\n public loginSuccess!: LoginSuccess;\r\n public selectedRadiobox!: FormControl;\r\n @Input() selectedRadioIndex = -1;\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private fb: FormBuilder,\r\n private router: Router,\r\n @Inject(DOCUMENT) document: any,\r\n private coreServiceService: CoreServiceService,\r\n ) {\r\n if (this.isRequired) {\r\n this.radioboxForm = this.fb.group({\r\n /*\r\n * 'radioSelection': this.fb.control(this.radioboxName, [\r\n * Validators.required])\r\n */\r\n });\r\n }\r\n /*\r\n * else this.radioboxForm = this.fb.group({\r\n * 'radioSelection': this.fb.control(this.radioboxName)\r\n * });\r\n */\r\n this.radioboxResult.radioboxName = this.radioboxName;\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ---------------------------------------------------------------\r\n getIndex(i: number) {\r\n // debugger;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onRadioboxChange (e : any, i:any) {\r\n // debugger;\r\n if (e.target.checked)\r\n {\r\n this.radioboxResult.index = i;\r\n this.radioboxResult.radioboxName = this.radioboxName;\r\n this.radioboxResult.radioboxSelection = e.target.value;\r\n // debugger;\r\n this.radioboxResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitRadioboxResult(this.radioboxResult);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed() {\r\n return this.radioboxResult.radioboxSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
\r\n \r\n
\r\n 0\" class=\"nvyB\">{{radioboxLegend}} 0 && isRequired\" class=\"errSub\" style=\"margin-left:-2px;\">*\r\n \r\n
\r\n
\r\n {{radioboxName}} is required, please select at leaset one value.\r\n
\r\n
\r\n\r\n","'use-strict'\nimport { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-image-upload',\n templateUrl: './imageUploadModule.component.html',\n styleUrls: ['./imageUploadModule.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ImageUploadModuleComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n \n
\n","'use-strict'\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { ChatFileUpload } from '../../../models/chat/chatFileUpload.model';\r\nimport { Content } from '../../../models/common/content.model';\r\nimport { ProfilePics } from '../../../models/profile/profilePics.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { SignedInUserService } from '../../../services/commonServiceService/signedInUserService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { CopyServiceStatic } from '../../../services/staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { UploadServiceStatic } from '../../../services/staticServices/uploadServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { Login } from '../../../models/account/login.model';\r\n\r\nconst URL = '/FileUpload/ProfilePhotoUpload';\r\n\r\n@Component({\r\n selector: 'app-file-upload',\r\n templateUrl: './fileUpload.component.html',\r\n styleUrls: [ './fileUpload.component.scss' ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n\r\n animations: [ Animations, slideInOutAnimation,\r\n trigger('growUp', [\r\n transition(':enter', [\r\n style({ transform: 'translateY(275%) scale(0.1)' }),\r\n // style({ transform: 'scale(0.1)'}),\r\n animate('700ms ease-in', style({ transform: 'translateY(0%) scale(1)' })),\r\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\r\n ]),\r\n transition(':leave', [\r\n animate('700ms ease-in', style({ transform: 'translateX(275%) scale(0.1)' })),\r\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\r\n ]),\r\n ]),\r\n trigger('growXshrink', [\r\n transition(':enter', [ style({ transform: 'translateX(275%) scale(0.1)' }),\r\n animate('500ms ease-in-out', style({ transform: 'translateX(0%)' })),\r\n animate('500ms ease-in', style({ transform: 'scale(1)' })) ]),\r\n transition(':leave', [ animate('500ms ease-in-out', style({ transform: 'translateX(275%)' })),\r\n animate('500ms ease-in', style({ transform: 'scale(0.1)' })) ]),\r\n ]),\r\n ],\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class FileUploadComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public httpService! : HttpService;\r\n public signedInUserService! : SignedInUserService;\r\n // ----------------------------------------------------------\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public buffer: any[] = [];\r\n @Input() content : Content = new Content();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public files : File[] = [];\r\n @ViewChild('fUpForm', { read: ElementRef, static: true }) fileUploadForm! : ElementRef;\r\n public chatFileUpload : ChatFileUpload = new ChatFileUpload();\r\n @Input() isToggleFileUpload = false;\r\n public isCurrentFile = false;\r\n public isCameraVisible = false;\r\n public isFormValid = false;\r\n public isMobilevar = false;\r\n public isSubmitted = false;\r\n @Input() isViewMember = false;\r\n public isUploadSuccess = false;\r\n @ViewChild('imageUploadForm', { read: ElementRef, static: true }) imageUploadForm! : ElementRef;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public percentDone = 0;\r\n public progress : any;\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public formData = new FormData();\r\n public selectedFiles : File[] = [];\r\n public signedInUser : SitUser = new SitUser();\r\n public status : any;\r\n public tempPicStrArr: string[] = [];\r\n // ---------------------------------------------------------------\r\n constructor (\r\n private commonServiceService : CommonServiceService,\r\n private coreServiceService: CoreServiceService,\r\n private router: Router\r\n ) {\r\n if (coreServiceService) {\r\n this.httpService = this.coreServiceService.getHttpService();\r\n }\r\n if (commonServiceService) {\r\n this.signedInUserService = this.commonServiceService.getSignedInUserService();\r\n }\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // -------------------------------------------------------------\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUser)\r\n || this.signedInUser.sitUserId === 0\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) && this.signedInUser.sitUserId !== this.loginSuccess.signedInUserId){\r\n this.signedInUserService.getSingedInSitUser().subscribe(data => {\r\n this.signedInUser = data;\r\n this.profilePics = CopyServiceStatic.createProfilePicsModelFromSitUser(this.signedInUser);\r\n EmitterSubjectService.setProfilePics(this.profilePics);\r\n });\r\n }\r\n // -------------------------------------------------------------\r\n \r\n EmitterSubjectService.fileImageEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (typeof result === 'string') {\r\n this.tempPicStrArr.push(result);\r\n }\r\n // debugger;\r\n }\r\n this.content.chatFileUpload.picArr = this.tempPicStrArr;\r\n this.ngAfterViewInit();\r\n });\r\n \r\n // ------------------------------------------------------------------------------------------------\r\n EmitterSubjectService.isToggleFileUploadEmitter\r\n .pipe (takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n \r\n this.isToggleFileUpload = result as boolean;\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit () {\r\n // prevent memory leak when component destroyed\r\n // this.isFormValid = this.uploadService.isFileUploadFormValid();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n cancel () : void {\r\n this.chatFileUpload.fileMap = new Map();\r\n // debugger;\r\n this.isToggleFileUpload = false;\r\n this.isCameraVisible = !this.isCameraVisible;\r\n EmitterSubjectService.emitIsToggleFileUpload(this.isToggleFileUpload);\r\n EmitterSubjectService.emitIsCameraClosedBool(!this.isToggleFileUpload);\r\n // -------------------------------------------------------------------------\r\n // Note: Date: 20220508\r\n // isCameraVisibleEmitter && isCameraGlypgVisibleEmitter work as a pair / tuple\r\n // emitters that alters the isCameraVisible' value.\r\n // the isCameraGlypgVisibleEmitter is emitted by FileUploadComponent and listened to by PagerVerticalPhotoMgmtComponent\r\n // and isCameraVisibleEmitter is emitter by PagerVerticalPhotoMgmtComponent and listened to by FileUploadComponent\r\n // so that there is no cyclic published and subscriber.\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.emitIsCameraGlyphVisible(this.isCameraVisible);\r\n }\r\n // ---------------------------------------------------------------\r\n // cancelFileUpload () : void {\r\n // // this.content = new Content(); // TPDO: restore\r\n // this.selectedFiles = new FileList();\r\n // }\r\n\r\n // --------------------------------------------------------------\r\n getUrl(data: any): any {\r\n if (data.length > 0) {\r\n return 'url(\\'data:image/jpeg;base64,' + data + '\\')';\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isFileUploadFormValid () : boolean {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.fileUploadForm)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.fileUploadForm.nativeElement)\r\n && this.fileUploadForm.nativeElement.valid) {\r\n debugger;\r\n this.isFormValid = true;\r\n }\r\n return this.isFormValid;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note : The fileUploadForm handdles two scenarios:\r\n // 1. When we actually load file(s) to be sent\r\n // 2. When we only update the heading/description of the file, not the actual file\r\n // ---------------------------------------------------------------\r\n\r\n submitFileUploadForm () {\r\n // debugger;\r\n UploadServiceStatic.sendWithGeoLocation(this.content, this.httpService).subscribe(data => {\r\n this.profilePics = data;\r\n });\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics) && this.profilePics.sitUserId > 0) {\r\n // debugger;\r\n // TODO : check if content.chatFileUplod is the only model should be used!!!\r\n // if (this.content.chatFileUpload.fileMap.size > 0) {\r\n // let tFiles = this.content.chatFileUpload.fileMap.values as File[] | any;\r\n // UploadServiceStatic.saveFile(tFiles); // todo: restore\r\n // debugger;\r\n // Note: tempStringFiles did not capture the image's box-nonce properly:\r\n // this.profilePics = UploadServiceStatic.sendWithGeoLocation(this.content, this.profilePics, this.tempStringFiles, this.httpService);\r\n\r\n // experimental: begin\r\n // this.profilePics = UploadServiceStatic.sendWithGeoLocation(this.content, this.tempPicStrArr, this.httpService);\r\n // experimental: end\r\n // } else if (this.content.heading.length > 0 && this.content.chatFileUpload.fileMap && this.content.chatFileUpload.fileMap.size > 0 ) {\r\n // // we clear out the contents since the content-with-image-data does not contain contents-body\r\n // this.content.contents = '';\r\n // }\r\n \r\n // }\r\n }\r\n // ---------------------------------------------------------------\r\n getDescription ($event:any) : string {\r\n // debugger;\r\n if ($event && $event.target && $event.target.value && $event.target.value.length > 0) {\r\n // debugger;\r\n this.content.heading = $event.target.value as string; \r\n }\r\n // debugger;\r\n return this.content.heading;\r\n }\r\n // ---------------------------------------------------------------\r\n uploadFiles ($event:any) : any {\r\n // capture the files, and use upload() method. these two goes hand-in-hand:\r\n // ------------------------------------------------------------------------\r\n this.selectedFiles = $event.target.files;\r\n\r\n // campture formData:\r\n // ------------------\r\n // debugger;\r\n let formData = new FormData();\r\n let formDataArr : FormData[] = [];\r\n let files : any[] = [];\r\n //let imgeDataStrArr : string[] = [];\r\n\r\n if ($event && $event.target && $event.target.files && $event.target.files.length > 0) {\r\n // debugger;\r\n files = $event.target.files as File[]\r\n for (var i = 0; i < files.length; i++) {\r\n // capture the image of the file:\r\n // ------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(files[ i ])) {\r\n // debugger;\r\n let imageData = UploadServiceStatic.fileToString(files[ i ]);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n this.tempPicStrArr.push(imageData);\r\n // debugger;\r\n }\r\n }\r\n\r\n \r\n //formData = new FormData();\r\n //formData.append(files[ i ].name, files[ i ]);\r\n //formData.append('contentType', files[ i ].type);\r\n //formData.append('lastModified', files[ i ].lastModified);\r\n //formData.append('lastModifiedDate', files[ i ].lastModifiedDate);\r\n //formData.append('fileName', files[ i ].name);\r\n //formData.append('size', files[ i ].size);\r\n //// debugger;\r\n //formDataArr.push(formData);\r\n\r\n this.content.chatFileUpload.fileArr.push(files[ i ])\r\n this.content.chatFileUpload.fileMap.set(i, files[ i ]);\r\n }\r\n // this.content.chatFileUpload.formDataArr = formDataArr;\r\n \r\n // this.content.chatFileUpload.filesToStringArr = StringServiceStatic.createArrayFromMap(this.content.chatFileUpload.fileMap);\r\n // debugger; \r\n }\r\n this.isCurrentFile = true;\r\n this.content.chatFileUpload.picArr = this.tempPicStrArr;\r\n return files;\r\n }\r\n // -----------------------------------------------\r\n selectFile ($event : any) : void {\r\n // debugger;\r\n this.selectedFiles = $event.target.files;\r\n }\r\n // -----------------------------------------------\r\n uploadFileArr () : void {\r\n // debugger;\r\n // this.progress = 0;\r\n // debugger;\r\n // let imgeDataStrArr : string[] = [];\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.fileUploadForm)\r\n // // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.fileUploadForm.nativeElement)\r\n // // && this.fileUploadForm.nativeElement.valid) {\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.selectedFiles) && this.selectedFiles.length > 0) {\r\n // debugger;\r\n // for (var i = 0; i < this.selectedFiles.length; i++) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.selectedFiles[i])) {\r\n // debugger;\r\n // let imageData = UploadServiceStatic.fileToString(this.selectedFiles[ i ]);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n // imgeDataStrArr.push(imageData);\r\n // debugger;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // this.content.chatFileUpload.picArr = imgeDataStrArr;\r\n // debugger;\r\n UploadServiceStatic.sendWithGeoLocation(this.content, this.httpService).subscribe(data => {\r\n this.profilePics = data;\r\n });\r\n\r\n\r\n // OR\r\n // Note: To send file using formaData with progress:\r\n // -------------------------------------------------\r\n // this.uploadFilesService.upload( this.currentFile ).subscribe(\r\n // ( event : any ) =>\r\n // {\r\n // if ( event.type === HttpEventType.UploadProgress )\r\n // {\r\n // this.progress = Math.round( 100 * event.loaded / event.total );\r\n // } else if ( event instanceof HttpResponse )\r\n // {\r\n // this.message = event.body.message;\r\n // this.fileInfos = this.uploadFilesService.getFiles();\r\n // }\r\n // },\r\n // ( err : any ) =>\r\n // {\r\n // console.log( err );\r\n // this.progress = 0;\r\n\r\n // if ( err.error && err.error.message )\r\n // {\r\n // this.message = err.error.message;\r\n // } else\r\n // {\r\n // this.message = 'Could not upload the file!';\r\n // }\r\n\r\n // this.currentFile = undefined;\r\n // } );\r\n // }\r\n }\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n}\r\n","
\r\n
\r\n \r\n
0\" class=\"flex-container notexS\">\r\n \r\n \r\n
\r\n
\r\n
\r\n Upload Pictures:\r\n
\r\n
\r\n Select File :\r\n
\r\n\r\n
0\" class=\"flex-button nvyxSB\"\r\n style=\"text-shadow: 0 -.1em .1em white;\r\n width: 100%;\r\n margin: 0.5rem;\">\r\n Selected File(s) :
{{f.name}}
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n Image required!\r\n
\r\n\r\n
\r\n
\r\n
\r\n Description(optional):\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n A file description is required\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n","import { HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';\r\nimport { Observable, Subject, takeUntil } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { PhotoBn } from '../../../models/common/photoBn.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { JsRegExpServiceStatic } from '../../../services/staticServices/jsRegExpServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { ImageUploadService } from './services/imageUpload.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { Router } from '@angular/router';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\nimport { DictionaryService } from '../../../services/dictionaryServiceService/dictionaryService.service';\r\nimport { DictionaryServiceService } from '../../../services/dictionaryServiceService/dictionaryServiceService.service';\r\nimport { DbDexieToDictionaryService } from '../../../services/dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DbServiceService } from '../../../services/dbServiceService/dbServiceService.service';\r\n\r\n@Component({\r\n selector: 'app-image-upload',\r\n templateUrl: './image-upload.component.html',\r\n styleUrls: ['./image-upload.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [ Animations, slideInOutAnimation ],\r\n\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class ImageUploadComponent {\r\n public dictionaryService! : DictionaryService;\r\n public dbDexieToDictionaryService! : DbDexieToDictionaryService;\r\n public redirectionService! : RedirectionService;\r\n public currentFile ?: File;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public fileInfos ?: Observable;\r\n // public isCameraVisible = true;\r\n public isMobilevar = false;\r\n // public isOnLine = false;\r\n // public isFormValid = false;\r\n // public isMyProfile = false;\r\n // public isNewPhotoUploaded : boolean = false;\r\n // public isPhotoMgmt = false;\r\n // public isSubmitted = false;\r\n public isImageUploadFormVisible = false;\r\n public isShowPhotoUploadUi : Bool = new Bool();\r\n public isViewMember = false;\r\n public kvPhoto : KvPhoto = new KvPhoto();\r\n public photoBn : PhotoBn = new PhotoBn();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public progress = 0;\r\n public selectedFiles ?: FileList;\r\n public toggleCameraGlyphCounter = 0;\r\n\r\n \r\n\r\n constructor (\r\n private cdr : ChangeDetectorRef,\r\n private commonServiceService : CommonServiceService,\r\n public coreServiceService : CoreServiceService,\r\n private dbServiceService: DbServiceService,\r\n private dictionaryServiceServive: DictionaryServiceService,\r\n private uploadService : ImageUploadService,\r\n private router: Router) {\r\n if (this.commonServiceService) {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n }\r\n if (this.dictionaryServiceServive) {\r\n this.dictionaryService = this.dictionaryServiceServive.getDictionaryService();\r\n }\r\n if (this.dbServiceService) {\r\n this.dbDexieToDictionaryService = this.dbServiceService.getDbDexieToDictionaryService();\r\n }\r\n }\r\n\r\n ngOnInit () : void {\r\n // debugger;\r\n\r\n EmitterSubjectService.httpEventEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe({ \r\n next: (event : any) => {\r\n // debugger;\r\n if (event.type === HttpEventType.UploadProgress) {\r\n this.progress = Math.round(100 * event.loaded / event.total);\r\n this.ngAfterViewInit();\r\n // debugger;\r\n } else if (event instanceof HttpResponse) {\r\n this.message = event.body.message;\r\n // debugger;\r\n this.photoBn = event.body as PhotoBn;\r\n // debugger;\r\n if (!StringServiceStatic.isNullOrEmpty(this.photoBn) && this.photoBn.photoBnId > 0) {\r\n if (!StringServiceStatic.isNullOrEmpty(this.photoBn.fileBytes) && this.photoBn.fileBytes.length > 0) {\r\n this.photoBn.pic = JsRegExpServiceStatic.prefixPngToImageData(this.photoBn.fileBytes);\r\n this.photoBn.image = this.photoBn.pic;\r\n }\r\n // debugger;\r\n this.kvPhoto = new PhotoBn().toKvPhoto(this.photoBn);\r\n // debugger;\r\n\r\n this.dictionaryService.updateDictionary(this.photoBn, 'photoBn', this.photoBn.photoBnId);\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.photoBnDictionary, 'photoBn', this.loginSuccess.signedInUserId);\r\n\r\n if (!StringServiceStatic.isNullOrEmpty(this.kvPhoto) && this.kvPhoto.photoBnId > 0) {\r\n this.dictionaryService.updateDictionary(this.kvPhoto, 'kvPhoto', this.kvPhoto.photoBnId);\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.kvPhotoDictionary, 'kvPhoto', this.loginSuccess.signedInUserId);\r\n // debugger;\r\n this.selectedFiles = undefined;\r\n EmitterSubjectService.emitUploadedKvPhoto(this.kvPhoto);\r\n }\r\n }\r\n }\r\n },\r\n error: (err : any) => {\r\n console.log(err);\r\n this.progress = 0;\r\n\r\n if (err.error && err.error.message) {\r\n this.message = err.error.message;\r\n } else {\r\n this.message = 'Could not upload the file!';\r\n }\r\n\r\n this.currentFile = undefined;\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit () : void {\r\n // debugger;\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n selectFile (event : any) : void {\r\n this.selectedFiles = event.target.files;\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n upload () : void {\r\n this.progress = 0;\r\n EmitterSubjectService.emitShowSpinner(\"uploading your pic...\");\r\n if (!StringServiceStatic.isNullOrEmpty(this.selectedFiles) && this.selectedFiles.length > 0) {\r\n const file : File | null = this.selectedFiles.item(0);\r\n var kvPhoto : KvPhoto = new KvPhoto();\r\n if (!StringServiceStatic.isNullOrEmpty(file)) {\r\n this.currentFile = file;\r\n // debugger;\r\n this.uploadService.upload(this.currentFile);;\r\n } \r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n cancel () : void {\r\n this.cancelFileUpload();\r\n // debugger;\r\n this.isImageUploadFormVisible = true;\r\n // Note: isCameraVisible===true :camera-gluph-menu is visible && UploadFilesComponent is hidden.\r\n // ------------------------------------------------------------------------------------------------\r\n\r\n this.toggleCameraGlyphCounter++;\r\n EmitterSubjectService.emitToggleCameraGlyph(this.toggleCameraGlyphCounter);\r\n EmitterSubjectService.emitIsCameraClosedBool(true);\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.redirectionService.setRoute(this.router, 'profileTileScroll', this.loginSuccess.signedInUserId).subscribe(data => {\r\n // this.pagerBrdCrm = data;\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n cancelFileUpload () : void {\r\n // this.content = new Content(); // TPDO: restore\r\n this.selectedFiles = undefined;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n\r\n
\r\n\t
\r\n\t\t{{ progress }}%\r\n\t
\r\n
\r\n\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpRequest, HttpEvent } from '@angular/common/http';\r\nimport { Observable, Subject, takeUntil } from 'rxjs';\r\nimport { HttpService } from '../../../../services/coreServiceService/httpService.service';\r\nimport { EmitterSubjectService } from '../../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { LoginSuccess } from '../../../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../../../models/boxNonce/boxNonceEntity.model';\r\nimport { SlakezSaltServiceStatic } from '../../../../services/staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { StringServiceStatic } from '../../../../services/staticServices/stringServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class ImageUploadService {\r\n // private baseUrl = 'http://localhost:44334';\r\n private emitterDestroyed$ : Subject = new Subject();\r\n private loginSuccess : LoginSuccess = new LoginSuccess();\r\n private boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n // ---------------------------------------------------\r\n constructor (\r\n private http : HttpClient) {\r\n\r\n EmitterSubjectService.formDataEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(formData => {\r\n // debugger;\r\n \r\n // const req = new HttpRequest('POST', `${ this.baseUrl }/api/FileUpload/ImageUpload`, formData, {\r\n const req = new HttpRequest('POST', `/api/FileUpload/ImageUpload`, formData, {\r\n reportProgress: true,\r\n responseType: 'json'\r\n });\r\n\r\n this.http.request(req).subscribe(data => {\r\n // debugger;\r\n EmitterSubjectService.emitHttpEvent(data);\r\n })\r\n });\r\n\r\n\r\n }\r\n // ---------------------------------------------------\r\n\r\n upload (file : File) : void { // Observable>\r\n const formData : FormData = new FormData();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess(); \r\n formData.append('file', file);\r\n formData.append('signedInUserId', this.loginSuccess.signedInUserId.toString());\r\n formData.append('date', new Date().getTime().toString());\r\n\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position : any) => {\r\n if (position) {\r\n // debugger;\r\n formData.append('latitude', position.coords.latitude);\r\n formData.append('longitude', position.coords.longitude);\r\n // debugger;\r\n EmitterSubjectService.emitFormData(formData);\r\n }\r\n })\r\n }\r\n }\r\n\r\n // ------------------------------------------------\r\n // Not used:\r\n // ------------------------------------------------\r\n //getFiles () : Observable {\r\n // debugger;\r\n // // return this.http.get(`${ this.baseUrl }/files`);\r\n // debugger;\r\n // return this.http.get(`/api/FileUpload/ImageUpload`);\r\n //}\r\n // ------------------------------------------------\r\n}","'use-strict'\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { ImageUploadModuleComponent } from './component/imageUploadModule.component';\r\nimport { FileUploadComponent } from './fileUpload/fileUpload.component';\r\nimport { ImageUploadComponent } from './image-upload/image-upload.component';\r\nimport { UploadFilesComponent } from './uploadFiles/uploadFilesComponent.component';\r\n\r\nconst imageUploadroutes : Routes = [\r\n {\r\n path: '',\r\n // component: ImageUploadModuleComponent,\r\n children: [\r\n { path: 'fileUp/:id', component: FileUploadComponent },\r\n { path: 'imageUpload/:id', component: ImageUploadComponent },\r\n { path: 'uploadFiles/:id', component: UploadFilesComponent },\r\n ]\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [ RouterModule.forChild( imageUploadroutes)],\r\n exports: [RouterModule]\r\n})\r\nexport class ImageUploadRoutingModule { }\r\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DirectiveFilterPipeModule } from '../directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { ImageUploadModuleComponent } from './component/imageUploadModule.component';\r\nimport { FileUploadComponent } from './fileUpload/fileUpload.component';\r\nimport { ImageUploadRoutingModule } from './imageUpload-routing.module';\r\nimport { UploadFilesComponent } from './uploadFiles/uploadFilesComponent.component';\r\nimport { ImageUploadComponent } from './image-upload/image-upload.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n FileUploadComponent,\r\n UploadFilesComponent,\r\n ImageUploadModuleComponent,\r\n ImageUploadComponent\r\n ],\r\n imports: [\r\n CommonModule, // to get ngIf, ngFor, etc.\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n DirectiveFilterPipeModule,\r\n ImageUploadRoutingModule\r\n ],\r\n exports: [\r\n FileUploadComponent,\r\n UploadFilesComponent,\r\n ImageUploadRoutingModule,\r\n ImageUploadComponent\r\n ]\r\n})\r\nexport class ImageUploadModule { }\r\n","'use-strict'\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { FileUploader } from 'ng2-file-upload';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { ChatFileUpload } from '../../../models/chat/chatFileUpload.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { Content } from '../../../models/common/content.model';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { ProfilePics } from '../../../models/profile/profilePics.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { MemberServiceService } from '../../../services/memberServiceService/memberServiceService.service';\r\nimport { ProfilePicsService } from '../../../services/profileServiceService/profilePicsService.service';\r\nimport { ProfileServiceService } from '../../../services/profileServiceService/profileServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { UploadServiceStatic } from '../../../services/staticServices/uploadServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n//import { FileSelectDirective, FileDropDirective, FileUploader } from 'ng2-file-upload/ng2-file-upload';\r\n\r\n// ref: https://www.bezkoder.com/angular-11-file-upload/\r\n\r\n@Component( {\r\n selector: 'app-upload-files',\r\n templateUrl: './uploadFilesComponent.component.html',\r\n styleUrls: [ './uploadFilesComponent.component.scss' ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n\r\n animations: [ Animations, slideInOutAnimation, \r\n \r\n trigger( 'growUp', [\r\n transition( ':enter', [\r\n style( { transform: 'translateY(275%) scale(0.1)' } ),\r\n // style({ transform: 'scale(0.1)'}),\r\n animate( '700ms ease-in', style( { transform: 'translateY(0%) scale(1)' } ) ),\r\n // animate('500ms ease-in', style({ transform: 'scale(1)' }))\r\n ] ),\r\n transition( ':leave', [\r\n animate( '700ms ease-in', style( { transform: 'translateX(275%) scale(0.1)' } ) ),\r\n // animate('500ms ease-in', style({ transform: 'scale(0.1)' }))\r\n ] ),\r\n ] ),\r\n trigger( 'growXshrink', [\r\n transition( ':enter', [ style( { transform: 'translateX(275%) scale(0.1)' } ),\r\n animate( '500ms ease-in-out', style( { transform: 'translateX(0%)' } ) ),\r\n animate( '500ms ease-in', style( { transform: 'scale(1)' } ) ) ] ),\r\n transition( ':leave', [ animate( '500ms ease-in-out', style( { transform: 'translateX(275%)' } ) ),\r\n animate( '500ms ease-in', style( { transform: 'scale(0.1)' } ) ) ] ),\r\n ] ),\r\n ],\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n} )\r\n\r\nexport class UploadFilesComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public profilePicsService! : ProfilePicsService;\r\n // class FileSelectDirective\r\n @Directive({ selector: '[ng2FileSelect]' })\r\n // class FileDropDirective\r\n @Directive({ selector: '[ng2FileDrop]' })\r\n public url : string = '/api/FileUpload/ProfilePhotoUpload';\r\n public selectedFiles?: File[] = [];\r\n public currentFile?: File;\r\n public progress = 0;\r\n public message = '';\r\n\r\n public fileInfos?: Observable;\r\n\r\n // -----------------------------------\r\n public httpService!: HttpService;\r\n // ------------------------------------------\r\n public baseUrl = '/api/FileUpload/ProfilePhotoUpload';\r\n public bgiIndex = -1;\r\n public bgiTimer: any;\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public content: Content = new Content();\r\n public deviceInfo = null;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public formData = new FormData();\r\n public hasBaseDropZoneOver : boolean = false;\r\n public hasAnotherDropZoneOver : boolean = false;\r\n public isCameraVisible = true;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isFormValid = false;\r\n public isMyProfile = false;\r\n public isNewPhotoUploaded : boolean = false;\r\n public isPhotoMgmt = false;\r\n public isSubmitted = false;\r\n public isImageUploadFormVisible = false;\r\n public isShowPhotoUploadUi : Bool = new Bool();\r\n public isViewMember = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n @Input() marginTop = '-1rem';\r\n public messages : string[] = [];\r\n public options : object = {};\r\n public profilePics: ProfilePics = new ProfilePics();\r\n\r\n public readFileObservable$: Subject = new Subject();\r\n public returnUrl = '';\r\n public signedInUserId = 0;\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n public tempStringFiles : string[] = [];\r\n public imageArrBuffer: Uint8Array = new Uint8Array();\r\n public tempElem: any;\r\n public tempFiles: File[] = [];\r\n public tempFileBlobs: Blob[] = [];\r\n public tempFilesString : string[] = [];\r\n public toggleCameraGlyphCounter = 0;\r\n\r\n public uploader : FileUploader = new FileUploader({ url: this.baseUrl, removeAfterUpload: false, autoUpload: true });\r\n \r\n // ------------------------------------------\r\n public description = '';\r\n public chatFileUpload: ChatFileUpload = new ChatFileUpload();\r\n // public files: File[] = [];\r\n public isCurrentFile = false;\r\n @ViewChild( 'imageUploadForm' ) imageUploadForm: any;\r\n\r\n constructor (\r\n public cdr: ChangeDetectorRef,\r\n private coreServiceService : CoreServiceService,\r\n public memberServiceService : MemberServiceService,\r\n public profileServiceService: ProfileServiceService,\r\n private router: Router)\r\n {\r\n if ( this.coreServiceService )\r\n {\r\n this.httpService = this.coreServiceService.getHttpService();\r\n this.profilePicsService = this.profileServiceService.getProfilePicsService();\r\n }\r\n }\r\n // -----------------------------------------------\r\n ngOnInit (): void\r\n {\r\n \r\n // this.fileInfos = this.uploadFilesService.getFiles();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // EmitterSubjectService.emitMainTopCss( 3 ); // 3%\r\n\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n\r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.isCameraVisibleEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // // Note: in order to have ImageUpload visible if isCameraVisible===false && vise versa,\r\n // //\r\n // this.isImageUploadFormVisible = result;\r\n // this.ngAfterViewInit();\r\n // });\r\n\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.toggleCameraGlyphEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n this.isCameraVisible = !this.isCameraVisible;\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit (): void\r\n {\r\n // this.pagerV = this.getPagerVForCurrentPage();\r\n this.cdr.detectChanges();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.toggleCameraGlyphCounter = 0;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n cancel (): void\r\n {\r\n this.chatFileUpload.fileMap = new Map();\r\n this.cancelFileUpload();\r\n // debugger;\r\n this.isImageUploadFormVisible= true;\r\n // Note: isCameraVisible===true :camera-gluph-menu is visible && UploadFilesComponent is hidden.\r\n // ------------------------------------------------------------------------------------------------\r\n \r\n this.toggleCameraGlyphCounter++;\r\n EmitterSubjectService.emitToggleCameraGlyph(this.toggleCameraGlyphCounter );\r\n EmitterSubjectService.emitIsCameraClosedBool( true );\r\n }\r\n // ---------------------------------------------------------------\r\n cancelFileUpload (): void\r\n {\r\n // this.content = new Content(); // TPDO: restore\r\n this.selectedFiles = undefined;\r\n }\r\n // ---------------------------------------------------------------\r\n // this.uploader = new FileUploader({ url: this.baseUrl, removeAfterUpload: false, autoUpload: true });\r\n \r\n public fileOverBase (e : any) : void {\r\n this.hasBaseDropZoneOver = e;\r\n }\r\n\r\n public fileOverAnother (e : any) : void {\r\n this.hasAnotherDropZoneOver = e;\r\n }\r\n // ---------------------------------------------------------------\r\n public getDescription ($event:any) : string {\r\n // debugger;\r\n if ($event && $event.target && $event.target.value && $event.target.value.length > 0) {\r\n // debugger;\r\n this.content.contents = $event.target.value as string;\r\n }\r\n // debugger;\r\n return this.content.contents;\r\n }\r\n // ---------------------------------------------------------------\r\n public uploadFiles ($event:any) : any {\r\n // debugger;\r\n let formData = new FormData();\r\n let files : any[] = [];\r\n if ($event && $event.target && $event.target.files && $event.target.files.length > 0) {\r\n // debugger;\r\n files = $event.target.files as File[]\r\n for (var i = 0; i < files.length; i++) {\r\n formData.append(files[ i ].name, files[ i ]);\r\n this.content.chatFileUpload.fileMap.set(files[ i ].name, files[ i ]);\r\n }\r\n\r\n this.content.chatFileUpload.fileArr = files;\r\n this.content.chatFileUpload.formData = formData;\r\n this.content.chatFileUpload.picArr.push(UploadServiceStatic.readThisFile(files[i]));\r\n this.isCurrentFile = true;\r\n\r\n\r\n // this.tempFilesString = StringServiceStatic.createArrayFromMap(this.content.chatFileUpload.fileMap);\r\n // debugger; \r\n }\r\n // this.upload(this.content);\r\n return files;\r\n }\r\n // -----------------------------------------------\r\n public selectFile ( $event: any ): void\r\n {\r\n debugger;\r\n this.selectedFiles = $event.target.files;\r\n }\r\n \r\n // -----------------------------------------------\r\n public sendUploadedFile (content : Content): Observable\r\n {\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(content)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(content.chatFileUpload)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(content.chatFileUpload.fileArr)\r\n && content.chatFileUpload.fileArr.length > 0 ) {\r\n \r\n this.selectedFiles = content.chatFileUpload.fileArr;\r\n var kvPhoto : any;\r\n this.progress = 0;\r\n // debugger;\r\n if (this.imageUploadForm.valid && this.selectedFiles) {\r\n // debugger;\r\n const file : File | null = this.selectedFiles[0];\r\n\r\n if (file) {\r\n this.currentFile = file;\r\n // debugger;\r\n UploadServiceStatic.sendWithGeoLocation(this.content, this.httpService).subscribe(data => {\r\n // debugger;\r\n subscriber.next(data); \r\n });\r\n // debugger;\r\n // OR\r\n // Note: To send file using formaData with progress:\r\n // -------------------------------------------------\r\n // this.uploadFilesService.upload( this.currentFile ).subscribe(\r\n // ( event : any ) =>\r\n // {\r\n // if ( event.type === HttpEventType.UploadProgress )\r\n // {\r\n // this.progress = Math.round( 100 * event.loaded / event.total );\r\n // } else if ( event instanceof HttpResponse )\r\n // {\r\n // this.message = event.body.message;\r\n // this.fileInfos = this.uploadFilesService.getFiles();\r\n // }\r\n // },\r\n // ( err : any ) =>\r\n // {\r\n // console.log( err );\r\n // this.progress = 0;\r\n\r\n // if ( err.error && err.error.message )\r\n // {\r\n // this.message = err.error.message;\r\n // } else\r\n // {\r\n // this.message = 'Could not upload the file!';\r\n // }\r\n\r\n // this.currentFile = undefined;\r\n // } );\r\n } \r\n } \r\n }\r\n })\r\n }\r\n // -----------------------------------------------\r\n public upload (content : Content) : any {\r\n // start spinner:\r\n // --------------\r\n this.spinnerModel = new SpinnerModel();\r\n this.spinnerModel.message = 'Getting your profile pics...';\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n // debugger;\r\n this.sendUploadedFile(content).subscribe(data => {\r\n this.isNewPhotoUploaded = true;\r\n EmitterSubjectService.emitIsNewPhotoUploaded(this.isNewPhotoUploaded);\r\n // debugger;\r\n \r\n // stop the spinner:\r\n // -----------------\r\n EmitterSubjectService.emitHideSpinner(\"\");\r\n // debugger;\r\n EmitterSubjectService.emitUploadedKvPhoto(data);\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n
0\"\r\n id=\"imageUploadComponentId\"\r\n align=\"center\"\r\n style=\"margin: 0.5rem 0; width: 100%;\"\r\n [@growXshrink] class=\"flex-container\"\r\n [ngStyle]=\"{'margin-top': 'marginTop'}\">\r\n \r\n
0\" class=\"flex-item-plain notexS\">\r\n \r\n \r\n
\r\n
\r\n
\r\n Upload Pictures:\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n Select File :\r\n 0, 'borderleftRed': !(chatFileUpload.fileMap.size > 0)}\"\r\n style=\"height: 1rem;\r\n width: 11rem;\r\n border-radius: 7px;\"\r\n autofocus multiple required />\r\n
\r\n Image required!\r\n
\r\n
\r\n\r\n
\r\n
\r\n Description(optional):\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef,\r\n Input, OnDestroy, OnInit, ViewChild, ViewContainerRef\r\n} from '@angular/core';\r\nimport { Router, RouterOutlet } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-key-value-module-component',\r\n templateUrl: './keyValueModule.component.html',\r\n styleUrls: ['./keyValueModule.component.scss'],\r\n})\r\nexport class KeyValueModuleComponent implements OnInit, OnDestroy, AfterViewInit {\r\n // ref:https:// medium.com/angular-in-depth/lazy-loading-\r\n @ViewChild('anchor', { read: ViewContainerRef }) keyValueAnchor!: ViewContainerRef;\r\n private activeComponentIds: string[] = [];\r\n private emitterDestroyed$: Subject = new Subject();\r\n public keyValueFactory: any;\r\n @Input() mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n\r\n constructor(\r\n private factoryResolver: ComponentFactoryResolver,\r\n public cdr: ChangeDetectorRef,\r\n private router: Router,\r\n private unloadConponentRef: ElementRef, ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n // debugger;\r\n // this.activateGesture(this.gestureDivId, '');\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n EmitterSubjectService.emitDisplayDefaultGlyphiconMenu();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public prepareRoute(outlet: RouterOutlet): any {\r\n const anim = 'animation';\r\n return outlet && outlet.activatedRouteData && outlet.activatedRouteData[anim];\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","
\n
\n \n \n
\n\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { Content } from '../../../models/common/content.model';\r\nimport { KeyValueResult } from '../../../models/keyValue/keyValueResult.model';\r\nimport { KvAny } from '../../../models/keyValue/kvAny.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { ProfileContentService } from '../../../services/profileServiceService/profileContentService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { DbServiceService } from '../../../services/dbServiceService/dbServiceService.service';\r\nimport { DictionaryService } from '../../../services/dictionaryServiceService/dictionaryService.service';\r\nimport { DbDexieToDictionaryService } from '../../../services/dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryServiceService } from '../../../services/dictionaryServiceService/dictionaryServiceService.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { KvArrayService } from '../../../services/coreServiceService/kvArrayService.service';\r\nimport { DateStringServiceStatic } from '../../../services/staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\n\r\n@Component({\r\n selector: 'app-content-key-value-arr',\r\n templateUrl: './contentKeyValueArr.component.html',\r\n styleUrls: [ './contentKeyValueArr.component.scss' ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n Animations, slideInOutAnimation\r\n ],\r\n})\r\nexport class ContentKeyValueArrComponent implements OnInit, OnDestroy {\r\n public dictionaryService! : DictionaryService;\r\n public dbDexieToDictionaryService! : DbDexieToDictionaryService;\r\n public kvArrayService! : KvArrayService;\r\n @Input() contentKvAnyArr: KvAny[] = [];\r\n @Input() kvAnyLegend = '';\r\n @Input() kvAnyName = '';\r\n @Input() isFormSubmitted = false;\r\n @Input() isRequired = false;\r\n public kvArrForm!: FormGroup;\r\n public kvArrResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public IsOpen = new Bool();\r\n public isProfContentClosedBool : Bool = new Bool();\r\n public loginSuccess!: LoginSuccess;\r\n public selectedKvAny!: FormControl;\r\n public selectedKvArrIndex = -1;\r\n public preferenceKvAnyArr : KvAny[] = [];\r\n public profileContent : Content = new Content();\r\n public sitUser : SitUser = new SitUser();\r\n @Input() sitUserId = 0;\r\n // ---------------------------------------------------------------\r\n constructor (\r\n private cdr : ChangeDetectorRef,\r\n private coreServiceService : CoreServiceService,\r\n private dbServiceService : DbServiceService,\r\n private dictionaryServiceService : DictionaryServiceService,\r\n private fb : FormBuilder,\r\n private profileContentService : ProfileContentService,\r\n private router: Router,\r\n @Inject(DOCUMENT) document: any,\r\n ) {\r\n if (this.dbServiceService) {\r\n this.dbDexieToDictionaryService = this.dbServiceService.getDbDexieToDictionaryService() as DbDexieToDictionaryService;\r\n }\r\n if (this.dictionaryServiceService) {\r\n this.dictionaryService = this.dictionaryServiceService.getDictionaryService();\r\n }\r\n if (coreServiceService) {\r\n this.kvArrayService = this.coreServiceService.getKvArrayService();\r\n }\r\n if (this.isRequired) {\r\n this.kvArrForm = this.fb.group({\r\n /*\r\n * 'radioSelection' : this.fb.control(this.radioboxName, [\r\n * Validators.required])\r\n */\r\n });\r\n }\r\n /*\r\n * else this.radioboxForm = this.fb.group({\r\n * 'radioSelection' : this.fb.control(this.radioboxName)\r\n * });\r\n */\r\n\r\n this.kvArrResult.kvName = this.kvAnyName;\r\n // debugger;\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // debugger;\r\n if (this.sitUserId > 0) {\r\n // debugger;\r\n // get dictionary-value first:\r\n // ---------------------------\r\n this.profileContent = this.dictionaryService.profileContentDictionary.get(this.sitUserId);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)) {\r\n this.contentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent); \r\n this.ngAfterViewInit();\r\n // debugger;\r\n }\r\n\r\n // get from the backend-server:\r\n // ----------------------------\r\n this.profileContentService.getProfileContent(this.sitUserId).subscribe(data => {\r\n this.profileContent = data;\r\n this.contentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent); \r\n\r\n this.dictionaryService.updateDictionary(this.profileContent, 'profileContent', this.profileContent.sitUserId);\r\n // debugger;\r\n \r\n this.ngAfterViewInit();\r\n })\r\n }\r\n // --------------------------------------------------------------\r\n EmitterSubjectService.profileContentKvAnyArrEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n this.contentKvAnyArr = result;\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n // -------------------------------------------------------------\r\n public ngAfterViewInit () : void {\r\n // EmitterSubjectService.emitHideSpinner(true); \r\n // debugger;\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.contentKvAnyArr = [];\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.profileContentDictionary, 'profileContent', this.loginSuccess.signedInUserId);\r\n // debugger;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onKeyValueChange(e:any): void {\r\n if (e.target.checked) {\r\n /*\r\n * this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n * this.selectedRadiobox.patchValue('');\r\n * this.selectedRadiobox.patchValue(e.target.value);\r\n */\r\n\r\n this.kvArrResult.kvName = this.kvAnyName;\r\n this.kvArrResult.kvSelection = e.target.value;\r\n this.kvArrResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.kvArrResult);\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: isOpen is opposite of isClosed.\r\n // ---------------------------------------------------------------------------------\r\n isOpen ( isClosed: any )\r\n {\r\n // debugger;\r\n let value = !isClosed;\r\n this.IsOpen.isClosed = value;\r\n this.IsOpen.name = 'contentKeyValueArrComponentId';\r\n if (!this.IsOpen.isClosed) {\r\n // debugger;\r\n if (this.sitUserId > 0 && (StringServiceStatic.isNullOrEmpty(this.profileContent) || this.profileContent.sitUserId == 0)) {\r\n this.profileContentService.getProfileContent(this.sitUserId).subscribe(data => {\r\n this.profileContent = data;\r\n this.contentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent);\r\n\r\n this.dictionaryService.updateDictionary(this.profileContent, 'profileContent', this.profileContent.sitUserId);\r\n\r\n //this.dbDexieToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // this.dictionaryService.profileContentDictionary, 'profileContent', this.loginSuccess.signedInUserId);\r\n // debugger;\r\n this.ngAfterViewInit();\r\n })\r\n }\r\n }\r\n\r\n EmitterSubjectService.emitIsViewMember(true); // TODO: may need to set instead of emitting\r\n \r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed(): any {\r\n return this.kvArrResult.kvSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n //public extractDataFromMemberViewMgmtModel (data : MemberViewMgmtModel) : void {\r\n // // debugger;\r\n // this.memberViewMgmtModel = data; // EmitterSubjectService.getMemberViewMgmtModel(); // Watch: location-View -4\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel)) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.profileInfoView) && this.memberViewMgmtModel.profileInfoView.sitUserId > 0) {\r\n // this.profileInfoView = this.memberViewMgmtModel.profileInfoView;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.kvAnyArr) && this.memberViewMgmtModel.kvAnyArr.length > 0) {\r\n // this.profileInfoKvAnyArr = this.memberViewMgmtModel.kvAnyArr;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.profileContentKvAnyArr) && this.memberViewMgmtModel.profileContentKvAnyArr.length > 0) {\r\n // this.contentKvAnyArr = this.memberViewMgmtModel.profileContentKvAnyArr;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.preferenceKvAnyArr) && this.memberViewMgmtModel.preferenceKvAnyArr.length > 0) {\r\n // this.preferenceKvAnyArr = this.memberViewMgmtModel.preferenceKvAnyArr;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.profileTile)\r\n // && this.memberViewMgmtModel.profileTile.sitUserId > 0) {\r\n // this.profileTile = this.memberViewMgmtModel.profileTile;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.sitUser)\r\n // && this.memberViewMgmtModel.sitUser.sitUserId > 0) {\r\n // this.sitUser = this.memberViewMgmtModel.sitUser;\r\n // }\r\n // }\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n}\r\n","
    \r\n
  • \r\n \r\n

    \r\n 0\" style=\"float: left; opacity: 1; font-size: 13px; font-weight:bold;\">\r\n {{kvAnyName}}\r\n \r\n \r\n \r\n

    \r\n
    \r\n
  • \r\n
  • \r\n
  • \r\n
      \r\n
    • \r\n
      0\" class=\"kvBttnSk\">\r\n {{kvAnyLegend}}\r\n *\r\n
      \r\n
      0\">\r\n
      \r\n
      0\" class=\"row text-left increase\">\r\n \r\n \r\n
      \r\n {{kvAny.key}}:\r\n
      \r\n
      \r\n {{kvAny.value}}\r\n
      \r\n \r\n
      \r\n
      0\" class=\"hrGray\" style=\"display:inline-block;width:98%;padding:0;margin:0 0 0 0.75rem;\" />\r\n
      \r\n \r\n
      \r\n \r\n
      \r\n \r\n {{kvAnyName}} is required, please select at leaset one value.\r\n \r\n
      \r\n
    • \r\n
    \r\n
  • \r\n
\r\n\r\n","'use-strict'\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { KeyValueModuleComponent } from './component/keyValueModule.component';\r\nimport { ContentKeyValueArrComponent } from './contentKeyValueArr/contentKeyValueArr.component';\r\nimport { KeyValueComponent } from './keyValue/keyValue/keyValue.component';\r\nimport { KeyValueAnyComponent } from './keyValue/keyValueAny/keyValueAny.component';\r\nimport { KeyValueAnyArrComponent } from './keyValue/keyValueAnyArr/keyValueAnyArr.component';\r\nimport { KeyValueAnyTemplateComponent } from './keyValue/keyValueAnyTemplate/keyValueAnyTemplate.component';\r\nimport { KeyValueArrComponent } from './keyValue/keyValueArr/keyValueArr.component';\r\nimport { ProfileImageKvComponent } from './keyValue/profileImageKv/profileImageKv.component';\r\nimport { ProfilePicsKeyValueArrComponent } from './keyValue/profilePicsKeyValueArr/profilePicsKeyValueArr.component';\r\nimport { PreferenceKeyValueArrComponent } from './preferenceKeyValueArr/preferenceKeyValueArr.component';\r\nimport { ProfileInfoKeyValueArrComponent } from './profileInfoKeyValueArr/profileInfoKeyValueArr.component';\r\n\r\nexport const sharedRoutes: Routes = [\r\n {\r\n path: '',\r\n // component: KeyValueModuleComponent,\r\n children: [\r\n { path: 'contentkeyvaluearr', component: ContentKeyValueArrComponent },\r\n { path: 'keyvalue', component: KeyValueComponent },\r\n { path: 'keyvalueany', component: KeyValueAnyComponent },\r\n { path: 'keyvalueanyarr', component: KeyValueAnyArrComponent },\r\n { path: 'keyvalueanytemplate', component: KeyValueAnyTemplateComponent },\r\n { path: 'keyvaluearr', component: KeyValueArrComponent },\r\n { path: 'preferencekeyvaluearr', component: PreferenceKeyValueArrComponent },\r\n { path: 'profilleimagekv', component: ProfileImageKvComponent },\r\n { path: 'profileinfokeyvaluearr', component: ProfileInfoKeyValueArrComponent },\r\n { path: 'profilepicskeyvaluearr', component: ProfilePicsKeyValueArrComponent },\r\n ]\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(sharedRoutes)],\r\n exports: [RouterModule]\r\n})\r\nexport class KeyValueRoutingModule { }\r\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DirectiveFilterPipeModule } from '../directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { ImageUploadModule } from '../imageUploadModule/imageUpload.module';\r\nimport { SharedRoutingModule } from '../sharedModule/shared-routing.module';\r\nimport { KeyValueModuleComponent } from './component/keyValueModule.component';\r\nimport { ContentKeyValueArrComponent } from './contentKeyValueArr/contentKeyValueArr.component';\r\nimport { KeyValueRoutingModule } from './keyValue-routing.module';\r\nimport { KeyValueComponent } from './keyValue/keyValue/keyValue.component';\r\nimport { KeyValueAnyComponent } from './keyValue/keyValueAny/keyValueAny.component';\r\nimport { KeyValueAnyArrComponent } from './keyValue/keyValueAnyArr/keyValueAnyArr.component';\r\nimport { KeyValueAnyTemplateComponent } from './keyValue/keyValueAnyTemplate/keyValueAnyTemplate.component';\r\nimport { KeyValueArrComponent } from './keyValue/keyValueArr/keyValueArr.component';\r\nimport { ProfileImageKvComponent } from './keyValue/profileImageKv/profileImageKv.component';\r\nimport { ProfilePicsKeyValueArrComponent } from './keyValue/profilePicsKeyValueArr/profilePicsKeyValueArr.component';\r\nimport { PreferenceKeyValueArrComponent } from './preferenceKeyValueArr/preferenceKeyValueArr.component';\r\nimport { ProfileInfoKeyValueArrComponent } from './profileInfoKeyValueArr/profileInfoKeyValueArr.component';\r\nimport { UploadFilesKeyValueArrComponent } from './uploadFilesKeyValueArr/uploadFilesKeyValueArr.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ContentKeyValueArrComponent,\r\n KeyValueComponent,\r\n KeyValueAnyComponent,\r\n KeyValueAnyArrComponent,\r\n KeyValueAnyTemplateComponent,\r\n KeyValueArrComponent,\r\n PreferenceKeyValueArrComponent,\r\n ProfileImageKvComponent,\r\n ProfileInfoKeyValueArrComponent,\r\n ProfilePicsKeyValueArrComponent,\r\n KeyValueModuleComponent,\r\n UploadFilesKeyValueArrComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n DirectiveFilterPipeModule,\r\n ImageUploadModule,\r\n SharedRoutingModule,\r\n KeyValueRoutingModule,\r\n ],\r\n exports: [\r\n ContentKeyValueArrComponent,\r\n ProfileInfoKeyValueArrComponent,\r\n ProfilePicsKeyValueArrComponent,\r\n PreferenceKeyValueArrComponent,\r\n UploadFilesKeyValueArrComponent,\r\n KeyValueRoutingModule,\r\n ],\r\n\r\n providers: [\r\n // { provide: ToNumberPipe },\r\n ],\r\n\r\n})\r\nexport class KeyValueModule {\r\n}\r\n","'use-strict'\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../../models/common/bool.model';\r\nimport { KeyValueResult } from '../../../../models/keyValue/keyValueResult.model';\r\nimport { KvAnyArr } from '../../../../models/keyValue/kvAnyArr.model';\r\nimport { ProfileInfo } from '../../../../models/profile/profileInfo.model';\r\nimport { CoreServiceService } from '../../../../services/coreServiceService/coreServiceService.service';\r\nimport { KvArrayService } from '../../../../services/coreServiceService/kvArrayService.service';\r\nimport { EmitterSubjectService } from '../../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Animations, slideInOutAnimation } from '../../../animation';\r\n\r\n@Component({\r\n selector: 'app-key-value-any-arr',\r\n templateUrl: './keyValueAnyArr.component.html',\r\n styleUrls: ['./keyValueAnyArr.component.scss'],\r\n animations: [\r\n Animations,\r\n trigger('growInShrinkOut', [\r\n transition(':enter', [style({ transform: 'scale(0.1)'}), animate('900ms ease-in', style({ transform: 'scale(1)'}))]),\r\n transition(':leave', [animate('700ms ease-in', style({ transform: 'scale(0.1)'}))]),\r\n ]),\r\n ],\r\n})\r\nexport class KeyValueAnyArrComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\r\n public kvArrayService!: KvArrayService;\r\n @Input() arrKvAnyArr: KvAnyArr[] = [];\r\n @Input() arrKvLegend = '';\r\n @Input() arrKvName = '';\r\n @Input() isFormSubmitted = false;\r\n @Input() isRequired = false;\r\n public kvLegend: string[] = ['Profile description', 'About me', 'My Pictures', 'My preferences', 'What I am looking for', 'What I am into'];\r\n public kvName: string[] = ['Description', 'ProfileInfo', 'Preferences'];\r\n public isImage = false;\r\n public imageData = '';\r\n public images: string[] = [];\r\n public arrKvForm!: FormGroup;\r\n public arrKvResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isClosedBool: Bool = new Bool();\r\n public isMobilevar = false;\r\n public isClosed = true;\r\n public loginSuccess!: LoginSuccess;\r\n public profileInfo: ProfileInfo = new ProfileInfo();\r\n public selectedArrKvAny!: FormControl;\r\n public selectedArrKvAnyIndex = -1;\r\n // ---------------------------------------------------------------\r\n constructor (\r\n private coreServiceService : CoreServiceService,\r\n private cdr : ChangeDetectorRef,\r\n @Inject( DOCUMENT ) document: any )\r\n {\r\n if (coreServiceService) {\r\n this.kvArrayService = coreServiceService.getKvArrayService();\r\n }\r\n\r\n EmitterSubjectService.modelEmitter.subscribe((result) => {\r\n // debugger;\r\n this.profileInfo = result as ProfileInfo;\r\n if (this.profileInfo) {\r\n this.arrKvAnyArr = this.kvArrayService.getObjectModelToArrKvAny(this.profileInfo);\r\n // debugger;\r\n }\r\n // EmitterSubjectService.emitMyErrorLog(result);\r\n });\r\n\r\n this.arrKvResult.kvName = this.arrKvName;\r\n // debugger;\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n /*\r\n * this.cdr.detectChanges();\r\n * debugger;\r\n */\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n ngOnChanges(changes: SimpleChanges): void {\r\n /*\r\n * only run when property 'data' changed\r\n * debugger;\r\n */\r\n if (this.isImageFound() === true) {\r\n this.isImageData(this.imageData);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: IMPORTANT!!\r\n * Keep this as its is used to fix linting error that results in the following two functions.\r\n * ---------------------------------------------------------------\r\n * isImageFound(): boolean {\r\n * if (this.arrKvAnyArr) {\r\n * let i = 0;\r\n * const arKeys = Array.from(Object.keys(this.arrKvAnyArr));\r\n * const arValues = Array.from(Object.values(this.arrKvAnyArr), v => {\r\n * // debugger;\r\n * if (arKeys[i].toString().toLowerCase().indexOf('image') !== -1) {\r\n * this.images.push(v.toString());\r\n * return true;\r\n * }\r\n * else if (this.arrKvAnyArr && this.arrKvAnyArr.values[i] && this.arrKvAnyArr.values[i].key\r\n * && this.arrKvAnyArr.values[i].key.toString().toLowerCase().indexOf('image') !== -1) {\r\n * this.images.push(this.arrKvAnyArr.values[i].toString());\r\n * return true;\r\n * }\r\n * else if (this.arrKvAnyArr && this.arrKvAnyArr.values[i] && this.arrKvAnyArr.values[i].key && this.arrKvAnyArr.values[i].value\r\n * && this.arrKvAnyArr.values[i].value.toString().toLowerCase().indexOf('image') !== -1) {\r\n * this.images.push(this.arrKvAnyArr.values[i].value.toString());\r\n * return true;\r\n * }\r\n * i++;\r\n * });\r\n * }\r\n * // debugger;\r\n * return false;\r\n * }\r\n * ---------------------------------------------------------------\r\n */\r\n isImageFound(): boolean {\r\n if (this.arrKvAnyArr) {\r\n const arKeys = Array.from(Object.keys(this.arrKvAnyArr));\r\n const arValues = Array.from(\r\n Object.values(this.arrKvAnyArr),\r\n (v) => this.findImageForIsImageFound(arKeys, this.arrKvAnyArr, v)\r\n // debugger;\r\n );\r\n }\r\n // debugger;\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n findImageForIsImageFound(arKeys: any, arrKvAnyArr: any, v: any): any {\r\n let i = 0;\r\n\r\n for (const e of arKeys) {\r\n if (e.toString().toLowerCase().indexOf('image') !== -1) {\r\n this.images.push(v.toString());\r\n return true;\r\n } else if (arrKvAnyArr && arrKvAnyArr.length > 0) {\r\n for (const f of arrKvAnyArr) {\r\n if (f.values[i] && f.values[i].key && f.values[i].key.toString().toLowerCase().indexOf('image') !== -1) {\r\n this.images.push(f.values[i].toString());\r\n return true;\r\n } else if (f.values[i] && f.values[i].key && f.values[i].value && f.values[i].value.toString().toLowerCase().indexOf('image') !== -1) {\r\n this.images.push(f.values[i].value.toString());\r\n return true;\r\n }\r\n }\r\n }\r\n i++;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isImageData (data : any): boolean {\r\n // var dataUriPattern = '/^data\\:(?image\\/(png|tiff|jpg|gif));base64,(?[A-Z0-9\\+\\/\\=]+)$/g';\r\n const dataUriPattern = '/data:(?image/(png|tiff|jpg|gif));base64,(?[A-Z0-9+/=]+)$/ig';\r\n\r\n if (data.match(dataUriPattern).length > 0) {\r\n this.isImage = true;\r\n // debugger;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onKeyValueChange (e : any) {\r\n if (e.target.checked) {\r\n /*\r\n * this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n * this.selectedRadiobox.patchValue('');\r\n * this.selectedRadiobox.patchValue(e.target.value);\r\n */\r\n\r\n this.arrKvResult.kvName = this.arrKvName;\r\n this.arrKvResult.kvSelection = e.target.value;\r\n this.arrKvResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.arrKvResult);\r\n }\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Ref;https:// bytenota.com/display-base64-image-in-html-using-javascript-and-jquery/\r\n */\r\n displayBase64Image (placeholder : any, base64Image : any) {\r\n const image = document.createElement('img');\r\n\r\n image.onload = function () {\r\n placeholder.innerHTML = '';\r\n placeholder.appendChild(this);\r\n };\r\n image.src = base64Image;\r\n }\r\n // --------------------------------------------------------------\r\n getUrl (data : any): any {\r\n // image placeholder where the image will be displayed\r\n let imagePlaceholder = document.getElementById('image-placeholder-1');\r\n\r\n // display the image in placeholder\r\n if (imagePlaceholder) {\r\n this.displayBase64Image(imagePlaceholder, data);\r\n }\r\n\r\n imagePlaceholder = document.getElementById('image-placeholder-2');\r\n\r\n // display the image in placeholder\r\n if (imagePlaceholder) {\r\n this.displayBase64Image(imagePlaceholder, data);\r\n }\r\n imagePlaceholder.remove();\r\n // return'url('' + data + '')';\r\n return data;\r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed() {\r\n return this.arrKvResult.kvSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n\r\n","'use-strict'\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { Animations, slideInOutAnimation } from '../../../../app/animation';\r\nimport { LoginSuccess } from '../../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../../models/common/bool.model';\r\nimport { KeyValueResult } from '../../../../models/keyValue/keyValueResult.model';\r\nimport { KvAny } from '../../../../models/keyValue/kvAny.model';\r\nimport { ProfileInfo } from '../../../../models/profile/profileInfo.model';\r\nimport { CoreServiceService } from '../../../../services/coreServiceService/coreServiceService.service';\r\nimport { KvArrayService } from '../../../../services/coreServiceService/kvArrayService.service';\r\nimport { EmitterSubjectService } from '../../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Component({\r\n selector: 'app-key-value-any-template',\r\n templateUrl: './keyValueAnyTemplate.component.html',\r\n styleUrls: ['./keyValueAnyTemplate.component.scss'],\r\n animations: [\r\n Animations,\r\n trigger('growInShrinkOut', [\r\n transition(':enter', [style({ transform: 'scale(0.1)'}), animate('900ms ease-in', style({ transform: 'scale(1)'}))]),\r\n transition(':leave', [animate('700ms ease-in', style({ transform: 'scale(0.1)'}))]),\r\n ]),\r\n ],\r\n})\r\nexport class KeyValueAnyTemplateComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\r\n public kvArrayService!: KvArrayService;\r\n @Input() arrKvAny: KvAny[] = [];\r\n @Input() arrKvLegend = '';\r\n @Input() arrKvName = '';\r\n @Input() index = -1;\r\n @Input() isFormSubmitted = false;\r\n @Input() isRequired = false;\r\n public kvLegend: string[] = ['Profile description', 'About me', 'My Pictures', 'My preferences', 'What I am looking for', 'What I am into'];\r\n public kvName: string[] = ['Description', 'ProfileInfo', 'Preferences'];\r\n public isImage = false;\r\n public imageData = '';\r\n public images: string[] = [];\r\n public arrKvForm!: FormGroup;\r\n public arrKvResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isClosedBool: Bool = new Bool();\r\n public isMobilevar = false;\r\n public isClosed = true;\r\n public loginSuccess!: LoginSuccess;\r\n public profileInfo: ProfileInfo = new ProfileInfo();\r\n public selectedArrKvAny!: FormControl;\r\n public selectedArrKvAnyIndex = -1;\r\n // ---------------------------------------------------------------\r\n constructor (private coreServiceService : CoreServiceService, private cdr : ChangeDetectorRef, @Inject(DOCUMENT) document : any) {\r\n if (coreServiceService) {\r\n this.kvArrayService = coreServiceService.getKvArrayService();\r\n }\r\n\r\n // debugger;\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n // debugger;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n ngOnChanges(changes: SimpleChanges): void {\r\n /*\r\n * only run when property 'data' changed\r\n * debugger;\r\n */\r\n if (this.isImageFound() === true) {\r\n this.isImageData(this.imageData);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n isArray(model: any): boolean {\r\n return this.kvArrayService.isModelArray(model);\r\n }\r\n // ---------------------------------------------------------------\r\n isImageValue(model: KvAny): boolean {\r\n return this.kvArrayService.isImage(model);\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: IMPORTANT!!\r\n * Keep this as its is used to fix linting error that results in the following two functions.\r\n * ---------------------------------------------------------------\r\n * isImageFound(): boolean {\r\n * if (this.arrKvAny) {\r\n * let i = 0;\r\n * const arKeys = Array.from(Object.keys(this.arrKvAny));\r\n * const arValues = Array.from(Object.values(this.arrKvAny), v => {\r\n * // debugger;\r\n * if (arKeys[i].toString().toLowerCase().indexOf('image') !== -1) {\r\n * this.images.push(v.toString());\r\n * return true;\r\n * }\r\n * else if (this.arrKvAny && this.arrKvAny.values[i] && this.arrKvAny.values[i].key\r\n * && this.arrKvAny.values[i].key.toString().toLowerCase().indexOf('image') !== -1) {\r\n * this.images.push(this.arrKvAny.values[i].toString());\r\n * return true;\r\n * }\r\n * else if (this.arrKvAny && this.arrKvAny.values[i] && this.arrKvAny.values[i].key && this.arrKvAny.values[i].value\r\n * && this.arrKvAny.values[i].value.toString().toLowerCase().indexOf('image') !== -1) {\r\n * this.images.push(this.arrKvAny.values[i].value.toString());\r\n * return true;\r\n * }\r\n * i++;\r\n * });\r\n * }\r\n * // debugger;\r\n * return false;\r\n * }\r\n * ---------------------------------------------------------------\r\n */\r\n isImageFound(): boolean {\r\n if (this.arrKvAny) {\r\n const arKeys = Array.from(Object.keys(this.arrKvAny));\r\n const arValues = Array.from(\r\n Object.values(this.arrKvAny),\r\n (v) => this.findImageForIsImageFound(arKeys, this.arrKvAny, v)\r\n // debugger;\r\n );\r\n }\r\n // debugger;\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n findImageForIsImageFound(arKeys: any, arrKvAny: any, v: any): any {\r\n let i = 0;\r\n\r\n for (const e of arKeys) {\r\n if (e.toString().toLowerCase().indexOf('image') !== -1) {\r\n this.images.push(v.toString());\r\n return true;\r\n } else if (arrKvAny && arrKvAny.length > 0) {\r\n for (const f of arrKvAny) {\r\n if (f.values[i] && f.values[i].key && f.values[i].key.toString().toLowerCase().indexOf('image') !== -1) {\r\n this.images.push(f.values[i].toString());\r\n return true;\r\n } else if (f.values[i] && f.values[i].key && f.values[i].value && f.values[i].value.toString().toLowerCase().indexOf('image') !== -1) {\r\n this.images.push(f.values[i].value.toString());\r\n return true;\r\n }\r\n }\r\n }\r\n i++;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isImageData (data : any): boolean {\r\n // var dataUriPattern = '/^data\\:(?image\\/(png|tiff|jpg|gif));base64,(?[A-Z0-9\\+\\/\\=]+)$/g';\r\n const dataUriPattern = '/data:(?image/(png|tiff|jpg|gif));base64,(?[A-Z0-9+/=]+)$/ig';\r\n\r\n if (data.match(dataUriPattern).length > 0) {\r\n this.isImage = true;\r\n // debugger;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onKeyValueChange (e : any) {\r\n if (e.target.checked) {\r\n /*\r\n * this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n * this.selectedRadiobox.patchValue('');\r\n * this.selectedRadiobox.patchValue(e.target.value);\r\n */\r\n\r\n this.arrKvResult.kvName = this.arrKvName;\r\n this.arrKvResult.kvSelection = e.target.value;\r\n this.arrKvResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.arrKvResult);\r\n }\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Ref : https:// bytenota.com/display-base64-image-in-html-using-javascript-and-jquery/\r\n */\r\n displayBase64Image (placeholder : any, base64Image : any) {\r\n const image = document.createElement('img');\r\n\r\n image.onload = function () {\r\n placeholder.innerHTML = '';\r\n placeholder.appendChild(this);\r\n };\r\n image.src = base64Image;\r\n }\r\n // --------------------------------------------------------------\r\n getUrl (data : any): any {\r\n // image placeholder where the image will be displayed\r\n let imagePlaceholder = document.getElementById('image-placeholder-1');\r\n\r\n // display the image in placeholder\r\n if (imagePlaceholder) {\r\n this.displayBase64Image(imagePlaceholder, data);\r\n }\r\n\r\n imagePlaceholder = document.getElementById('image-placeholder-2');\r\n\r\n // display the image in placeholder\r\n if (imagePlaceholder) {\r\n this.displayBase64Image(imagePlaceholder, data);\r\n }\r\n imagePlaceholder.remove();\r\n // return'url('' + data + '')';\r\n return data;\r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed() {\r\n return this.arrKvResult.kvSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n {{kvAny.id}}) {{kvAny.key}}:::\r\n
\r\n
\r\n {{kvAny.value}}\r\n
\r\n
\r\n \"Array Data Below:\"\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../../models/common/bool.model';\r\nimport { KeyValueResult } from '../../../../models/keyValue/keyValueResult.model';\r\nimport { KvAny } from '../../../../models/keyValue/kvAny.model';\r\nimport { CoreServiceService } from '../../../../services/coreServiceService/coreServiceService.service';\r\nimport { KvArrayService } from '../../../../services/coreServiceService/kvArrayService.service';\r\nimport { EmitterSubjectService } from '../../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Animations, slideInOutAnimation } from '../../../animation';\r\n\r\n@Component({\r\n selector: 'app-key-value-any',\r\n templateUrl: './keyValueAny.component.html',\r\n styleUrls: ['./keyValueAny.component.scss'],\r\n animations: [Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n})\r\nexport class KeyValueAnyComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public kvArrayService!: KvArrayService;\r\n @Input() arrKvAny: KvAny[] = [];\r\n @Input() arrKvAnyLegend = '';\r\n @Input() arrKvAnyName = '';\r\n @Input() id = -1;\r\n @Input() sitUserId = -1;\r\n @Input() isRequired = false;\r\n @Input() isFormSubmitted = false;\r\n public isClosedBool: Bool = new Bool();\r\n public isDropdownOpen = false;\r\n public kvLegend: string[] = ['Profile description', 'About me', 'My preferences', 'What I am looking for', 'What I am into'];\r\n public kvName: string[] = ['Description', 'ProfileInfo', 'Preferences'];\r\n public arrKvForm!: FormGroup;\r\n public arrKvResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public loginSuccess!: LoginSuccess;\r\n public selectedKv!: FormControl;\r\n public selectedKvIndex = -1;\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private coreServiceService: CoreServiceService,\r\n private fb: FormBuilder,\r\n private kvArrService: KvArrayService,\r\n private router: Router,\r\n @Inject(DOCUMENT) document: any\r\n ) {\r\n if (coreServiceService) {\r\n this.kvArrayService = coreServiceService.getKvArrayService();\r\n }\r\n if (this.isRequired) {\r\n this.arrKvForm = this.fb.group({\r\n /*\r\n * 'radioSelection' : this.fb.control(this.radioboxName, [\r\n * Validators.required])\r\n */\r\n });\r\n }\r\n /*\r\n * else this.radioboxForm = this.fb.group({\r\n * 'radioSelection' : this.fb.control(this.radioboxName)\r\n * });\r\n */\r\n this.arrKvResult.kvName = this.arrKvAnyName;\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n // debugger; kvAnyId-{{sitUserId}}-{{i}}\r\n const i = 0;\r\n let id = '';\r\n\r\n this.arrKvAny.map((e) => {\r\n if (e && e.key && e.key.indexOf('image') !== -1 && e.value) {\r\n id = 'kvAnyId-' + this.sitUserId.toString() + '-' + this.id.toString() + '-' + i.toString();\r\n this.kvArrService.setBackgroundImage(id, e.value);\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n isNumber(val:any): boolean {\r\n return typeof val === 'number';\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * isArray(val) : boolean { return typeof val === 'array'; }\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onKeyValueChange(e:any) {\r\n if (e.target.checked) {\r\n /*\r\n * this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n * this.selectedRadiobox.patchValue('');\r\n * this.selectedRadiobox.patchValue(e.target.value);\r\n */\r\n\r\n this.arrKvResult.kvName = this.arrKvAnyName;\r\n this.arrKvResult.kvSelection = e.target.value;\r\n this.arrKvResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.arrKvResult);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed() {\r\n return this.arrKvResult.kvSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n\r\n \r\n\r\n\r\n","'use-strict'\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { Animations, slideInOutAnimation } from '../../../../app/animation';\r\nimport { LoginSuccess } from '../../../../models/account/loginSuccess.model';\r\nimport { KeyValueResult } from '../../../../models/keyValue/keyValueResult.model';\r\nimport { KVArr } from '../../../../models/keyValue/kvArr.model';\r\nimport { CoreServiceService } from '../../../../services/coreServiceService/coreServiceService.service';\r\nimport { EmitterSubjectService } from '../../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Component({\r\n selector: 'app-key-value-arr',\r\n templateUrl: './keyValueArr.component.html',\r\n styleUrls: ['./keyValueArr.component.scss'],\r\n animations: [\r\n Animations,\r\n trigger('slideInOut', [\r\n transition(':enter', [style({ transform: 'scale(0.1)'}), animate('500ms ease-in', style({ transform: 'scale(1)'}))]),\r\n transition(':leave', [animate('500ms ease-in', style({ transform: 'scale(0.1)'}))]),\r\n ]),\r\n ],\r\n})\r\nexport class KeyValueArrComponent implements OnInit, OnDestroy {\r\n public emitterSubjectService!: EmitterSubjectService;\r\n @Input() arrkVArr: KVArr[] = [];\r\n @Input() kVArrLegend = '';\r\n @Input() kVArrName = '';\r\n @Input() isFormSubmitted = false;\r\n @Input() isRequired = false;\r\n public kvArrForm!: FormGroup;\r\n public kvArrResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isClosed = true;\r\n public loginSuccess!: LoginSuccess;\r\n public selectedKvArr!: FormControl;\r\n public selectedKvArrIndex = -1;\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private coreServiceService: CoreServiceService,\r\n private fb: FormBuilder,\r\n private router: Router,\r\n @Inject(DOCUMENT) document : any\r\n ) {\r\n if (this.isRequired) {\r\n this.kvArrForm = this.fb.group({\r\n /*\r\n * 'radioSelection': this.fb.control(this.radioboxName, [\r\n * Validators.required])\r\n */\r\n });\r\n }\r\n /*\r\n * else this.radioboxForm = this.fb.group({\r\n * 'radioSelection': this.fb.control(this.radioboxName)\r\n * });\r\n */\r\n this.kvArrResult.kvName = this.kVArrName;\r\n // debugger;\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onKeyValueChange (e : any) {\r\n if (e.target.checked) {\r\n /*\r\n * this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n * this.selectedRadiobox.patchValue('');\r\n * this.selectedRadiobox.patchValue(e.target.value);\r\n */\r\n\r\n this.kvArrResult.kvName = this.kVArrName;\r\n this.kvArrResult.kvSelection = e.target.value;\r\n this.kvArrResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.kvArrResult);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed() {\r\n return this.kvArrResult.kvSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
    \r\n
  • \r\n \r\n

    \r\n \r\n 0\">\r\n {{kVArrName}}\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n
  • \r\n
  • \r\n
      \r\n
    • \r\n
      0\">\r\n
      0\" class=\"kvBttnSk\">{{kVArrLegend}} 0 && isRequired\" class=\"errSub\" style=\"margin-left: -2px;\">*
      \r\n \r\n
      \r\n
      0\">\r\n
      \r\n
      0\">\r\n
      \r\n
      {{kVArr.key}}:
      \r\n
      \r\n {{kVArr.value}}\r\n
      \r\n
      \r\n
      1\" class=\"row text-left increase\" style=\"width:100%;\" align=\"left\">\r\n
      {{kVArr.key}}:
      \r\n
      \r\n \r\n {{v}}|\r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n {{kVArrName}} is required, please select at leaset one value.\r\n
      \r\n
    • \r\n
    \r\n
  • \r\n
\r\n\r\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../../models/common/bool.model';\r\nimport { KeyValueResult } from '../../../../models/keyValue/keyValueResult.model';\r\nimport { KvPhoto } from '../../../../models/keyValue/kvPhoto.model';\r\nimport { CoreServiceService } from '../../../../services/coreServiceService/coreServiceService.service';\r\nimport { KvArrayService } from '../../../../services/coreServiceService/kvArrayService.service';\r\nimport { EmitterSubjectService } from '../../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from '../../../../services/staticServices/stringServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../../animation';\r\n\r\n@Component({\r\n selector: 'app-key-value',\r\n templateUrl: './keyValue.component.html',\r\n styleUrls: ['./keyValue.component.scss'],\r\n animations: [Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n})\r\nexport class KeyValueComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public kvArrayService!: KvArrayService;\r\n @Input() arrKv: KvPhoto[] = [];\r\n @Input() arrKvLegend = '';\r\n @Input() arrKvName = '';\r\n @Input() id = -1;\r\n @Input() sitUserId = -1;\r\n @Input() isRequired = false;\r\n @Input() isFormSubmitted = false;\r\n public isClosedBool: Bool = new Bool();\r\n public isDropdownOpen = false;\r\n public kvLegend: string[] = ['Profile description', 'About me', 'My preferences', 'What I am looking for', 'What I am into'];\r\n public kvName: string[] = ['Description', 'ProfileInfo', 'Preferences'];\r\n public arrKvForm!: FormGroup;\r\n public arrKvResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public loginSuccess!: LoginSuccess;\r\n public selectedKv!: FormControl;\r\n public selectedKvIndex = -1;\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private coreServiceService: CoreServiceService,\r\n private fb: FormBuilder,\r\n private kvArrService: KvArrayService,\r\n private router: Router,\r\n @Inject(DOCUMENT) document: any\r\n ) {\r\n if (coreServiceService) {\r\n this.kvArrayService = coreServiceService.getKvArrayService();\r\n }\r\n if (this.isRequired) {\r\n this.arrKvForm = this.fb.group({\r\n /*\r\n * 'radioSelection': this.fb.control(this.radioboxName, [\r\n * Validators.required])\r\n */\r\n });\r\n }\r\n /*\r\n * else this.radioboxForm = this.fb.group({\r\n * 'radioSelection': this.fb.control(this.radioboxName)\r\n * });\r\n */\r\n this.arrKvResult.kvName = this.arrKvName;\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n // debugger;\r\n let id = '';\r\n\r\n for (let i = 0; i < this.arrKv.length; i++) {\r\n if (this.arrKv[i] && this.arrKv[i].key && this.arrKv[i].key.indexOf('image') !== -1 && this.arrKv[i].value) {\r\n id = 'kvId-' + this.sitUserId.toString() + '-' + this.id.toString() + '-' + i.toString();\r\n this.kvArrService.setBackgroundImage(id, this.arrKv[i].value);\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n isNumber(val:any): boolean {\r\n return typeof val === 'number';\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * isArray(val): boolean { return typeof val === 'array'; }\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onKeyValueChange(e:any) {\r\n if (e.target.checked) {\r\n /*\r\n * this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n * this.selectedRadiobox.patchValue('');\r\n * this.selectedRadiobox.patchValue(e.target.value);\r\n */\r\n\r\n this.arrKvResult.kvName = this.arrKvName;\r\n this.arrKvResult.kvSelection = e.target.value;\r\n this.arrKvResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.arrKvResult);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed() {\r\n return this.arrKvResult.kvSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n toNumber(inStr: string) {\r\n return StringServiceStatic.ConvertStringToNumber(inStr);\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
    \r\n \r\n
  • \r\n \r\n

    \r\n 0\" style=\"float:left;padding:0.2rem 1rem 0.1rem 1rem;\">\r\n {{kvLegend[0]}} of {{arrKvName}}\r\n \r\n \r\n \r\n

    \r\n
    \r\n
  • \r\n\r\n
  • \r\n
      \r\n
    • \r\n
      \r\n\r\n \r\n
      \r\n
      \r\n {{kv.key}}:\r\n
      \r\n
      \r\n AskMe\r\n {{kv.value}}\r\n\r\n
      \r\n
      \r\n \r\n
      \r\n\r\n \r\n
      0\" class=\"flex-container\">\r\n
      \r\n ProfilePics.KV Data:\r\n

      \r\n PhotoId: {{kv.value.photoId}}::\r\n
      \r\n\r\n
      0\" class=\"flex-button\">Date: {{kv.value.date}}
      \r\n
      Primary Image: {{kv?.value?.isPrimary}}
      \r\n
      \r\n Privacy:\r\n {{kv.value.privacy}}\r\n
      \r\n
      0\" class=\"flex-button\">ProfileId: {{kv.value.profileId}}
      \r\n
      0\" class=\"flex-button\">SitUserId: {{kv.value.sitUserId }}
      \r\n
      0\" class=\"flex-button\">SitUserKey: {{kv.value.sitUserKey }}
      \r\n
      \r\n
      \r\n
      kvId-{{kv.value.sitUserId}}.{{id}}.{{kv.key}}.{{i}}
      \r\n
      \r\n
      \r\n
      \r\n kvId-{{kv.value.sitUserId}}.{{id}}.{{kv.key}}.{{i}}\r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n\r\n
      \r\n
      \r\n
      \r\n
    • \r\n
    \r\n
  • \r\n
\r\n\r\n \r\n\r\n\r\n","'use-strict'\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { LoginSuccess } from '../../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../../models/common/bool.model';\r\nimport { KeyValueResult } from '../../../../models/keyValue/keyValueResult.model';\r\nimport { KvAny } from '../../../../models/keyValue/kvAny.model';\r\nimport { ProfileImage } from '../../../../models/profile/profileImage.model';\r\nimport { CoreServiceService } from '../../../../services/coreServiceService/coreServiceService.service';\r\nimport { KvArrayService } from '../../../../services/coreServiceService/kvArrayService.service';\r\nimport { RendererService } from '../../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { EmitterSubjectService } from '../../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from '../../../../services/staticServices/stringServiceStatic.service';\r\n\r\n@Component({\r\n selector: 'app-profile-image-kv',\r\n templateUrl: './profileImageKv.component.html',\r\n styleUrls: ['./profileImageKv.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n})\r\nexport class ProfileImageKvComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public kvArrayService!: KvArrayService;\r\n public rendererService!: RendererService;\r\n public renderer!: Renderer2;\r\n @Input() id = -1;\r\n @Input() sitUserId = -1;\r\n @Input() profileImage: ProfileImage = new ProfileImage();\r\n @Input() kvAnyLegend = 'ProfileImage';\r\n @Input() kvAnyName = 'ProfileImage';\r\n @Input() isFormSubmitted = false;\r\n @Input() isRequired = false;\r\n public kvAnyResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isClosedBool: Bool = new Bool();\r\n public loginSuccess!: LoginSuccess;\r\n public selectedKvAny!: FormControl;\r\n public selectedKvAnyIndex = -1;\r\n public timers : any = [];\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private coreServiceService: CoreServiceService,\r\n private rendererServiceService: RendererServiceService,\r\n private router: Router,\r\n @Inject(DOCUMENT) document : any\r\n ) {\r\n if (coreServiceService) {\r\n this.kvArrayService = coreServiceService.getKvArrayService();\r\n }\r\n if ( this.rendererServiceService ) { this.rendererService = this.rendererServiceService.getRendererService(); }\r\n\r\n this.kvAnyResult.kvName = this.kvAnyName;\r\n // debugger;\r\n }\r\n ngOnInit(): void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n let timer : any;\r\n timer = setTimeout(() => {\r\n if (this.profileImage && this.profileImage.sitUserId > 0 && this.id > -1) {\r\n this.setProfileImage('pImage-' + this.profileImage.sitUserId.toString() + '-' + this.id.toString());\r\n }\r\n }, 2000);\r\n\r\n clearTimeout(timer);\r\n\r\n this.timers.push(timer);\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.timers.map((e : any) => {\r\n clearInterval(e);\r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public setProfileImage(id: string): void {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n const pElem = document.getElementById(id);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileImage.image)) {\r\n this.renderer?.setStyle(pElem, 'background-image', 'url(\\'' + this.profileImage.image + '\\')');\r\n this.renderer?.setStyle(pElem, 'z-index', '999');\r\n // debugger;\r\n }\r\n pElem.remove();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getUrl(): string {\r\n return this.profileImage.image;\r\n // return'url('' + this.profileImage.image + '')';\r\n }\r\n // ---------------------------------------------------------------\r\n isArray(model: any): boolean {\r\n return this.kvArrayService.isModelArray(model);\r\n }\r\n // ---------------------------------------------------------------\r\n isImageValue(model: KvAny): boolean {\r\n return this.kvArrayService.isImage(model);\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onKeyValueChange (e : any): void {\r\n if (e.target.checked) {\r\n /*\r\n * this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n * this.selectedRadiobox.patchValue('');\r\n * this.selectedRadiobox.patchValue(e.target.value);\r\n */\r\n\r\n this.kvAnyResult.kvName = this.kvAnyName;\r\n this.kvAnyResult.kvSelection = e.target.value;\r\n this.kvAnyResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.kvAnyResult);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed(): any {\r\n return this.kvAnyResult.kvSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
    \r\n
  • \r\n \r\n

    \r\n 0\" style=\"float:left;\">\r\n {{id }}/{{kvAnyName}}/{{profileImage.sitUserKey }}\r\n \r\n \r\n \r\n

    \r\n
    \r\n
  • \r\n
  • \r\n
      \r\n
    • \r\n \r\n \r\n
      \r\n \r\n \r\n \r\n\r\n
      \r\n
      \r\n PhotoId: {{profileImage.photoId}}::\r\n
      \r\n\r\n
      0\" class=\"flex-button\">Date: {{profileImage.date}}
      \r\n
      Primary Image: {{profileImage.isPrimary}}
      \r\n
      Privacy: \r\n {{profileImage.privacy}}\r\n
      \r\n
      0\" class=\"flex-button\">ProfileId: {{profileImage.profileId}}
      \r\n
      0\" class=\"flex-button\">SitUserId: {{profileImage.sitUserId }}
      \r\n
      0\" class=\"flex-button\">SitUserKey: {{profileImage.sitUserKey }}
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n {{kvAnyLegend}} is required, please select at leaset one value.\r\n
      \r\n
    • \r\n
    \r\n
  • \r\n
\r\n","'use-strict'\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { Animations, slideInOutAnimation } from '../../../../app/animation';\r\nimport { LoginSuccess } from '../../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../../models/common/bool.model';\r\nimport { KeyValueResult } from '../../../../models/keyValue/keyValueResult.model';\r\nimport { KvAny } from '../../../../models/keyValue/kvAny.model';\r\nimport { ProfileImage } from '../../../../models/profile/profileImage.model';\r\nimport { CoreServiceService } from '../../../../services/coreServiceService/coreServiceService.service';\r\nimport { KvArrayService } from '../../../../services/coreServiceService/kvArrayService.service';\r\nimport { EmitterSubjectService } from '../../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Component({\r\n selector: 'app-profile-pics-key-value-arr',\r\n templateUrl: './profilePicsKeyValueArr.component.html',\r\n // styleUrls : ['./profilePicsKeyValueArr.component.scss')],\r\n styleUrls: ['./profilePicsKeyValueArr.component.scss'],\r\n animations: [\r\n Animations,\r\n trigger('slideInOut', [\r\n transition(':enter', [style({ transform: 'scale(0.1)'}), animate('500ms ease-in', style({ transform: 'scale(1)'}))]),\r\n transition(':leave', [animate('500ms ease-in', style({ transform: 'scale(0.1)'}))]),\r\n ]),\r\n ],\r\n})\r\nexport class ProfilePicsKeyValueArrComponent implements AfterViewInit, OnInit, OnDestroy {\r\n public kvArrayService!: KvArrayService;\r\n // @Input() arrKvAny : KvAny[] = [];\r\n @Input() profileImages: ProfileImage[] = [];\r\n @Input() kvAnyLegend = '';\r\n @Input() kvAnyName = 'ProfilePics';\r\n @Input() isFormSubmitted = false;\r\n @Input() isRequired = false;\r\n public kvAnyResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isClosedBool: Bool = new Bool();\r\n public loginSuccess!: LoginSuccess;\r\n public selectedKvAny!: FormControl;\r\n public selectedKvAnyIndex = -1;\r\n // ---------------------------------------------------------------\r\n constructor(\r\n // private cdr : ChangeDetectorRef,\r\n private coreServiceService: CoreServiceService,\r\n private router: Router,\r\n @Inject(DOCUMENT) document : any\r\n ) {\r\n if (coreServiceService) {\r\n this.kvArrayService = coreServiceService.getKvArrayService();\r\n }\r\n\r\n this.kvAnyResult.kvName = this.kvAnyName;\r\n // debugger;\r\n }\r\n ngOnInit(): void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit(): void {\r\n // this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n isArray(model: any): boolean {\r\n return this.kvArrayService.isModelArray(model);\r\n }\r\n // ---------------------------------------------------------------\r\n isImageValue(model: KvAny): boolean {\r\n return this.kvArrayService.isImage(model);\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n */\r\n onKeyValueChange (e : any): void {\r\n if (e.target.checked) {\r\n /*\r\n * this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n * this.selectedRadiobox.patchValue('');\r\n * this.selectedRadiobox.patchValue(e.target.value);\r\n */\r\n\r\n this.kvAnyResult.kvName = this.kvAnyName;\r\n this.kvAnyResult.kvSelection = e.target.value;\r\n this.kvAnyResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.kvAnyResult);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed(): any {\r\n return this.kvAnyResult.kvSelection.length > 0;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n\r\n\r\n-->\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { KeyValueResult } from '../../../models/keyValue/keyValueResult.model';\r\nimport { KvAny } from '../../../models/keyValue/kvAny.model';\r\nimport { Preference } from '../../../models/profile/preference.model';\r\nimport { GlyphiconMenuService } from '../../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { GlyphiconServiceService } from '../../../services/GlyphiconService/glyphiconServiceService.service';\r\nimport { PreferenceService } from '../../../services/profileServiceService/preferenceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { DictionaryService } from '../../../services/dictionaryServiceService/dictionaryService.service';\r\nimport { DictionaryServiceService } from '../../../services/dictionaryServiceService/dictionaryServiceService.service';\r\nimport { DbDexieToDictionaryService } from '../../../services/dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DbServiceService } from '../../../services/dbServiceService/dbServiceService.service';\r\n\r\n@Component({\r\n selector: 'app-preference-key-value-arr',\r\n templateUrl: './preferenceKeyValueArr.component.html',\r\n styleUrls: [ './preferenceKeyValueArr.component.scss' ],\r\n \r\n animations: [\r\n Animations, slideInOutAnimation\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PreferenceKeyValueArrComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public dbDexieToDictionaryService! : DbDexieToDictionaryService;\r\n public dictionaryService! : DictionaryService;\r\n public glyphiconMenuService! : GlyphiconMenuService;\r\n @Input() preferenceKvAnyArr: KvAny[] =[];\r\n @Input() kvAnyLegend = '';\r\n @Input() kvAnyName = 'Preferences';\r\n @Input() isFormSubmitted = false;\r\n @Input() isRequired = false;\r\n public kvAnyResult: KeyValueResult = new KeyValueResult();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isClosed = true;\r\n public IsOpen = new Bool();\r\n public isPreferenceClosedBool : Bool = new Bool();\r\n public loginSuccess! : LoginSuccess;\r\n public preference : Preference = new Preference();\r\n public selectedKvAny!: FormControl;\r\n public selectedKvAnyIndex = -1;\r\n @Input() sitUserId:number = 0;\r\n // ---------------------------------------------------------------\r\n constructor (\r\n public cdr : ChangeDetectorRef,\r\n private dbServiceService : DbServiceService,\r\n private dictionaryServiceService: DictionaryServiceService,\r\n private preferenceService : PreferenceService,\r\n private glyphiconServiceService : GlyphiconServiceService,\r\n private router : Router, ) {\r\n this.kvAnyResult.kvName = this.kvAnyName;\r\n this.glyphiconMenuService = this.glyphiconServiceService.getGlyphiconMenuService();\r\n this.dictionaryService = this.dictionaryServiceService.getDictionaryService();\r\n this.dbDexieToDictionaryService = this.dbServiceService.getDbDexieToDictionaryService();\r\n // debugger;\r\n }\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n if (this.sitUserId > 0) {\r\n this.getPreferenceData(this.sitUserId);\r\n }\r\n // --------------------------------------------------------------\r\n EmitterSubjectService.preferenceKvAnyArrEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.length > 0) {\r\n this.preferenceKvAnyArr = result as KvAny[];\r\n // debugger;\r\n this.ngAfterViewInit();\r\n } \r\n });\r\n }\r\n // -------------------------------------------------------------\r\n public ngAfterViewInit () : void { \r\n // debugger;\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.preferenceKvAnyArr = [];\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.preferenceDictionary, 'preference', this.loginSuccess.signedInUserId);\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // ref:https:// www.positronx.io/angular-checkbox-tutorial/\r\n // ---------------------------------------------------------------\r\n onKeyValueChange (e : any): void {\r\n if (e.target.checked) {\r\n \r\n // this.selectedRadiobox = this.radioboxForm.get('radioSelection') as FormControl;\r\n // this.selectedRadiobox.patchValue('');\r\n // this.selectedRadiobox.patchValue(e.target.value);\r\n \r\n\r\n this.kvAnyResult.kvName = this.kvAnyName;\r\n this.kvAnyResult.kvSelection = e.target.value;\r\n this.kvAnyResult.isRequiredPassed = this.isRequired === true ? this.isRequiredPassed() : false;\r\n EmitterSubjectService.emitKeyValueResult(this.kvAnyResult);\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: isOpen is opposite of isClosed.\r\n // ---------------------------------------------------------------------------------\r\n isOpen (isClosed : any )\r\n {\r\n // debugger;\r\n this.isClosed = !isClosed;\r\n this.IsOpen.isClosed = this.isClosed;\r\n this.IsOpen.name = 'preferenceKeyValueArrComponentId';\r\n //if (!this.IsOpen.isClosed) {\r\n // // debugger;\r\n // this.getPreferenceData(this.sitUserId);\r\n //}\r\n // debugger;\r\n EmitterSubjectService.emitIsViewMember(true); // TODO: may need to set instead of emitting\r\n \r\n }\r\n // ---------------------------------------------------------------\r\n isRequiredPassed(): any {\r\n return this.kvAnyResult.kvSelection.length > 0;\r\n }\r\n // ----------------------------------------------------------------\r\n getPreferenceData (sitId : number): void {\r\n if (sitId > 0) {\r\n this.preferenceKvAnyArr = this.preferenceService.getPreferenceFromDictionary(sitId);\r\n // debugger;\r\n this.ngAfterViewInit();\r\n // debugger;\r\n this.preferenceService.getPreference(sitId).subscribe(result => {\r\n // debugger;\r\n this.preference = result; \r\n // this.dictionaryService.updateDictionary(this.preference, 'preference', this.preference.sitUserId);\r\n this.ngAfterViewInit();\r\n })\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
    \r\n
  • \r\n \r\n

    \r\n 0\" style=\"float: left; opacity: 1; font-size: 13px; font-weight: bold;\">\r\n {{kvAnyName}}\r\n \r\n \r\n \r\n

    \r\n
    \r\n
  • \r\n
  • \r\n
      \r\n
    • \r\n
      0\" class=\"kvBttnSk\">{{kvAnyLegend}} 0 && isRequired\" class=\"errSub\" style=\"margin-left: -2px;opacity:1;\">*
      \r\n
      \r\n
      \r\n
      0\" class=\"increase\">\r\n
      {{kvAny?.key}}:
      \r\n
      \r\n \r\n AskMe\r\n {{v}}\r\n \r\n |\r\n \r\n \r\n
      \r\n
      \r\n
      0\" class=\"hrGray\" style=\"display:inline-block;width:98%;padding:0;margin:0 0 0 .75rem;\" />\r\n
      \r\n
      \r\n\r\n
      \r\n {{kvAnyName}} is required, please select at leaset one value.\r\n
      \r\n
    • \r\n
    \r\n
  • \r\n
\r\n\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { KvAny } from '../../../models/keyValue/kvAny.model';\r\nimport { MemberViewMgmtModel } from '../../../models/member/memberViewMgmtModel.model';\r\nimport { ProfileInfo } from '../../../models/profile/profileInfo.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { GlyphiconMenuService } from '../../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { GlyphiconServiceService } from '../../../services/GlyphiconService/glyphiconServiceService.service';\r\nimport { KvArrayService } from '../../../services/coreServiceService/kvArrayService.service';\r\nimport { DisplayProfileService } from '../../../services/displayProfileServiceService/displayProfileService.service';\r\nimport { MemberService } from '../../../services/memberServiceService/memberService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { ProfileServiceService } from '../../../services/profileServiceService/profileServiceService.service';\r\nimport { ProfileInfoService } from '../../../services/profileServiceService/profileInfoService.service';\r\nimport { DictionaryServiceService } from '../../../services/dictionaryServiceService/dictionaryServiceService.service';\r\nimport { DictionaryService } from '../../../services/dictionaryServiceService/dictionaryService.service';\r\nimport { DbDexieToDictionaryService } from '../../../services/dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DbServiceService } from '../../../services/dbServiceService/dbServiceService.service';\r\n\r\n@Component({\r\n selector: 'app-profile-info-key-value-arr',\r\n templateUrl: './profileInfoKeyValueArr.component.html',\r\n styleUrls: [ './profileInfoKeyValueArr.component.scss' ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [Animations, slideInOutAnimation ],\r\n})\r\nexport class ProfileInfoKeyValueArrComponent implements AfterViewInit, OnInit, OnDestroy {\r\n public dictionaryService! : DictionaryService;\r\n public dbDexieToDictionaryService! : DbDexieToDictionaryService;\r\n public kvArrayService!: KvArrayService;\r\n // public gestureService: GestureService;\r\n public glyphiconMenuService! : GlyphiconMenuService;\r\n public memberService! : MemberService;\r\n public profileInfoService! : ProfileInfoService;\r\n public rendererService!: RendererService;\r\n public renderer!: Renderer2;\r\n // -----------------------------------------------\r\n public askMe = 'Ask Me :)';\r\n @Input() profileInfoKvAnyArr : KvAny[] = [];\r\n public IsOpen = new Bool();\r\n public isProfInfoClosedBool: Bool = new Bool();\r\n public kvLegend: string[] = ['Profile description', 'About me', 'My preferences', 'What I am looking for', 'What I am into'];\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public loginSuccess! : LoginSuccess; \r\n public profileInfo : ProfileInfo = new ProfileInfo();\r\n public sitUser : SitUser = new SitUser();\r\n @Input() sitUserId: number = 0;\r\n\r\n constructor(\r\n private cdr : ChangeDetectorRef,\r\n private dbServiceService: DbServiceService,\r\n private dictionaryServiceService : DictionaryServiceService,\r\n private profileServiceService : ProfileServiceService,\r\n private glyphiconServiceService : GlyphiconServiceService,\r\n ) {\r\n this.glyphiconMenuService = this.glyphiconServiceService.getGlyphiconMenuService();\r\n this.profileInfoService = this.profileServiceService.getProfileInfoService();\r\n if (this.dictionaryServiceService) {\r\n this.dictionaryService = this.dictionaryServiceService.getDictionaryService();\r\n }\r\n this.dbDexieToDictionaryService = this.dbServiceService.getDbDexieToDictionaryService();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.cdr.detectChanges();\r\n \r\n if (this.sitUserId > 0) {\r\n // get dictionary-value first:\r\n // ---------------------------\r\n this.profileInfo = this.dictionaryService.profileInfoDictionary.get(this.sitUserId);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n this.profileInfoKvAnyArr = this.profileInfoService.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n this.ngAfterViewInit();\r\n // debugger;\r\n }\r\n // get backend-server value:\r\n // ---------------------------\r\n this.getProfileInfoData(this.sitUserId);\r\n }\r\n\r\n EmitterSubjectService.profileInfoKvAnyArrEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.length > 0) {\r\n this.profileInfoKvAnyArr = result as KvAny[];\r\n // debugger;\r\n this.ngAfterViewInit();\r\n }\r\n });\r\n }\r\n // -------------------------------------------------------------\r\n public ngAfterViewInit () : void {\r\n // EmitterSubjectService.emitHideSpinner(true); \r\n // debugger;\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.profileInfoKvAnyArr = [];\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.profileInfoDictionary, 'profileInfo', this.loginSuccess.signedInUserId);\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: isOpen is opposite of isClosed.\r\n // ---------------------------------------------------------------------------------\r\n isOpen (isClosed : any)\r\n {\r\n // debugger;\r\n this.IsOpen.isClosed = isClosed;\r\n this.IsOpen.name = 'profileInfoKeyValueArrComponentId';\r\n // debugger;\r\n if (!this.IsOpen.isClosed) {\r\n // debugger;\r\n this.getProfileInfoData(this.sitUserId);\r\n }\r\n\r\n EmitterSubjectService.setIsViewMember(true); // TODO: may need to set instead of emitting\r\n \r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getProfileInfoData (sitUserId : number):void {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n this.profileInfoService.getProfileInfo(sitUserId).subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n this.profileInfo = data;\r\n this.profileInfoKvAnyArr = this.profileInfoService.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n //public getProfileInfoData (sitUserId : number) {\r\n // if (sitUserId > 0) { \r\n // // debugger;\r\n // this.displayProfileService.displayUserDataFromDictionary(sitUserId).subscribe(data => {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // this.extractDataFromMemberViewMgmtModel(data);\r\n // return this.memberViewMgmtModel = data;\r\n // }\r\n // else return null;\r\n // });\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n //public extractDataFromMemberViewMgmtModel (data : MemberViewMgmtModel) : void {\r\n // // debugger;\r\n // this.memberViewMgmtModel = data; // EmitterSubjectService.getMemberViewMgmtModel(); // Watch: location-View -4\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel)) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.profileInfoView) && this.memberViewMgmtModel.profileInfoView.sitUserId > 0) {\r\n // this.profileInfoView = this.memberViewMgmtModel.profileInfoView;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.kvAnyArr) && this.memberViewMgmtModel.kvAnyArr.length > 0) {\r\n // this.profileInfoKvAnyArr = this.memberViewMgmtModel.kvAnyArr;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.profileContentKvAnyArr) && this.memberViewMgmtModel.profileContentKvAnyArr.length > 0) {\r\n // this.profileContentKvAnyArr = this.memberViewMgmtModel.profileContentKvAnyArr;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.preferenceKvAnyArr) && this.memberViewMgmtModel.preferenceKvAnyArr.length > 0) {\r\n // this.preferenceKvAnyArr = this.memberViewMgmtModel.preferenceKvAnyArr;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.profileTile)\r\n // && this.memberViewMgmtModel.profileTile.sitUserId > 0) {\r\n // this.profileTile = this.memberViewMgmtModel.profileTile;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.sitUser)\r\n // && this.memberViewMgmtModel.sitUser.sitUserId > 0) {\r\n // this.sitUser = this.memberViewMgmtModel.sitUser;\r\n // }\r\n // }\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n}\r\n","\r\n
    \r\n \r\n
  • \r\n \r\n

    \r\n 0\" style=\"float: left; opacity: 1; font-size: 13px; font-weight: bold;\">\r\n {{kvLegend[0]}}\r\n \r\n \r\n \r\n

    \r\n
    \r\n
  • \r\n
  • \r\n
  • \r\n
      \r\n
    • \r\n
      \r\n\r\n \r\n
      0\" class=\"increase\" [ngStyle]=\"{width:'90%', padding: 'i===0? 0 0 0.5rem 0:0', margin:'0.05'}\">\r\n
      \r\n {{kvAny.key}}:\r\n
      \r\n
      \r\n {{askMe}}\r\n\r\n \r\n {{kvAny.value}}\r\n \r\n
      \r\n
      \r\n \r\n
      \r\n\r\n
      \r\n
      0 && kvAny.key.toLowerCase().indexOf('unit') === -1\" class=\"hrGray\" style=\"display:inline-block;width:98%;padding:0;margin:0 0 0 0.5rem;\" />\r\n
      \r\n
    • \r\n
    \r\n
  • \r\n
\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { KvAny } from '../../../models/keyValue/kvAny.model';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n@Component({\r\n selector: 'app-upload-files-key-value-arr',\r\n templateUrl: './uploadFilesKeyValueArr.component.html',\r\n styleUrls: ['./uploadFilesKeyValueArr.component.scss'],\r\n animations: [ Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UploadFilesKeyValueArrComponent implements AfterViewInit, OnInit, OnDestroy {\r\n \r\n public rendererService!: RendererService;\r\n public renderer!: Renderer2;\r\n // -----------------------------------------------\r\n public askMe = 'Ask Me :)';\r\n public isCameraVisible = true;\r\n public isShowPhotoUploadUi : Bool = new Bool();\r\n public isShowAccordionUi : Bool = new Bool();\r\n public kvLegend: string[] = ['Profile description', 'About me', 'My preferences', 'What I am looking for', 'What I am into', \"Upload Photos\"];\r\n private emitterDestroyed$ : Subject = new Subject();\r\n @Input() isEyeOpen = true;\r\n public isMobilevar = false;\r\n public loginSuccess! : LoginSuccess;\r\n public toggleCameraGlyphCounter = 0;\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.cdr.detectChanges();\r\n this.isShowAccordionUi.isOpened = true;\r\n // debugger;\r\n // -------------------------------------------------------------------------\r\n // showPhtotoUpload listener:\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isShowPhotoUploadEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n // PhotoUpload UI's default state is closed.\r\n // will open only if isPhotoMgmt is true.\r\n // -----------------------------------------\r\n this.isShowPhotoUploadUi.isOpened = result;\r\n // debugger;\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isCameraVisibleEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.isCameraVisible = !this.isCameraVisible;\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.toggleAccordionEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.isShowAccordionUi.isOpened != this.isShowAccordionUi.isOpened;\r\n this.ngAfterViewInit();\r\n });\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.toggleThisEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n if ((result as string).toLowerCase().indexOf('iseyeclose-avatar') !== -1) {\r\n // debugger;\r\n this.isEyeOpen = true;\r\n }\r\n else {\r\n // debugger; \r\n this.isEyeOpen = false;\r\n }\r\n this.ngAfterViewInit();\r\n });\r\n\r\n // -------------------------------------------------------------------------\r\n /*\r\n * debugger;\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n * this.preferenceKvArrArr = StringServiceStatic.getPeferenceToKvArrArr(this.preference);\r\n * }\r\n * debugger;\r\n */\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO: remove before deployment\r\n // ngOnChanges(changes: SimpleChanges): void {\r\n // /*\r\n // * only run when property 'data' changed\r\n // * debugger;\r\n // * debugger;\r\n // * TODO : check profileinfoArrKcAny\r\n // */\r\n\r\n // }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.toggleCameraGlyphCounter = 0;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public ngAfterViewInit () : void {\r\n // debugger;\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n toggleAccordion () {\r\n // debugger;\r\n this.isShowAccordionUi.isOpened = !this.isShowAccordionUi.isOpened;\r\n this.ngAfterViewInit();\r\n }\r\n // ----------------------------------------------------------------\r\n //toggleIsEyeOpen () : any {\r\n // debugger;\r\n // EmitterSubjectService.emitToggleThis('isEyeClose-uploadFilesKv'); // uploadFilesKv eye is closed\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n}\r\n","
\r\n \r\n
\r\n","'use-strict'\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { SpinnerComponent } from './spinner/spinner.component';\r\n\r\nconst modalRoutes: Routes = [{\r\npath: '',\r\n children: [\r\n /*{ path: 'message', component: MessageModalComponent, data: { animation: 'login' } },*/\r\n { path: 'spinner', component: SpinnerComponent, data: { animation: 'login' } },\r\n ],\r\n }];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(modalRoutes)],\r\n exports: [RouterModule],\r\n})\r\nexport class ModalRoutingModule { }\r\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DirectiveFilterPipeModule } from '../directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { ModalRoutingModule } from './modal-routing.module';\r\nimport { SpinnerComponent } from './spinner/spinner.component';\r\nimport { SpinnerOverlayComponent } from './spinnerOverlay/spinnerOverlay.component';\r\nimport { UpgradePopupComponent } from './upgradePopup/upgradePopup.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SpinnerComponent,\r\n SpinnerOverlayComponent,\r\n UpgradePopupComponent,\r\n ],\r\n imports: [\r\n CommonModule, // to get ngIf, ngFor, etc.\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n DirectiveFilterPipeModule,\r\n ModalRoutingModule,\r\n ],\r\n exports: [\r\n SpinnerComponent,\r\n SpinnerOverlayComponent,\r\n // ModalRoutingModule,\r\n UpgradePopupComponent,\r\n ],\r\n entryComponents: [SpinnerComponent],\r\n providers: [\r\n ],\r\n})\r\nexport class ModalModule { }\r\n","'use-strict'\r\nimport { OnDestroy } from '@angular/core';\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { SpinnerOverlayService } from '../../../services/modalServiceService/spinnerOverlayService';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n// ref: https://christianlydemann.com/four-ways-to-create-loading-spinners-in-an-angular-app/\r\n\r\n@Component({\r\n selector: 'app-spinner-overlay',\r\n templateUrl: './spinnerOverlay.component.html',\r\n styleUrls: [ './spinnerOverlay.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation, ],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class SpinnerOverlayComponent implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n\r\n public emitterDestroyed$ : Subject = new Subject();\r\n @Input() spinnerModel : SpinnerModel = new SpinnerModel();\r\n public showSpinner = false;\r\n // public timer : any;\r\n constructor (private spinnerLoader: SpinnerOverlayService,\r\n public cdr : ChangeDetectorRef,\r\n )\r\n {\r\n }\r\n\r\n ngOnInit () : void\r\n {\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.cdr)) {\r\n this.cdr.detectChanges();\r\n }\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.hideSpinnerEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n if (result instanceof SpinnerModel) {\r\n this.spinnerModel = result as SpinnerModel;\r\n \r\n }\r\n else {\r\n this.spinnerModel.clear();\r\n }\r\n this.showSpinner = false;\r\n debugger;\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.showSpinnerEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n this.spinnerModel = result as SpinnerModel;\r\n debugger;\r\n // when spinner is spinning for 5 seconds or more, turn it off\r\n this.showSpinner = true;\r\n \r\n this.ngAfterViewInit();\r\n });\r\n }\r\n ngAfterViewInit () {\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n /*\r\n * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n * (2) https://www.concretepage.com/angular-2/angular-4-renderer2-example\r\n * (3) https://stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n * (4) https://stackblitz.com/edit/timer-with-pdestroyed\r\n */\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // --------------------------------------------------------------------------\r\n getSpinnerLoading () : any {\r\n debugger;\r\n return this.spinnerLoader.getLoading();\r\n }\r\n // --------------------------------------------------------------------------\r\n setSpinnerLoading (value : boolean) : void {\r\n debugger;\r\n this.spinnerLoader.setLoading(value);\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n\r\n","'use-strict'\r\nimport\r\n {\r\n Component, Input, OnInit,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { SpinnerOverlayService } from '../../../services/modalServiceService/spinnerOverlayService';\r\n\r\n// ref: https://christianlydemann.com/four-ways-to-create-loading-spinners-in-an-angular-app/\r\n// ref:https://danielk.tech/home/angular-how-to-add-a-loading-spinner\r\n@Component({\r\n selector: 'app-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: [ './spinner.component.scss' ],\r\n animations: [ Animations, slideInOutAnimation, ],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class SpinnerComponent implements OnInit, AfterViewInit\r\n{\r\n private emitterDestroyed$ : Subject = new Subject();\r\n @Input() spinnerModel : SpinnerModel = new SpinnerModel();\r\n public message = '';\r\n\r\n constructor (\r\n public cdr : ChangeDetectorRef,\r\n )\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.spinnerModel) ) {\r\n this.message = this.spinnerModel.message;\r\n\t\t}\r\n }\r\n\r\n ngOnInit () : void\r\n { \r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.cdr)) {\r\n this.cdr.detectChanges();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.spinnerModel)) {\r\n this.message = this.spinnerModel.message;\r\n }\r\n \r\n // ------------------------------------------------------\r\n }\r\n ngAfterViewInit () { \r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n /*\r\n * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n * (2) https://www.concretepage.com/angular-2/angular-4-renderer2-example\r\n * (3) https://stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n * (4) https://stackblitz.com/edit/timer-with-pdestroyed\r\n */\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n formatAndStyleMessage (message:string) : string {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(message)) {\r\n this.message = message;\r\n return this.message;\r\n\t\t}\r\n }\r\n // ---------------------------------------------------------------\r\n stopSpinner () : void {\r\n this.spinnerModel = new SpinnerModel();\r\n EmitterSubjectService.emitHideSpinner(this.spinnerModel);\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
0\" [innerHTML]=\"spinnerModel?.message | safe: 'html'\" class=\"spinner-message text-center\" style=\"color:blue;font-size: 14px;\">\r\n {{spinnerModel.message}}\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n\r\n\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { AppFeature } from '../../../models/common/appFeture.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n@Component({\r\n selector: 'app-upgrade-popup',\r\n templateUrl: './upgradePopup.component.html',\r\n styleUrls: ['./upgradePopup.component.scss'],\r\n animations: [Animations, slideInOutAnimation ],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default //\r\n})\r\nexport class UpgradePopupComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isLoggedIn = false;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n\r\n @Input() appFeature = new AppFeature(); // TODO: remove\r\n // -----------------------------------------------\r\n\r\n constructor (\r\n private cdr : ChangeDetectorRef,\r\n private router : Router,\r\n ){ }\r\n\r\n ngOnInit ()\r\n {\r\n\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n this.isLoggedIn = true;\r\n }\r\n else\r\n {\r\n this.isLoggedIn = false;\r\n }\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result; // JSON.parse(JSON.stringify(result));\r\n // debugger;\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n this.isLoggedIn = true;\r\n }\r\n else\r\n {\r\n this.isLoggedIn = false;\r\n }\r\n } );\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngAfterViewInit() {\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy ()\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n }\r\n}\r\n","{{appFeature.featureName}}\r\n\r\n \r\n 0\">{{appFeature.maxPrimaryCount}}\r\n\r\n\r\n \r\n 0\">{{appFeature.maxValuedCount}}\r\n\r\n{{ appFeature.description}}\r\n
\r\n\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { PagerMemberActivity } from '../../../models/pagination/pagerMemberActivity.model';\r\nimport { PagerPhotoMgmt } from '../../../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfilePics } from '../../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { DisplayProfileService } from '../../../services/displayProfileServiceService/displayProfileService.service';\r\nimport { AbstractPagerVPhotoNavService } from '../../../services/pagerServiceService/abstractPagerVPhotoNavService.service';\r\nimport { GlyphiconMenuService } from '../../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { PagerPhotoMgmtService } from '../../../services/pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerSupportService } from '../../../services/pagerServiceService/pagerSupportService.service';\r\nimport { PhotoPrivacyService } from '../../../services/photoServiceService/photoPrivacyService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../../../services/staticServices/jsRegExpServiceStatic.service';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { PhotoBnService } from '../../../services/photoServiceService/photoBnService.service';\r\n\r\n\r\n// ------------------------------------------------------------------\r\n// This pager-service is the most recently updated one. If other\r\n// pagers need to be updated, this one should be used as a model for\r\n// them. Updated on 20220623.\r\n// ------------------------------------------------------------------\r\n// This service handles photo-mgmt for both signedInUser and non-signedInUser\r\n// This has separate signedInUser's pagerVKvPhotoNav and kvPhotoArr for fast rendering.\r\n// But the non-signedInUser's pagerVKvPhotoNav and kvPhotoArr are erased during profile-change\r\n// ------------------------------------------------------------------\r\n\r\n// ref: http://xahlee.info/js/javascript_range_array.html\r\n// const xah_range = ((min, max, step = 1,) => (Array(Math.floor((max - min) / step) + 1).fill(min).map(((x, i) => (x + i * step)),)));\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class MyPagerVPhotoNavService extends AbstractPagerVPhotoNavService implements OnDestroy {\r\n // public override renderer = Renderer2;\r\n // ----------------------------------------------------------------\r\n public currentKvPhoto : KvPhoto = new KvPhoto(); \r\n public isKvData = false;\r\n public isKvFile = false;\r\n public isKvNext = false;\r\n public isKvPrev = false;\r\n public isKvUrlData = false;\r\n public isMobilevar = false;\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isStripUrl = true;\r\n public isViewMember = false;\r\n public isWithoutUrl = false; \r\n public kvPhotoArr : KvPhoto[] = [];\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public message = '';\r\n public pageSize = 6;\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public pagerVMemberActivityForPhotoMgmt : PagerMemberActivity = new PagerMemberActivity(); // for primary/private/public photo \r\n public pagerVMemberActivityForViewMember : PagerMemberActivity = new PagerMemberActivity();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public signedInUser : SitUser = new SitUser();\r\n public signedInUserKvPhotoArr : KvPhoto[] = []; // to persis the signedInUser kvPhotos\r\n public signedInUserPagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt(); // to persis singedInUser pagerVKvPhotoNav\r\n public sitUser : SitUser = new SitUser();\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n \r\n // ---------------------------------------------------------------\r\n constructor (\r\n public bias : BackgroundImageAnimationService,\r\n public displayProfileService : DisplayProfileService,\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public pagerPhotoMgmtService : PagerPhotoMgmtService,\r\n public pagerSupportService : PagerSupportService,\r\n public photoBnService : PhotoBnService,\r\n public photoPrivacyService : PhotoPrivacyService,\r\n public redirectionService : RedirectionService,\r\n public rendererServiceService : RendererServiceService,\r\n public rendererService : RendererService,\r\n public router : Router,\r\n @Inject(DOCUMENT) document : any,\r\n @Inject(Window) window : any\r\n ) {\r\n super(\r\n bias,\r\n glyphiconMenuService,\r\n pagerPhotoMgmtService,\r\n pagerSupportService,\r\n photoPrivacyService,\r\n redirectionService,\r\n rendererServiceService,\r\n rendererService,\r\n router,\r\n document,\r\n window\r\n );\r\n }\r\n // ---------------------------------------------------------------\r\n public getSignedInUserKvPhotoArr () : KvPhoto[] {\r\n return this.signedInUserKvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public getSignedInUserPagerVKvPhotoNav () : PagerPhotoMgmt {\r\n return this.signedInUserPagerVKvPhotoNav;\r\n }\r\n // ===============================================================\r\n public getMyPhotoBnsFromServer () : Observable {\r\n // debugger;\r\n // start spinner:\r\n // --------------\r\n this.spinnerModel = new SpinnerModel();\r\n this.spinnerModel.message = 'Getting your profile and pics...';\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n\r\n // get userPics from the backend:\r\n // ------------------------------\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // if the signedInUser's photos were not previoiusly fetched, then get them from the server:\r\n // -----------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUserPagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUserPagerVKvPhotoNav.pagedItems)\r\n && this.signedInUserPagerVKvPhotoNav.pagedItems.length === 0) {\r\n\r\n this.getPhotoBnsFromServer(this.loginSuccess.signedInUserId).subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // this.profilePics = data;\r\n // debugger;\r\n this.pagerVKvPhotoNav = data; //TODO: do something with data\r\n this.signedInUserPagerVKvPhotoNav = JSON.parse(JSON.stringify(this.pagerVKvPhotoNav));\r\n this.signedInUserKvPhotoArr = JSON.parse(JSON.stringify(this.pagerVKvPhotoNav.kvGlyphArr));\r\n\r\n ////this.pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n\r\n //// // raw-image-data-case\r\n //// //if (e.value.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n //// // // debugger;\r\n //// // e.value = JsRegExpServiceStatic.normalizeImageData(e.value); //will be without url\r\n //// //}\r\n //// //// file-name-case\r\n //// //else if (e.value.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n //// // // debugger;\r\n //// // e.value = JsRegExpServiceStatic.normalizeImageFileNameWithoutUrl(e.value);\r\n //// //}\r\n ////})\r\n\r\n // debugger;\r\n console.log(':timestamp: ' + new Date().getTime() + ' : myProfileViewMgmt: @fromServer.');\r\n\r\n // stop the spinner:\r\n // -----------------\r\n EmitterSubjectService.emitHideSpinner(\"\");\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n subscriber.next(this.signedInUserPagerVKvPhotoNav);\r\n }\r\n });\r\n }\r\n else {\r\n subscriber.next(this.signedInUserPagerVKvPhotoNav);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public getPhotoBnsFromServer (situserId : number) : Observable {\r\n // ---------------------------------\r\n // Begin: get user pics from server:\r\n // ---------------------------------\r\n EmitterSubjectService.emitShowSpinner('Getting user pics...');\r\n return new Observable((subscriber) => {\r\n let tpKvPhotoArr : KvPhoto[] = [];\r\n\r\n let sitUserId = situserId;\r\n // debugger;\r\n if (sitUserId > 0) {\r\n debugger;\r\n this.kvPhotoArr = [];\r\n this.photoBnService?.getAllPhotosOfUserBySitUserIdObservable(sitUserId)?.subscribe(result => {\r\n debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n this.profilePics = result as ProfilePics;\r\n\r\n debugger;\r\n this.kvPhotoArr = this.profilePics.unFilteredKvPhotoArr;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvPhotoArr) && this.kvPhotoArr.length > 0) {\r\n this.executeKvPhotoNavTasks(this.kvPhotoArr[ 0 ], this.kvPhotoArr).subscribe(data2 => { // executePagerVKvPhotoNavCurrentKvPhotoTasks\r\n // this.executePagerVKvPhotoNavCurrentKvPhotoTasks(this.kvPhotoArr[ 0 ], this.kvPhotoArr).subscribe(data2 => {\r\n // debugger;\r\n this.pagerVKvPhotoNav = data2;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n })\r\n }\r\n }\r\n })\r\n }\r\n })\r\n // ---------------------------------\r\n // End: get user pics from server:\r\n // ---------------------------------\r\n }\r\n // ---------------------------------------------------------------\r\n public clearPagerVKvPhotoNavService (): void {\r\n this.kvPhotoArr = [];\r\n this.pagerVKvPhotoNav = new PagerPhotoMgmt();\r\n // debugger;\r\n }\r\n // ----------------------------------------------------------------\r\n public executeOnCurrentPictureSelection (currentKvP:KvPhoto) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvP)) {\r\n\r\n\t\t}\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getKvPhotoUrl (kvPhoto : KvPhoto) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // debugger;\r\n return 'url(\\'' + kvPhoto.value + '\\')';\r\n }\r\n }\r\n // --------------------------------------------------------------------\r\n public getKvPhotoWithoutUrl (kvPhoto : KvPhoto) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // debugger;\r\n kvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(kvPhoto.value);\r\n return kvPhoto.value;\r\n }\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public setPagerVerticalPhotoNav (value : PagerPhotoMgmt) : void {\r\n this.pagerVKvPhotoNav = value;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // ------------------------------------------------------------\r\n public isInPagedItems (kvPhoto : KvPhoto, pagerVKvPhotoNav: PagerPhotoMgmt) : boolean {\r\n let isFound = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)\r\n && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n for (let i = 0; i < pagerVKvPhotoNav.pagedItems.length; i++) {\r\n if (pagerVKvPhotoNav.pagedItems[ i ].photoBnId === kvPhoto.photoBnId) {\r\n isFound = true;\r\n break;\r\n }\r\n }\r\n }\r\n // debugger;\r\n return isFound;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvFileWithUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n this.isKvFile = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') !== -1\r\n && (kvPhoto.value.toString().toLowerCase().indexOf('.png') !== -1 || kvPhoto.value.toString().toLowerCase().indexOf('.jpg') !== -1);\r\n return this.isKvFile;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvFileWithoutUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n this.isKvFile = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') === -1\r\n && (kvPhoto.value.toString().toLowerCase().indexOf('.png') !== -1 || kvPhoto.value.toString().toLowerCase().indexOf('.jpg') !== -1);\r\n return this.isKvFile;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvDataWithUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n this.isKvUrlData = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') !== -1;\r\n //&& kvPhoto.value.toString().toLowerCase().indexOf('.png') === -1\r\n //&& kvPhoto.value.toString().toLowerCase().indexOf('.jpg') === -1;\r\n return this.isKvUrlData;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvDataWithoutUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n this.isKvData = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('.png') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('.jpg') === -1;\r\n return this.isKvData;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public isNextOrLastPage (pagerVKvPhotoNav : PagerPhotoMgmt) : boolean {\r\n this.isKvNext = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav?.endPage)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav?.nextPage)\r\n && pagerVKvPhotoNav.currentPage >= pagerVKvPhotoNav?.startPage\r\n && (pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav?.nextPage\r\n || pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav?.endPage)\r\n return this.isKvNext;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public isPreviousOrFirstPage (pagerVKvPhotoNav : PagerPhotoMgmt) : boolean {\r\n this.isKvPrev = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.startPage)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.previousPage)\r\n && (pagerVKvPhotoNav.currentPage >= pagerVKvPhotoNav.startPage\r\n || pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav.previousPage)\r\n return this.isKvPrev;\r\n }\r\n // --------------------------------------------------------------------\r\n public getPagerVKvPhotoNavOnInit (kvPhotoArr : KvPhoto[], pageSize : number) : PagerPhotoMgmt {\r\n // debugger;\r\n let currentPageNum : number = 0;\r\n let currentItemKvPhoto : KvPhoto = new KvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n debugger;\r\n\r\n // mask the private photos if not unlocked:\r\n for (var i = 0; i < kvPhotoArr.length; i++) {\r\n if (kvPhotoArr[ i ].isPrivate && !kvPhotoArr[ i ].isUnlocked) {\r\n kvPhotoArr[ i ].value = 'assets/photos/private.png';\r\n }\r\n }\r\n this.pageSize = EmitterSubjectService.getPageSize();\r\n currentItemKvPhoto = this.kvPhotoArr[ 0 ];\r\n\r\n // First get the default pager for page#1:\r\n // ---------------------------------------\r\n this.pagerVKvPhotoNav = this.getPagerForVKvPhotoNav(this.kvPhotoArr, currentPageNum, pageSize); //get pager\r\n\r\n this.pagerVKvPhotoNav = this.updatePagerVPhotoNav(this.pagerVKvPhotoNav); // Note: may update the KvPhotoArr !!!important\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)\r\n && (this.pagerVKvPhotoNav.currentItem.photoBnId > 0\r\n || this.pagerVKvPhotoNav.currentItem.photoId > 0\r\n || this.pagerVKvPhotoNav.currentItem.sitUserId > 0)) {\r\n // debugger;\r\n this.executePagerVKvPhotoNavCurrentKvPhotoTasks(this.pagerVKvPhotoNav.currentItem, kvPhotoArr).subscribe(data => {\r\n // debugger;\r\n this.pagerVKvPhotoNav = data;\r\n EmitterSubjectService.setPagerPhotoMgmt(this.pagerVKvPhotoNav);\r\n\r\n // this should call the following method regarless:\r\n // ---------------------------------------------------------\r\n // this.pagerVKvPhotoNav.pagedItems = this.pagerVKvPhotoNavService.prepareKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems, this.isStripUrl);\r\n // this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavWithoutUrl(this.pagerVKvPhotoNav);\r\n // debugger;\r\n return this.pagerVKvPhotoNav;\r\n });\r\n }\r\n }\r\n\r\n EmitterSubjectService.setPagerPhotoMgmt(this.pagerVKvPhotoNav);\r\n }\r\n return this.pagerVKvPhotoNav;\r\n }\r\n\r\n // --------------------------------------------------------------------\r\n // --------------------------------------------------------------------\r\n public getPagerVKvPhotoNavOnInitOld (kvpArr: KvPhoto[], pSize: number) : Observable {\r\n // debugger;\r\n let currentPageNum : number = 0;\r\n let currentItemKvPhoto : KvPhoto = new KvPhoto();\r\n let kvPhotoArr = kvpArr;\r\n let pageSize = pSize;\r\n\r\n return new Observable(subscriber => {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n // debugger;\r\n this.pageSize = EmitterSubjectService.getPageSize();\r\n currentItemKvPhoto = this.kvPhotoArr[ 0 ];\r\n\r\n // First get the default pager for page#1:\r\n // ---------------------------------------\r\n this.pagerVKvPhotoNav = this.getPagerForVKvPhotoNav(this.kvPhotoArr, currentPageNum, pageSize); //get pager\r\n\r\n this.pagerVKvPhotoNav = this.updatePagerVPhotoNav(this.pagerVKvPhotoNav); // Note: may update the KvPhotoArr !!!important\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)\r\n && (this.pagerVKvPhotoNav.currentItem.photoBnId > 0\r\n || this.pagerVKvPhotoNav.currentItem.photoId > 0\r\n || this.pagerVKvPhotoNav.currentItem.sitUserId > 0)) {\r\n // debugger;\r\n this.executePagerVKvPhotoNavCurrentKvPhotoTasks(this.pagerVKvPhotoNav.currentItem, kvPhotoArr).subscribe(data => {\r\n // debugger;\r\n this.pagerVKvPhotoNav = data;\r\n EmitterSubjectService.setPagerPhotoMgmt(this.pagerVKvPhotoNav);\r\n\r\n // this should call the following methods regarless:\r\n // ---------------------------------------------------------\r\n // this.pagerVKvPhotoNav.pagedItems = this.pagerVKvPhotoNavService.prepareKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems, this.isStripUrl);\r\n // this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavWithoutUrl(this.pagerVKvPhotoNav);\r\n // debugger;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n subscriber.complete();\r\n });\r\n }\r\n }\r\n }\r\n \r\n })\r\n }\r\n // --------------------------------------------------------------------\r\n setMcLoader (sitUserId?: number) { \r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.mcLoader.moduleName = \"mym\";\r\n this.mcLoader.componentName = \"myPhotoMgmt\";\r\n this.mcLoader.id = this.loginSuccess.signedInUserId; \r\n \r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // Note : View calls this method.\r\n // Stable and works; on 20220429 & 20220514 & 20220622 & 20230108\r\n // --------------------------------------------------------------------\r\n public setPhotoNavItem (Item : KvPhoto, pagerVPhotoNav : PagerPhotoMgmt) : Observable {\r\n // debugger; \r\n let item = Item;\r\n let pagerVKvPhotoNav = pagerVPhotoNav;\r\n\r\n return new Observable(subscriber => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)) {\r\n // debugger;\r\n this.setMcLoader(item.sitUserId);\r\n item.returnUrl = '/' + this.mcLoader.moduleName + '/' + this.mcLoader.componentName + '/' + item.sitUserId;\r\n var selectedKvPhoto = null;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)\r\n && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n pagerVKvPhotoNav.pagedItems.map(e => {\r\n if ((e.photoBnId === item.photoBnId)) {\r\n e.isSelected = true;\r\n // debugger;\r\n selectedKvPhoto = e;\r\n }\r\n else {\r\n e.isSelected = false;\r\n }\r\n });\r\n\r\n // debugger;\r\n this.executeKvPhotoNavTasks(selectedKvPhoto, pagerVKvPhotoNav.pagedItems).subscribe(data => { // executePagerVKvPhotoNavCurrentKvPhotoTasks\r\n pagerVKvPhotoNav = data;\r\n this.bias.setKvPhotoBackgroundImage(selectedKvPhoto);\r\n this.kvMemActGlyphArrForPhotoMgmt = this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt;\r\n subscriber.next(pagerVKvPhotoNav);\r\n subscriber.complete();\r\n // debugger;\r\n })\r\n }\r\n else {\r\n subscriber.next(pagerVKvPhotoNav);\r\n subscriber.complete();\r\n }\r\n }\r\n else {\r\n subscriber.next(pagerVKvPhotoNav);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n // ----------------------------------------------------------------\r\n executePagerVKvPhotoNavSystem (pagerVKvPhotoNav : PagerPhotoMgmt, currentKvPhoto: KvPhoto) : PagerPhotoMgmt{\r\n var currentItemKvPhoto : any;\r\n // =============================================\r\n // PagerVKvPhoto-display-system: begin\r\n // =============================================\r\n // if the images need to be normalized befor rendering:\r\n // ----------------------------------------------------\r\n //this.pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n // // raw-image-data-case\r\n // //if (e.value.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n // // // debugger;\r\n // // e.value = JsRegExpServiceStatic.normalizeImageData(e.value); //will be without url\r\n // //}\r\n // //// file-name-case\r\n // //else if (e.value.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n // // // debugger;\r\n // // e.value = JsRegExpServiceStatic.normalizeImageFileNameWithoutUrl(e.value);\r\n // //}\r\n //})\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)) {\r\n // ------------------------------------------------------\r\n // Note: backend data has only privacy,\r\n // no isPrime / isPrivate / isPublic is determined\r\n // ------------------------------------------------------\r\n for (var i = 0; i < pagerVKvPhotoNav.pagedItems.length; i++) {\r\n pagerVKvPhotoNav.pagedItems[ i ] = this.determinePrivacyStatusOfKvPhoto(pagerVKvPhotoNav.pagedItems[ i ]);\r\n }\r\n //this.pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n // e = this.myPagerVPhotoNavService.determinePrivacyStatusOfKvPhoto(e);\r\n //})\r\n\r\n // debugger;\r\n // select the last item for page rendering and glyphicon display:\r\n // --------------------------------------------------------------\r\n // this.pagerVKvPhotoNav.pagedItems[ this.pagerVKvPhotoNav.pagedItems.length - 1 ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto)) {\r\n currentItemKvPhoto = JSON.parse(JSON.stringify(currentKvPhoto));\r\n }\r\n else {\r\n currentItemKvPhoto = this.pagerVKvPhotoNav.pagedItems[ 0 ];\r\n }\r\n\r\n EmitterSubjectService.emitOnKvPhotoSelectionChange(currentItemKvPhoto);\r\n // debugger;\r\n this.bias.setKvPhotoBackgroundImage(currentItemKvPhoto);\r\n\r\n // debugger;\r\n //this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentItemKvPhoto.glyphName)\r\n // && (currentItemKvPhoto.isPrimary && currentItemKvPhoto.glyphName.toLocaleLowerCase().indexOf('primary') !== -1)) {\r\n // // debugger;\r\n // this.loginSuccess.primaryPhotoBnId = currentItemKvPhoto.photoBnId;\r\n // this.loginSuccess.primaryImage = currentItemKvPhoto.value;\r\n // EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n // this.bias.setPrimaryImage('primaryPhotoBnId', true);\r\n //}\r\n\r\n // debugger;\r\n // The view changes the halo, still need to call this:\r\n // ---------------------------------------------------\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, currentItemKvPhoto);\r\n // debugger;\r\n return pagerVKvPhotoNav;\r\n // =============================================\r\n // PagerVKvPhoto-display-system: end\r\n // =============================================\r\n }\r\n }\r\n // ------------------------------------------------------------\r\n turnOffCurrentPrimaryStatusOfRespectiveKvPhoto (pagerVKvPhotoNav : PagerPhotoMgmt) : PagerPhotoMgmt {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)) {\r\n pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n if (e.privacy.toLocaleLowerCase().indexOf('primary') !== -1) {\r\n e.glyphName = e.key = e.privacy = 'public';\r\n e = this.determinePrivacyStatusOfKvPhoto(e);\r\n }\r\n })\r\n pagerVKvPhotoNav.kvPhotoArr.forEach(e => {\r\n if (e.privacy.toLocaleLowerCase().indexOf('primary') !== -1) {\r\n e.glyphName = e.key = e.privacy = 'public';\r\n e = this.determinePrivacyStatusOfKvPhoto(e);\r\n }\r\n })\r\n }\r\n return pagerVKvPhotoNav;\r\n }\r\n // ------------------------------------------------------------\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\n@Component({\n selector: 'app-a-glyphicon-component',\n templateUrl: './aGlyphicon.component.html',\n styleUrls: [ './aGlyphicon.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AGlyphiconComponent implements OnInit {\r\n // ----------------------------------------------\r\n public emitterDestroyed$ : Subject = new Subject();\n @Input() kvGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\n @Input() i = 0;\n // ----------------------------------------------\n constructor (private router : Router,\r\n private cdr : ChangeDetectorRef,\r\n @Inject(Document) document : any) {\n }\n\n ngOnInit () : void {\n }\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\n // ---------------------------------------------------------------------------------\r\n setGlyphAction (kvg : KvMemberActivityGlyph) : void {\n EmitterSubjectService.emitKvMemberActivityGlyph(kvg);\n }\n}\n","\r\n
= 0 && kvGlyph.index === (i+1)', 'flex-item-plain text-center bttn-xxxs-transparent': true }\"\r\n style=\"width: 2.5rem; height: auto; margin: 0.1rem; padding: 0.01rem;\">\r\n \r\n\r\n \r\n
\r\n {{kvGlyph.key}}\r\n
\r\n
\r\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { PagerButtonComponent } from './pagerButton/pagerButton.component';\r\nimport { PagerChatHistoryComponent } from './pagerChatHistory/pagerChatHistory.component';\r\nimport { PagerVerticalGlyphForViewMemberComponent } from './pagerVerticalGlyphForViewMember/pagerVerticalGlyphForViewMember.component';\r\nimport { PagerVerticalGlyphForPhotoMgmtComponent } from './pagerVerticalGlyphForPhotoMgmt/pagerVerticalGlyphForPhotoMgmt.component';\r\nimport { PagerVPhotoNavComponent } from './pagerVPhotoNav/pagerVPhotoNav.component';\r\n\r\nconst pagerRoutes : Routes = [\r\n {\r\n path: '',\r\n children: [\r\n \r\n { path: 'pagerButton', component: PagerButtonComponent },\r\n { path: 'pagerChatHistory', component: PagerChatHistoryComponent },\r\n { path: 'pagerVerticalPhotoNav', component: PagerVPhotoNavComponent },\r\n { path: 'pagerVerticalViewMember', component: PagerVerticalGlyphForViewMemberComponent },\r\n { path: 'pagerVerticalPhotoMgmt', component: PagerVerticalGlyphForPhotoMgmtComponent },\r\n ]\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild( pagerRoutes ),\r\n CommonModule,\r\n FormsModule, ],\r\n exports: [RouterModule]\r\n})\r\nexport class PagerRoutingModule { }\r\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { GlyphiconMenuService } from '../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { PagerPhotoMgmtService } from '../../services/pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerService } from '../../services/pagerServiceService/pagerService.service';\r\nimport { PagerServiceChatHistory } from '../../services/pagerServiceService/pagerServiceChatHistory.service';\r\nimport { PagerServiceService } from '../../services/pagerServiceService/pagerServiceService.service';\r\nimport { PagerSupportService } from '../../services/pagerServiceService/pagerSupportService.service';\r\nimport { DirectiveFilterPipeModule } from '../directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { AGlyphiconComponent } from './aGlyphicon/aGlyphicon.component';\r\nimport { PagerRoutingModule } from './pager-routing.module';\r\nimport { PagerButtonComponent } from './pagerButton/pagerButton.component';\r\nimport { PagerChatHistoryComponent } from './pagerChatHistory/pagerChatHistory.component';\r\nimport { PagerVerticalGlyphForPhotoMgmtComponent } from './pagerVerticalGlyphForPhotoMgmt/pagerVerticalGlyphForPhotoMgmt.component';\r\nimport { PagerVerticalGlyphForViewMemberComponent } from './pagerVerticalGlyphForViewMember/pagerVerticalGlyphForViewMember.component';\r\nimport { PagerVPhotoNavComponent } from './pagerVPhotoNav/pagerVPhotoNav.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AGlyphiconComponent,\r\n PagerButtonComponent,\r\n PagerChatHistoryComponent,\r\n PagerVPhotoNavComponent,\r\n PagerVerticalGlyphForViewMemberComponent,\r\n PagerVerticalGlyphForPhotoMgmtComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n DirectiveFilterPipeModule,\r\n PagerRoutingModule,\r\n ],\r\n exports: [\r\n AGlyphiconComponent,\r\n PagerButtonComponent,\r\n PagerChatHistoryComponent,\r\n PagerVPhotoNavComponent,\r\n PagerVerticalGlyphForViewMemberComponent,\r\n PagerVerticalGlyphForPhotoMgmtComponent,\r\n PagerRoutingModule,\r\n ],\r\n providers: [\r\n { provide: GlyphiconMenuService },\r\n { provide: PagerService },\r\n { provide: PagerServiceService },\r\n { provide: PagerServiceChatHistory },\r\n { provide: PagerPhotoMgmtService },\r\n { provide: PagerSupportService },\r\n ]\r\n})\r\nexport class PagerModule { }\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, Component, Inject, Input, OnChanges,\r\n OnDestroy, OnInit,\r\n Renderer2, SimpleChanges\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { Pager } from '../../../models/pagination/pager.model';\r\nimport { ProfilePics } from '../../../models/profile/profilePics.model';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { DbServiceService } from '../../../services/dbServiceService/dbServiceService.service';\r\nimport { DictionaryService } from '../../../services/dictionaryServiceService/dictionaryService.service';\r\nimport { DictionaryServiceService } from '../../../services/dictionaryServiceService/dictionaryServiceService.service';\r\nimport { PagerService } from '../../../services/pagerServiceService/pagerService.service';\r\nimport { PagerServiceService } from '../../../services/pagerServiceService/pagerServiceService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n@Component({\r\n selector : 'app-pager-button',\r\n templateUrl : './pagerButton.component.html',\r\n styleUrls : ['./pagerButton.component.scss'],\r\n})\r\nexport class PagerButtonComponent implements AfterViewInit, OnInit, OnChanges, OnDestroy {\r\n public dictionaryService! : DictionaryService;\r\n private pagerService!: PagerService;\r\n public rendererService!: RendererService;\r\n public renderer!: Renderer2;\r\n // ---------------------------------------------------------------\r\n public changeDetectStr = 'image';\r\n private emitterDestroyed$: Subject = new Subject();\r\n @Input() isAll = true;\r\n @Input() isFirst = false;\r\n @Input() isLast = false;\r\n public isMobilevar = false;\r\n @Input() isPageButton = false;\r\n @Input() image = '';\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public profilePics : ProfilePics = new ProfilePics();\r\n @Input() page = 1;\r\n public pager: Pager = new Pager();\r\n // ---------------------------------------------------------------\r\n constructor(\r\n // private cdr : ChangeDetectorRef,\r\n private rendererServiceService: RendererServiceService,\r\n private coreServiceService : CoreServiceService,\r\n private dbServiceService : DbServiceService,\r\n private dictionaryServiceService : DictionaryServiceService,\r\n private pagerServiceService: PagerServiceService,\r\n @Inject(Document) document : any) {\r\n if (this.rendererServiceService) { this.rendererService = this.rendererServiceService.getRendererService() as RendererService; }\r\n if (this.pagerServiceService) { (this.pagerService as PagerService) = this.pagerServiceService.getPagerService() as PagerService; }\r\n if (this.rendererService) { this.renderer = this.rendererService.getRenderer() as Renderer2; }\r\n if (this.dictionaryServiceService) {\r\n\r\n this.dictionaryService = this.dictionaryServiceService.getDictionaryService();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnInit(): void {\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n if (this.image && this.page > 0) { this.setPagerBttn(this.image, this.page); }\r\n\r\n EmitterSubjectService.currentPageEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n debugger;\r\n if (result > 0) {\r\n this.page = result;\r\n this.pager = (this.pagerService as PagerService).setPager(this.page);\r\n }\r\n });\r\n // Note : here to get the pager, we are using an empty-pic-array since this component does not have the list of pics\r\n if ( this.page > 0 ) { this.pager = ( this.pagerService as PagerService ).setPager( this.page ); }\r\n\r\n // TODO: after testing how pager looks, delete this before deployment.\r\n // -------------------------------------------------------------------\r\n EmitterSubjectService.profileImagesEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n // debugger;\r\n if ( result && result.length > 0 )\r\n {\r\n this.pager.pagedKvPhotoArr = this.pager.kvPhotoArr = result;\r\n this.pager = ( this.pagerService as PagerService ).setPager( 1 );\r\n this.ngAfterViewInit();\r\n }\r\n } );\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.profilePics = this.dictionaryService.profilePicsDictionary.get( this.loginSuccess.signedInUserId ) as ProfilePics;\r\n this.setPagerBttn( this.loginSuccess.primaryImage, 1 );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics.unFilteredKvPhotoArr ) )\r\n {\r\n this.pager.pagedKvPhotoArr = this.pager.kvPhotoArr = this.profilePics.unFilteredKvPhotoArr;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // only run when property 'data' changed\r\n if (changes[this.changeDetectStr]) {\r\n // debugger;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n if (this.image && this.page > 0) { this.setPagerBttn(this.image, this.page); }\r\n }\r\n // this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit(): void {\r\n // debugger;\r\n if ( this.image && this.page > 0 ) { this.setPagerBttn(this.image, this.page); }\r\n // this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setPage (page : any) {\r\n // debugger;\r\n if (page > 0) {\r\n this.pager = (this.pagerService as PagerService).setPager(page);\r\n // debugger;\r\n EmitterSubjectService.emitSetPage(page);\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setIsAll(isAll: boolean) {\r\n this.isAll = isAll;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setIsPageButton(isPageButton: boolean) {\r\n this.isPageButton = isPageButton;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setIsFirst(isFirst: boolean) {\r\n this.isFirst = isFirst;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setIsLast(isLast: boolean) {\r\n this.isLast = isLast;\r\n }\r\n // --------------------------------------------------------------\r\n setButtons (images : any) {\r\n // debugger;\r\n if (images && images.length > 0) {\r\n for (let i = 0; i < images.length; i++) {\r\n this.setPagerBttn(images[i], i + 1);\r\n }\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n setPagerBttn(image: string, page: number) {\r\n // debugger;\r\n\r\n if (image && image.length > 0 && page > 0) {\r\n const elemId = 'pageBttnId' + page;\r\n const tImage = 'url(\\'' + image + '\\')';\r\n const bttnElem = document.getElementById(elemId);\r\n // debugger;\r\n if (bttnElem) {\r\n this.renderer?.setStyle(bttnElem, 'background-image', tImage);\r\n bttnElem.remove();\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n}\r\n","
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n","'use-strict'\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit,\r\n Renderer2\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Chat } from '../../../models/chat/chat.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { PagerChat } from '../../../models/pagination/pagerChat.model';\r\nimport { ChatService } from '../../../services/communicationServiceService/chatService';\r\nimport { CommunicationServiceService } from '../../../services/communicationServiceService/communicationServiceService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { PagerServiceChatHistory } from '../../../services/pagerServiceService/pagerServiceChatHistory.service';\r\nimport { PagerServiceService } from '../../../services/pagerServiceService/pagerServiceService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n@Component({\r\n selector : 'app-pager-chat-history',\r\n templateUrl : './pagerChatHistory.component.html',\r\n styleUrls : ['./pagerChatHistory.component.scss'],\r\n changeDetection : ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PagerChatHistoryComponent implements OnInit, /*OnChanges,*/ AfterViewInit, OnDestroy {\r\n public bias! : BackgroundImageAnimationService;\r\n public chatService!: ChatService;\r\n public pagerServiceChatHistory!: PagerServiceChatHistory;\r\n public rendererService!: RendererService;\r\n public renderer!: Renderer2;\r\n private emitterDestroyed$: Subject = new Subject();\r\n // ----------------------------------------------------------\r\n @Input() chats : Array = []; // to detect changes on incoming chats; not used for anyting else\r\n public currentMod = 0;\r\n public currentPageNo = 1;\r\n public changeDetectStr = 'pagerChat';\r\n public isActive = false;\r\n public isMobilevar = false;\r\n public isMouseIn = false;\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public modNum = 0;\r\n public modPages : number = 0;\r\n public pageSize = 10; // Max-page-size. important!\r\n @Input() pagerChat : PagerChat = new PagerChat();\r\n public pagedChats = [];\r\n public pageCount = 0;\r\n @Input() sitUserId = 0;\r\n public tempElem : any;\r\n public totalPageNoArr : number[] = [];\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private communicationServiceService: CommunicationServiceService,\r\n private coreServiceService: CoreServiceService,\r\n private pagerServiceService : PagerServiceService,\r\n private rendererServiceService : RendererServiceService,\r\n @Inject(Document) document : any) {\r\n if ( this.rendererServiceService ) { this.rendererService = this.rendererServiceService.getRendererService() as RendererService; }\r\n if (this.communicationServiceService) { this.chatService = this.communicationServiceService.getChatService() as ChatService; }\r\n\r\n if (this.rendererService) {\r\n this.renderer = this.rendererService.getRenderer() as Renderer2;\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n }\r\n this.isMobilevar = EmitterSubjectService.getIsMobile() as boolean;\r\n if (this.pagerServiceService) {\r\n this.pagerServiceChatHistory = this.pagerServiceService.getPagerServiceChatHistory() as PagerServiceChatHistory;\r\n }\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n ngOnInit () {\r\n // debugger;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerChat) \r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats) && this.chats.length > 0) {\r\n //Note: to get the last page, we need to create a pager first with page==1;\r\n this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, 1, this.pageSize);\r\n // Now set the page to the last page from the pager:\r\n // this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, this.pagerChat.totalPageNo, this.pageSize);\r\n this.currentPageNo = this.pagerChat.currentPageNo;\r\n // debugger;\r\n this.toggleSelected(this.currentPageNo);\r\n // debugger;\r\n }\r\n // --------------------------------------------------------------\r\n EmitterSubjectService.conversationEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n this.chats = result as Chat[];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats) && this.chats.length > 0) {\r\n // debugger;\r\n // Note: New conversation Principal: We always select the last page of the conversation.\r\n // How to do this?: First get a pagerChat using the page-1, then again using the last page:\r\n // ------------------------------------------------------------------------------------------\r\n this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, 1, this.pageSize);\r\n // this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, this.pagerChat.totalPageNo, this.pageSize);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerChat)) {\r\n // debugger;\r\n this.pagerChat = this.setPage((1).toString());// this.setPage(this.pagerChat.totalPageNo.toString());\r\n // debugger;\r\n }\r\n }\r\n this.ngAfterViewInit();\r\n // debugger;\r\n // Note: indexedDb code to save the chatMessages are in ChatService.ts\r\n }\r\n });\r\n }\r\n // ----------------------------------------------------------------\r\n ngAfterViewInit () {\r\n // debugger;\r\n this.cdr.detectChanges(); \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats) && this.chats.length > 0) {\r\n this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, 1, this.pageSize);\r\n // Now set the page to the last page from the pager:\r\n // this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, this.pagerChat.totalPageNo, this.pageSize);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerChat)) {\r\n this.currentPageNo = this.pagerChat.currentPageNo;\r\n // debugger;\r\n // this.totalPageNoArr = this.pagerChat.totalPageNoArr = this.createTotalPageNoArr(this.pagerChat.totalPageNo);\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n // this.signalRService.clearTimers();\r\n // this.timerArr.map(e => clearInterval(e));\r\n // ----------------------------------------\r\n // Note : for reference-purpose : uniqueAddTimerArr:\r\n // if (!this.dateStringService.isTimerFound(this.timerArr, this.timer)) { this.timerArr.push(this.timer); }\r\n // ----------------------------------------\r\n }\r\n // --------------------------------------------------------------\r\n checkMouseEvent(event: Event): boolean {\r\n if (event) { this.isMouseIn = event.type.indexOf('MouseEvent') !== -1 ? true : false; }\r\n return this.isMouseIn = !this.isMouseIn;\r\n }\r\n // --------------------------------------------------------------\r\n createTotalPageNoArr (tPageN : number) : number[] {\r\n var tPageNArr = [];\r\n if (tPageN > 0) {\r\n for (var i = 1; i < tPageN + 1; i++)\r\n tPageNArr.push(i)\r\n }\r\n return tPageNArr;\r\n }\r\n // \r\n // ----------------------------------------------------------------\r\n // TODO: incomplete!\r\n // ----------------------------------------------------------------\r\n toggleSelected (page : number) : void {\r\n // debugger;\r\n var anyElemId = \"pageB-\";\r\n var anyElem : any;\r\n var slectedElemId = \"pageB-\";\r\n var selectedElem : any;\r\n if (page >= 1) {\r\n switch (page.toString()) {\r\n case 'f':\r\n slectedElemId = \"pageB-1\";\r\n break;\r\n case 'prev':\r\n (page - 1) >= 0 ? slectedElemId = \"pageB-\" + (page - 1).toString() : slectedElemId = \"pageB-1\";\r\n break;\r\n case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '10':\r\n case '11': case '12': case '13': case '14': case '15': case '16': case '17': case '18': case '19': case '20':\r\n case '21': case '22': case '23': case '24': case '25': case '26': case '27': case '28': case '29': case '30':\r\n case '31': case '32': case '33': case '34': case '35': case '36': case '37': case '38': case '39': case '340':\r\n case '41': case '42': case '43': case '44': case '45': case '46': case '47': case '48': case '49': case '50':\r\n case '51': case '52': case '53': case '54': case '55': case '56': case '57': case '58': case '59': case '60':\r\n case '61': case '62': case '63': case '64': case '65': case '66': case '67': case '68': case '69': case '70':\r\n case '71': case '72': case '73': case '74': case '75': case '76': case '77': case '78': case '79': case '80':\r\n case '81': case '82': case '83': case '84': case '85': case '86': case '87': case '88': case '89': case '90':\r\n case '91': case '92': case '93': case '94': case '95': case '96': case '97': case '98': case '99': case '100':\r\n slectedElemId = \"pageB-\" + (page - 1).toString();\r\n // debugger;\r\n break; \r\n case 'next':\r\n // page <= (this.pagerChat.totalPageNo - 1) ? slectedElemId = \"pageB-\" + page.toString() : slectedElemId = \"pageB-\" + (this.pagerChat.totalPageNo - 1);\r\n page <= (this.pagerChat.totalPageNo - 1) ? slectedElemId = \"pageB-\" + page.toString() : slectedElemId = \"pageB-\" + (this.pagerChat.totalPageNo - 1);\r\n break;\r\n case 'l':\r\n slectedElemId = \"pageB-\" + (this.pagerChat.totalPageNo - 1);\r\n break;\r\n default:\r\n slectedElemId = \"pageB-\" + (this.pagerChat.totalPageNo - 1);\r\n break;\r\n }\r\n // debugger;\r\n for (var j = 0; j < this.pagerChat.pages.length; j++) {\r\n var index = j;\r\n anyElemId = \"pageB-\" + index.toString();\r\n anyElem = document.getElementById(anyElemId);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(anyElem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(anyElem.classList)\r\n && anyElem.classList.contains(\"bttn-xxxs-transparent-selected\")) {\r\n this.bias.removeClass(anyElemId, \"bttn-xxxs-transparent-selected\");\r\n }\r\n }\r\n\r\n selectedElem = document.getElementById(slectedElemId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(selectedElem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(selectedElem.classList)\r\n && !selectedElem.classList.contains(\"bttn-xxxs-transparent-selected\")) {\r\n this.bias.addClass(slectedElemId, \"bttn-xxxs-transparent-selected\");\r\n }\r\n // debugger;\r\n }\r\n\t}\r\n // ----------------------------------------------------------------\r\n public setPage(page?: string): PagerChat {\r\n // debugger;\r\n \r\n // Note: The following is created from CodeMagnet-pager:\r\n // -----------------------------------------------------\r\n // add seleced status to class:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(page)) {\r\n var pageNum = parseInt(page, 10);\r\n switch (page.toLowerCase()) {\r\n case 'f':\r\n this.currentPageNo = 1;\r\n break;\r\n case 'prev':\r\n this.currentPageNo = (this.pagerChat.currentPageNo - 1) > 0 ? this.pagerChat.currentPageNo - 1 : 1;\r\n break;\r\n case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '10':\r\n case '11': case '12': case '13': case '14': case '15': case '16': case '17': case '18': case '19': case '20':\r\n case '21': case '22': case '23': case '24': case '25': case '26': case '27': case '28': case '29': case '30':\r\n case '31': case '32': case '33': case '34': case '35': case '36': case '37': case '38': case '39': case '340':\r\n case '41': case '42': case '43': case '44': case '45': case '46': case '47': case '48': case '49': case '50':\r\n case '51': case '52': case '53': case '54': case '55': case '56': case '57': case '58': case '59': case '60':\r\n case '61': case '62': case '63': case '64': case '65': case '66': case '67': case '68': case '69': case '70':\r\n case '71': case '72': case '73': case '74': case '75': case '76': case '77': case '78': case '79': case '80':\r\n case '81': case '82': case '83': case '84': case '85': case '86': case '87': case '88': case '89': case '90':\r\n case '91': case '92': case '93': case '94': case '95': case '96': case '97': case '98': case '99': case '100':\r\n this.currentPageNo = parseInt(page, 10);\r\n // debugger;\r\n break;\r\n case 'l':\r\n this.currentPageNo = this.pagerChat.totalPageNo;\r\n break;\r\n case 'next':\r\n this.currentPageNo = this.pagerChat.currentPageNo + 1 <= this.pagerChat.totalPageNo ? this.pagerChat.currentPageNo + 1 : this.pagerChat.totalPageNo;\r\n break;\r\n default:\r\n // this.currentPageNo;\r\n break;\r\n\t\t\t}\r\n }\r\n // debugger;\r\n this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.pagerChat.chats, this.currentPageNo, this.pageSize);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerChat)) {\r\n EmitterSubjectService.emitPagerChat(this.pagerChat);\r\n }\r\n // debugger;\r\n this.toggleSelected(this.currentPageNo);\r\n\r\n // debugger;\r\n this.ngAfterViewInit();\r\n return this.pagerChat;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
\r\n
    \r\n
  • \r\n \r\n \r\n\r\n
  • \r\n
  • \r\n \r\n \r\n\r\n
  • \r\n \r\n
  • \r\n \r\n {{page}}\r\n \r\n
  • \r\n
  • \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n
  • \r\n
\r\n
\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component,\r\n ElementRef,\r\n Inject, Input, OnDestroy, OnInit, Renderer2\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { KvAction } from '../../../models/keyValue/kvAction.model';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { PagerPhotoMgmt } from '../../../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { GlyphiconMenuService } from '../../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { GlyphiconServiceService } from '../../../services/GlyphiconService/glyphiconServiceService.service';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { DisplayProfileService } from '../../../services/displayProfileServiceService/displayProfileService.service';\r\nimport { DisplayProfileServiceService } from '../../../services/displayProfileServiceService/dsiplayProfileServiceService.service';\r\nimport { MemberService } from '../../../services/memberServiceService/memberService.service';\r\nimport { MemberServiceService } from '../../../services/memberServiceService/memberServiceService.service';\r\nimport { AbstractPagerVPhotoNavService } from '../../../services/pagerServiceService/abstractPagerVPhotoNavService.service';\r\nimport { PagerPhotoMgmtService } from '../../../services/pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerServiceService } from '../../../services/pagerServiceService/pagerServiceService.service';\r\nimport { PagerSupportService } from '../../../services/pagerServiceService/pagerSupportService.service';\r\nimport { PhotoAndPrimaryPhotoMgmtService } from '../../../services/photoServiceService/photoAndPrimaryPhotoMgmtService.service';\r\nimport { PhotoServiceService } from '../../../services/photoServiceService/photoServiceService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { DomUtilsServiceStatic } from '../../../services/staticServices/domUtilsServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../../../services/staticServices/jsRegExpServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\nimport { MyPagerVPhotoNavService } from '../../myModule/myPagerVPhotoNav/myPagerVPhotoNavService.service';\r\nimport { CopyServiceStatic } from '../../../services/staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DictionaryService } from '../../../services/dictionaryServiceService/dictionaryService.service';\r\nimport { DictionaryServiceService } from '../../../services/dictionaryServiceService/dictionaryServiceService.service';\r\nimport { ProfilePics } from '../../../models/profile/profilePics.model';\r\n\r\n@Component({\r\n selector: 'app-pager-v-photo-nav',\r\n templateUrl: './pagerVPhotoNav.component.html',\r\n styleUrls: [ './pagerVPhotoNav.component.scss' ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [ Animations, slideInOutAnimation],\r\n\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class PagerVPhotoNavComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public bias ! : BackgroundImageAnimationService;\r\n public dictionaryService! : DictionaryService;\r\n public displayProfileService : DisplayProfileService;\r\n public glyphiconMenuService! : GlyphiconMenuService;\r\n public memberService! : MemberService;\r\n public pagerPhotoMgmtService! : PagerPhotoMgmtService;\r\n public pagerSupportService! : PagerSupportService;\r\n public photoAndPrimaryPhotoMgmtService! : PhotoAndPrimaryPhotoMgmtService;\r\n public redirectionService! : RedirectionService;\r\n public rendererService! : RendererService;\r\n public renderer! : Renderer2;\r\n // -----------------------------------\r\n public currentPageNum = 1;\r\n public currentItemNum = 0;\r\n public currentItemKvPhoto : KvPhoto = new KvPhoto();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isKvData = false;\r\n public isKvFile = false;\r\n public isKvNext = false;\r\n public isKvPrev = false;\r\n public isKvUrlData = false;\r\n public isMobilevar = false;\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isStripUrl = true;\r\n public isUnlocked = false;\r\n public isViewMember = false;\r\n public isWithoutUrl = false; \r\n public kvAction : KvAction = new KvAction();\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public kvGlyphArr : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForPhotoMgmt: KvMemberActivityGlyph[] =[]; // for trigerring the display of glyph-menu at pagerVKvGlyphForPhotoMgmtComponent\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n\r\n private onDestroy$ : Subject = new Subject();\r\n @Input() pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt(); // for photo browsing by both signedInUser and sitUser\r\n public pageSize = 6;\r\n public primaryPhotoBnId = 0;\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public signedInUserId = 0;\r\n @Input() sitUser : SitUser = new SitUser();\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n // ------------------------------------------------------\r\n constructor (\r\n private abstractPagerVPhotoNavService : AbstractPagerVPhotoNavService,\r\n private cdr : ChangeDetectorRef,\r\n private commonServiceService : CommonServiceService,\r\n private dictionaryServiceService: DictionaryServiceService,\r\n private displayProfileServiceService : DisplayProfileServiceService,\r\n private elementRef : ElementRef,\r\n private glyphiconServiceService : GlyphiconServiceService,\r\n private memberServiceService : MemberServiceService,\r\n private myPagerVPhotoNavService : MyPagerVPhotoNavService,\r\n private pagerServiceService : PagerServiceService,\r\n public photoServiceService: PhotoServiceService,\r\n private rendererServiceService : RendererServiceService,\r\n private router : Router,\r\n @Inject(Document) document : any) {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n if (this.rendererServiceService) {\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n this.rendererService = this.rendererServiceService.getRendererService() as RendererService;\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n }\r\n if (this.dictionaryServiceService) {\r\n this.dictionaryService = this.dictionaryServiceService.getDictionaryService();\r\n }\r\n\r\n if (this.rendererService) { this.renderer = this.rendererService.getRenderer() as Renderer2; }\r\n if (this.memberServiceService) {\r\n this.memberService = this.memberServiceService.getMemberService();\r\n }\r\n this.isMobilevar = EmitterSubjectService.getIsMobile() as boolean;\r\n this.glyphiconMenuService = this.glyphiconServiceService.getGlyphiconMenuService();\r\n if (this.pagerServiceService) {\r\n \r\n this.pagerPhotoMgmtService = this.pagerServiceService.getPagerPhotoMgmtService();\r\n this.pagerSupportService = this.pagerServiceService.getPagerSupportService();\r\n }\r\n if (this.photoServiceService) {\r\n this.photoAndPrimaryPhotoMgmtService = this.photoServiceService.getPhotoAndPrimaryPhotoMgmtService();\r\n\t\t}\r\n this.displayProfileService = this.displayProfileServiceService.getDisplayProfileService();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n EmitterSubjectService.setSitUserModel(this.sitUser);\r\n // debugger;\r\n }\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n }\r\n // --------------------------------------------------------------\r\n ngOnInit () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess(); \r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n DomUtilsServiceStatic.setDomUtilsElementRef(this.elementRef);\r\n \r\n // -------------------------------------------------------------\r\n if (this.sitUser && this.sitUser.sitUserId > 0) {\r\n if (this.sitUser.sitUserId === this.loginSuccess.signedInUserId) {\r\n this.primaryPhotoBnId = this.loginSuccess.primaryPhotoBnId;\r\n }\r\n else if(this.sitUser.primaryPhotoBnId > 0) {\r\n this.primaryPhotoBnId = this.sitUser.primaryPhotoBnId;\r\n // debugger; \r\n }\r\n\r\n // ----------------------------------------------------------------\r\n // Begin: ProfileTile's case:\r\n // debugger;\r\n //display the user information from profileTile:\r\n // ---------------------------------------------\r\n this.profileTile = EmitterSubjectService.getSelectedProfileTile();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.primaryImage)) {\r\n this.myPagerVPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks(this.profileTile).subscribe(data => {\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n this.pagerVKvPhotoNav = data;\r\n this.kvPhotoArr = this.pagerVKvPhotoNav.kvPhotoArr;\r\n // debugger;\r\n EmitterSubjectService.emitTotalPhotoCount(this.kvPhotoArr.length);\r\n }\r\n // debugger;\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n\r\n // get the dictionary profilePics second:\r\n // -------------------------------------\r\n \r\n this.profilePics = this.dictionaryService.profilePicsDictionary.get(this.sitUser.sitUserId);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoArr)\r\n && this.profilePics.unFilteredKvPhotoArr.length > 0)\r\n {\r\n this.profilePics.populateDictionaries();\r\n this.kvPhotoArr = this.profilePics.unFilteredKvPhotoDictionary.values();\r\n // debugger\r\n this.abstractPagerVPhotoNavService.executeKvPhotoNavTasks(this.kvPhotoArr[ 0 ], this.kvPhotoArr).subscribe(data1 =>\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data1))\r\n {\r\n // debugger;\r\n this.pagerVKvPhotoNav = data1;\r\n\r\n // debugger;\r\n EmitterSubjectService.emitTotalPhotoCount(this.pagerVKvPhotoNav.kvPhotoArr.length);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0)\r\n {\r\n this.pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n\r\n // raw-image-data-case\r\n if (e.value.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n // debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageData(e.value); //will be without url\r\n }\r\n // file-name-case\r\n else if (e.value.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n // debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageFileNameWithoutUrl(e.value);\r\n }\r\n\r\n if (e.privacy.toLocaleLowerCase().indexOf('private') !== -1) {\r\n e.isPrivate = true;\r\n if (!this.isUnlocked) {\r\n e.value = 'assets/photos/private.png';\r\n }\r\n }\r\n else e.isPrivate = false;\r\n })\r\n\r\n\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.pagerVKvPhotoNav.currentItem);\r\n this.ngAfterViewInit();\r\n // debugger;\r\n }\r\n }\r\n else {\r\n console.log('timestamp : ' + new Date().getTime() + ': DisplayProfileService->executeKvPhotoNavTasks() returned a null or undefined promise;');\r\n }\r\n })\r\n this.ngAfterViewInit();\r\n // debugger;\r\n }\r\n\r\n // --------------------------------------------------------------\r\n EmitterSubjectService.emitShowSpinner('Getting user pics...');\r\n \r\n // Get profilePics from the backend-server:\r\n // Note: This process is faster than ohther processes of getting user pics:\r\n // ------------------------------------------------------------------------\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n // debugger;\r\n this.displayProfileService.displayUserPicsFromServer(this.sitUser.sitUserId).subscribe(data => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n this.pagerVKvPhotoNav = data;\r\n\r\n EmitterSubjectService.emitTotalPhotoCount(this.pagerVKvPhotoNav.kvPhotoArr.length);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0)\r\n {\r\n this.pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n\r\n // raw-image-data-case\r\n if (e.value.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n // debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageData(e.value); //will be without url\r\n }\r\n // file-name-case\r\n else if (e.value.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n // debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageFileNameWithoutUrl(e.value);\r\n }\r\n\r\n if (e.privacy.toLocaleLowerCase().indexOf('private') !== -1) {\r\n e.isPrivate = true;\r\n if (!this.isUnlocked) {\r\n e.value = 'assets/photos/private.png';\r\n }\r\n }\r\n else e.isPrivate = false;\r\n })\r\n\r\n\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.pagerVKvPhotoNav.currentItem);\r\n this.ngAfterViewInit();\r\n }\r\n EmitterSubjectService.emitHideSpinner('');\r\n }\r\n\r\n })\r\n }\r\n\r\n // get the sitUser from the emitter first:\r\n // because we jump to the parent component and loose it's value\r\n // ---------------------------------------\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n // debugger;\r\n this.memberService.getIsUnlocked(this.sitUser.sitUserId).subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n this.kvAction = data;\r\n this.isUnlocked = this.kvAction.isUnlocked;\r\n }\r\n })\r\n }\r\n }\r\n \r\n \r\n // --------------------------------------------------------------------------\r\n \r\n // ------------------------------------------------------------------------- \r\n EmitterSubjectService.pagerEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger; // TODO: check kvPhotoArr\r\n let tResult = result as unknown;\r\n this.pagerVKvPhotoNav = tResult as PagerPhotoMgmt;\r\n\r\n // this should call the following method regarless:\r\n // ---------------------------------------------------------\r\n this.pagerVKvPhotoNav.kvPhotoArr = this.photoAndPrimaryPhotoMgmtService.prefixUrlToKvPhotoArrForDisplay(this.pagerVKvPhotoNav.kvPhotoArr);\r\n this.pagerVKvPhotoNav.pagedItems = this.photoAndPrimaryPhotoMgmtService.prefixUrlToKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems);\r\n this.displayProfileService.executeProfileImagesTasks(this.pagerVKvPhotoNav.pagedItems).subscribe(data => {\r\n this.pagerVKvPhotoNav = data;\r\n });\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.pagerVKvPhotoNav.currentItem);\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n\r\n this.pagerVKvPhotoNav.currentItem = this.bias.setupKvPhotoIfPrimaryOrPrivate(this.pagerVKvPhotoNav.currentItem);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n this.pagerVKvPhotoNav.currentItem = this.bias.displayBackgroundAndNavImageForKvPhoto(this.pagerVKvPhotoNav.currentItem, this.pagerVKvPhotoNav);\r\n\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.pagerVKvPhotoNav.currentItem);\r\n }\r\n this.ngAfterViewInit();\r\n // debugger;\r\n });\r\n // ------------------------------------------------------------------------- \r\n EmitterSubjectService.pageSizeEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger; \r\n this.pageSize = result as number;\r\n this.currentItemKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n this.currentPageNum = EmitterSubjectService.getCurrentPage().pageNum;\r\n // get initial pager which willbe used to \r\n this.pagerVKvPhotoNav = this.abstractPagerVPhotoNavService.getPagerForVKvPhotoNav(this.kvPhotoArr, this.currentPageNum, this.pageSize);\r\n\r\n if (this.currentItemKvPhoto.pageNum === this.currentPageNum) {\r\n // Note: the following line must be run right after the previous line/method: getPagerForVKvPhotoNav() !!\r\n this.pagerVKvPhotoNav = this.abstractPagerVPhotoNavService.setupPagerVKvPhotoNav(this.kvPhotoArr, this.currentItemKvPhoto);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)) {\r\n // debugger;\r\n this.abstractPagerVPhotoNavService.executePagerVKvPhotoNavTasks(this.pagerVKvPhotoNav).then(data => {\r\n this.pagerVKvPhotoNav = data;\r\n this.pagerVKvPhotoNav.pagedItems = this.abstractPagerVPhotoNavService.prepareKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems);\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.isViewMemberEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(result => {\r\n // debugger;\r\n // this.isViewMember = result as boolean;\r\n // this.mcLoader.componentName = \"memberViewMgmt\";\r\n // // since this listener is independent of isPhotoMgmtEmitter,\r\n // // this should call the following method regardless:\r\n // // ---------------------------------------------------------\r\n // // this.pagerVKvPhotoNav.pagedItems = this.pagerVKvPhotoNavService.prepareKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems, this.isStripUrl);\r\n // this.pagerVKvPhotoNav.kvPhotoArr = this.photoAndPrimaryPhotoMgmtService.prefixUrlToKvPhotoArrForDisplay(this.pagerVKvPhotoNav.kvPhotoArr);\r\n // this.pagerVKvPhotoNav.pagedItems = this.photoAndPrimaryPhotoMgmtService.prefixUrlToKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems);\r\n // // this.displayGlyphiconMenuOnLeft(this.pagerVKvPhotoNav);\r\n // // debugger;\r\n // });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.clearPagerPhotoNavDataEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n debugger;\r\n\r\n // -------------------------------------------------//\r\n // Back-to-Back-memberView-pges-recognition-system: //\r\n // -------------------------------------------------// \r\n if (this.redirectionService.isSignedInUserPagesBackToBack()) {\r\n // debugger;\r\n ; //do nothing \r\n }\r\n else {\r\n // debugger;\r\n this.myPagerVPhotoNavService.clearPagerVKvPhotoNavService();\r\n }\r\n });\r\n // ===========================================================================\r\n // Emitter for 'app-pager-vertical-glyph-for-photo-mgmt'\r\n // ---------------------------------------------------------\r\n // Note: This listener receives pagerVKvPhotoNav Model,\r\n // and assignes its properties to the vertical-menus'\r\n // properties, and triggers the changeDetection,\r\n // which causes the child-vertical-menu-components\r\n // to update the views accordingly.\r\n // \r\n // When this pageVKvPhotoNav arrives, it assumes all of\r\n // it's pagedItems images are ready to be rendered.!!\r\n // ---------------------------------------------------------\r\n EmitterSubjectService.displayPagerVKvPhotoNavEmitter\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n this.pagerVKvPhotoNav = data as PagerPhotoMgmt;\r\n\r\n\r\n // since server-sent data arrives late, the user may have moved on to other page.\r\n // in that case we do not want to display the background image of the selected-member, \r\n // instead we may want to display the signedInUserImage instead.\r\n // that is why the 'isCurrentUrlAProfilePage' method is used to check whether we are \r\n // still on the profile-page/memberViewMgmt/mhyPhotos page or not.\r\n // -----------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)\r\n && this.redirectionService.isCurrentUrlAProfilePage()) {\r\n // debugger;\r\n \r\n this.pagerVKvPhotoNav.currentItem = this.bias.setupKvPhotoIfPrimaryOrPrivate(this.pagerVKvPhotoNav.currentItem);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n this.pagerVKvPhotoNav.currentItem = this.bias.displayBackgroundAndNavImageForKvPhoto(this.pagerVKvPhotoNav.currentItem, this.pagerVKvPhotoNav);\r\n // debugger;\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.pagerVKvPhotoNav.currentItem);\r\n }\r\n }\r\n this.ngAfterViewInit();\r\n }\r\n });\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.selectedProfileTileEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result : any) => {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n this.profileTile = JSON.parse(JSON.stringify(result));\r\n let kvPhoto = CopyServiceStatic.copyFromProfileTileToKvPhoto(result);\r\n kvPhoto = this.bias.setupKvPhotoIfPrimaryOrPrivate(kvPhoto);\r\n this.bias.updateBackgroundImageOutsideAngular(kvPhoto.value);\r\n if (kvPhoto.elemId.indexOf('bodyId') === -1 && kvPhoto.elemId.indexOf('pagerVKvPhotoNav') !== -1) {\r\n this.bias.updateBackgroundImageOutsideAngularById(kvPhoto.elemId, kvPhoto.value);\r\n }\r\n debugger;\r\n this.ngAfterViewInit();\r\n }\r\n }\r\n });\r\n // --------------------------------------------------------------\r\n // this should call the following method regarless:\r\n // --------------------------------------------------------------\r\n this.isStripUrl = false; \r\n \r\n DomUtilsServiceStatic.setDomUtilsElementRef(this.elementRef);\r\n } \r\n // ---------------------------------------------------------------\r\n ngAfterViewInit () : void {\r\n // debugger;\r\n this.cdr.detectChanges(); \r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.clearPagerVKvPhotoNavData();\r\n }\r\n // ====================================================================\r\n // --------------------------------------------------------------------\r\n // Begin of API:\r\n // --------------------------------------------------------------------\r\n // ====================================================================\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public clearPagerVKvPhotoNavData () : any {\r\n // debugger;\r\n this.kvPhotoArr = [];\r\n this.sitUser = new SitUser();\r\n this.pagerVKvPhotoNav = new PagerPhotoMgmt();\r\n // Note : memberView does not inject this service, so we are clearing the data from here:\r\n (this.myPagerVPhotoNavService as MyPagerVPhotoNavService).clearPagerVKvPhotoNavService();\r\n // debugger;\r\n return true;\r\n }\r\n\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getKvPhotoUrl (kvPhoto : KvPhoto) : any {\r\n return this.myPagerVPhotoNavService.getKvPhotoUrl(kvPhoto);\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getKvPhotoWithoutUrl (kvPhoto : KvPhoto) : any {\r\n return this.myPagerVPhotoNavService.getKvPhotoWithoutUrl(kvPhoto);\r\n } \r\n \r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public setPagerVerticalPhotoNav (value : PagerPhotoMgmt) : void {\r\n this.pagerVKvPhotoNav = value;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // ------------------------------------------------------------\r\n public isInPagedItems (kvPhoto : KvPhoto) : boolean {\r\n return this.myPagerVPhotoNavService.isInPagedItems(kvPhoto, this.pagerVKvPhotoNav);\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvFileWithUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n return this.myPagerVPhotoNavService.getIsKvFileWithUrl(kvPhoto);\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvFileWithoutUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n return this.myPagerVPhotoNavService.getIsKvFileWithoutUrl(kvPhoto);\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvDataWithUrl (kvPhoto : KvPhoto) : boolean {\r\n return this.myPagerVPhotoNavService.getIsKvDataWithUrl(kvPhoto);\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvDataWithoutUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n return this.myPagerVPhotoNavService.getIsKvDataWithoutUrl(kvPhoto);\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public isNextOrLastPage () : boolean {\r\n return this.myPagerVPhotoNavService.isNextOrLastPage(this.pagerVKvPhotoNav);\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public isPreviousOrFirstPage () : boolean {\r\n return this.myPagerVPhotoNavService.isPreviousOrFirstPage(this.pagerVKvPhotoNav);\r\n }\r\n \r\n // --------------------------------------------------------------------\r\n // API:\r\n // Note: This should be called when a pager is needed for a pageNum.\r\n // --------------------------------------------------------------------\r\n public setPage (page : string) : any {\r\n // debugger;\r\n this.currentPageNum = this.myPagerVPhotoNavService.setPageAndGetCurrentPageNum(page, this.pagerVKvPhotoNav);\r\n \r\n // debugger;\r\n // First get the default pager for page#1:\r\n // ---------------------------------------\r\n let tPagerVKvPhotoNav = this.pagerPhotoMgmtService.getBasicPagerDynamic(this.pagerVKvPhotoNav.kvPhotoArr, this.currentPageNum, this.pageSize);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPagerVKvPhotoNav.pagedItems)\r\n && tPagerVKvPhotoNav.pagedItems.length > 0) {\r\n // debugger;\r\n this.pagerVKvPhotoNav = tPagerVKvPhotoNav;\r\n\r\n // this.pagerVKvPhotoNav.pagedItems = this.pagerVKvPhotoNavService.prepareKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems, this.isStripUrl);\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.currentItemKvPhoto); // will display photo primary/private/public glyphs\r\n }\r\n\r\n this.currentItemKvPhoto = this.bias.setupKvPhotoIfPrimaryOrPrivate(this.currentItemKvPhoto);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n this.currentItemKvPhoto = this.bias.displayBackgroundAndNavImageForKvPhoto(this.currentItemKvPhoto, this.pagerVKvPhotoNav);\r\n\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.currentItemKvPhoto);\r\n }\r\n }\r\n this.ngAfterViewInit(); \r\n return this.pagerVKvPhotoNav;\r\n }\r\n\r\n // --------------------------------------------------------------------\r\n // API:\r\n // Note : View calls this method.\r\n // Stable and works; on 20220429 & 20220514 & 20220622 & 20230108\r\n // --------------------------------------------------------------------\r\n public setPhotoNavItem (item : KvPhoto) : void {\r\n // debugger;\r\n this.myPagerVPhotoNavService.setPhotoNavItemBase(item, this.pagerVKvPhotoNav).subscribe(data => {\r\n this.pagerVKvPhotoNav = data;\r\n // NO need to display glyphicon because it is for non-signedInUser:\r\n this.pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n\r\n // raw-image-data-case\r\n if (e.value.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n // debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageData(e.value); //will be without url\r\n }\r\n // file-name-case\r\n else if (e.value.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n // debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageFileNameWithoutUrl(e.value);\r\n }\r\n this.bias.setKvPhotoBackgroundImage(item); \r\n if (e.privacy.toLocaleLowerCase().indexOf('private') !== -1) {\r\n e.isPrivate = true;\r\n if (!this.isUnlocked) {\r\n e.value = 'assets/photos/private.png';\r\n }\r\n }\r\n else e.isPrivate = false;\r\n this.ngAfterViewInit();\r\n // debugger;\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, item);\r\n })\r\n }); \r\n }\r\n // ====================================================================\r\n // --------------------------------------------------------------------\r\n // End of API:\r\n // --------------------------------------------------------------------\r\n // ====================================================================\r\n\r\n // ---------------------------------------------------------------------------------\r\n private rotateArrowGlyphOfIdPrefix (idPrefix : string) : void {\r\n if (this.kvPhotoArr.length > 10) { this.glyphiconMenuService.rotateArrowGlyphiconOfIdPrefix(idPrefix); }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ---------------------------------------------------------------------------------\r\n \r\n}\r\n","\r\n \r\n\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
  • \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n
  • \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef,\r\n Component, Inject, Input, OnDestroy, OnInit\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { Photo } from '../../../models/common/photo.model';\r\nimport { PhotoMgmtAction } from '../../../models/common/photoMgmtAction.model';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { MemberActivity } from '../../../models/member/memberActivity.model';\r\nimport { PagerMemberActivity } from '../../../models/pagination/pagerMemberActivity.model';\r\nimport { GlyphiconMenuService } from '../../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { GlyphiconServiceService } from '../../../services/GlyphiconService/glyphiconServiceService.service';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { SitUserService } from '../../../services/commonServiceService/sitUserService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { ActivityService } from '../../../services/memberServiceService/activityService.service';\r\nimport { MemberService } from '../../../services/memberServiceService/memberService.service';\r\nimport { MemberServiceService } from '../../../services/memberServiceService/memberServiceService.service';\r\nimport { PagerPhotoMgmtService } from '../../../services/pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerServiceService } from '../../../services/pagerServiceService/pagerServiceService.service';\r\nimport { PagerSupportService } from '../../../services/pagerServiceService/pagerSupportService.service';\r\nimport { PhotoAndPrimaryPhotoMgmtService } from '../../../services/photoServiceService/photoAndPrimaryPhotoMgmtService.service';\r\nimport { PhotoServiceService } from '../../../services/photoServiceService/photoServiceService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { CopyServiceStatic } from '../../../services/staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n// --------------------------------------------------------------------------------------\r\n// This PagerVerticalGlyphForPhotoMgmtComponent should NOT be concerned with any other\r\n// PagerVertical...Components, such as\r\n// 1) PagerVerticalGlyphForViewMemberComponent or\r\n// 2) PagerVerticalKvPhotoNavomponent\r\n// --------------------------------------------------------------------------------------\r\n// Note : pagerVerticle glyphicon-menu-system serve navigation/actions for two scenarios:\r\n// 1. memberView path during viewing any member.\r\n// Under this option the all but signedInMember can:\r\n// 1.1 Select memberActicities which are\r\n// {block, dislike, like, lock, star, track, unblock, unlock, unstar}\r\n// 1.2 Can start a chat conversation with the viewee or\r\n// 1.3 Send email notification to the viewee.\r\n// 1.4 Send notification to the viewee.\r\n// p.s the above is no longer effective since MemmberView is split into two:\r\n// p.s.1: MemberViewPhotoMgmt for non-signed-in-user\r\n// p.s.2: myMemberViewPhotoMgmt for signed-in-user\r\n// \r\n// 2. myPhotoMgmt path when signedInUser chooses to add/update personal photos.\r\n// Under this option the signedInUser can:\r\n// 2.1 Take new pics or upload new pics\r\n// 2.2 Change the privacy of any pic\r\n// 2.3 Make current PrimaryPic a private pic in whihc case it will not longer be a primary pic\r\n// 2.4 Make any pic the PrimaryPic. PrimaryPic is always public.\r\n// ---------------------------------------------------\r\n// Note : The View does not require to programatically draw the images,\r\n// just setting the glyph / image name will suffice\r\n// -------------------------------------------------------------------------------------------------------\r\n\r\n@Component({\r\n selector: 'app-pager-vertical-glyph-for-photo-mgmt',\r\n templateUrl: './pagerVerticalGlyphForPhotoMgmt.component.html',\r\n styleUrls: ['./pagerVerticalGlyphForPhotoMgmt.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush, // default\r\n\r\n animations: [ Animations, slideInOutAnimation ],\r\n\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class PagerVerticalGlyphForPhotoMgmtComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public bias! : BackgroundImageAnimationService;\r\n public glyphiconMenuService!: GlyphiconMenuService;\r\n public activityService! : ActivityService;\r\n public memberService! : MemberService;\r\n public pagerPhotoMgmtService! : PagerPhotoMgmtService;\r\n public photoAndPrimaryPhotoMgmtService! : PhotoAndPrimaryPhotoMgmtService;\r\n public sitUserService! : SitUserService;\r\n public pagerSupportService! : PagerSupportService;\r\n // -----------------------------------------------\r\n public accrdTitle = '';\r\n public breadcrumRing: ModuleComponentLoader[] = [];\r\n public currentKvPhoto : KvPhoto = new KvPhoto();\r\n public currentPage : any;\r\n @Input() currentPageGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public currentPhoto : Photo = new Photo();\r\n\r\n public emitterDestroyed$ : Subject = new Subject();\r\n // ----------------------------------------------------------\r\n public isCameraVisible = true;\r\n public isCurrentlyLocked = false;\r\n public isGlypActionCamera = false;\r\n public isMobilevar = false;\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isShowPhotoUploadUi : Bool = new Bool();\r\n public isToggleFileUpload = false;\r\n @Input() kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n public memberActivity: MemberActivity = new MemberActivity();\r\n private opened = false;\r\n @Input() pagerVMemActGlyphForPhotoMgmt : PagerMemberActivity = new PagerMemberActivity(); // for primary/private/public photo selection by signedInUser\r\n public photoMgmtAction: PhotoMgmtAction = new PhotoMgmtAction();\r\n public returnUrl = '';\r\n public signedInUserId = 0;\r\n @Input() sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n public toggleCameraGlyphCounter = 0;\r\n // public type = require( 'type-detect' );\r\n // ----------------------------------------------------------\r\n constructor (\r\n private router : Router,\r\n private cdr : ChangeDetectorRef,\r\n private commonServiceService : CommonServiceService,\r\n private coreServiceService : CoreServiceService,\r\n private glyphiconServiceService : GlyphiconServiceService,\r\n private memberServiceService : MemberServiceService,\r\n private rendererServiceService: RendererServiceService,\r\n private pagerServiceService : PagerServiceService,\r\n private photoServiceService: PhotoServiceService,\r\n @Inject(Document) document : any )\r\n {\r\n if ( this.commonServiceService )\r\n {\r\n this.sitUserService = this.commonServiceService.getSitUserService() as SitUserService;\r\n }\r\n\r\n if ( this.memberServiceService )\r\n {\r\n this.activityService = this.memberServiceService.getActivityService();\r\n }\r\n\r\n if (this.rendererServiceService) {\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n }\r\n this.glyphiconMenuService = this.glyphiconServiceService.getGlyphiconMenuService() as GlyphiconMenuService;\r\n if ( this.pagerServiceService )\r\n {\r\n \r\n this.pagerPhotoMgmtService = this.pagerServiceService.getPagerPhotoMgmtService();\r\n this.pagerSupportService = this.pagerServiceService.getPagerSupportService();\r\n }\r\n if (photoServiceService) this.photoAndPrimaryPhotoMgmtService = this.photoServiceService.getPhotoAndPrimaryPhotoMgmtService();\r\n\r\n this.isMobilevar = EmitterSubjectService.getIsMobile() as boolean;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // debugger;\r\n }\r\n // ----------------------------------------------------------\r\n ngOnInit () : void\r\n {\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // debugger;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n \r\n // debugger;\r\n if ((FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyphForPhotoMgmt)\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyphForPhotoMgmt.kvMemActGlyphArrForPhotoMgmt))\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForPhotoMgmt)\r\n && this.kvMemActGlyphArrForPhotoMgmt.length > 0) {\r\n debugger;\r\n this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvMemActGlyphArrForPhotoMgmt, 1);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyphForPhotoMgmt) && this.pagerVMemActGlyphForPhotoMgmt.pagedItems.length > 0) {\r\n this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemActGlyphForPhotoMgmt.pagedKvGlyphItems, this.pagerVMemActGlyphForPhotoMgmt.currentKvGlyphItem, \"pagerVGlyphMgmt-\");\r\n }\r\n // ----------------------------------------------------------\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe(result => {\r\n this.loginSuccess = result;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.signedInUser = EmitterSubjectService.getSignedInUser(); // this.sitUserService.getSingedInSitUser();\r\n // debugger;\r\n }); \r\n // ---------------------------------------------------\r\n // Note: Old description of a situation that might not be applicable anymore.\r\n // Note : to achieve this simple objective of clearing all glyphicons from the dynamyc-graphicon-menu,\r\n // it requires these following to be complied:\r\n // 1. have the ChangeDetection run in here at the PagerVerticalComponent.\r\n // 2. have the ChangeDetection run at the AppComponent.ts which the PagerVerticalComponent.ts is the child of,\r\n // 3. have the component which wants to clear the glyphicon menu such as the LandingPageComponent.ts,\r\n // emit a message to crear the glyphicon menu.\r\n // ---------------------------------------------------\r\n EmitterSubjectService.clearGlyphiconMenuEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( data =>\r\n {\r\n // debugger;\r\n // this.executeClearGlyphAction();\r\n });\r\n // ----------------------------------------------------------\r\n EmitterSubjectService.displayPhotoMgmtGlyphiconMenuEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( data =>\r\n {\r\n // TODO: check the steps: tested and works:\r\n // ----------------------------------------\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0) {\r\n this.kvMemActGlyphArrForPhotoMgmt = data;\r\n // Note : The View does not require to programatically draw the images,\r\n // just setting the glyph/image name will suffice\r\n debugger;\r\n this.glyphiconMenuService.executeGlyphMenuArr(this.kvMemActGlyphArrForPhotoMgmt);\r\n\r\n this.currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto)) {\r\n if (this.currentKvPhoto.pageNum <= 0) {\r\n if (this.currentKvPhoto.index >= 0) {\r\n this.currentKvPhoto.pageNum = this.currentKvPhoto.index + 1;\r\n }\r\n else if (this.currentKvPhoto.itemNum >= 0) {\r\n this.currentKvPhoto.pageNum = this.currentKvPhoto.itemNum + 1;\r\n }\r\n }\r\n this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvMemActGlyphArrForPhotoMgmt, this.currentKvPhoto.pageNum);\r\n }\r\n else {\r\n this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvMemActGlyphArrForPhotoMgmt, 1);\r\n }\r\n debugger;\r\n this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemActGlyphForPhotoMgmt.kvMemActGlyphArrForPhotoMgmt, this.pagerVMemActGlyphForPhotoMgmt.currentKvGlyphItem, \"pagerVGlyphMgmt-\");\r\n\r\n this.ngAfterViewInit();\r\n }\r\n } );\r\n // -------------------------------------------------------------------------\r\n // Note: Date: 20220508\r\n // isCameraVisibleEmitter && isCameraGlypgVisibleEmitter work as a pair / tuple\r\n // emitters that alters the isCameraVisible' value.\r\n // the isCameraGlypgVisibleEmitter is emitted by FileUploadComponent and listened to by PagerVerticalPhotoMgmtComponent\r\n // and isCameraVisibleEmitter is emitter by PagerVerticalPhotoMgmtComponent and listened to by FileUploadComponent\r\n // so that there is no cyclic published and subscriber.\r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.isCameraGlyphVisibleEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((result) => {\r\n // debugger;\r\n // this.isCameraVisible = result as boolean;\r\n // this.ngAfterViewInit();\r\n // }); \r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.isToggleFileUploadEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((result) => {\r\n // // debugger;\r\n \r\n // this.isToggleFileUpload = result as boolean;\r\n // this.ngAfterViewInit();\r\n // });\r\n \r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.toggleCameraGlyphEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.toggleCameraGlyphCounter = result as number;\r\n let modValue = this.toggleCameraGlyphCounter % 2 === 0 ? 0 : 1;\r\n switch (this.toggleCameraGlyphCounter) {\r\n case modValue:\r\n if (modValue === 1) {\r\n // debugger;\r\n if (this.isGlypActionCamera) {\r\n this.isCameraVisible = this.isCameraVisible;\r\n this.toggleCameraGlyphCounter = 0;\r\n this.isGlypActionCamera = false;\r\n }\r\n else {\r\n this.isCameraVisible = !this.isCameraVisible;\r\n this.toggleCameraGlyphCounter = 0; \r\n }\r\n }\r\n else if(modValue === 0) {\r\n debugger;\r\n // this.isCameraVisible = !this.isCameraVisible;\r\n // this.toggleCameraGlyphCounter = 0;\r\n if (this.isGlypActionCamera) {\r\n this.isCameraVisible = this.isCameraVisible;\r\n this.toggleCameraGlyphCounter = 0;\r\n this.isGlypActionCamera = false;\r\n }\r\n else {\r\n this.isCameraVisible = !this.isCameraVisible;\r\n this.toggleCameraGlyphCounter = 0;\r\n }\r\n } \r\n break;\r\n\r\n default:\r\n // debugger;\r\n this.isCameraVisible = !this.isCameraVisible;\r\n this.toggleCameraGlyphCounter = 0;\r\n break;\r\n }\r\n\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n // Note: Should be related to PrimaryKvPhoto & regular KvPhoto based glyphs:\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isPhotoMgmtEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe(result => {\r\n // debugger;\r\n this.isPhotoMgmt = result;\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n this.ngAfterViewInit();\r\n // debugger;\r\n });\r\n \r\n // ---------------------------------------------------\r\n // Note: tried using 'type-def' lib;\r\n // but got error.\r\n // ref:https://www.npmjs.com/package/type-detect\r\n // ---------------------------------------------------\r\n EmitterSubjectService.currentMemActGlyphForPhotoMgmtEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n debugger;\r\n if (typeof result === 'number' && result > 0) {\r\n // debugger;\r\n this.currentPageGlyph.pageNum = result;\r\n this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setKvGlyphPager(result);\r\n }\r\n else if (result instanceof KvMemberActivityGlyph) {\r\n debugger;\r\n this.currentPageGlyph = result;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.currentPage.kvPhoto); // will display photo primary/private/public glyphs \r\n this.ngAfterViewInit();\r\n }\r\n // TODO: delete before deployment:\r\n // -------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPage.kvPhoto) && this.currentPage.kvPhoto.sitUserId > 0) {\r\n // // debugger;\r\n // this.pagerVKvPhotoNav = this.photoMgmtService.executePagerVKvPhotoNavKvPhotoTasks(this.currentPage.kvPhoto);\r\n // }\r\n // this.glyphiconMenuService.getPrimaryImageGlyphMenuArrAndHighlightPrimaryImage(this.currentPage.kvPhoto);\r\n // this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVKvPhotoNav.pagedItems, this.pagerVKvPhotoNav.currentItemKvGlyph, \"pagerVGlyphMgmt-\");\r\n \r\n \r\n // debugger;\r\n \r\n\r\n // let currentItemKvGlyph = CopyServiceStatic.copyFromKvPhotoToKvGlyph(this.currentKvPhoto);\r\n\r\n // let pageNum = this.currentKvPhoto.pageNum > 0 ? this.currentKvPhoto.pageNum\r\n // : this.currentKvPhoto.itemNum >= 0 ? this.currentKvPhoto.itemNum + 1\r\n // : this.currentKvPhoto.index >= 0 ? this.currentKvPhoto.index + 1\r\n // : 1;\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.kvPhotoArr)\r\n // && this.pagerVKvPhotoNav.kvPhotoArr.length > 0) {\r\n // this.pagerVKvPhotoNav = this.pagerServicePhotoMgmt.getPager(this.pagerVKvPhotoNav.kvPhotoArr, pageNum, this.pagerVKvPhotoNav.pageSize);\r\n //}\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForPhotoMgmt)\r\n // && this.kvMemActGlyphArrForPhotoMgmt.length > 0) {\r\n // debugger;\r\n // // let currentItemKvGlyphs = this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvPhoto(this.currentPage.kvPhoto);\r\n // // this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.currentKvPhoto);\r\n // // this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.kvMemActGlyphArrForPhotoMgmt, currentItemKvGlyph, \"pagerVGlyphMgmt-\");\r\n // // this.kvMemberActivityGlyphArr = this.glyphiconMenuService.getPrimaryImageGlyphMenuArrAndHighlightPrimaryImage(this.pagerVKvPhotoNav.pagedItems); // will highlight primaryImage if exists\r\n //}\r\n \r\n \r\n\r\n // this actually displays the pagerVerticalGlyphForPhotoMgmt:\r\n // --------------------------------------------------------\r\n this.currentKvPhoto = JSON.parse(JSON.stringify(result));\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto)) {\r\n debugger;\r\n this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvPhoto(this.currentKvPhoto);\r\n\r\n if (this.currentKvPhoto.pageNum > 0) {\r\n // debugger;\r\n // TODO: delete after testing/before deployment:\r\n // ---------------------------------------------\r\n this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setKvGlyphPager(this.currentKvPhoto.pageNum);\r\n this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemActGlyphForPhotoMgmt.kvGlyphArr, CopyServiceStatic.copyFromKvPhotoToKvGlyph( this.pagerVMemActGlyphForPhotoMgmt.currentItem), \"pagerVGlyphMgmt-\");\r\n\r\n this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.getPagerVMemActGlyphMenuForPhotoMgmt(this.currentKvPhoto);\r\n // this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemberActivityForPhotoMgmt.pagedItems, this.pagerVMemberActivityForPhotoMgmt.currentItemKvGlyph, \"pagerVGlyphMgmt-\");\r\n this.bias.addPrimaryOrOtherClassToKvPhotoElement(this.currentKvPhoto);\r\n // this.pagerVPhotoMgmt = this.pagerServicePhotoMgmt.getPager(this.kvPhotoArr, this.currentKvPhoto.pageNum, this.pagerVPhotoMgmt.pageSize);\r\n }\r\n }\r\n });\r\n \r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.runNgAfterViewInitEmitter\r\n .subscribe(result => {\r\n // debugger;\r\n this.ngAfterViewInit();\r\n } );\r\n \r\n // --------------------------------------------------------------------------\r\n debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n // this.cdr.detectChanges();\r\n }\r\n // debugger; \r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit(): void {\r\n // this.pagerV = this.getPagerVForCurrentPage();\r\n this.isCurrentlyLockedGlyphMsg();\r\n this.cdr.detectChanges();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n // (2) https:// www.concretepage.com/angular-2/angular-4-renderer2-example\r\n // (3) https:// stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n // (4) https:// stackblitz.com/edit/timer-with-pdestroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.executeClearGlyphAction();\r\n this.toggleCameraGlyphCounter = 0;\r\n this.isGlypActionCamera = false;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n executeClearGlyphAction(): any {\r\n this.kvMemActGlyphArrForPhotoMgmt = [];\r\n this.glyphiconMenuService.setGlyphs(this.kvMemActGlyphArrForPhotoMgmt );\r\n this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setKvGlyphPager( 1 );\r\n this.pagerVMemActGlyphForPhotoMgmt.isPhotoMgmt = false;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyphForPhotoMgmt)) {\r\n this.pagerVMemActGlyphForPhotoMgmt.kvGlyphArr = this.pagerVMemActGlyphForPhotoMgmt.pagedItems = [];\r\n // debugger;\r\n }\r\n this.ngAfterViewInit();\r\n // debugger;\r\n return true;\r\n }\r\n \r\n // ---------------------------------------------------------------------------------\r\n // Note : When 'currnt-state-of-PRIVATE-pics' are 'unlocked', current glyph image is\r\n // 'lock.png' (KvGlyph.value = 'lock.png'), because that is what the user intends to do.\r\n //\r\n // The user can only toggle the locked state to unlocked state or vice versa.\r\n //\r\n // Therefore, the KvGlyph.value = 'lock.png', the info under the glyph is\r\n // KvGlyph.key = 'tala', which is what the user intends to do.\r\n //\r\n // Therefore, in the case of (KvGlyph.value = 'lock.png'), 'isCurrentlyLocked'==false,\r\n // because 'currnt-state-of-PRIVATE-pics' are 'unlocked'.\r\n // ---------------------------------------------------------------------------------\r\n isCurrentlyLockedGlyphMsg () : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForPhotoMgmt) && this.kvMemActGlyphArrForPhotoMgmt.length > 0) {\r\n const isUnlocked = EmitterSubjectService.getIsUnlocked();\r\n if (isUnlocked) { this.isCurrentlyLocked = false; }\r\n else { this.isCurrentlyLocked = true; }\r\n return this.isCurrentlyLocked;\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n stateName(): any {\r\n return this.opened ? 'show' : 'hide';\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n setGlyphAction( page: number, kvg: KvMemberActivityGlyph ): void {\r\n debugger;\r\n let tPath: any;\r\n this.returnUrl = window.location.pathname + window.location.search;\r\n\r\n // --------------------------------------------------------------------------------\r\n // pagerPhotoMgmt on the left-hand-side will display the\r\n // currently-selected-photo-specific glyphicons menues( primary/make (primary if not, private/public).\r\n // And the pagerVarticalPhotoNav will display the user's all photo-buttons on the right-hand-side.\r\n // the currelty-selected-photo will have a deepskyblue circular hue on it to distiguish other pics.\r\n // So, we get hold of the currentKvPhoto from the pagerPhotoMgmt.currentPhoto\r\n // --------------------------------------------------------------------------------\r\n\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( kvg ) )\r\n {\r\n if (page > 0) {\r\n this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setKvGlyphPager(page);\r\n }\r\n // debugger;\r\n let compName = kvg?.key?.toString()?.toLowerCase();\r\n switch ( compName )\r\n {\r\n case 'camera':\r\n // debugger;\r\n this.isGlypActionCamera = true;\r\n this.isCameraVisible = !this.isCameraVisible;\r\n this.toggleCameraGlyphCounter++;\r\n\r\n this.isShowPhotoUploadUi.isOpened = !this.isShowPhotoUploadUi.isOpened;\r\n EmitterSubjectService.emitIsShowPhotoUpload(this.isShowPhotoUploadUi.isOpened)\r\n // EmitterSubjectService.emitToggleCameraGlyph(this.toggleCameraGlyphCounter);\r\n // -------------------------------------------------------------------------\r\n // Note: Date: 20220508\r\n // isCameraVisibleEmitter && isCameraGlypgVisibleEmitter work as a pair / tuple\r\n // emitters that alters the isCameraVisible' value.\r\n // the isCameraGlypgVisibleEmitter is emitted by FileUploadComponent and listened to by PagerVerticalPhotoMgmtComponent\r\n // and isCameraVisibleEmitter is emitter by PagerVerticalPhotoMgmtComponent and listened to by FileUploadComponent\r\n // so that there is no cyclic published and subscriber.\r\n // -------------------------------------------------------------------------\r\n // this.isShowPhotoUploadUi.isOpened = !this.isShowPhotoUploadUi.isOpened;\r\n // -------------------------------------------------------------------------------------------------------------------------\r\n // camera-glyph-button should be always visible and it toggles ImageUploadComponent via isToggleFileUpload.\r\n // because camera-glyph-button is always visible, clicking cancel-button on ImageUploadComponent does not effect the visibility of camera-glyph-button; \r\n // however, camera-glyph-button is clicked, it will toggle (show/hide) the ImageUploadComponent.\r\n // -------------------------------------------------------------------------------------------------------------------------\r\n EmitterSubjectService.emitIsToggleFileUpload(this.isToggleFileUpload );\r\n // EmitterSubjectService.emitIsPhotoMgmt(true);\r\n // EmitterSubjectService.emitIsViewMember(false);\r\n this.ngAfterViewInit();\r\n break;\r\n case 'primary': \r\n debugger;\r\n\r\n // note: photo status change does not require a nre page launch, but may need to update the memberView page's data upon successful action.\r\n // EmitterSubjectService.emitIsPhotoMgmt( true );\r\n this.photoMgmtAction = new PhotoMgmtAction();\r\n this.photoMgmtAction.action = kvg.key;\r\n this.photoMgmtAction.photoId = kvg.photoId > 0 ? kvg.photoId : this.currentKvPhoto.photoId;\r\n this.photoMgmtAction.sitUserId = kvg.sitUserId;\r\n let tPhotoBn = null;\r\n \r\n this.photoAndPrimaryPhotoMgmtService.sendPhotoMgmtAction(this.photoMgmtAction);// .subscribe( data =>\r\n //{\r\n // // debugger;\r\n // let photo = new Photo();\r\n // photo = CopyServiceStatic.copyFromPhotoBnToClientPhoto( photo, data );\r\n\r\n // this.photoAndPrimaryPhotoMgmtService.executePhotoMgmtPrimaryAction();\r\n\r\n // let kvPhoto = CopyServiceStatic.copyFromPhotoToKvPhoto( photo );\r\n // if ( kvPhoto instanceof KvPhoto )\r\n // {\r\n // // debugger;\r\n // this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.getPagerVMemActGlyphMenuForPhotoMgmt(kvPhoto);\r\n // // TODO: create an emitter for this:\r\n // // this.pagerVKvPhotoNav = this.photoMgmtService.executePagerVKvPhotoNavKvPhotoTasks(kvPhoto);\r\n // }\r\n //});\r\n this.ngAfterViewInit();\r\n break;\r\n case 'private': case 'public':\r\n debugger;\r\n // note: photo status change does not require a nre page launch, but may need to update the memberView page's data upon successful action.\r\n // EmitterSubjectService.emitIsPhotoMgmt( true );\r\n this.photoMgmtAction = new PhotoMgmtAction();\r\n this.photoMgmtAction.action = kvg.key;\r\n this.photoMgmtAction.photoId = kvg.photoId > 0 ? kvg.photoId : this.currentKvPhoto.photoId;\r\n this.photoMgmtAction.sitUserId = kvg.sitUserId;\r\n tPhotoBn = null;\r\n\r\n this.photoAndPrimaryPhotoMgmtService.sendPhotoMgmtAction(this.photoMgmtAction); //.subscribe( data =>\r\n //{\r\n // // debugger;\r\n // let photo = new Photo();\r\n // photo = CopyServiceStatic.copyFromPhotoBnToClientPhoto( photo, data );\r\n // let tProfilePics: any;\r\n // let kvPhoto = CopyServiceStatic.copyFromPhotoToKvPhoto(photo); \r\n \r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && kvPhoto instanceof KvPhoto )\r\n // {\r\n // this.photoAndPrimaryPhotoMgmtService.executeOnNonPrimaryPhotoMgmtAction(kvPhoto).subscribe(result => {\r\n // tProfilePics = result;\r\n // });\r\n // // debugger;\r\n // this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.getPagerVMemActGlyphMenuForPhotoMgmt(kvPhoto);\r\n // // TODO: create an emitter for this:\r\n // //this.pagerVKvPhotoNav = this.photoMgmtService.executePagerVKvPhotoNavKvPhotoTasks(kvPhoto);\r\n // }\r\n //});\r\n this.ngAfterViewInit();\r\n break; \r\n default:\r\n // debugger;\r\n // this.mcLoader.componentName = 'index';\r\n // this.mcLoader.moduleName = 'app';\r\n // this.mcLoader.sitUserId = this.sitUser.sitUserId;\r\n\r\n //this.pagerBrdCrm = RedirectionServiceStatic.fireMcLoaderRoute( this.mcLoader, this.router );\r\n break;\r\n }\r\n // debugger;\r\n }\r\n }\r\n}\r\n// ================================================================\r\n // ---------------------------------------------------------------\r\n // ngOnChanges(changes : SimpleChanges) {\r\n // //only run when property 'data' changed\r\n // if (changes['images']) {\r\n // //debugger;\r\n // this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n // if (this.glyphKvArr.length > 0) { this.pagerV = (this.pagerServiceV as PagerServiceVertical).setPage(1);\r\n // }\r\n // this.cdr.detectChanges();\r\n // }\r\n // -------------------------------------------------------------------------\r\n // EmitterSubjectService.sitUserEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // this.sitUser = result as SitUser;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // this.ngAfterViewInit();\r\n // } );\r\n // --------------------------------------------------- \r\n // EmitterSubjectService.setPhotoMgmtPageEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(result => {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n\r\n // this.photoMgmtService.executePagerVKvPhotoNavKvPhotoTasks(result);\r\n // this.ngAfterViewInit();\r\n // }\r\n\r\n // // TODO: remove after testing:\r\n // // ---------------------------\r\n // // this.pagerVMemberActivityForPhotoMgmt = this.glyphiconMenuService.getPagerVMemActGlyphMenuForPhotoMgmt(result);\r\n // //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForPhotoMgmt)\r\n // // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForPhotoMgmt.pagedItems)\r\n // // && this.pagerVMemberActivityForPhotoMgmt.pagedItems.length > 0 ) {\r\n // // debugger;\r\n // //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVPhotoMgmt)) {\r\n\r\n // // // this will execute: updateBackground, \r\n // // // this.pagerVPhotoMgmt = this.photoMgmtService.executeDuringNgAfterViewInit(this.pagerVPhotoMgmt);// currentPage & displayGlyphMenu\r\n // // // this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVPhotoMgmt.kvPhotoArr, this.pagerVPhotoMgmt.currentItemKvPhoto);\r\n // // // debugger;\r\n\r\n // //} \r\n // // this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemberActivityForPhotoMgmt.pagedItems, this.pagerVMemberActivityForPhotoMgmt.currentItemKvGlyph, \"pagerVGlyphMgmt-\");\r\n // // }\r\n // });\r\n // ---------------------------------------------------\r\n // TODO: experimnt to display glyphs without this emitter.\r\n // ---------------------------------------------------\r\n // EmitterSubjectService.displayPhotoMgmtGlyphiconMenuEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( data =>\r\n // {\r\n // // TODO: check the steps: tested and works:\r\n // // ----------------------------------------\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0) {\r\n // this.kvMemActGlyphArrForPhotoMgmt = data;\r\n // // Note : The View does not require to programatically draw the images,\r\n // // just setting the glyph/image name will suffice\r\n // this.glyphiconMenuService.executeGlyphMenuArr(this.kvMemActGlyphArrForPhotoMgmt);\r\n\r\n // this.currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto)) {\r\n // if (this.currentKvPhoto.pageNum <= 0) {\r\n // if (this.currentKvPhoto.index >= 0) {\r\n // this.currentKvPhoto.pageNum = this.currentKvPhoto.index + 1;\r\n // }\r\n // else if (this.currentKvPhoto.itemNum >= 0) {\r\n // this.currentKvPhoto.pageNum = this.currentKvPhoto.itemNum + 1;\r\n // }\r\n // }\r\n // this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvMemActGlyphArrForPhotoMgmt, this.currentKvPhoto.pageNum);\r\n // }\r\n // else {\r\n // this.pagerVMemActGlyphForPhotoMgmt = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvMemActGlyphArrForPhotoMgmt, 1);\r\n // }\r\n // // debugger;\r\n // this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemActGlyphForPhotoMgmt.pagedItems, this.pagerVMemActGlyphForPhotoMgmt.currentItemKvGlyph, \"pagerVGlyphMgmt-\");\r\n\r\n // this.ngAfterViewInit();\r\n // }\r\n // } );\r\n\r\n // ---------------------------------------------------------------------------------\r\n // getPagerVForDefaultPage () : any\r\n // {\r\n // this.pagerForPhotoMgmt = this.glyphiconMenuService.setKvGlyphPager( 1 ); // default-case\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVGlyphForPhotoMgmt)) {\r\n // this.pagerForPhotoMgmt.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // // debugger;\r\n // }\r\n // this.ngAfterViewInit();\r\n // return this.pagerVGlyphForPhotoMgmt;\r\n // }\r\n // ---------------------------------------------------------------------------------\r\n // Note : this method does not check whether it is a isPhotoMgmt or isViewMember.\r\n // the caller should check/filter and call this only in case of isPhotoMgmt==true.\r\n // ---------------------------------------------------------------------------------\r\n // getPagerVForCurrentPage ( kvPhoto : KvPhoto ) : any\r\n // {\r\n // // Note: IMPORTANT! it may be required that either photoId or PhotoBnId will be used but NOT both\r\n // // and the decision will depend on application wide whether Photo or PhotoBn will be used.\r\n // // ----------------------------------------------------------------------------------------------\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) || kvPhoto.sitUserId === 0 || kvPhoto.photoId === 0 || kvPhoto.photoBnId == 0)\r\n // {\r\n // this.currentPageGlyph = EmitterSubjectService.getCurrentPage();\r\n // // debugger;\r\n\r\n // // if currentPageGlyph is still not complete, create it from currentPhoto or currentKvPhoto\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph.value)) {\r\n // this.currentPhoto = EmitterSubjectService.getCurrentPhoto();\r\n // // debugger;\r\n\r\n // // if currentPhoto data exists:\r\n // // -----------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPhoto) && this.currentPhoto.photoId > 0) {\r\n // this.currentPageGlyph.photoId = this.currentPhoto.photoId;\r\n // this.currentKvPhoto = CopyServiceStatic.copyFromPhotoToKvPhoto(this.currentPhoto);\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // // debugger;\r\n // }\r\n // // create currentKvPhoto from loginSuccess and kvPhoto:\r\n // // -----------------------------------------------------\r\n // else {\r\n // this.currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n // this.currentKvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n // this.currentKvPhoto = CopyServiceStatic.copyKvPhotoIfExists(this.currentKvPhoto, kvPhoto);\r\n // this.currentPageGlyph.photoId = this.currentKvPhoto.photoId;\r\n // }\r\n\r\n // // create the currentPageGlyph:\r\n // // ----------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto) && this.currentKvPhoto.photoId > 0) {\r\n // this.currentPageGlyph = CopyServiceStatic.copyFromKvPhotoToKvGlyph(this.currentKvPhoto);\r\n // // debugger;\r\n // }\r\n // }\r\n // // Note : currentKvPhoto does not have a pageNum, so we first create the pagination, and then get its number:\r\n // // ----------------------------------------------------------------------------------------------------------\r\n // if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph) && this.currentPageGlyph.pageNum <= 0)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto) && this.currentKvPhoto.pageNum <= 0)) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.glyphiconMenuService)) {\r\n // this.pagerV = this.glyphiconMenuService.setKvGlyphPager(1);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerV)) {\r\n // this.pagerV.kvGlyphsArr.map(e => {\r\n // // debugger;\r\n // if (e.photoId === this.currentKvPhoto.photoId && e.pageNum > 0) {\r\n // this.currentKvPhoto.pageNum = e.pageNum;\r\n // this.currentPageGlyph.pageNum = e.pageNum;\r\n // this.currentPageGlyph.photoId = e.photoId;\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // EmitterSubjectService.setCurrentPage(this.currentPageGlyph);\r\n // // debugger;\r\n // }\r\n // });\r\n // }\r\n // }\r\n // }\r\n // else {\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // EmitterSubjectService.setCurrentPage(this.currentPageGlyph);\r\n // // debugger;\r\n // } \r\n // }\r\n // else {\r\n // // debugger;\r\n // if (this.currentKvPhoto.photoId === 0) {\r\n // this.currentKvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n // this.currentKvPhoto = CopyServiceStatic.copyKvPhotoIfExists(this.currentKvPhoto, kvPhoto); \r\n // }\r\n // this.glyphKvArr = this.glyphiconMenuService.createGlyphMenuArrFromKvPhoto(this.currentKvPhoto);\r\n // // debugger; // TODO: watch for primary-photo-case\r\n // this.glyphiconMenuService.setGlyphs(this.glyphKvArr);\r\n // }\r\n\r\n\r\n // // render the glyphicon-menu for the currentPageGlyph:\r\n // // ----------------------------------------------\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph.value)\r\n // && this.currentPageGlyph.value.length > 0) {\r\n // // debugger;\r\n\r\n // // debugger;\r\n // // will display the glyphs\r\n // this.glyphKvArr = this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvGlyph(this.currentPageGlyph);\r\n // // debugger;\r\n\r\n\r\n // // Note : The View does not require to programatically draw the images, just setting the glyph/image name will suffice\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.glyphKvArr) && this.glyphKvArr.length > 0) {\r\n // // debugger;\r\n // this.pagerVerticalService.executeGlyphMenuArr(this.glyphKvArr);\r\n // // debugger;\r\n // }\r\n // }\r\n\r\n // if (this.currentPageGlyph.pageNum > 0) {\r\n // // debugger;\r\n // this.pagerV = this.glyphiconMenuService.setKvGlyphPager( this.currentPageGlyph.pageNum ); // current-case\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.pagerV = this.glyphiconMenuService.setKvGlyphPager( 1 ); // default-case\r\n // }\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerV)) {\r\n // this.pagerV.isPhotoMgmt = true;\r\n // // debugger;\r\n // }\r\n // this.ngAfterViewInit();\r\n // return this.pagerV;\r\n // }\r\n // ---------------------------------------------------------------------------------\r\n // executeCurrentKvPhotoTasks (currentKvp : KvPhoto) : void {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvp)) {\r\n // // this.pagerVKvPhotoNav = this.pagerServicePhotoMgmt.getPagerVPhotoMgmtForCurrentPage(currentKvp);\r\n // this.currentKvPhoto = currentKvp;\r\n // this.currentPageGlyph.photoId = currentKvp.photoId;\r\n // }\r\n // }\r\n // ---------------------------------------------------------------------------------\r\n // getPagerVForCurrentKvPhoto (kvp: KvPhoto) : any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp) && kvp.photoBnId > 0 ) {\r\n // this.pagerVKvPhotoNav = this.pagerServicePhotoMgmt.getPager(this.pagerVKvPhotoNav.kvPhotoArr, kvp.pageNum, this.pagerVKvPhotoNav.pageSize);\r\n // }\r\n // }\r\n\r\n\r\n","
\r\n \r\n \r\n \r\n
0\"\r\n style=\"margin:0.01rem;padding:0.05rem; width:auto;\">\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Your {{kvAny?.key}} picture\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Make {{kvAny?.key}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","'use-strict'\r\nimport {\r\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef,\r\n Component, Inject, Input, OnDestroy, OnInit\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { Photo } from '../../../models/common/photo.model';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { MemberActivity } from '../../../models/member/memberActivity.model';\r\nimport { PagerMemberActivity } from '../../../models/pagination/pagerMemberActivity.model';\r\nimport { GlyphiconMenuService } from '../../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { GlyphiconServiceService } from '../../../services/GlyphiconService/glyphiconServiceService.service';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { SitUserService } from '../../../services/commonServiceService/sitUserService.service';\r\nimport { ActivityService } from '../../../services/memberServiceService/activityService.service';\r\nimport { MemberServiceService } from '../../../services/memberServiceService/memberServiceService.service';\r\nimport { PagerServiceService } from '../../../services/pagerServiceService/pagerServiceService.service';\r\nimport { PagerSupportService } from '../../../services/pagerServiceService/pagerSupportService.service';\r\nimport { BackgroundImageAnimationService } from '../../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { BreadcrumServiceStatic } from '../../../services/staticServices/breadcrumServiceStatic.service';\r\nimport { CopyServiceStatic } from '../../../services/staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../../../services/staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../../../services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ArraySupportServiceStatic } from '../../../services/staticServices/arraySupportServiceStatic.service';\r\nimport { CommunicationActivity } from '../../../models/communication/communicationActivity.model';\r\nimport { StringServiceStatic } from '../../../services/staticServices/stringServiceStatic.service';\r\n\r\n// -------------------------------------------------------------------------------------------------------\r\n// Note : pagerVerticle glyphicon-menu-system serve navigation/actions for two scenarios:\r\n// 1. memberView path during viewing any member.\r\n// Under this option the all but signedInMember can:\r\n// 1.1 Select memberActicities which are\r\n// {block, dislike, like, lock, star, track, unblock, unlock, unstar}\r\n// 1.2 Can start a chat conversation with the viewee or\r\n// 1.3 Send email notification to the viewee.\r\n// 1.4 Send notification to the viewee.\r\n// 2. myPhoto path when signedInUser chooses to add/update personal photos.\r\n// Under this option the signedInUser can:\r\n// 2.1 Take new pics or upload new pics\r\n// 2.2 Change the privacy of any pic\r\n// 2.3 Make current PrimaryPic a private pic in whihc case it will not longer be a primary pic\r\n// 2.4 Make any pic the PrimaryPic. PrimaryPic is always public.\r\n// -------------------------------------------------------------------------------------------------------\r\n\r\n@Component({\r\n selector : 'app-pager-vertical-glyph-for-view-member',\r\n templateUrl: './pagerVerticalGlyphForViewMember.component.html',\r\n styleUrls: ['./pagerVerticalGlyphForViewMember.component.scss'],\r\n changeDetection : ChangeDetectionStrategy.OnPush // default\r\n})\r\nexport class PagerVerticalGlyphForViewMemberComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n public bias! : BackgroundImageAnimationService;\r\n public glyphiconMenuService!: GlyphiconMenuService;\r\n public activityService! : ActivityService;\r\n public pagerSupportService! : PagerSupportService;\r\n public redirectionService! : RedirectionService;\r\n public sitUserService!: SitUserService;\r\n // -----------------------------------------------\r\n public breadcrumRing : ModuleComponentLoader[] = [];\r\n public commActivity : CommunicationActivity = new CommunicationActivity();\r\n public currentKvPhoto: KvPhoto = new KvPhoto();\r\n public currentPage : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public currentPhoto : Photo = new Photo();\r\n public displayMenuCount = 0;\r\n public doeeSitUser : SitUser = new SitUser();\r\n public doerSitUser : SitUser = new SitUser();\r\n @Input() kvGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n @Input() pagerVMemActGlyphForViewMember : PagerMemberActivity = new PagerMemberActivity(); // for various memeberActivities such as like/dislike/friend/unfriend....etc.\r\n public pagerBrdCrm: PagerBreadcrum = new PagerBreadcrum();\r\n public emitterDestroyed$: Subject = new Subject();\r\n // ----------------------------------------------------------\r\n public isCurrentlyBlocked = false;\r\n public isCurrentlyUnlocked = false;\r\n public isMobilevar = false;\r\n public isPhotoMgmt = false;\r\n public isViewMember = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n private opened = false;\r\n public returnUrl = '';\r\n public signedInUserId = 0;\r\n @Input() sitUser: SitUser = new SitUser();\r\n // ----------------------------------------------------------\r\n constructor (\r\n private router : Router,\r\n private cdr : ChangeDetectorRef,\r\n private commonServiceService : CommonServiceService,\r\n private glyphiconServiceService : GlyphiconServiceService,\r\n private memberServiceService : MemberServiceService,\r\n private pagerServiceService : PagerServiceService,\r\n private rendererServiceService : RendererServiceService,\r\n @Inject(Document) document : any )\r\n {\r\n if ( this.commonServiceService )\r\n {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n this.sitUserService = this.commonServiceService.getSitUserService() as SitUserService;\r\n }\r\n\r\n if ( this.memberServiceService )\r\n {\r\n this.activityService = this.memberServiceService.getActivityService();\r\n }\r\n this.glyphiconMenuService = this.glyphiconServiceService.getGlyphiconMenuService() as GlyphiconMenuService;\r\n if ( this.pagerServiceService )\r\n {\r\n \r\n this.pagerSupportService = this.pagerServiceService.getPagerSupportService();\r\n }\r\n\r\n if (this.rendererServiceService) {\r\n this.bias = this.rendererServiceService.getBackgroundImageAnimationService();\r\n }\r\n this.isMobilevar = EmitterSubjectService.getIsMobile() as boolean;\r\n // ---------------------------------------------------\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n // debugger;\r\n // ----------------------------------------------------------\r\n // Note: before creating glyphs & collecting the actedGlyphNames,\r\n // clear the `glyphiconMenuService.actedGlyphNames` array\r\n this.glyphiconMenuService.actedGlyphNames = [];\r\n }\r\n // ----------------------------------------------------------\r\n ngOnInit () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n\r\n // debugger;\r\n this.breadcrumRing = BreadcrumServiceStatic.getRing();\r\n this.pagerBrdCrm = BreadcrumServiceStatic.getPagerBreadcrum();\r\n\r\n // debugger;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n\r\n // if provided KvGlyphArr is not empty, make it unique:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvGlyphArrForViewMember) && this.kvGlyphArrForViewMember.length > 0) {\r\n // debugger;\r\n this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(this.kvGlyphArrForViewMember);\r\n }\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n /*this.pagerBrdCrm = ( this.emitterService as EmitterService ).getPagerBreadcrum();*/\r\n\r\n // if pagerVMemActGlyphForViewMember is not provided by the parent component, this should save the day:\r\n // ----------------------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvGlyphArrForViewMember) && this.kvGlyphArrForViewMember.length > 0) {\r\n this.pagerVMemActGlyphForViewMember = this.executeViewMemberGlyphiconMenuTasks(this.kvGlyphArrForViewMember);\r\n\r\n // this.executeGlyphMenuArr(this.kvGlyphArrForViewMember);\r\n }\r\n //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyphForViewMember)\r\n // || this.pagerVMemActGlyphForViewMember.pageSize === 0 || this.pagerVMemActGlyphForViewMember.pagedItems.length === 0) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvGlyphArrForViewMember) && this.kvGlyphArrForViewMember.length > 0) {\r\n // this.pagerVMemActGlyphForViewMember = this.executeViewMemberGlyphiconMenuTasks(this.kvGlyphArrForViewMember);\r\n\r\n // this.executeGlyphMenuArr(this.kvGlyphArrForViewMember);\r\n // }\r\n //}\r\n // ==========================================================\r\n // Begin of DisplayMemberViewGlyphicons:\r\n // Note: there is a component called `ActedGlyphsComponent` that\r\n // is also part of the DisplayMemberViewGlyphicons.\r\n // ==========================================================\r\n\r\n // ----------------------------------------------------------\r\n // Create Star, Friend, Like and Buddy glyphicons:\r\n // ----------------------------------------------------------\r\n // debugger;\r\n if (!StringServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n this.glyphiconMenuService.createMemberViewGlyphiconArray(this.sitUser.sitUserId).subscribe(data => {\r\n // debugger;\r\n this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(data);\r\n\r\n this.glyphiconMenuService.actedUnlockAndBlockGlyphNames = ArraySupportServiceStatic.makeArrayOfUniqElements(this.glyphiconMenuService.actedUnlockAndBlockGlyphNames);\r\n var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.glyphiconMenuService.actedUnlockAndBlockGlyphNames, 'Unlock');\r\n // debugger;\r\n if (index > -1) {\r\n this.isCurrentlyUnlocked = true;\r\n }\r\n else {\r\n this.isCurrentlyUnlocked = false;\r\n }\r\n // debugger;\r\n index = -1;\r\n index = ArraySupportServiceStatic.getIndexOfStringInArray(this.glyphiconMenuService.actedUnlockAndBlockGlyphNames, 'Block');\r\n // debugger;\r\n if (index > -1) {\r\n this.isCurrentlyBlocked = true;\r\n }\r\n\r\n this.ngAfterViewInit();\r\n })\r\n }\r\n \r\n // ----------------------------------------------------------\r\n EmitterSubjectService.actedUnlockAndBlockGlyphNamesEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.glyphiconMenuService.actedUnlockAndBlockGlyphNames)\r\n && this.glyphiconMenuService.actedUnlockAndBlockGlyphNames.length > 0) {\r\n\r\n this.glyphiconMenuService.actedUnlockAndBlockGlyphNames = ArraySupportServiceStatic.makeArrayOfUniqElements(this.glyphiconMenuService.actedUnlockAndBlockGlyphNames);\r\n\r\n var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.glyphiconMenuService.actedUnlockAndBlockGlyphNames, 'Unlock');\r\n // debugger;\r\n if (index > -1) {\r\n this.isCurrentlyUnlocked = true;\r\n }\r\n // debugger;\r\n index = -1;\r\n index = ArraySupportServiceStatic.getIndexOfStringInArray(this.glyphiconMenuService.actedUnlockAndBlockGlyphNames, 'Block');\r\n // debugger;\r\n if (index > -1) {\r\n this.isCurrentlyBlocked = true;\r\n }\r\n this.ngAfterViewInit();\r\n }\r\n // debugger;\r\n });\r\n // ==========================================================\r\n // End of DisplayMemberViewGlyphicons:\r\n // ==========================================================\r\n \r\n // ----------------------------------------------------------\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n this.loginSuccess = result;\r\n this.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n });\r\n // ---------------------------------------------------\r\n // Note : The View does not require to programatically draw the images, just setting the glyph/image name will suffice\r\n // this.executeDefaultGlyphMenu();\r\n // ---------------------------------------------------\r\n // Note : to achieve this simple objective of clearing all glyphicons from the dynamyc-graphicon-menu,\r\n // it requires these following to be complied:\r\n // 1. have the ChangeDetection run in here at the PagerVerticalComponent.\r\n // 2. have the ChangeDetection run at the AppComponent.ts which the PagerVerticalComponent.ts is the child of,\r\n // 3. have the component which wants to clear the glyphicon menu such as the LandingPageComponent.ts,\r\n // emit a message to crear the glyphicon menu.\r\n // ---------------------------------------------------\r\n EmitterSubjectService.clearGlyphiconMenuEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(data => {\r\n // debugger;\r\n this.executeClearGlyphAction();\r\n }); \r\n // -------------------------------------------------------------------------\r\n //EmitterSubjectService.isViewMemberEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe(result => {\r\n // // debugger;\r\n // this.isViewMember = result;\r\n // if (this.isViewMember) {\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.sitUser.sitUserId !== this.sitUser.sitUserId) {\r\n\r\n // // This method also check if the sitUserId === signedInUserId, and if true, displays signedInUser's PrimaryGlyphsMenu:\r\n // this.kvGlyphArrForViewMember = this.glyphiconMenuService.displayViewMemberGlyphMenu(this.sitUser.sitUserId);\r\n // this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(this.kvGlyphArrForViewMember);\r\n // }\r\n // else {\r\n // this.kvGlyphArrForViewMember = [];\r\n // }\r\n // }\r\n // });\r\n // ---------------------------------------------------\r\n EmitterSubjectService.currentMemActGlyphForViewMemberEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n // debugger;\r\n let sitUser : SitUser = EmitterSubjectService.getSitUserModel();\r\n this.currentPage = EmitterSubjectService.getCurrentPage();\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPage)) {\r\n this.currentPage = new KvMemberActivityGlyph();\r\n }\r\n\r\n if (typeof result === 'number' && result > 0) {\r\n // debugger;\r\n // this.currentPage.pageNum = result;\r\n this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setKvGlyphPager(result);\r\n this.kvGlyphArrForViewMember = this.pagerVMemActGlyphForViewMember.kvMemActGlyphArrForViewMember;\r\n this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(this.kvGlyphArrForViewMember);\r\n }\r\n else if(result instanceof KvMemberActivityGlyph){\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.sitUserId > 0) {\r\n this.kvGlyphArrForViewMember = this.glyphiconMenuService.displayViewMemberGlyphMenu(result.sitUserId);\r\n this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(this.kvGlyphArrForViewMember);\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(result.sitUserId); \r\n }\r\n }\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.runNgAfterViewInitEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe(result => {\r\n // debugger;\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------\r\n // EmitterSubjectService.emitKvMemberActivityGlyph(kvg);\r\n EmitterSubjectService.kvMemberActivityGlyphEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.currentPage = result as KvMemberActivityGlyph;\r\n this.setGlyphAction(this.currentPage.pageNum, this.currentPage);\r\n this.ngAfterViewInit();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.sitUserEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n this.sitUser = result as SitUser;\r\n if (!StringServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.sitUser.sitUserId);\r\n }\r\n this.ngAfterViewInit();\r\n } );\r\n // ------------------------------------------------------------\r\n // ===========================================================================\r\n // Emitter for 'app-pager-vertical-glyph-for-view-member'\r\n // ===========================================================================\r\n //EmitterSubjectService.displayViewMemberGlyphiconMenuEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(data => {\r\n // // debugger;\r\n\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n // this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0) {\r\n // // debugger;\r\n // this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(data);\r\n // this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvGlyphArrForViewMember, 1);\r\n // this.ngAfterViewInit();\r\n // }\r\n // });\r\n \r\n // ---------------------------------------------------------------------------------\r\n EmitterSubjectService.displayViewMemberGlyphiconMenuForSitUserEmitter\r\n .pipe (takeUntil(this.emitterDestroyed$))\r\n .subscribe(sitId => {\r\n // debugger;\r\n\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n\r\n if (sitId > 0) {\r\n // debugger;\r\n this.sitUser.sitUserId = sitId;\r\n this.glyphiconMenuService.createMemberViewGlyphiconArray(sitId).subscribe(data => {\r\n this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(data);\r\n this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvGlyphArrForViewMember, 1);\r\n // debugger;\r\n this.ngAfterViewInit();\r\n })\r\n //// this.kvGlyphArrForViewMember = data;\r\n \r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit(): void {\r\n // this.pagerV = this.getPagerVForCurrentPage();\r\n this.cdr.detectChanges();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n // (2) https:// www.concretepage.com/angular-2/angular-4-renderer2-example\r\n // (3) https:// stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n // (4) https:// stackblitz.com/edit/timer-with-pdestroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.executeClearGlyphAction();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // This method will update the status of most recently acted upon glyphicon menu\r\n // ---------------------------------------------------------------------------------\r\n determineResultOfGlyphAction (mAct: CommunicationActivity) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mAct ) && mAct.receiverSITUserId > 0 && mAct.senderSITUserId > 0 )\r\n { \r\n let index = 0;\r\n // Note: the order of the above code and the below code is very important for the\r\n // Member-Glyphicon-Menu to function. The above will read the respective dictionary\r\n // ---------------------------------------------------------------------------------------\r\n for (var e of this.kvGlyphArrForViewMember)\r\n {\r\n // debugger;\r\n if ( e.senderSitUserId === mAct.senderSITUserId\r\n && e.receiverSitUserId === mAct.receiverSITUserId\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e.key )\r\n && e.key.toLowerCase().indexOf( mAct.memberActivity.toLowerCase() ) !== -1 )\r\n {\r\n index = ArraySupportServiceStatic.getIndexOfKvGlyphInArray(this.kvGlyphArrForViewMember, mAct);// do nothing\r\n // debugger;\r\n if (index > -1) {\r\n // debugger;\r\n var removedGlyph = this.kvGlyphArrForViewMember.splice(index, 1);\r\n // debugger;\r\n EmitterSubjectService.emitActedGlyph(removedGlyph); // important!\r\n }\r\n switch ( e.action.toLowerCase() )\r\n {\r\n case 'friend': case 'unfriend':\r\n // debugger;\r\n e.isFriend = mAct.isFriend;\r\n \r\n break;\r\n case 'like': case 'dislike':\r\n // debugger;\r\n e.isLiked = mAct.isLiked;\r\n break;\r\n case 'star':\r\n // debugger;\r\n e.isStarred = mAct.isStarred;\r\n break;\r\n case 'wink':\r\n e.isWinked = mAct.isWinked;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n executeClearGlyphAction(): any {\r\n this.kvGlyphArrForViewMember = [];\r\n this.glyphiconMenuService.setGlyphs(this.kvGlyphArrForViewMember );\r\n this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setKvGlyphPager( 1 );\r\n this.pagerVMemActGlyphForViewMember.isPhotoMgmt = false;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyphForViewMember)) {\r\n this.pagerVMemActGlyphForViewMember.kvGlyphArr = this.pagerVMemActGlyphForViewMember.pagedItems = [];\r\n // debugger;\r\n }\r\n this.ngAfterViewInit();\r\n // debugger;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n executeGlyphMenuArr(kvAnyArr: KvMemberActivityGlyph[]): any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAnyArr) && kvAnyArr.length > 0) {\r\n this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(kvAnyArr);\r\n // debugger;\r\n // this.glyphiconMenuService.setGlyphs(this.kvGlyphArrForViewMember );\r\n // debugger;\r\n this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvGlyphArrForViewMember, 1);\r\n if (this.kvGlyphArrForViewMember.length > 10 ) { this.glyphiconMenuService.rotateArrowGlyphicons(); }\r\n // debugger;\r\n return true;\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // TODO:This is most likely not correct. \r\n executeViewMemberGlyphiconMenuTasks (data: KvMemberActivityGlyph[]): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0) {\r\n this.kvGlyphArrForViewMember = this.getUniqueKvGlyphArrForViewMember(data);\r\n // Note : The View does not require to programatically draw the images,\r\n // just setting the glyph/image name will suffice\r\n this.executeGlyphMenuArr(this.kvGlyphArrForViewMember);\r\n // debugger;\r\n this.currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto)) {\r\n if (this.currentKvPhoto.pageNum <= 0) {\r\n if (this.currentKvPhoto.index >= 0) {\r\n this.currentKvPhoto.pageNum = this.currentKvPhoto.index + 1;\r\n }\r\n else if (this.currentKvPhoto.itemNum >= 0) {\r\n this.currentKvPhoto.pageNum = this.currentKvPhoto.itemNum + 1;\r\n }\r\n }\r\n this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvGlyphArrForViewMember, this.currentKvPhoto.pageNum);\r\n }\r\n else {\r\n this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setPagerWithKvGlyphs(this.kvGlyphArrForViewMember, 1);\r\n // or\r\n // this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setKvGlyphPager(1);\r\n }\r\n\r\n // debugger;\r\n this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemActGlyphForViewMember.pagedKvGlyphItems, this.pagerVMemActGlyphForViewMember.currentKvGlyphItem, \"pagerVGlyphMgmt-\");\r\n\r\n \r\n this.ngAfterViewInit();\r\n return this.pagerVMemActGlyphForViewMember;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n isKvGlyphFoundInArr (arr : KvMemberActivityGlyph[], kvg : KvMemberActivityGlyph) : boolean {\r\n var isFound = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && arr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvg)) { \r\n for (var i = 0; i < arr.length; i++){\r\n // debugger;\r\n if (arr[ i ].key.toLocaleLowerCase().indexOf(kvg.key.toLocaleLowerCase()) !== -1) {\r\n isFound = true;\r\n // debugger;\r\n break;\r\n }\r\n }\r\n }\r\n return isFound;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n getUniqueKvGlyphArrForViewMember (arr : KvMemberActivityGlyph[]) : KvMemberActivityGlyph[] {\r\n var outArr = []; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && arr.length > 0) { \r\n for (var i = 0; i < arr.length; i++) {\r\n if (!this.isKvGlyphFoundInArr(outArr, arr[ i ])) {\r\n // debugger;\r\n outArr.push(arr[ i ]);\r\n }\r\n }\r\n }\r\n // debugger;\r\n return outArr;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n getPagerVForDefaultPage () : any\r\n {\r\n this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setKvGlyphPager( 1 ); // default-case\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyphForViewMember)) {\r\n this.pagerVMemActGlyphForViewMember.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // debugger;\r\n }\r\n this.ngAfterViewInit();\r\n return this.pagerVMemActGlyphForViewMember;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n stateName(): any {\r\n return this.opened ? 'show' : 'hide';\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setChatAction () : void {\r\n this.returnUrl = window.location.pathname + window.location.search;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n this.mcLoader.id = this.sitUser.sitUserId;\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n var tpTile = EmitterSubjectService.getSelectedProfileTile();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile)) {\r\n this.mcLoader.id = tpTile.sitUserId;\r\n // debugger;\r\n }\r\n }\r\n\r\n this.mcLoader.router = this.router;\r\n\r\n this.mcLoader.componentName = 'chathistory';\r\n this.mcLoader.moduleName = 'chatm';\r\n // debugger;\r\n EmitterSubjectService.setMCLoader(this.mcLoader);\r\n\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setEmailAction () : void {\r\n this.returnUrl = window.location.pathname + window.location.search;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n this.mcLoader.id = this.sitUser.sitUserId;\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n var tpTile = EmitterSubjectService.getSelectedProfileTile();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile)) {\r\n this.mcLoader.id = tpTile.sitUserId;\r\n // debugger;\r\n }\r\n }\r\n\r\n this.mcLoader.router = this.router;\r\n\r\n this.mcLoader.componentName = 'composeEmail';\r\n this.mcLoader.moduleName = 'communicationm';\r\n // debugger;\r\n EmitterSubjectService.setMCLoader(this.mcLoader);\r\n\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setUnlockAction (action: string) : void {\r\n // debugger;\r\n this.returnUrl = window.location.pathname + window.location.search;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n this.mcLoader.id = this.sitUser.sitUserId;\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n var tpTile = EmitterSubjectService.getSelectedProfileTile();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile)) {\r\n this.mcLoader.id = tpTile.sitUserId;\r\n // debugger;\r\n }\r\n }\r\n\r\n this.mcLoader.router = this.router;\r\n // debugger;\r\n if (action.indexOf('unlock') !== -1) {\r\n this.isCurrentlyUnlocked = !this.isCurrentlyUnlocked;\r\n }\r\n else if (action.indexOf('lock') !== -1) {\r\n this.isCurrentlyUnlocked = !this.isCurrentlyUnlocked;\r\n }\r\n // debugger;\r\n this.ngAfterViewInit();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.commActivity.receiverSitUserId = this.sitUser.sitUserId;\r\n this.commActivity.senderSitUserId = this.loginSuccess.signedInUserId;\r\n this.commActivity.action = action;\r\n this.commActivity.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n // debugger;\r\n if (this.sitUser.sitUserId > 0 && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n // debugger;\r\n this.activityService.sendMemberLockingActivity(this.commActivity).subscribe(mAct => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct)) {\r\n // debugger;\r\n this.isCurrentlyUnlocked = mAct?.action.toLowerCase('unlock') !== -1 ? true : false;\r\n this.ngAfterViewInit();\r\n // debugger;\r\n }\r\n }); \r\n } \r\n }\r\n // ---------------------------------------------------------------------------------\r\n setBlockAction (action : string) : void {\r\n // debugger;\r\n this.returnUrl = window.location.pathname + window.location.search;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n this.mcLoader.id = this.sitUser.sitUserId;\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n var tpTile = EmitterSubjectService.getSelectedProfileTile();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile)) {\r\n this.mcLoader.id = tpTile.sitUserId;\r\n // debugger;\r\n }\r\n }\r\n\r\n this.mcLoader.router = this.router;\r\n // debugger;\r\n if (action.indexOf('unblock') !== -1) {\r\n this.isCurrentlyBlocked = !this.isCurrentlyBlocked;\r\n }\r\n else if (action.indexOf('block') !== -1) {\r\n this.isCurrentlyBlocked = !this.isCurrentlyBlocked;\r\n }\r\n // debugger;\r\n this.ngAfterViewInit();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.commActivity.receiverSitUserId = this.sitUser.sitUserId;\r\n this.commActivity.senderSitUserId = this.loginSuccess.signedInUserId;\r\n this.commActivity.action = action;\r\n this.commActivity.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n // debugger;\r\n if (this.sitUser.sitUserId > 0 && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n // debugger;\r\n this.activityService.sendMemberActivity(this.commActivity).subscribe(mActArr => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActArr) && mActArr.length > 0) {\r\n // debugger;\r\n mActArr.map(e => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.action)) {\r\n if (e.action.toLowerCase('unblock') !== -1 || e.action.toLowerCase('block') !== -1) {\r\n this.isCurrentlyBlocked = e.action.toLowerCase('block') !== -1 ? true : false;\r\n this.ngAfterViewInit();\r\n // debugger;\r\n }\r\n }\r\n })\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: MemberTrackingAction is not sent from here since Track-glyphicon is not\r\n // part of the memberGlyphiconForViewMgmt.\r\n // It is rather sent from profileTileComponent when the signedInUser clicks\r\n // a profileTile to view his profile.\r\n // ---------------------------------------------------------------------------------\r\n setGlyphAction (page : number, kvg : KvMemberActivityGlyph ): void {\r\n // debugger;\r\n this.returnUrl = window.location.pathname + window.location.search;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n this.mcLoader.id = this.sitUser.sitUserId;\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n var tpTile = EmitterSubjectService.getSelectedProfileTile();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile)) {\r\n this.mcLoader.id = tpTile.sitUserId;\r\n // debugger;\r\n }\r\n }\r\n\r\n this.mcLoader.router = this.router;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( kvg ) )\r\n { \r\n if ( page > 0 )\r\n {\r\n this.pagerVMemActGlyphForViewMember = this.glyphiconMenuService.setKvGlyphPager( page );\r\n }\r\n // debugger;\r\n let actionName = kvg?.key?.toString()?.toLowerCase();\r\n switch ( actionName )\r\n {\r\n case 'friend':\r\n case 'unfriend':\r\n case 'like':\r\n case 'dislike':\r\n case 'star':\r\n case 'wink':\r\n // Note: track is done through MemberView\r\n // debugger;\r\n // note: activities do not open a new page. these are tasks that are done on the background, and may update the current page's information\r\n EmitterSubjectService.setIsPhotoMgmt( false );\r\n EmitterSubjectService.setIsViewMember( true );\r\n this.commActivity = CopyServiceStatic.copyFromKvGlyphToCommunicationActivity(kvg);\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.commActivity.receiverSitUserId = this.sitUser.sitUserId;\r\n this.commActivity.senderSitUserId = this.loginSuccess.signedInUserId;\r\n this.commActivity.receiverSitUserKey = this.sitUser.sitUserKey;\r\n this.commActivity.senderSitUserKey = this.loginSuccess.signedInUserKey;\r\n this.commActivity.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n // debugger;\r\n if (this.sitUser.sitUserId > 0 && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId )\r\n {\r\n // debugger;\r\n this.activityService.sendMemberActivity( this.commActivity ).subscribe( mAct =>\r\n {\r\n // debugger;\r\n this.determineResultOfGlyphAction(mAct);\r\n // debugger;\r\n this.ngAfterViewInit();\r\n }); \r\n } \r\n break;\r\n\r\n default:\r\n // debugger;\r\n // this.router.navigate(['/' + key]);//TODO : set to ['/' + key] after testing\r\n this.mcLoader.componentName = 'index';\r\n this.mcLoader.moduleName = 'app';\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------\r\n\r\n// ---------------------------------------------------------------\r\n\r\n"," \r\n\r\n\r\n \r\n\r\n
0\"\r\n id=\"pagerVerticalGlyphForViewMemberComponentId\"\r\n class=\"flex-pagerV-item text-center\"\r\n style=\"margin: 0.05rem; padding: 0.05rem; width: auto;height:auto;min-height:60%;\">\r\n
\r\n \r\n
\r\n Chat\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n Email\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n Lock\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n Unlock\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Block\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Unblock\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
= 0 && kvAny.index === (i+1)', 'flex-item-plain text-center bttn-xxxs-transparent': true }\"\r\n style=\"width: 2.5rem; height: auto; margin: 0.1rem; padding: 0.01rem;\">\r\n\r\n \r\n\r\n \r\n
\r\n {{kvAny.key.indexOf('tala') !== -1 ? 'lock' : kvAny.key}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n","'use-strict'\r\nimport { Location } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { EmitCheckboxResult } from '../../../models/common/emitCheckboxResult.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { Preference } from '../../../models/profile/preference.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { DbServiceService } from '../../../services/dbServiceService/dbServiceService.service';\r\nimport { MemberService } from '../../../services/memberServiceService/memberService.service';\r\nimport { MemberServiceService } from '../../../services/memberServiceService/memberServiceService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../../../services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { ScrollTopServiceStatic } from '../../../services/staticServices/commonStaticServices/scrollTopServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../../../services/staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { InMemoryDataServiceStatic } from '../../../services/staticServices/inMemoryDataServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n\r\ndeclare let jQuery: any;\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'app-preference',\r\n templateUrl: './preference.component.html',\r\n styleUrls: ['./preference.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [ Animations, slideInOutAnimation,\r\n ],\r\n\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class PreferenceComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public httpService! : HttpService;\r\n public memberService!: MemberService;\r\n private rendererService!: RendererService;\r\n public renderer! : Renderer2;\r\n public redirectionService! : RedirectionService;\r\n // -------------------------------------------\r\n\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public click : boolean = false;\r\n public checkArr: any[] = [];\r\n\r\n // checkboxNames are same in preference model as well.\r\n public checkboxNames : string[] = [ 'lookingFor', 'relationshipPreference', 'meetingLocation', 'whenLookingToMeet', 'hobby', 'pet', 'petPeev', 'into' ];\r\n public data : any;\r\n private emitterDestroyed$: Subject = new Subject();\r\n public hobbyCheckboxResult: EmitCheckboxResult = new EmitCheckboxResult();\r\n public hobbyCheckboxLegend = 'My hobbies : ';\r\n public hobbyArr: any[] = [];\r\n public hobbiesGroup! : FormGroup;\r\n public intervalMsg: any;\r\n public intoCheckboxResult: EmitCheckboxResult = new EmitCheckboxResult();\r\n public intoCheckboxLegend = 'What I am into : ';\r\n public intoArr: any[] = [];\r\n public isEditProfile = false;\r\n public isFormValid = false;\r\n public isFormSubmitted = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isSubmitBttnFocus = false;\r\n public lookingForArr : any[] = [];\r\n public lookingForCheckboxLegend = 'What I am looking for : ';\r\n public lookingForCheckboxResult : EmitCheckboxResult = new EmitCheckboxResult();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public message = '';\r\n public meetingLocationArr : any[] = [];\r\n public meetingLocationCheckboxLegend = 'Where would you like to meet up : ';\r\n public meetingLocationCheckboxResult: EmitCheckboxResult = new EmitCheckboxResult();\r\n public minRequired = 0;\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public paramId = 0;\r\n public petArr : any[] = [];\r\n public petCheckboxLegend = 'What about the pets? : ';\r\n public petCheckboxResult: EmitCheckboxResult = new EmitCheckboxResult();\r\n public petPeevArr: any[] = [];\r\n public petPeevCheckboxLegend = 'My petPeevs : ';\r\n public petPeevCheckboxResult: EmitCheckboxResult = new EmitCheckboxResult();\r\n public preference: Preference = new Preference();\r\n public relationshipPreferenceArr: any[] = [];\r\n public relationshipPreferenceCheckboxLegend = 'My preferences for relationship : ';\r\n public relationshipPreferenceCheckboxResult: EmitCheckboxResult = new EmitCheckboxResult();\r\n public returnUrl = '';\r\n public selectedIntosArr : any[] = [];\r\n public selectedIntosString = '';\r\n public selectedHobbiesArr: any[] = [];\r\n public selectedHobbiesString = '';\r\n public selectedLookingForsArr: any[] = [];\r\n public selectedLookingForsString = '';\r\n public selectedMeetingLocationsArr: any[] = [];\r\n public selectedMeetingLocationsString = '';\r\n public selectedPetsArr : any[] = [];\r\n public selectedPetsString = '';\r\n public selectedPetPeevsArr : any[] = [];\r\n public selectedPetPeevsString = '';\r\n public selectedRelationshipPreferencesArr: any[] = [];\r\n public selectedRelationshipPreferencesString = '';\r\n public selectedWhenLookingToMeetsArr: any[] = [];\r\n public selectedWhenLookingToMeetsString = '';\r\n \r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n public whenLookingToMeetArr : any[] = [];\r\n public whenLookingToMeetsStr : string = '';\r\n public whenLookingToMeetCheckboxLegend : string = 'When I am looking to meet up';\r\n public whenLookingToMeetCheckboxResult: EmitCheckboxResult = new EmitCheckboxResult();\r\n @ViewChild('preferenceForm', { static: false})\r\n preferenceForm: any;\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n public cdr: ChangeDetectorRef,\r\n private location: Location,\r\n private router : Router,\r\n private commonServiceService: CommonServiceService,\r\n private coreServiceService: CoreServiceService,\r\n private dbServiceService: DbServiceService,\r\n private memberServiceService : MemberServiceService, // private searchSortService : SearchSortService\r\n private rendererServiceService: RendererServiceService\r\n ) {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n if (this.coreServiceService) {\r\n // this.printService = this.coreServiceService.getPrintService();\r\n }\r\n if ( this.coreServiceService ) this.httpService = this.coreServiceService.getHttpService();\r\n if ( this.rendererServiceService ) this.rendererService = this.rendererServiceService.getRendererService();\r\n if (this.memberServiceService) {\r\n this.memberService = this.memberServiceService.getMemberService() as MemberService;\r\n }\r\n if (this.rendererService) {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n // debugger; // TODO: check for params.id\r\n //this.activatedRoute.params.subscribe((params) => (this.paramId = params.id));\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference) && this.paramId > 0) {\r\n // this.preference.sitUserId = this.preference.signedInUserId = this.paramId\r\n //}\r\n // debugger;\r\n \r\n // ---------------------------------------------------------------\r\n this.setPageTitle();\r\n\r\n // -------------------------------------------------\r\n this.hobbyArr = InMemoryDataServiceStatic.hobbyArr; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.hobbies);\r\n this.intoArr = InMemoryDataServiceStatic.intoArr; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.intos);\r\n this.lookingForArr = InMemoryDataServiceStatic.lookingForArr; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.lookingFors);\r\n this.meetingLocationArr = InMemoryDataServiceStatic.meetingLocationArr; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.meetingLocations);\r\n this.petArr = InMemoryDataServiceStatic.petArr; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.pets);\r\n this.petPeevArr = InMemoryDataServiceStatic.petPeevArr; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.petPeevs);\r\n this.relationshipPreferenceArr = InMemoryDataServiceStatic.relationshipPreferenceArr; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.relationshipPreferences);\r\n this.whenLookingToMeetArr = InMemoryDataServiceStatic.whenLookingToMeetArr; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.whenLookingToMeets);\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnInit () {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.preference.sitUserId = this.preference.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.getPreferenceForEdit();\r\n /*\r\n * -----------------------------------------------------------\r\n * EmitterSubjectService.localStorageLoginSuccessEmitter\r\n *\r\n * .subscribe(result => {\r\n * debugger;\r\n * this.loginSuccess = result;\r\n * this.determineRedirection();\r\n * });\r\n * -----------------------------------------------------------\r\n */\r\n // EmitterSubjectService.emitSetBreadcrumForPageSwitch( true );\r\n // ----------------------------------------------------------------------------------\r\n\r\n // ----------------------------------------------------------------------------------\r\n // this.timer = setTimeout( () =>\r\n // {\r\n // //debugger;\r\n // this.mcLoader.componentName = 'profileComponentId';\r\n // this.mcLoader.moduleName = 'profilem';\r\n // EmitterSubjectService.emitRemoveComponent( this.mcLoader );\r\n // }, 500 );\r\n\r\n // debugger;\r\n // this.timerArray.push( this.timer )\r\n /*\r\n * -----------------------------------------------------------\r\n * debugger;\r\n */\r\n this.data = InMemoryDataServiceStatic.enums;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.data ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.data.enums ) )\r\n {\r\n // this.hobbiesArr = this.data.enums.hobbies;// this.binarySearchService.sort(this.data.enums.hobbies);\r\n // this.intosArr = this.data.enums.intos;// this.binarySearchService.sort(this.data.enums.intos);\r\n // this.lookingForsArr = this.data.enums.lookingFors; // this.binarySearchService.sort(this.data.enums.lookingFors);\r\n // this.meetingLocationsArr = this.data.enums.meetingLocations; // this.binarySearchService.sort(this.data.enums.meetingLocations);\r\n // this.petsArr = this.data.enums.pets; // this.binarySearchService.sort(this.data.enums.pets);\r\n // this.petPeevsArr = this.data.enums.petPeevs; // this.binarySearchService.sort(this.data.enums.petPeevs);\r\n // this.relationshipPreferencesArr = this.data.enums.relationshipPreferences; // this.binarySearchService.sort(this.data.enums.relationshipPreferences);\r\n // this.whenLookingToMeetsArr = this.data.enums.whenLookingToMeets; // this.binarySearchService.sort(this.data.enums.whenLookingToMeets);\r\n // debugger;\r\n this.hobbyArr = this.data.hobbArr; // InMemoryDataServiceStatic.enums.hobbies;// this.binarySearchService.sort(InMemoryDataServiceStatic.enums.hobbies);\r\n this.intoArr = this.data.intoArr; // InMemoryDataServiceStatic.enums.intos;// this.binarySearchService.sort(InMemoryDataServiceStatic.enums.intos);\r\n this.lookingForArr = this.data.lookingForArr; // InMemoryDataServiceStatic.enums.lookingFors; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.lookingFors);\r\n this.meetingLocationArr = this.data.meetingLocationArr; // InMemoryDataServiceStatic.enums.meetingLocations; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.meetingLocations);\r\n this.petArr = this.data.petArr; // InMemoryDataServiceStatic.enums.pets; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.pets);\r\n this.petPeevArr = this.data.petPeevArr; // InMemoryDataServiceStatic.enums.petPeevs; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.petPeevs);\r\n // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.relationshipPreferences);\r\n this.relationshipPreferenceArr = this.data.relationshipPreferenceArr; // InMemoryDataServiceStatic.enums.relationshipPreferences;\r\n this.whenLookingToMeetArr = this.data.whenLookingToMeetArr; // InMemoryDataServiceStatic.enums.whenLookingToMeets; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.whenLookingToMeets);\r\n }\r\n /*\r\n * -----------------------------------------------------------\r\n * reset the background-image and glyphicon-menu\r\n */\r\n EmitterSubjectService.emitResetDbgi(true);\r\n // EmitterSubjectService.emitDisplayGlyphiconMenu([]);\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.isEditProfileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess.isEditProfile = result as boolean;\r\n this.loginSuccess.isPreferenceComplete = false;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n });\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.checkboxResultEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n const tempResult = result as EmitCheckboxResult;\r\n // debugger;\r\n\r\n switch (tempResult.checkboxName.toLowerCase()) {\r\n case 'hobby':\r\n this.hobbyCheckboxResult = tempResult;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n this.preference.selectedHobbiesString = this.commaSeparatedCheckboxSelectionsString(this.hobbyCheckboxResult.selectedCheckboxsArr);\r\n this.selectedHobbiesString = this.preference.selectedHobbiesString;\r\n // debugger;\r\n }\r\n break;\r\n case 'into':\r\n this.intoCheckboxResult = tempResult;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n this.preference.selectedIntosString = this.commaSeparatedCheckboxSelectionsString(this.intoCheckboxResult.selectedCheckboxsArr);\r\n this.selectedIntosString = this.preference.selectedIntosString;\r\n }\r\n break;\r\n case 'lookingfor':\r\n this.lookingForCheckboxResult = tempResult;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n this.preference.selectedLookingForsString = this.commaSeparatedCheckboxSelectionsString(this.lookingForCheckboxResult.selectedCheckboxsArr);\r\n this.selectedLookingForsString = this.preference.selectedLookingForsString;\r\n }\r\n break;\r\n case 'relationshippreference':\r\n this.relationshipPreferenceCheckboxResult = tempResult;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n this.preference.selectedRelationshipPreferencesString = this.commaSeparatedCheckboxSelectionsString(this.relationshipPreferenceCheckboxResult.selectedCheckboxsArr);\r\n this.selectedRelationshipPreferencesString = this.preference.selectedRelationshipPreferencesString;\r\n }\r\n break;\r\n case 'meetinglocation':\r\n this.meetingLocationCheckboxResult = tempResult;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n this.preference.selectedMeetingLocationsString = this.commaSeparatedCheckboxSelectionsString(this.meetingLocationCheckboxResult.selectedCheckboxsArr);\r\n this.selectedMeetingLocationsString = this.preference.selectedMeetingLocationsString;\r\n }\r\n break;\r\n \r\n case 'pet':\r\n this.petCheckboxResult = tempResult;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n this.preference.selectedPetsString = this.commaSeparatedCheckboxSelectionsString(this.petCheckboxResult.selectedCheckboxsArr);\r\n this.selectedPetsString = this.preference.selectedPetsString;\r\n }\r\n break;\r\n case 'petpeev':\r\n this.petPeevCheckboxResult = tempResult;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n this.preference.selectedPetPeevsString = this.commaSeparatedCheckboxSelectionsString(this.petPeevCheckboxResult.selectedCheckboxsArr);\r\n this.selectedPetPeevsString = this.preference.selectedPetPeevsString;\r\n }\r\n break; \r\n case 'whenlookingtomeet':\r\n this.whenLookingToMeetCheckboxResult = tempResult;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n this.preference.selectedWhenLookingToMeetsString = this.commaSeparatedCheckboxSelectionsString(this.whenLookingToMeetCheckboxResult.selectedCheckboxsArr);\r\n this.selectedWhenLookingToMeetsString = this.preference.selectedWhenLookingToMeetsString;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n this.isFormValid = this.checkFormValidity();\r\n this.isFormSubmitted = false;\r\n this.ngAfterViewInit();\r\n } );\r\n\r\n ScrollTopServiceStatic.scrollToLocation( 'allScrollTotId', 'start' );\r\n this.redirectionBeforeSubmit();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n // debugger;\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n\r\n this.resetPageTitle();\r\n }\r\n // ---------------------------------------------------------------\r\n cancel () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.redirectionService.setRoute(this.router, 'profileContent', this.loginSuccess.signedInUserId).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * get isFormInvalid = return this.isFormValid();\r\n * ---------------------------------------------------------------\r\n */\r\n checkFormValidity(): boolean {\r\n const isTrue = !!(\r\n this.preference.selectedIntosString?.length > 0 &&\r\n this.preference.selectedLookingForsString?.length > 0 &&\r\n this.preference.selectedRelationshipPreferencesString?.length > 0 &&\r\n this.preference.selectedMeetingLocationsString?.length > 0 &&\r\n this.preference.selectedWhenLookingToMeetsString?.length > 0 &&\r\n this.preference.selectedPetsString?.length > 0 &&\r\n this.preference.selectedPetPeevsString?.length > 0 &&\r\n this.preference.selectedHobbiesString?.length > 0\r\n );\r\n\r\n return isTrue;\r\n }\r\n // ---------------------------------------------------------------\r\n commaSeparatedCheckboxSelectionsString(selectedArr: any[]): string {\r\n let str = '';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(selectedArr) && selectedArr.length > 0) {\r\n selectedArr.forEach((item) => {\r\n str += item + ',';\r\n });\r\n }\r\n return str;\r\n }\r\n // ---------------------------------------------------------------\r\n deserializeSelectedStr(selectedStr: string): any[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(selectedStr) && selectedStr.length > 0) {\r\n const selections = selectedStr.split(',');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(selections) && selections.length > 0) {\r\n selections.splice(selections.length - 1, 1); // remove the last empty index-value\r\n return selections;\r\n }\r\n }\r\n return [];\r\n }\r\n // ---------------------------------------------------------------\r\n redirectionBeforeSubmit(): void {\r\n /*\r\n * debugger;\r\n * Note : if isEditProfile==true, preference must be visited even when its completed before\r\n */\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess(); // get the updated data\r\n this.isEditProfile = EmitterSubjectService.getIsEditProfile();\r\n if (this.loginSuccess && this.loginSuccess.signedInUserId > 0) {\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.router = this.router; \r\n // debugger;\r\n if (!this.isEditProfile)\r\n {\r\n if (this.loginSuccess.isPreferenceComplete)\r\n {\r\n if (!this.loginSuccess.isProfileContentComplete ) {\r\n this.mcLoader.componentName = 'profileContent';\r\n this.mcLoader.moduleName = 'profilem';\r\n // debugger;\r\n // Note: setupMcLoderModel before fireMcLoaderRoute()!!\r\n // ---------------------------------------------------\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n else if (this.loginSuccess.isProfileComplete) {\r\n // debugger;\r\n this.mcLoader.componentName = 'myPhotoMgmt';\r\n this.mcLoader.moduleName = 'mym';\r\n // debugger;\r\n // Note: setupMcLoderModel before fireMcLoaderRoute()!!\r\n // ---------------------------------------------------\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.loginSuccess.signedInUserId).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n } \r\n else {\r\n // complete the step\r\n // debugger;\r\n }\r\n }\r\n else {\r\n // complete the step\r\n // debugger;\r\n }\r\n }\r\n else { \r\n // complete the step\r\n // debugger;\r\n } \r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n redirectionAfterSubmit () : void\r\n {\r\n if ( this.loginSuccess && this.loginSuccess.signedInUserId > 0 )\r\n {\r\n if ( this.loginSuccess.isPreferenceComplete )\r\n {\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.componentName = 'profileContent';\r\n this.mcLoader.moduleName = 'profilem';\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.router = this.router;\r\n // ---------------------------------------------------\r\n this.redirectionService.setRoute(this.mcLoader.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n getPreferenceForEdit(): void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.preference.signedInUserId = this.loginSuccess.signedInUserId;\r\n\r\n this.boxNonceEntity = this.saltModel(this.preference);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n '/api/Member/GetPreferenceForEdit',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text'\r\n )\r\n .subscribe(\r\n (result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const bn = result;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bn.box) && bn.box.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bn.nonce) && bn.nonce.length > 0) {\r\n this.preference = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Preference;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference) /*&& this.preference.signedInUserId > 0*/) {\r\n this.preference.isSuccess = true;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.hobbies)) {\r\n this.selectedHobbiesArr = this.deserializeSelectedStr(this.preference.hobbies);\r\n this.preference.selectedHobbiesString = this.commaSeparatedCheckboxSelectionsString(this.selectedHobbiesArr);\r\n this.selectedHobbiesString = this.preference.selectedHobbiesString;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.intos)) {\r\n this.selectedIntosArr = this.deserializeSelectedStr(this.preference.intos);\r\n this.preference.selectedIntosString = this.commaSeparatedCheckboxSelectionsString(this.selectedIntosArr);\r\n this.selectedIntosString = this.preference.selectedIntosString;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.lookingFors)) {\r\n this.selectedLookingForsArr = this.deserializeSelectedStr(this.preference.lookingFors);\r\n this.preference.selectedLookingForsString = this.commaSeparatedCheckboxSelectionsString(this.selectedLookingForsArr);\r\n this.selectedLookingForsString = this.preference.selectedLookingForsString;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.meetingLocations)) {\r\n this.selectedMeetingLocationsArr = this.deserializeSelectedStr(this.preference.meetingLocations);\r\n this.preference.selectedMeetingLocationsString = this.commaSeparatedCheckboxSelectionsString(this.selectedMeetingLocationsArr);\r\n this.selectedMeetingLocationsString = this.preference.selectedMeetingLocationsString;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.pets)) {\r\n this.selectedPetsArr = this.deserializeSelectedStr(this.preference.pets);\r\n this.preference.selectedPetsString = this.commaSeparatedCheckboxSelectionsString(this.selectedPetsArr);\r\n this.selectedPetsString = this.preference.selectedPetsString;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.petPeeves)) {\r\n this.selectedPetPeevsArr = this.deserializeSelectedStr(this.preference.petPeeves);\r\n this.preference.selectedPetPeevsString = this.commaSeparatedCheckboxSelectionsString(this.selectedPetPeevsArr);\r\n this.selectedPetPeevsString = this.preference.selectedPetPeevsString;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.relationshipPreferences)) {\r\n this.selectedRelationshipPreferencesArr = this.deserializeSelectedStr(this.preference.relationshipPreferences);\r\n this.preference.selectedRelationshipPreferencesString = this.commaSeparatedCheckboxSelectionsString(this.selectedRelationshipPreferencesArr);\r\n this.selectedRelationshipPreferencesString = this.preference.selectedRelationshipPreferencesString;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.whenLookingToMeets)) {\r\n this.selectedWhenLookingToMeetsArr = this.deserializeSelectedStr(this.preference.whenLookingToMeets);\r\n this.preference.selectedWhenLookingToMeetsString = this.commaSeparatedCheckboxSelectionsString(this.selectedWhenLookingToMeetsArr);\r\n this.selectedWhenLookingToMeetsString = this.preference.selectedWhenLookingToMeetsString;\r\n }\r\n // debugger;\r\n this.isFormValid = this.checkFormValidity();\r\n // debugger;\r\n this.ngAfterViewInit();\r\n } else {\r\n if (this.preference) {\r\n this.message = 'Error occured in getPreference();\\n Error-mag : ' + this.preference.message;\r\n \r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message});\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in getPreference();\\n Error-mag : '});\r\n }\r\n }\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in getPreference();\\n Error-mag : '});\r\n }\r\n }\r\n },\r\n (error) => {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in getPreference();\\n Error-mag : ' + error.message});\r\n },\r\n );\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n onMouseOut(e: any): void {\r\n this.isSubmitBttnFocus = false;\r\n }\r\n // ---------------------------------------------------------------\r\n onSubmitBttnMouseOut (e : any): void {\r\n if (e.type.value === 'mouseout') {\r\n this.isSubmitBttnFocus = false;\r\n // if (!(this.isFormValid = this.checkFormValidity())) { this.isFormSubmitted = false;\r\n } else {\r\n this.isSubmitBttnFocus = true;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n resetPageTitle(): any {\r\n this.userAndPageTitle.pageTitle = '';\r\n this.userAndPageTitle.sitUserId = 0;\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n setPageTitle(): any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.profileName) && this.loginSuccess.profileName.length > 0) {\r\n this.setUserPageTitle(this.loginSuccess.profileName);\r\n }\r\n else {\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n let msg = this.loginSuccess.isEditProfile === true ? '-: Edit ' : '-: Create';\r\n\r\n msg += ' Profile; Step-2 of 3 :-';\r\n this.userAndPageTitle.pageTitle = msg;\r\n this.userAndPageTitle.isPrepared = true;\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n setUserPageTitle (profileName : string) : any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileName) && profileName.length > 0) {\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n let msg = this.loginSuccess.isEditProfile === true ? '-: Edit ' : '-: Create';\r\n\r\n msg += ' Profile of (';\r\n msg += profileName + ')
Step-3 of 4 :-';\r\n this.userAndPageTitle.pageTitle = msg;\r\n this.userAndPageTitle.isPrepared = true;\r\n\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n saltModel(model: any): BoxNonceEntity {\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model));\r\n return this.boxNonceEntity;\r\n }\r\n // ---------------------------------------------------------------\r\n showInvalidFormMessage (e : any): void {\r\n this.isFormValid = this.checkFormValidity();\r\n this.isFormSubmitted = true;\r\n // debugger;\r\n this.onSubmitBttnMouseOut(e);\r\n }\r\n // ---------------------------------------------------------------\r\n submitPreferenceForm () : void {\r\n this.click = !this.click;\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.preference.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.isFormValid = this.checkFormValidity();\r\n // debugger;\r\n if (this.isFormValid) {\r\n // debugger;\r\n this.click = !this.click;\r\n EmitterSubjectService.emitShowSpinner(\"Updating your Preferences...\");\r\n this.boxNonceEntity = this.saltModel(this.preference);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.isFormSubmitted = true;\r\n this.httpService\r\n .postObservable(\r\n '/api/Member/UpdatePreference',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text'\r\n )\r\n .subscribe(\r\n (result : any) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const tPreference = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity)) as Preference;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPreference)) {\r\n this.preference = tPreference as Preference;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference) && this.preference.signedInUserId > 0) {\r\n this.preference.isSuccess = true;\r\n this.loginSuccess.isPreferenceComplete = true;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n this.message = this.preference.message = 'Updating your Step-3 of 4 of your Profile (Preferences) is successful!';\r\n alert(this.preference.message)\r\n this.ngAfterViewInit();\r\n this.setMessageTimer();\r\n ScrollTopServiceStatic.scrollToTop('allScrollToTopId');\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n\r\n this.redirectionAfterSubmit();\r\n // debugger;\r\n } else {\r\n if (tPreference) {\r\n this.message = 'Error occured in submitPreferenceForm();\\n Error-mag : ' + tPreference.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in submitPreferenceForm();\\n Error-mag : ' });\r\n }\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in submitPreferenceForm();\\n Error-mag : ' });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag : ' + error);\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in submitPreferenceForm();\\n Error-mag : ' + error.message });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n );\r\n }\r\n else {\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setMessageTimer(): void {\r\n this.intervalMsg = setInterval(() => {\r\n this.message = this.preference.message = '';\r\n clearInterval(this.intervalMsg);\r\n // this.router.navigate(['/profileContent/' + this.loginSuccess.signedInUserId]);\r\n }, 60000);\r\n\r\n clearInterval(this.intervalMsg);\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : This may not be needed, but do not delete it since it handles all cases\r\n */\r\n serializeSelections (arr: any[]): string {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr)) {\r\n if (arr.length > 0) {\r\n let arrStr = '';\r\n\r\n arr.map((e) => {\r\n arrStr += e + ',';\r\n });\r\n return arrStr;\r\n }\r\n return '';\r\n }\r\n return '';\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : This may not be needed, but do not delete it since it handles all cases\r\n * Toggle selection for a given Checkbox\r\n */\r\n toggleSelection (selected : any, checkbocName : any, index : any): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(checkbocName)) {\r\n switch (checkbocName.toLowerCase()) {\r\n case 'hobby':\r\n if (index > -1) {\r\n // If currently deselected\r\n this.selectedHobbiesArr.splice(index, 1);\r\n } else {\r\n // Is newly selected\r\n this.selectedHobbiesArr.push(selected);\r\n }\r\n this.selectedHobbiesString = this.serializeSelections(this.selectedHobbiesArr);\r\n break;\r\n case 'into':\r\n if (index > -1) {\r\n // Is currently deselected\r\n this.selectedIntosArr.splice(index, 1);\r\n } else {\r\n // Is newly selected\r\n this.selectedIntosArr.push(selected);\r\n }\r\n this.selectedIntosString = this.serializeSelections(this.selectedIntosArr);\r\n break;\r\n case 'lookingfor':\r\n if (index > -1) {\r\n // Is currently deselected\r\n this.selectedLookingForsArr.splice(index, 1);\r\n } else {\r\n // Is newly selected\r\n this.selectedLookingForsArr.push(selected);\r\n }\r\n this.selectedLookingForsString = this.serializeSelections(this.selectedLookingForsArr);\r\n break;\r\n case 'meetinglocation':\r\n if (index > -1) {\r\n // Is currently deselected\r\n this.selectedMeetingLocationsArr.splice(index, 1);\r\n } else {\r\n // Is newly selected\r\n this.selectedMeetingLocationsArr.push(selected);\r\n }\r\n this.selectedMeetingLocationsString = this.serializeSelections(this.selectedMeetingLocationsArr);\r\n break;\r\n case 'pet':\r\n if (index > -1) {\r\n // Is currently deselected\r\n this.selectedPetsArr.splice(index, 1);\r\n } else {\r\n // Is newly selected\r\n this.selectedPetsArr.push(selected);\r\n }\r\n this.selectedPetsString = this.serializeSelections(this.selectedPetsArr);\r\n break;\r\n case 'petpeev':\r\n if (index > -1) {\r\n // Is currently deselected\r\n this.selectedPetPeevsArr.splice(index, 1);\r\n } else {\r\n // Is newly selected\r\n this.selectedPetPeevsArr.push(selected);\r\n }\r\n this.selectedPetPeevsString = this.serializeSelections(this.selectedPetPeevsArr);\r\n break;\r\n case 'whenlookingtomeet':\r\n if (index > -1) {\r\n // Is currently deselected\r\n this.selectedWhenLookingToMeetsArr.splice(index, 1);\r\n } else {\r\n // Is newly selected\r\n this.selectedWhenLookingToMeetsArr.push(selected);\r\n }\r\n this.selectedWhenLookingToMeetsString = this.serializeSelections(this.selectedWhenLookingToMeetsArr);\r\n break;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
0\" class=\"flex-container\">\r\n
\r\n \r\n {{preference.message}}\r\n
\r\n
\r\n\r\n
\r\n
Creating/Editing Profile: Step 3 of 4
\r\n
\r\n\r\n
\r\n
Required (You may choose multiple): *
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
What are you looking for?:*
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
My preferences for relationship?:*
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\"Where would you like to meet up?:*
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
When are you looking to meetup up?:*
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Explore something about yourself:
\r\n
\r\n \r\n \r\n
\r\n
\r\n
Hobbies:*
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
What about the pet?:*
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
What are your pet peevs?:*
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
I am into:*
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Please enter all the required (*) fileds to enable the SUBMIT button. This Form is incomplete, therefore, the SUBMIT button is disabled! Please complete the form to enable the SUBMIT button.\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","'use-strict'\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { PreferenceComponent } from './preference/preference.component';\r\nimport { ProfileComponent } from './profile/profile.component';\r\nimport { ProfileContentComponent } from './profileContent/profileContent.component';\r\n\r\nexport const profileRoutes: Routes = [\r\n {\r\n path: '',\r\n children: [\r\n { path: 'memberEdit', component: ProfileComponent },\r\n { path: 'preference', component: PreferenceComponent },\r\n { path: 'profileContent', component: ProfileContentComponent },\r\n { path: 'profile', component: ProfileComponent },\r\n ]\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(profileRoutes)],\r\n exports: [RouterModule],\r\n})\r\nexport class ProfileRoutingModule { }\r\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DirectiveFilterPipeModule } from '../directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { KeyValueRoutingModule } from '../keyValueModule/keyValue-routing.module';\r\n//import { RegisterModule } from '../registerModule/register.module';\r\nimport { SharedModule } from '../sharedModule/shared.module';\r\nimport { PreferenceComponent } from './preference/preference.component';\r\nimport { ProfileRoutingModule } from './profile-routing.module';\r\nimport { ProfileComponent } from './profile/profile.component';\r\nimport { ProfileContentComponent } from './profileContent/profileContent.component';\r\n\r\n@NgModule({\r\n \r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n DirectiveFilterPipeModule,\r\n KeyValueRoutingModule,\r\n SharedModule,\r\n ProfileRoutingModule\r\n ],\r\n declarations: [\r\n PreferenceComponent,\r\n ProfileComponent,\r\n ProfileContentComponent\r\n ],\r\n exports: [\r\n ProfileRoutingModule\r\n ],\r\n providers: [\r\n // { provide: PreferenceService },\r\n // { provide: ProfileContentService },\r\n // { provide: ProfilePicsService },\r\n // { provide: ProfileSupportService },\r\n // { provide: ProfileTileService },\r\n ],\r\n})\r\nexport class ProfileModule { }\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { Content } from '../../../models/common/content.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../../../services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { ScrollTopServiceStatic } from '../../../services/staticServices/commonStaticServices/scrollTopServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../../../services/staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\n// Note: this component will be used during creating/editing a profile only\r\n\r\n@Component({\r\n selector: 'app-profile-content',\r\n templateUrl: './profileContent.component.html',\r\n styleUrls: ['./profileContent.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [ Animations, slideInOutAnimation,\r\n ],\r\n\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class ProfileContentComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public redirectionService! : RedirectionService;\r\n // ----------------------------------------------------------\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public click : boolean = false;\r\n public profileContent: Content = new Content();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public httpService! : HttpService;\r\n public intervalMsg : any;\r\n public isEditProfile = false;\r\n public isFormSubmitted = false;\r\n public isFormValid = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public message = '';\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public paramId = 0;\r\n @ViewChild('profileContentForm', { static: false})\r\n profileContentForm : any;\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public userAndPageTitle: UserAndPageTitle = new UserAndPageTitle();\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n public cdr : ChangeDetectorRef,\r\n private commonServiceService: CommonServiceService,\r\n private coreServiceService: CoreServiceService,\r\n // private dbServiceService: DbServiceService,\r\n private router: Router\r\n ) {\r\n // if (dbServiceService) {\r\n // this.data = dbServiceService.getInMemoryDataService();\r\n // }\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n if (this.coreServiceService) this.httpService = this.coreServiceService.getHttpService();\r\n\r\n // this.activatedRoute.params.subscribe((params) => (this.paramId = this.profileContent.signedInUserId = params.id));\r\n\r\n \r\n // ---------------------------------------------------------------\r\n this.setPageTitle();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.profileContent.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n if (this.profileContent.signedInUserId > 0) {\r\n this.getProfileContentForEdit();\r\n }\r\n // -----------------------------------------------------------\r\n if (this.profileContent.signedInUserId === 0) {\r\n this.profileContent.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n // -----------------------------------------------------------\r\n // this.getProfileContent();\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.isEditProfileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess.isEditProfile = result as boolean;\r\n this.loginSuccess.isProfileContentComplete = false;\r\n EmitterSubjectService.setLoginSuccess( this.loginSuccess );\r\n } );\r\n // ----------------------------------------------------------------------------------\r\n\r\n // ----------------------------------------------------------------------------------\r\n // this.timer = setTimeout( () =>\r\n // {\r\n // // debugger;\r\n // this.mcLoader.componentName = 'profileContentComponentId';\r\n // this.mcLoader.moduleName = 'profilem';\r\n // EmitterSubjectService.emitRemoveComponent( this.mcLoader );\r\n // }, 500 );\r\n\r\n //// debugger;\r\n // this.timerArray.push( this.timer );\r\n\r\n // -----------------------------------------------------------\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n /*\r\n * -----------------------------------------------------------\r\n * reset the background-image and glyphicon-menu\r\n */\r\n // EmitterSubjectService.emitResetDbgi(true);\r\n // EmitterSubjectService.emitDisplayGlyphiconMenu([]);\r\n\r\n\r\n // -----------------------------------------------------------\r\n /*\r\n * -----------------------------------------------------------\r\n * debugger;\r\n */\r\n if (this.loginSuccess && this.loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n if (this.profileContent.signedInUserId === 0) {\r\n this.profileContent.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n this.redirectionBeforeSubmit();\r\n }\r\n /*\r\n * -----------------------------------------------------------\r\n * ScrollTopServiceStatic.scrollToTop('Top');\r\n */\r\n ScrollTopServiceStatic.scrollToLocation( 'allScrollTotId', 'start' );\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n // debugger;\r\n this.cdr.detectChanges();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.resetPageTitle();\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n }\r\n // ---------------------------------------------------------------\r\n cancel(): void {\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.componentName = 'profileTileScroll';\r\n this.mcLoader.moduleName = 'profiletilescrollm';\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.router = this.router;\r\n // Note: setupMcLoderModel before fireMcLoaderRoute()!!\r\n // ---------------------------------------------------\r\n // this.mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(this.mcLoader);\r\n //EmitterSubjectService.setMCLoader( this.mcLoader );\r\n this.redirectionService.setRoute(this.mcLoader.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // determineRedirection(): void {\r\n // /*\r\n // * debugger;\r\n // * Note: if isEditProfile==true, profileContent must be visited even when its completed before\r\n // */\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess(); // get the updated data\r\n // if (this.loginSuccess && this.loginSuccess.signedInUserId > 0) {\r\n // if (this.loginSuccess.isProfileContentComplete && this.loginSuccess.isEditProfile) {\r\n // /*\r\n // * TODO: restore memberView after completing photoMgmt\r\n // * this.router.navigate(['/memberView/' + this.loginSuccess.signedInUserId]);\r\n // */\r\n // this.router.navigate(['/myPhotos/' + this.loginSuccess.signedInUserId]);\r\n // }\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n redirectionBeforeSubmit () : void\r\n {\r\n /*\r\n * debugger;\r\n * Note : if isEditProfile==true, preference must be visited even when its completed before\r\n */\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess(); // get the updated data\r\n this.isEditProfile = EmitterSubjectService.getIsEditProfile();\r\n if ( this.loginSuccess && this.loginSuccess.signedInUserId > 0 )\r\n {\r\n if (!this.isEditProfile) {\r\n if (this.loginSuccess.isProfileContentComplete) { \r\n this.mcLoader.componentName = 'myPhotoMgmt';\r\n this.mcLoader.moduleName = 'mym';\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.router = this.router;\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n else {\r\n // complete this step\r\n }\r\n }\r\n else {\r\n // complete this step\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n redirectionAfterSubmit () : void\r\n {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if ( this.loginSuccess && this.loginSuccess.signedInUserId > 0 )\r\n { \r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.router = this.router; \r\n this.mcLoader.componentName = 'myPhotoMgmt';\r\n this.mcLoader.moduleName = 'mym';\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n }); \r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: this will be used only during profileContent creating/editing\r\n */\r\n getProfileContentForEdit(): void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.loginSuccess?.signedInUserId > 0) {\r\n this.profileContent.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.profileContent.sitUserId = this.loginSuccess.signedInUserId;\r\n\r\n EmitterSubjectService.emitShowSpinner('Getting your profile Content & highlights....');\r\n\r\n this.boxNonceEntity = this.saltModel(this.profileContent);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n '/Member/GetProfileContentForEdit',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text'\r\n )\r\n .subscribe(\r\n (result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n const bn = result;\r\n\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n this.profileContent = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Content;\r\n\r\n // debugger; // TODO: check for profileId in Content!!!\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent) && this.profileContent.signedInUserId > 0 && this.profileContent.profileId > 0) {\r\n this.profileContent.isSuccess = true;\r\n EmitterSubjectService.emitHideSpinner(true);\r\n this.ngAfterViewInit();\r\n /*\r\n * var tProfileContent = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result as BoxNonce)) as Content;\r\n * debugger;\r\n * this.profileContent = tProfileContent as Content;\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent) && this.profileContent.signedInUserId > 0) {\r\n * this.profileContent.isSuccess = true;\r\n * debugger;\r\n */\r\n }\r\n } else {\r\n if (this.profileContent) {\r\n this.message = 'Error occured in getProfileContent();\\n Error-mag: ' + this.profileContent.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n } else {\r\n this.message = 'Error occured in getProfileContent();\\n Error-mag: ';\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n }\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n } else {\r\n this.message = 'Error occured in getProfileContent();\\n Error-mag: ';\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag: ' + error);\r\n this.message = 'Error occured in getProfileContent();\\n Error-mag: ' + error.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n );\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n else {\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // isFormValid(): boolean {\r\n // return this.profileContent.contents && this.profileContent.contents.length > 0 && this.profileContent.heading && this.profileContent.heading.length > 0;\r\n // }\r\n\r\n // ---------------------------------------------------------------\r\n resetPageTitle(): any {\r\n this.userAndPageTitle.pageTitle = '';\r\n this.userAndPageTitle.sitUserId = 0;\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n setPageTitle () : any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.profileName) && this.loginSuccess.profileName.length > 0) {\r\n this.setUserPageTitle(this.loginSuccess.profileName);\r\n }\r\n else {\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n let msg = this.loginSuccess.isEditProfile === true ? '-: Edit ' : '-: Create';\r\n\r\n msg += ' Profile Highlights and Description
Step-3 of 3 :-';\r\n this.userAndPageTitle.pageTitle = msg;\r\n this.userAndPageTitle.isPrepared = true;\r\n\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n return true; \r\n }\r\n // ---------------------------------------------------------------\r\n setUserPageTitle (profileName: string) : any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileName) && profileName.length > 0) {\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n let msg = this.loginSuccess.isEditProfile === true ? '-: Edit ' : '-: Create';\r\n\r\n msg += ' Profile Highlights and Description of (';\r\n msg += profileName + ')
Step-3 of 3 :-';\r\n this.userAndPageTitle.pageTitle = msg;\r\n this.userAndPageTitle.isPrepared = true;\r\n\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n saltModel(model:any): any {\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model));\r\n return this.boxNonceEntity;\r\n }\r\n // ---------------------------------------------------------------\r\n submitProfileContentForm () : void {\r\n this.click = !this.click;\r\n // start spinner:\r\n this.spinnerModel = new SpinnerModel();\r\n this.spinnerModel.message = 'Updating is in progress...';\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n this.profileContent.signedInUserId = this.loginSuccess.signedInUserId;\r\n\r\n if (this.profileContentForm.valid) {\r\n // debugger;\r\n EmitterSubjectService.emitShowSpinner(\"Updating your Profile Content & Highlights...\");\r\n this.boxNonceEntity = this.saltModel(this.profileContent);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.isFormSubmitted = true;\r\n this.httpService\r\n .postObservable(\r\n '/api/Member/UpdateProfileContent',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text'\r\n )\r\n .subscribe(\r\n (result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const bn = result;\r\n\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n const tProfileContent = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Content;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tProfileContent) && tProfileContent.signedInUserId > 0 && tProfileContent.profileId > 0 && tProfileContent.contentId > 0) {\r\n this.profileContent = tProfileContent;\r\n this.profileContent.isSuccess = true; \r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.loginSuccess.isProfileContentComplete = true;\r\n this.loginSuccess.isProfileComplete = this.loginSuccess.isPreScreenComplete && this.loginSuccess.isProfileInfoComplete && this.loginSuccess.isPreferenceComplete && this.loginSuccess.isProfileContentComplete;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n this.message = this.profileContent.message = 'Updating Step-4 of 4 (last step) of your Profile (more about you) is successful!';\r\n\r\n this.ngAfterViewInit();\r\n this.setMessageTimer();\r\n ScrollTopServiceStatic.scrollToTop('allScrollToTopId');\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n alert(this.profileContent.message);\r\n // debugger;\r\n this.redirectionAfterSubmit();\r\n // debugger;\r\n }\r\n } else {\r\n if (this.profileContent) {\r\n this.message = 'Error occured in submitProfileContent();\\n Error-mag: ' + this.profileContent.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n } else {\r\n this.message = 'Error occured in submitProfileContent();\\n Error-mag: ';\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n }\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n } else {\r\n this.message = 'Error occured in submitProfileContent();\\n Error-mag: ';\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag: ' + error);\r\n this.message = 'Error occured in submitProfileContent();\\n Error-mag: ' + error.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n );\r\n }\r\n else {\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setMessageTimer(): void {\r\n this.intervalMsg = setInterval(() => {\r\n this.message = this.profileContent.message = '';\r\n clearInterval(this.intervalMsg);\r\n // this.router.navigate(['/memberView/' + this.loginSuccess.signedInUserId]);\r\n }, 60000);\r\n\r\n clearInterval(this.intervalMsg);\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
0\" class=\"flex-container\">\r\n
\r\n \r\n {{profileContent.message}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
Create/Edit Profile: Step 4 of 4:
\r\n
\r\n\r\n
\r\n
More about me & highlights
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n Profile Name* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Your profile name is required\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n Profile Highlights* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Profile highlights is required\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Profile Description* :\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Profile description is required\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { EmitRadioboxResult } from '../../../models/common/emitRadioboxResult.model';\r\nimport { MessageModel } from '../../../models/common/messageModel.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { Profile } from '../../../models/profile/profile.model';\r\nimport { CommonServiceService } from '../../../services/commonServiceService/commonServiceService.service';\r\nimport { RedirectionService } from '../../../services/commonServiceService/redirectionService.service';\r\nimport { CoreServiceService } from '../../../services/coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../../../services/coreServiceService/httpService.service';\r\nimport { DbServiceService } from '../../../services/dbServiceService/dbServiceService.service';\r\nimport { MemberService } from '../../../services/memberServiceService/memberService.service';\r\nimport { MemberServiceService } from '../../../services/memberServiceService/memberServiceService.service';\r\nimport { RendererService } from '../../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../../services/rendererServiceService/rendererServiceService.service';\r\nimport { ArrayServiceStatic } from '../../../services/staticServices/arrayServiceStatic.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../../../services/staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { ScrollTopServiceStatic } from '../../../services/staticServices/commonStaticServices/scrollTopServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../../../services/staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { InMemoryDataServiceStatic } from '../../../services/staticServices/inMemoryDataServiceStatic.service';\r\nimport { Animations, slideInOutAnimation } from '../../animation';\r\n\r\ndeclare let jQuery: any;\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'app-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.scss'],\r\n \r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [ Animations, slideInOutAnimation,\r\n ],\r\n\r\n // attach the slide in/out animation to the host (root) element of this component\r\n host: { '[@slideInOutAnimation]': '' }\r\n})\r\nexport class ProfileComponent implements AfterViewInit, OnInit, OnDestroy {\r\n // public binarySearchService: BinarySearchService;\r\n // public gestureService: GestureService;\r\n public httpService! : HttpService;\r\n public memberService! : MemberService;\r\n private rendererService! : RendererService;\r\n public redirectionService! : RedirectionService;\r\n // ----------------------------------------------------------\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n // checkboxNames are same in preference model as well.\r\n public checkboxNames : string[] = [ 'hobby', 'into', 'lookingFor', 'meetingLocation', 'pet', 'petPeev', 'relationshipPreference', 'whenLookingToMeet' ];\r\n public click : boolean = false;\r\n public counter = 0;\r\n public enums : any;\r\n private emitterDestroyed$: Subject = new Subject();\r\n public highestEducationArr: any[] = [];\r\n public highestEducationRadioLegend = 'What is the level of your highest education? : ';\r\n public highestEducationRadioboxResult: EmitRadioboxResult = new EmitRadioboxResult();\r\n public intervalMsg: any;\r\n public intervalMsgBanners: any[] = [];\r\n public isEditProfile = false;\r\n public isViewRendered = false;\r\n public isFormSubmitted = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isProfileFormValid = false;\r\n public isProfileInfo = false;\r\n public isSubmitBttnFocus = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public mc: any;\r\n public mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n public message = '';\r\n public messageModel : MessageModel = new MessageModel();\r\n public msgAnimCount = 0;\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public playSafeArr: any[] = [];\r\n public playSafeRadioboxResult: EmitRadioboxResult = new EmitRadioboxResult();\r\n public positionArr: any[] = [];\r\n public positionRadioboxResult: EmitRadioboxResult = new EmitRadioboxResult();\r\n public profile: Profile = new Profile();\r\n public radioboxNames: string[] = ['highestEducation', 'Religion', 'playSafe', 'position', 'relationshipStatus', 'smokingStatus'];\r\n public religionArr: any[] = [];\r\n public religionRadioboxResult: EmitRadioboxResult = new EmitRadioboxResult();\r\n public relationshipStatusArr: any[] = [];\r\n public relationshipStatusRadioboxResult: EmitRadioboxResult = new EmitRadioboxResult();\r\n public renderer!: Renderer2;\r\n public returnUrl = '';\r\n public smokingStatusArr: string[] = [];\r\n public smokingStatusRadioboxResult: EmitRadioboxResult = new EmitRadioboxResult();\r\n\r\n public selectedHiEduIndex = -1;\r\n public selectedPlaySafeIndex = -1;\r\n public selectedPositionIndex = -1;\r\n public selectedReligionIndex = -1;\r\n public selectedRelStatusIndex = -1;\r\n public selectedSmkStatusIndex = -1;\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n public userAndPageTitle: UserAndPageTitle = new UserAndPageTitle();\r\n @ViewChild('profileForm', { static: false}) profileForm: any;\r\n public yourLoginSuccess: LoginSuccess = new LoginSuccess();\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n public cdr : ChangeDetectorRef,\r\n private commonServiceService: CommonServiceService,\r\n private coreServiceService: CoreServiceService,\r\n @Inject(DOCUMENT) document : any,\r\n private dbServiceService: DbServiceService,\r\n public memberServiceService : MemberServiceService,\r\n private rendererServiceService: RendererServiceService,\r\n private router: Router,\r\n private window: Window,\r\n ) {\r\n this.redirectionService = this.commonServiceService.getRedirectionService();\r\n if ( this.coreServiceService ) this.httpService = this.coreServiceService.getHttpService();\r\n if (this.memberServiceService) {\r\n this.memberService = this.memberServiceService.getMemberService();\r\n }\r\n if ( this.rendererServiceService ) this.rendererService = this.rendererServiceService.getRendererService();\r\n if (this.rendererService) {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n // ---------------------------------------------------------------\r\n // debugger;\r\n // this.activatedRoute.params.subscribe((params) => (this.profile.signedInUserId = params.id));\r\n // ---------------------------------------------------------------\r\n\r\n /*\r\n * if the params.id is not provided, then get the yourLoginSucces and assign its singnedInUserId to profile.signedInUseId\r\n * debugger;\r\n */\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profile.signedInUserId)) {\r\n // this.yourLoginSuccess = EmitterSubjectService.getYourLoginSuccess();\r\n // if (this.yourLoginSuccess.signedInUserId > 0) {\r\n // this.profile.signedInUserId = this.yourLoginSuccess.signedInUserId;\r\n // // debugger;\r\n // this.getProfileForEdit();\r\n // }\r\n // }\r\n\r\n // debugger;\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.enums ) )\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.httpService ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.httpService.getEnumsFromServer() ) )\r\n // {\r\n // debugger;\r\n // this.enums = this.httpService.getEnumsFromServer().then( enums =>\r\n // {\r\n // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( enums ) )\r\n // {\r\n // this.highestEducationsArr = enums.highestEducations; //this.binarySearchService.sort(this.data.enums.highestEducations);\r\n // this.playSafesArr = enums.playSafes; // this.binarySearchService.sort(this.data.enums.playSafes);\r\n // this.positionsArr = enums.positions; // this.binarySearchService.sort(this.data.enums.positions);\r\n // this.religionsArr = enums.religions; // this.binarySearchService.sort(this.data.enums.religions);\r\n // this.relationshipStatusesArr = enums.relationshipStatuses; // this.binarySearchService.sort(this.data.enums.relationshipStatuses);\r\n // this.smokingStatusesArr = enums.smokingStatuses; // this.binarySearchService.sort(this.data.enums.smokingStatuses);\r\n // }\r\n // } );\r\n // }\r\n // }\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.enums ) )\r\n // {\r\n // debugger;\r\n // this.enums = InMemoryDataServiceStatic.getEnums();\r\n // }\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.enums ) )\r\n // {\r\n // debugger;\r\n // this.enums = EmitterSubjectService.getEnums(); // if available, get it from EmitterSubjectService\r\n // }\r\n\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.enums) )\r\n {\r\n // debugger;\r\n this.highestEducationArr = InMemoryDataServiceStatic.highestEducationArr; // this.binarySearchService.sort(this.data.enums.highestEducations);\r\n this.playSafeArr = InMemoryDataServiceStatic.playSafeArr; // this.binarySearchService.sort(this.data.enums.playSafes);\r\n this.positionArr = InMemoryDataServiceStatic.positionArr; // this.binarySearchService.sort(this.data.enums.positions);\r\n this.religionArr = InMemoryDataServiceStatic.religionArr; // this.binarySearchService.sort(this.data.enums.religions);\r\n this.relationshipStatusArr = InMemoryDataServiceStatic.relationshipStatusArr; // this.binarySearchService.sort(this.data.enums.relationshipStatuses);\r\n this.smokingStatusArr = InMemoryDataServiceStatic.smokingStatusArr; // this.binarySearchService.sort(this.data.enums.smokingStatuses);\r\n }\r\n // ---------------------------------------------------------------\r\n this.isProfileFormValid = this.checkFormValidity();\r\n // ---------------------------------------------------------------\r\n this.setPageTitle();\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n /*\r\n * debugger;\r\n * this.getProfileForEdit();\r\n */\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnInit() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.profile.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.isEditProfile = EmitterSubjectService.getIsEditProfile();\r\n this.getProfileForEdit();\r\n // debugger;\r\n //if (this.loginSuccess.isPreScreenComplete && (!this.loginSuccess.isProfileInfoComplete || this.isEditProfile)) {\r\n // this.isProfileInfo = true;\r\n // // debugger;\r\n //}\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n // -------------------------------------------------------------\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.data ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.data.enums ) ) {\r\n\r\n // this.highestEducationsArr = this.data.enums.highestEducationsArr; // InMemoryDataServiceStatic.enums.hobbies;// this.binarySearchService.sort(InMemoryDataServiceStatic.enums.hobbies);\r\n // this.playSafesArr = this.data.enums.playSafesArr; // InMemoryDataServiceStatic.enums.intos;// this.binarySearchService.sort(InMemoryDataServiceStatic.enums.intos);\r\n // this.positionsArr = this.data.enums.positionsArr; // InMemoryDataServiceStatic.enums.lookingFors; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.lookingFors);\r\n // this.religionsArr = this.data.enums.religionsArr; // InMemoryDataServiceStatic.enums.meetingLocations; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.meetingLocations);\r\n // this.relationshipStatusesArr = this.data.enums.relationshipStatusesArr; // InMemoryDataServiceStatic.enums.pets; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.pets);\r\n // this.smokingStatusesArr = this.data.enums.smokingStatusesArr; // InMemoryDataServiceStatic.enums.petPeevs; // this.binarySearchService.sort(InMemoryDataServiceStatic.enums.petPeevs);\r\n\r\n // }\r\n // -------------------------------------------------------------\r\n // ( ( this.emitterService as EmitterService ) as EmitterService ).emitClearGlyphiconMenu( true );\r\n\r\n /*\r\n * if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profile.signedInUserId)) {\r\n * this.yourLoginSuccess = EmitterSubjectService.getYourLoginSuccess();\r\n * if (this.yourLoginSuccess.signedInUserId > 0) {\r\n * this.profile.signedInUserId = this.yourLoginSuccess.signedInUserId;\r\n * debugger;\r\n * this.getProfileForEdit();\r\n * }\r\n * }\r\n * -----------------------------------------------------------\r\n */\r\n // this.mc = this.gestureService.activateGesture('profileComponentId', '', true);\r\n /*\r\n * -----------------------------------------------------------\r\n * EmitterSubjectService.localStorageLoginSuccessEmitter\r\n *\r\n * .subscribe(result => {\r\n * debugger;\r\n * this.loginSuccess = result;\r\n * this.determineRedirection();\r\n * });\r\n * -----------------------------------------------------------\r\n */\r\n EmitterSubjectService.emitSetBreadcrumForPageSwitch(true);\r\n /*\r\n * -----------------------------------------------------------\r\n * reset the background-image and glyphicon-menu\r\n */\r\n EmitterSubjectService.emitResetDbgi(true);\r\n EmitterSubjectService.emitClearGlyphiconMenu(true);\r\n\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.isEditProfileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n this.loginSuccess.isEditProfile = result as boolean;\r\n this.loginSuccess.isProfileInfoComplete = result as boolean === true ? false : true;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n });\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.radioboxResultEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n const tempResult = result as EmitRadioboxResult;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempResult) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempResult.radioboxName)) {\r\n switch (tempResult.radioboxName.toLowerCase()) {\r\n case 'highesteducation':\r\n this.highestEducationRadioboxResult = tempResult;\r\n this.profile.highestEducation = this.highestEducationRadioboxResult.radioboxSelection;\r\n this.selectedHiEduIndex = this.highestEducationRadioboxResult.index;\r\n // this.memberService.getIndexOfItemInArr(this.highestEducationsArr, this.profile.highestEducation );\r\n break;\r\n case 'playsafe':\r\n this.playSafeRadioboxResult = tempResult;\r\n this.profile.playSafe = this.playSafeRadioboxResult.radioboxSelection;\r\n this.selectedPlaySafeIndex = this.playSafeRadioboxResult.index;\r\n // this.memberService.getIndexOfItemInArr(this.playSafesArr, this.profile.playSafe);\r\n break;\r\n case 'position':\r\n this.positionRadioboxResult = tempResult;\r\n this.profile.position = this.positionRadioboxResult.radioboxSelection;\r\n this.selectedPositionIndex = this.positionRadioboxResult.index;\r\n // this.memberService.getIndexOfItemInArr(this.positionsArr, this.profile.position);\r\n break;\r\n case 'religion':\r\n // debugger;\r\n this.religionRadioboxResult = tempResult;\r\n this.profile.religion = this.religionRadioboxResult.radioboxSelection;\r\n this.selectedReligionIndex = this.religionRadioboxResult.index;\r\n /*\r\n * this.memberService.getIndexOfItemInArr(this.religionsArr, this.profile.religion);\r\n * debugger;\r\n */\r\n break;\r\n case 'relationshipstatus':\r\n this.relationshipStatusRadioboxResult = tempResult;\r\n this.profile.relationshipStatus = this.relationshipStatusRadioboxResult.radioboxSelection;\r\n this.selectedRelStatusIndex = this.relationshipStatusRadioboxResult.index;\r\n // this.memberService.getIndexOfItemInArr(this.relationshipStatusesArr, this.profile.relationshipStatus);\r\n break;\r\n case 'smokingstatus':\r\n this.smokingStatusRadioboxResult = tempResult;\r\n this.profile.smokingStatus = this.smokingStatusRadioboxResult.radioboxSelection;\r\n this.selectedSmkStatusIndex = this.smokingStatusRadioboxResult.index;\r\n // this.memberService.getIndexOfItemInArr(this.smokingStatusesArr, this.profile.smokingStatus);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n this.isProfileFormValid = this.checkFormValidity();\r\n });\r\n // -----------------------------------------------------------\r\n // debugger;\r\n // if (this.loginSuccess && this.loginSuccess.signedInUserId > 0) {\r\n // //debugger;\r\n // if (this.profile.signedInUserId === 0) {\r\n // this.profile.signedInUserId = this.loginSuccess.signedInUserId;\r\n // }\r\n // debugger;\r\n // this.determineRedirection();\r\n // }\r\n // -----------------------------------------------------------\r\n // ScrollTopServiceStatic.scrollToTop('Top');\r\n ScrollTopServiceStatic.scrollToLocation( 'allScrollTotId', 'start' );\r\n // debugger;\r\n this.redirectionBeforeSubmit();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n // debugger;\r\n this.cdr.detectChanges();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n clearInterval(this.intervalMsg);\r\n this.intervalMsgBanners.forEach((timer) => clearInterval(timer));\r\n this.resetPageTitle();\r\n }\r\n // ---------------------------------------------------------------\r\n cancel () : void\r\n {\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.componentName = 'index';\r\n this.mcLoader.moduleName = 'app';\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.router = this.router;\r\n // Note: setupMcLoderModel before fireMcLoaderRoute()!!\r\n // ---------------------------------------------------\r\n //this.mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(this.mcLoader);\r\n //EmitterSubjectService.setMCLoader( this.mcLoader );\r\n\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n // this.router.navigate(['/index']);\r\n }\r\n // ---------------------------------------------------------------\r\n checkFormValidity(): boolean {\r\n const isTrue = !!(\r\n ( this.highestEducationRadioboxResult\r\n && this.highestEducationRadioboxResult.radioboxSelection\r\n && this.highestEducationRadioboxResult.radioboxSelection.length > 0 || this.selectedHiEduIndex > -1 ) &&\r\n ( this.playSafeRadioboxResult\r\n && this.playSafeRadioboxResult.radioboxSelection\r\n && this.playSafeRadioboxResult.radioboxSelection.length > 0 || this.selectedPlaySafeIndex > -1 ) &&\r\n ( this.positionRadioboxResult\r\n && this.positionRadioboxResult.radioboxSelection\r\n && this.positionRadioboxResult.radioboxSelection.length > 0 || this.selectedPositionIndex > -1 ) &&\r\n ( this.religionRadioboxResult\r\n && this.religionRadioboxResult.radioboxSelection\r\n && this.religionRadioboxResult.radioboxSelection.length > 0 || this.selectedReligionIndex > -1 ) &&\r\n ( this.relationshipStatusRadioboxResult\r\n && this.relationshipStatusRadioboxResult.radioboxSelection\r\n && this.relationshipStatusRadioboxResult.radioboxSelection.length > 0 || this.selectedRelStatusIndex > -1 ) &&\r\n ( this.smokingStatusRadioboxResult\r\n && this.smokingStatusRadioboxResult.radioboxSelection\r\n && this.smokingStatusRadioboxResult.radioboxSelection.length > 0 || this.selectedSmkStatusIndex > -1 )\r\n );\r\n // debugger;\r\n return isTrue;\r\n }\r\n // ---------------------------------------------------------------\r\n redirectionAfterSubmit () : void\r\n {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if ( this.loginSuccess && this.loginSuccess.signedInUserId > 0 )\r\n {\r\n // debugger;\r\n if ( this.loginSuccess.isProfileInfoComplete )\r\n {\r\n this.mcLoader = new ModuleComponentLoader();\r\n this.mcLoader.componentName = 'preference';\r\n this.mcLoader.moduleName = 'profilem';\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.router = this.router;\r\n \r\n // debugger;\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n redirectionBeforeSubmit (): void {\r\n /*\r\n * Note : if isEditProfile==true, profileInfo must be visited even when its completed before\r\n */\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess(); // get the updated data\r\n this.isEditProfile = EmitterSubjectService.getIsEditProfile();\r\n this.mcLoader = new ModuleComponentLoader();\r\n if (this.loginSuccess && this.loginSuccess.signedInUserId > 0)\r\n {\r\n // debugger;\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n this.mcLoader.router = this.router;\r\n\r\n // During signup:\r\n // --------------\r\n if (!this.loginSuccess.isEditProfile && !this.isEditProfile)\r\n {\r\n if (this.loginSuccess.isProfileInfoComplete)\r\n {\r\n if (!this.loginSuccess.isPreferenceComplete) {\r\n this.mcLoader.moduleName = 'profilem';\r\n this.mcLoader.componentName = 'preference';\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n else if (!this.loginSuccess.isProfileContentComplete) {\r\n this.mcLoader.moduleName = 'profilem';\r\n this.mcLoader.componentName = 'profileContent';\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n else if (this.loginSuccess.isProfileComplete) {\r\n // debugger;\r\n this.mcLoader.componentName = 'myPhotoMgmt';\r\n this.mcLoader.moduleName = 'mym';\r\n // debugger;\r\n this.redirectionService.setRoute(this.router, this.mcLoader.componentName, this.mcLoader.id).subscribe(data => {\r\n this.pagerBrdCrm = data;\r\n });\r\n }\r\n else {\r\n // stay here to complete the profile.\r\n } \r\n } \r\n else {\r\n // stay here to complete the profile.\r\n } \r\n }\r\n // During editing, we go through all steps but not preScreen step:\r\n else {\r\n // stay here to complete the profile.\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n resetPageTitle(): any {\r\n this.userAndPageTitle.pageTitle = '';\r\n this.userAndPageTitle.sitUserId = 0;\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n setPageTitle(): any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.profileName) && this.loginSuccess.profileName.length > 0) {\r\n this.setUserPageTitle(this.loginSuccess.profileName);\r\n }\r\n else {\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n let msg = this.loginSuccess.isEditProfile === true ? '-: Edit ' : '-: Create';\r\n\r\n msg += ' Profile; Step-2 0f 4 :-';\r\n this.userAndPageTitle.pageTitle = msg;\r\n this.userAndPageTitle.isPrepared = true;\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n setUserPageTitle (profileName : string) : any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileName) && profileName.length > 0) {\r\n this.userAndPageTitle.sitUserId = this.loginSuccess.signedInUserId;\r\n let msg = this.loginSuccess.isEditProfile === true ? '-: Edit ' : '-: Create';\r\n\r\n msg += ' Profile of (';\r\n msg += profileName + ')
Step-2 of 4 :-';\r\n this.userAndPageTitle.pageTitle = msg;\r\n this.userAndPageTitle.isPrepared = true;\r\n\r\n // debugger;\r\n EmitterSubjectService.emitUserAndPageTitle(this.userAndPageTitle);\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n salt(): void {\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(this.profile));\r\n }\r\n // ---------------------------------------------------------------\r\n getProfileForEdit(): void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profile ) || this.profile.signedInUserId == 0 )\r\n {\r\n this.profile.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n if (this.profile.signedInUserId > 0) {\r\n this.salt();\r\n // debugger;\r\n EmitterSubjectService.emitShowSpinner('Getting your profile information....');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n '/api/Member/GetProfileForEdit',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe(\r\n (result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const tProfile = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity)) as Profile;\r\n // debugger;\r\n\r\n this.profile = tProfile as Profile;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profile) && this.profile.signedInUserId > 0) {\r\n /*\r\n * this.profile.isSuccess = true;\r\n * debugger;\r\n */\r\n this.highestEducationRadioboxResult.index = this.selectedHiEduIndex = ArrayServiceStatic.getIndexOfItemInArr(this.highestEducationArr, this.profile.highestEducation);\r\n this.playSafeRadioboxResult.index = this.selectedPlaySafeIndex = ArrayServiceStatic.getIndexOfItemInArr(this.playSafeArr, this.profile.playSafe);\r\n this.positionRadioboxResult.index = this.selectedPositionIndex = ArrayServiceStatic.getIndexOfItemInArr(this.positionArr, this.profile.position);\r\n this.religionRadioboxResult.index = this.selectedReligionIndex = ArrayServiceStatic.getIndexOfItemInArr(this.religionArr, this.profile.religion);\r\n this.relationshipStatusRadioboxResult.index = this.selectedRelStatusIndex = ArrayServiceStatic.getIndexOfItemInArr(this.relationshipStatusArr, this.profile.relationshipStatus);\r\n this.smokingStatusRadioboxResult.index = this.selectedSmkStatusIndex = ArrayServiceStatic.getIndexOfItemInArr(this.smokingStatusArr, this.profile.smokingStatus);\r\n\r\n this.highestEducationRadioboxResult.radioboxSelection = this.profile.highestEducation;\r\n this.playSafeRadioboxResult.radioboxSelection = this.profile.playSafe;\r\n this.positionRadioboxResult.radioboxSelection = this.profile.position;\r\n this.religionRadioboxResult.radioboxSelection = this.profile.religion;\r\n this.relationshipStatusRadioboxResult.radioboxSelection = this.profile.relationshipStatus;\r\n this.smokingStatusRadioboxResult.radioboxSelection = this.profile.smokingStatus;\r\n this.isProfileFormValid = this.checkFormValidity();\r\n this.ngAfterViewInit();\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n\r\n // debugger;\r\n } else {\r\n if (tProfile) {\r\n this.message = 'Error occured in getProfileForEdit();\\n Error-mag : ' + tProfile.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in getProfileForEdit();\\n Error-mag : ' });\r\n }\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in getProfileForEdit();\\n Error-mag : ' });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag : ' + error);\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in getProfileForEdit();\\n Error-mag : ' + error.message });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n );\r\n }\r\n else {\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n submitProfileForm () : void {\r\n this.click = !this.click;\r\n if (this.profile.signedInUserId > 0 && this.profileForm.valid && this.checkFormValidity()) {\r\n // debugger;\r\n this.spinnerModel = new SpinnerModel();\r\n this.spinnerModel.message = 'Updating your profile information....';\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n\r\n this.salt();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.isFormSubmitted = true;\r\n this.httpService\r\n .postObservable(\r\n '/api/Member/UpdateProfile',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe(\r\n (result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n var tempBn : BoxNonceEntity = new BoxNonceEntity() \r\n tempBn.box = result.box;\r\n tempBn.nonce = result.nonce;\r\n const tProfile = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(tempBn as BoxNonceEntity)) as Profile;\r\n // debugger;\r\n\r\n this.profile = tProfile as Profile;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profile) && this.profile.signedInUserId > 0) {\r\n // debugger;\r\n this.profile.isSuccess = true;\r\n this.highestEducationRadioboxResult.index = this.selectedHiEduIndex = ArrayServiceStatic.getIndexOfItemInArr(this.highestEducationArr, this.profile.highestEducation);\r\n this.playSafeRadioboxResult.index = this.selectedPlaySafeIndex = ArrayServiceStatic.getIndexOfItemInArr(this.playSafeArr, this.profile.playSafe);\r\n this.positionRadioboxResult.index = this.selectedPositionIndex = ArrayServiceStatic.getIndexOfItemInArr(this.positionArr, this.profile.position);\r\n this.religionRadioboxResult.index = this.selectedReligionIndex = ArrayServiceStatic.getIndexOfItemInArr(this.religionArr, this.profile.religion);\r\n this.relationshipStatusRadioboxResult.index = this.selectedRelStatusIndex = ArrayServiceStatic.getIndexOfItemInArr(this.relationshipStatusArr, this.profile.relationshipStatus);\r\n this.smokingStatusRadioboxResult.index = this.selectedSmkStatusIndex = ArrayServiceStatic.getIndexOfItemInArr(this.smokingStatusArr, this.profile.smokingStatus);\r\n\r\n this.highestEducationRadioboxResult.radioboxSelection = this.profile.highestEducation;\r\n this.playSafeRadioboxResult.radioboxSelection = this.profile.playSafe;\r\n this.positionRadioboxResult.radioboxSelection = this.profile.position;\r\n this.religionRadioboxResult.radioboxSelection = this.profile.religion;\r\n this.relationshipStatusRadioboxResult.radioboxSelection = this.profile.relationshipStatus;\r\n this.smokingStatusRadioboxResult.radioboxSelection = this.profile.smokingStatus;\r\n\r\n this.loginSuccess.isProfileInfoComplete = this.profile.isSuccess = true;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n this.message = this.profile.message = 'Updating Step-2 of 4 of your Profile Information is successful!';\r\n this.messageModel.message = this.message;\r\n this.messageModel.isSuccess = true;\r\n EmitterSubjectService.emitMessage(this.messageModel)\r\n this.ngAfterViewInit();\r\n alert(this.profile.message);\r\n this.setMessageTimer();\r\n ScrollTopServiceStatic.scrollToTop('allScrollToTopId');\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n // debugger;\r\n this.redirectionAfterSubmit();\r\n // debugger;\r\n } else {\r\n if (tProfile) {\r\n this.message = 'Error occured in submitProfileForm();\\n Error-mag : ' + tProfile.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: this.message });\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in submitProfileForm();\\n Error-mag : ' });\r\n }\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n } else {\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in submitProfileForm();\\n Error-mag : ' });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag : ' + error);\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: 'Error occured in submitProfileForm();\\n Error-mag : ' + error.message });\r\n EmitterSubjectService.emitHideSpinner(true);\r\n },\r\n );\r\n }\r\n else {\r\n EmitterSubjectService.emitHideSpinner(true);\r\n }\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n setMessageTimer(): void {\r\n // debugger;\r\n this.intervalMsg = setTimeout(() => {\r\n this.message = this.profile.message = '';\r\n clearTimeout(this.intervalMsg);\r\n // debugger;\r\n // this.redirectionAfterSubmit();\r\n // this.router.navigate(['/preference/' + this.loginSuccess.signedInUserId]);\r\n }, 6000);\r\n clearTimeout(this.intervalMsg);\r\n }\r\n // ---------------------------------------------------------------\r\n showInvalidFormMessage (e : any): void {\r\n this.isProfileFormValid = this.checkFormValidity();\r\n this.isFormSubmitted = true;\r\n this.onSubmitBttnMouseOut(e);\r\n }\r\n // ---------------------------------------------------------------\r\n onMouseOut (e : any): void {\r\n this.isSubmitBttnFocus = false;\r\n }\r\n // ---------------------------------------------------------------\r\n onSubmitBttnMouseOut (e : any): void {\r\n if (e.type.value === 'mouseout') {\r\n this.isSubmitBttnFocus = false;\r\n this.isProfileFormValid = this.checkFormValidity();\r\n if (!this.isProfileFormValid) {\r\n this.isFormSubmitted = false;\r\n }\r\n } else {\r\n this.isSubmitBttnFocus = true;\r\n }\r\n }\r\n /*\r\n * ==============================================================\r\n * Begin of Animate-Message-Banner-System:\r\n * var counter = 0;\r\n * function runAgain() {\r\n * window.setTimeout(foo, 1000);\r\n * }\r\n */\r\n\r\n // function foo() {\r\n // // Do somthing\r\n // if ((++counter) < 5)\r\n // runAgain();\r\n // }\r\n // ---------------------------------------------------------------\r\n animateAgain() {\r\n // foo\r\n if (this.msgAnimCount < 3) {\r\n /*\r\n * this.addRemoveClasses(this.msgAnimCount);\r\n * this.addFocusToElement('profileMsgId');\r\n * this.toggleClass('profileMsgId', 'messageBannerBigger-hover');\r\n */\r\n this.animateMessageBanner(this.msgAnimCount);\r\n ++this.msgAnimCount;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n animateMessageBanner(count: number): void {\r\n // runAgain()\r\n if (count < 3) {\r\n /*\r\n * debugger;\r\n * call any function here.\r\n * this.addRemoveClasses(count);\r\n */\r\n const intervalMsgBanner = window.setTimeout(this.animateAgain, 2000);\r\n clearTimeout(intervalMsgBanner);\r\n\r\n this.intervalMsgBanners.push(intervalMsgBanner);\r\n }\r\n }\r\n /*\r\n * ===============================================================\r\n * End of Animate-Message-Banner-System:\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n}\r\n","\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
0\" class=\"flex-container\">\r\n
\r\n \r\n \r\n {{profile.message}}\r\n
\r\n
\r\n\r\n
\r\n
Create/Edit Profile: Step 2 of 4
\r\n
\r\n
\r\n\r\n
\r\n
Required (Choose one): *
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
What is your highest level of education?: *
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
What is your religion?: *
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
Do you play safe?:*
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
You consider your position to be: *
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
What is your current relationship status?: *
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
Do you vape or smoke cigarette?: *
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Please enter all the required (*) fileds to enable the SUBMIT button. This Form is incomplete, therefore, the SUBMIT button is disabled! Please complete the form to enable the SUBMIT button.\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","\r\n'use-strict'\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n// ref:https:// stackblitz.com/edit/angular-component-accordion-example\r\n\r\n@Component({\r\n selector: 'app-accordion-group',\r\n templateUrl: './accordionGroup.component.html',\r\n styleUrls: ['./accordionGroup.component.scss'],\r\n animations: [\r\n trigger('fader', [\r\n state(\r\n 'show',\r\n style({\r\n height: 400,\r\n // opacity : 1,\r\n transform: 'translateX(0%)',\r\n })\r\n ),\r\n state(\r\n 'hide',\r\n style({\r\n height: 0,\r\n // opacity : 0,\r\n transform: 'translateX(-500%)',\r\n })\r\n ),\r\n\r\n transition('show => hide', animate('700ms ease-in')),\r\n transition('hide => show', animate('700ms ease-out')),\r\n ]),\r\n ],\r\n})\r\nexport class AccordionGroupComponent implements OnInit, OnDestroy {\r\n private accrdTitle = 'Bangla and Sanskrit Vowels and Consonants';\r\n private emitterDestroyed$: Subject = new Subject();\r\n\r\n constructor() {\r\n EmitterSubjectService.toggleFaderAnimEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.opened = !this.opened;\r\n });\r\n }\r\n /**\r\n * If the panel is opened or closed\r\n */\r\n @Input() opened = false;\r\n\r\n /**\r\n * Text to display in the group title bar\r\n */\r\n @Input() title!: string;\r\n\r\n /**\r\n * Emitted when user clicks on group titlebar\r\n */\r\n @Output() toggle : Subject = new Subject();\r\n\r\n ngOnInit() { }\r\n /*\r\n * remove self from modal service when component is destroyed\r\n * ---------------------------------------------------------------\r\n */\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n stateName(): any {\r\n return this.opened ? 'show' : 'hide';\r\n }\r\n toggleFaderAnim(): void {\r\n EmitterSubjectService.emitToggleFaderAnim(true);\r\n }\r\n}\r\n","
\r\n
\r\n \r\n {{title}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n","'use-strict'\nimport { AfterContentInit, Component, ContentChildren, Input, OnDestroy, OnInit, QueryList } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AccordionGroupComponent } from '../accordionGroup/accordionGroup.component';\n\n// ref:https:// stackblitz.com/edit/angular-component-accordion-example\n\n@Component({\n selector: 'app-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class AccordionComponent implements AfterContentInit, OnInit, OnDestroy {\n private emitterDestroyed$: Subject = new Subject();\n @Input() titleIn = '';\n private titleOut = '';\n @ContentChildren(AccordionGroupComponent) groups!: QueryList;\n\n constructor() { }\n\n ngOnInit() { }\n\n /**\n * Invoked when all children (groups) are ready\n */\n ngAfterContentInit() {\n /*\n * console.log (this.groups);\n * Set active to first element\n */\n this.groups.toArray()[0].opened = true;\n // Loop through all Groups\n this.groups.toArray().forEach((t) => {\n /*\n * when title bar is clicked\n * (toggle is an @output event of Group)\n */\n t.toggle.subscribe(() => {\n // Open the group\n this.openGroup(t);\n });\n /*\n * t.toggle.subscribe((group) => {\n * //Open the group\n * this.openGroup(group);\n * });\n */\n });\n }\n /*\n * remove self from modal service when component is destroyed\n * ---------------------------------------------------------------\n */\n ngOnDestroy() {\n // prevent memory leak when component destroyed\n this.emitterDestroyed$.next(true);\n this.emitterDestroyed$.complete();\n }\n // ---------------------------------------------------------------\n /**\n * Open an accordion group\n * @param group Group instance\n */\n openGroup(group: AccordionGroupComponent) {\n // close other groups\n this.groups.toArray().forEach((t) => (t.opened = false));\n // open current group\n group.opened = true;\n }\n}\n","
\r\n \r\n
\r\n","'use-strict'\r\nimport { AfterViewInit, ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, OnDestroy, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { EmitterSubjectService } from '../../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { AccordionComponent } from '../accordion/accordion.component';\r\nimport { AccordionGroupComponent } from '../accordionGroup/accordionGroup.component';\r\n\r\n@Component({\r\n selector: 'app-shared-module-component',\r\n templateUrl: './sharedModule.component.html',\r\n styleUrls: ['./sharedModule.component.scss'],\r\n})\r\nexport class SharedModuleComponent implements OnInit, OnDestroy, AfterViewInit {\r\n // ref:https:// medium.com/angular-in-depth/lazy-loading-\r\n @ViewChild('anchor', { read: ViewContainerRef})\r\n sharedAnchor!: ViewContainerRef;\r\n private activeComponentIds: string[] = [];\r\n private emitterDestroyed$: Subject = new Subject();\r\n public mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n\r\n constructor(\r\n public cdr: ChangeDetectorRef,\r\n private factoryResolver: ComponentFactoryResolver,\r\n // private moduleServiceService: ModuleServiceService,\r\n private router: Router,\r\n private unloadConponentRef: ElementRef\r\n ) {\r\n // if (this.moduleServiceService) { this.lazyLoaderService = this.moduleServiceService.getLazyLoaderService(); }\r\n }\r\n\r\n ngOnInit(): void {\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.loadChildrenEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.mcLoader = result as ModuleComponentLoader;\r\n if (this.mcLoader.componentName.length > 3 && this.mcLoader.moduleName.toLowerCase().indexOf('shared') !== -1) {\r\n this.loadSharedComponent(this.mcLoader.componentName);\r\n }\r\n // debugger;\r\n });\r\n // -------------------------------------------------------------------------\r\n // this.mcLoader = EmitterSubjectService..getMCLoader();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.mcLoader)) {\r\n // this.loadSharedComponent(this.mcLoader.componentName);\r\n // }\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.loadSharedComponentEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n this.mcLoader = result as ModuleComponentLoader;\r\n\r\n // debugger;\r\n if (\r\n this.mcLoader.componentName.length > 2 &&\r\n this.mcLoader.moduleName.toLowerCase().indexOf('shared') !== -1 &&\r\n (this.mcLoader.componentName.toLowerCase().indexOf('fileupload') !== -1 ||\r\n this.mcLoader.componentName.toLowerCase().indexOf('imageupload') !== -1 ||\r\n this.mcLoader.componentName.toLowerCase().indexOf('accordion') !== -1 ||\r\n this.mcLoader.componentName.toLowerCase().indexOf('accordiongroup') !== -1)\r\n ) {\r\n this.loadSharedComponent(this.mcLoader.componentName);\r\n }\r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n ngAfterViewInit() {\r\n /*\r\n * debugger;\r\n * this.activateGesture(this.gestureDivId, '');\r\n * this.cdr.detectChanges();\r\n */\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n EmitterSubjectService.emitDisplayDefaultGlyphiconMenu();\r\n // this.mcLoader = new ModuleComponentLoader();\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * Note: if found will send the index, otherwise -1.\r\n * ---------------------------------------------------------------------------------\r\n */\r\n isActiveComponentIdFound(compId: string): any {\r\n let index = -1;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(compId)) {\r\n for (let i = 0; i < this.activeComponentIds.length; i++) {\r\n if (compId.toLowerCase().indexOf(this.activeComponentIds[i].toLowerCase()) !== -1) {\r\n index = i;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n getMcLoaderComponentId(): any {\r\n let mcLoaderComponentId = '';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.mcLoader) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.mcLoader.componentName)) {\r\n mcLoaderComponentId = this.mcLoader.componentName + 'ComponentId';\r\n }\r\n return mcLoaderComponentId;\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * ref:https:// medium.com/angular-in-depth/lazy-loading-angular-modules-with-ivy-92c3a890eae1\r\n */\r\n\r\n async loadSharedComponent(name: string) {\r\n const mcComId = this.getMcLoaderComponentId();\r\n let factory: any;\r\n\r\n switch (name.toLocaleLowerCase()) {\r\n /*\r\n * case 'checkbox':\r\n * factory = this.factoryResolver.resolveComponentFactory(CheckboxComponent);\r\n * // debugger;\r\n * break;\r\n * case 'radiobox':\r\n * factory = this.factoryResolver.resolveComponentFactory(RadioBoxComponent);\r\n * break;\r\n */\r\n // case 'fileupload':\r\n // factory = this.factoryResolver.resolveComponentFactory(FileUploadComponent);\r\n // break;\r\n // case 'imageupload':\r\n // factory = this.factoryResolver.resolveComponentFactory(ImageUploadComponent);\r\n // break;\r\n /*\r\n * case 'notfound':\r\n * factory = this.factoryResolver.resolveComponentFactory(NotFoundComponent);\r\n * break;\r\n * case 'prescreen':\r\n * factory = this.factoryResolver.resolveComponentFactory(PreScreenComponent);\r\n * break;\r\n */\r\n case 'accordion':\r\n factory = this.factoryResolver.resolveComponentFactory(AccordionComponent);\r\n break;\r\n case 'accordiongroup':\r\n factory = this.factoryResolver.resolveComponentFactory(AccordionGroupComponent);\r\n break;\r\n }\r\n const mcComponentElem = document.getElementById(mcComId);\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcComponentElem)) {\r\n if (this.sharedAnchor) {\r\n this.sharedAnchor.clear();\r\n if (factory) {\r\n this.sharedAnchor.createComponent(factory);\r\n this.ngAfterViewInit();\r\n // debugger;\r\n }\r\n }\r\n mcComponentElem.remove();\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * ----------------------------------------------------------------------------------\r\n */\r\n}\r\n","
\n \n
\n","'use-strict'\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n// import { LandingPageComponent } from 'src/pages/landingPage/landingPage.component';\nimport { SharedModuleComponent } from './component/sharedModule.component';\n\nconst sharedRoutes: Routes = [\n { path: '', component: SharedModuleComponent},\n];\n\n@NgModule({\n imports: [RouterModule.forChild(sharedRoutes)],\n exports: [RouterModule],\n})\nexport class SharedRoutingModule { }\n","'use-strict'\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DirectiveFilterPipeModule } from '../directiveFilterPipeModule/directiveFilterPipe.module';\r\nimport { AccordionComponent } from './accordion/accordion.component';\r\nimport { AccordionGroupComponent } from './accordionGroup/accordionGroup.component';\r\nimport { SharedModuleComponent } from './component/sharedModule.component';\r\nimport { SharedRoutingModule } from './shared-routing.module';\r\n\r\n@NgModule({\r\n declarations: [AccordionComponent, AccordionGroupComponent, SharedModuleComponent],\r\n imports: [CommonModule, FormsModule, HttpClientModule, RouterModule, DirectiveFilterPipeModule, SharedRoutingModule],\r\n exports: [ SharedRoutingModule],\r\n\r\n providers: [\r\n // { provide: SafeFilterPipe, },\r\n ],\r\n})\r\nexport class SharedModule { }\r\n","// db.ts\r\nimport Dexie, { Table } from 'dexie';\r\nimport { ConstantServiceStatic } from './services/staticServices/constantServiceStatic.service';\r\n\r\nexport interface TodoList {\r\n id ?: number;\r\n title : string;\r\n}\r\nexport interface TodoItem {\r\n id ?: number;\r\n todoListId : number;\r\n title : string;\r\n done ?: boolean;\r\n}\r\n\r\nexport class AppDB extends Dexie {\r\n //todoItems! : Table;\r\n //todoLists! : Table;\r\n\r\n constructor () {\r\n super(ConstantServiceStatic.dbName);\r\n this.version(ConstantServiceStatic.version).stores({\r\n buddyObjectStore: 'id, bneStr, key',\r\n // -----------------------------------------------\r\n chatActivityObjectStore: 'id, bneStr, key', // this is to hold all chatActivities with chatActicityId as key\r\n\r\n // this is to hold conversations amongst many persons, each person's chatActivities are in an array and stored with 'yourSitUserId'\r\n chatConversationObjectStore: 'id, bneStr, key',\r\n chatConversationIdObjectStore: 'id, bneStr, key',\r\n\r\n emailTileObjectStore: 'id, bneStr, key',\r\n // emailTileIdObjectStore: 'id, bneStr, key',\r\n\r\n //enoteTileObjectStore: 'id, bneStr, key',\r\n //enoteTileIdObjectStore: 'id, bneStr, key',\r\n\r\n errorLogObjectStore: 'id, bneStr, key',\r\n heartbeatObjectStore: 'id, bneStr, key',\r\n\r\n // Note: either data will be in kvPhotoObjectStore\r\n // or in first_ through sixth_ kvPhotObjectStores\r\n // These two sets are mutually exclusive.\r\n // --------------------------------------------\r\n // kvPhotoObjectStore: 'id, bneStr, key',\r\n // --------------------------------------------\r\n loginSuccessObjectStore: 'id, bneStr, key',\r\n\r\n \r\n myChatObjectStore: 'id, bneStr, key',\r\n myChatIdObjectStore: 'id, bneStr, key',\r\n \r\n myEmailObjectStore: 'id, bneStr, key',\r\n // myEmailIdObjectStore: 'id, bneStr, key',\r\n\r\n myAllEnoteObjectStore: 'id, bneStr, key',\r\n myMemberActivityObjectStore: 'id, bneStr, key',\r\n myMemberLockingActivityObjectStore: 'id, bneStr, key',\r\n myMemberTrackingActivityObjectStore: 'id, bneStr, key',\r\n\r\n myNotificationObjectStore: 'id, bneStr, key',\r\n // myNotificationIdObjectStore: 'id, bneStr, key',\r\n\r\n //myBlockObjectStore: 'id, bneStr, key',\r\n //myFriendObjectStore: 'id, bneStr, key',\r\n //myLikeObjectStore: 'id, bneStr, key',\r\n //myStarObjectStore: 'id, bneStr, key',\r\n //myTrackObjectStore: 'id, bneStr, key',\r\n //myUnlockObjectStore: 'id, bneStr, key',\r\n //myWinkObjectStore: 'id, bneStr, key',\r\n\r\n photoBnIdObjectStore: 'id, bneStr, key',\r\n // photoBnObjectStore: 'id, bneStr, key',\r\n\r\n // ------------------------------------------------------\r\n preferenceObjectStore: 'id, bneStr, key',\r\n profileContentObjectStore: 'id, bneStr, key',\r\n profileInfoObjectStore: 'id, bneStr, key',\r\n profilePicsObjectStore: 'id, bneStr, key',\r\n profileTileObjectStore: 'id, bneStr, key',\r\n // ------------------------------------------------------ \r\n\r\n sitUserObjectStore: 'id, bneStr, key',\r\n sitUserIdObjectStore: 'id, bneStr, key',\r\n\r\n yourAllEnoteObjectStore: 'id, bneStr, key',\r\n //yourBlockObjectStore: 'id, bneStr, key',\r\n //yourFriendObjectStore: 'id, bneStr, key',\r\n //yourLikeObjectStore: 'id, bneStr, key',\r\n //yourMemberActivityObjectStore: 'id, bneStr, key',\r\n //yourMemberLockingActivityObjectStore: 'id, bneStr, key',\r\n //yourMemberStarTrackWinkActivityObjectStore: 'id, bneStr, key',\r\n //yourStarObjectStore: 'id, bneStr, key',\r\n //yourTrackObjectStore: 'id, bneStr, key',\r\n //yourWinkObjectStore: 'id, bneStr, key',\r\n //yourUnlockObjectStore: 'id, bneStr, key',\r\n });\r\n // this.on('populate', () => this.populate());\r\n }\r\n\r\n //async populate () {\r\n // const todoListId = await db.todoLists.add({\r\n // title: 'To Do Today',\r\n // });\r\n // await db.todoItems.bulkAdd([\r\n // {\r\n // todoListId,\r\n // title: 'Feed the birds',\r\n // },\r\n // {\r\n // todoListId,\r\n // title: 'Watch a movie',\r\n // },\r\n // {\r\n // todoListId,\r\n // title: 'Have some sleep',\r\n // },\r\n // ]);\r\n //}\r\n}\r\n\r\nexport const db = new AppDB();\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: true\r\n};\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nexport function getBaseUrl() {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n];\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n","import { LoginSuccess } from \"./loginSuccess.model\";\r\nimport { Login } from \"./login.model\";\r\nimport { Register } from \"./register.model\";\r\n\r\nexport class LogRegModel {\r\n public login : Login = new Login();\r\n public register : Register = new Register(); // real-password holder\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public isAllowed = false;\r\n public isEmailValid = false;\r\n public isFormValid = false;\r\n public isPasswordValid = false;\r\n \r\n public sitUserId : any = 0;\r\n public date : any = '';\r\n public jsDateForCs : any = '';\r\n constructor() { }\r\n}\r\n","// import { CryptoModel } from '../crypto/cryptoModel.model';\n\nexport class Login {\n public action : any = '';\n public age : any = 0;\n public backupPassword : any = ''; // real-password holder\n public confirmPassword : any = '';\n public controller : any = '';\n public code : any = '';\n public dob : any = 'YYYY-MM-DD';\n public dobTicks : any = 0;\n public email : any = '';\n public emojis : any = '';\n public firstName : any = '';\n public isAllowed: any = false;\n public isDobErr : any = false;\n public isEmailValid: any = false;\n public isFormValid: any = false;\n public isPasswordValid: any = false;\n // public fWord = ''; // password-mask holder\n public password : any = '';\n public lastName : any = '';\n public latitude : any = '';\n public longitude : any = '';\n public message : any = '';\n public middleName : any = '';\n public sitUserId : any = 0;\n public date : any = '';\n public jsDateForCs : any = '';\n\n // public crypto: CryptoModel = new CryptoModel();\n constructor() { }\n}\n","import { Heartbeat } from '../common/heartbeat.model';\r\nimport { PhotoBn } from '../common/photoBn.model';\r\nimport { KvAction } from '../keyValue/kvAction.model';\r\nimport { SitUser } from './sitUser.model';\r\n\r\nexport class LoginSuccess {\r\n public action = '';\r\n public blogId = 0;\r\n public businessKey = '';\r\n public code = '';\r\n public controller = '';\r\n public cryptUserKey = '';\r\n public date : '';\r\n public email = '';\r\n public heading = '';\r\n public gender = '';\r\n public hasJoinedSignalR = false;\r\n public heartbeat: Heartbeat = new Heartbeat();\r\n public id = 0;\r\n public imagePath = '';\r\n public isAuthorized = false;\r\n public isEditProfile = false;\r\n public isEmailConfirmed = false;\r\n public isEmployee = false;\r\n public isForgotPassword = false;\r\n public isLoggedIn = false;\r\n public isLogout = false;\r\n public isMgmt = false;\r\n public isOnLine = false;\r\n public isPic = false;\r\n public isPreScreenComplete = false;\r\n public isProfileComplete = false;\r\n public isProfileInfoComplete = false;\r\n public isPreferenceComplete = false;\r\n public isPremium = false;\r\n public isProfileContentComplete = false;\r\n public isReviewer = false;\r\n public isSuccess = false;\r\n public isSuperUser = false;\r\n public isValued = false;\r\n public iv = '';\r\n public key = '';\r\n public latitude = 0;\r\n public likedArr: KvAction[] = []; // others who liked me\r\n public longitude = 0;\r\n public membership : any = '';\r\n public message : any = '';\r\n public myBlockedArr: KvAction[] = []; // whom I blocked\r\n public myBuddyArr: KvAction[] = []; // whom I am buddied with, meaning we liked each other\r\n public myLikedArr: KvAction[] = []; // whom I liked\r\n public myTrackedArr: KvAction[] = []; // who I tracked\r\n public myUnlockedArr : KvAction[] = []; // who unlocked for me\r\n public premiumExpiryDate = '';\r\n public primaryImage = ''; // Note: on view it is renamed as 'primaryImage'; primaryImage==raw-image-data\r\n public primaryImageUrl = ''; // \"url('\" + primaryImage + \"')\";\r\n public primaryPhotoBnId = 0;\r\n public primaryPhotoBnJson : any;\r\n public profileName = '';\r\n public returnUrl = '';\r\n public sexuality = '';\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n public trackedArr: KvAction[] = []; // others who tracked me\r\n public unlockedArr: KvAction[] = []; // others who unlocked for me\r\n\r\n constructor() { }\r\n\r\n public reset(): any {\r\n this.action = '';\r\n this.blogId = 0;\r\n this.businessKey = '';\r\n this.code = '';\r\n this.controller = '';\r\n this.email = '';\r\n this.heading = '';\r\n this.isAuthorized = false;\r\n this.isEmailConfirmed = false;\r\n this.isEmployee = false;\r\n this.isForgotPassword = false;\r\n this.isLoggedIn = false;\r\n this.isMgmt = false;\r\n this.isOnLine = false;\r\n this.isPic = false;\r\n this.isReviewer = false;\r\n this.isSuperUser = false;\r\n this.imagePath = '';\r\n this.iv = '';\r\n this.id = 0;\r\n this.latitude = 0;\r\n this.longitude = 0;\r\n this.likedArr = []; // who liked me\r\n this.myBlockedArr = []; // whom I blocked\r\n this.myBuddyArr = [];\r\n this.myTrackedArr = []; // whom I tracked\r\n this.myUnlockedArr = []; // from whom I unlocked\r\n this.message = '';\r\n this.premiumExpiryDate = ''\r\n this.profileName = '';\r\n this.primaryImage = '';\r\n this.primaryImageUrl = '';\r\n this.primaryPhotoBnId = 0;\r\n this.primaryPhotoBnJson = '';\r\n this.signedInUserId = 0;\r\n this.signedInUserKey = '';\r\n this.trackedArr = []; // who tracked me\r\n this.unlockedArr = []; // who unlocked for me\r\n return this;\r\n }\r\n public resetThat (that: LoginSuccess) : any {\r\n that.action = '';\r\n that.blogId = 0;\r\n that.businessKey = '';\r\n that.code = '';\r\n that.controller = '';\r\n that.email = '';\r\n that.heading = '';\r\n that.isAuthorized = false;\r\n that.isEmailConfirmed = false;\r\n that.isEmployee = false;\r\n that.isForgotPassword = false;\r\n that.isLoggedIn = false;\r\n that.isMgmt = false;\r\n that.isOnLine = false;\r\n that.isPic = false;\r\n that.isReviewer = false;\r\n that.isSuperUser = false;\r\n that.imagePath = '';\r\n that.iv = '';\r\n that.id = 0;\r\n that.latitude = 0;\r\n that.longitude = 0;\r\n that.likedArr = []; // who liked me\r\n that.myBlockedArr = []; // whom I blocked\r\n that.myBuddyArr = [];\r\n that.myTrackedArr = []; // whom I tracked\r\n that.myUnlockedArr = []; // from whom I unlocked\r\n that.message = '';\r\n that.premiumExpiryDate = ''\r\n that.profileName = '';\r\n that.primaryImage = '';\r\n that.primaryImageUrl = '';\r\n that.primaryPhotoBnId = 0;\r\n that.primaryPhotoBnJson = '';\r\n that.signedInUserId = 0;\r\n that.signedInUserKey = '';\r\n that.trackedArr = []; // who tracked me\r\n that.unlockedArr = []; // who unlocked for me\r\n return that;\r\n }\r\n\r\n public copyFromSitUser (that : LoginSuccess, s:SitUser) : any {\r\n that.action = '';\r\n that.blogId = 0;\r\n that.businessKey = '';\r\n that.code = '';\r\n that.controller = '';\r\n that.email = s.email;;\r\n that.heading = '';\r\n that.isAuthorized = false;\r\n that.isEmailConfirmed = s.isEmailConfirmed;\r\n that.isEmployee = false;\r\n that.isForgotPassword = false;\r\n that.isLoggedIn = false;\r\n that.isMgmt = false;\r\n that.isOnLine = false;\r\n that.isPic = false;\r\n that.isReviewer = false;\r\n that.isSuperUser = false;\r\n that.imagePath = '';\r\n that.iv = '';\r\n that.id = 0;\r\n that.latitude = Number(s.latitude);\r\n that.longitude = Number(s.longitude);\r\n that.likedArr = []; // who liked me\r\n that.myBlockedArr = []; // whom I blocked\r\n that.myBuddyArr = [];\r\n that.myTrackedArr = []; // whom I tracked\r\n that.myUnlockedArr = []; // from whom I unlocked\r\n that.message = '';\r\n that.premiumExpiryDate = ''\r\n that.profileName = s.profileName;\r\n that.primaryImage = s.primaryImage;\r\n that.primaryImageUrl = '';\r\n that.primaryPhotoBnId = s.primaryPhotoBnId;\r\n that.primaryPhotoBnJson = s.primaryPhotoBnJson;\r\n that.signedInUserId = s.sitUserId;\r\n that.signedInUserKey = s.sitUserKey;\r\n that.trackedArr = []; // who tracked me\r\n that.unlockedArr = []; // who unlocked for me\r\n return that;\r\n }\r\n}\r\n","import { Login } from \"./login.model\";\r\n\r\n\r\n\r\nexport class Register {\r\n public age : any = 0;\r\n public backupPassword : any = ''; // real-password holder\r\n public confirmPassword : any = '';\r\n public code : any = '';\r\n public dob : any = 'YYYY-MM-DD';\r\n public dobTicks : any = 0;\r\n public email : any = '';\r\n public firstName : any = '';\r\n public isDobErr : any = false;\r\n public isAllowed = false;\r\n public isEmailValid = false;\r\n public isFormValid = false;\r\n public isPasswordValid = false;\r\n public lastName : any = '';\r\n public password : any = '';\r\n public latitude : any = '';\r\n public longitude : any = '';\r\n public message : any = '';\r\n public sitUserId : any = 0;\r\n public date : any = '';\r\n public jsDateForCs : any = '';\r\n\r\n constructor () { }\r\n \r\n}\r\n","import { Heartbeat } from '../common/heartbeat.model';\n\nexport class SitUser {\n public callerName = '';\n public cryptUserKey = '';\n public date = '';\n public email = '';\n public fullName = '';\n public heartbeat : Heartbeat = new Heartbeat();\n public id = 0;\n public isEmailConfirmed = false;\n public isPremiumMembership = false;\n public longitude = '';\n public latitude = '';\n public passwordHash = '';\n public primaryPhotoBnId = 0;\n public profileName = '';\n public primaryImage = ''; \n public profileId = 0;\n public primaryPhotoBnJson = '';\n public sitUserId = 0;\n public sitUserKey = '';\n public signedInUserId = 0;\n public signedInUserKey = '';\n public upgradeExpDate = '';\n public userName = '';\n constructor() { }\n\n copy(from: SitUser): any {\n return () => {\n this.cryptUserKey = from.cryptUserKey;\n this.date = from.date;\n this.email = from.email;\n this.fullName = from.fullName;\n this.heartbeat = from.heartbeat;\n this.id = from.id;\n this.isEmailConfirmed = from.isEmailConfirmed;\n this.latitude = from.latitude;\n this.longitude = from.longitude;\n this.passwordHash = from.passwordHash;\n this.profileId = from.profileId;\n this.profileName = from.profileName;\n this.primaryPhotoBnId = from.primaryPhotoBnId;\n this.primaryPhotoBnJson = from.primaryPhotoBnJson;\n this.sitUserId = from.sitUserId;\n this.sitUserKey = from.sitUserKey;\n this.userName = from.userName;\n this.signedInUserId = from.signedInUserId;\n this.signedInUserKey = from.signedInUserKey;\n\n };\n }\n copyIfExists(from: SitUser): any {\n return () => {\n this.cryptUserKey = from.cryptUserKey ? from.cryptUserKey : this.cryptUserKey;\n this.date = from.date ? from.date : this.date;\n this.email = from.email ? from.email : this.email;\n this.fullName = from.fullName ? from.fullName : this.fullName;\n this.heartbeat = from.heartbeat;\n this.id = from.id > 0 ? from.id : this.id;\n this.isEmailConfirmed = from.isEmailConfirmed;\n this.latitude = from.latitude ? from.latitude : this.latitude;\n this.longitude = from.longitude ? from.longitude : this.longitude;\n this.passwordHash = from.passwordHash ? from.passwordHash : this.passwordHash;\n this.profileId = from.profileId > 0 ? from.profileId : this.profileId;\n this.profileName = from.profileName ? from.profileName : this.profileName;\n this.primaryPhotoBnId = from.primaryPhotoBnId > 0 ? from.primaryPhotoBnId : this.primaryPhotoBnId; // \n this.primaryPhotoBnJson = from.primaryPhotoBnJson ? from.primaryPhotoBnJson : this.primaryPhotoBnJson;\n this.sitUserId = from.sitUserId > 0 ? from.sitUserId : this.sitUserId;\n this.sitUserKey = from.sitUserKey ? from.sitUserKey : this.sitUserKey;\n this.userName = from.userName ? from.userName : this.userName;\n this.signedInUserId = from.signedInUserId;\n this.signedInUserKey = from.signedInUserKey?.length > 0 ? from.signedInUserKey : this.signedInUserKey;\n };\n }\n // --------------------------------------\n copyTo (from : SitUser) : any {\n let to = new SitUser();\n to.copy(from);\n return to;\n }\n // --------------------------------------\n toString(): string {\n return (\n '{id:' +\n this.id +\n 'isEmailConfirmed:' +\n this.isEmailConfirmed +\n ',' +\n 'date:' +\n this.date +\n ',' +\n 'fullName:' +\n this.fullName +\n ',' +\n 'latitude:' +\n this.latitude +\n ',' +\n 'longitude:' +\n this.longitude +\n ',' +\n 'cryptUserKey:' +\n this.cryptUserKey +\n ',' +\n 'email:' +\n this.email +\n ',' +\n 'passwordHash:' +\n ',' +\n 'profileId:' +\n this.profileId +\n ',' +\n 'profileName:' +\n this.profileName +\n ',' +\n 'primaryImage:' +\n this.primaryImage +\n ',' +\n 'primaryPhotoBnId:' +\n this.primaryPhotoBnId +\n ',' +\n 'primaryPhotoBnId:' +\n this.primaryPhotoBnJson +\n ',' +\n 'sitUserId:' +\n this.sitUserId +\n ',' +\n 'sitUserKey:' +\n this.sitUserKey +\n ',' +\n 'signedInUserId:' +\n this.signedInUserId +\n ',' +\n 'signedInUserKey:' +\n this.signedInUserKey +\n ',' +\n 'userName:' +\n this.userName +\n '}'\n );\n }\n}\n","\r\nexport class BoxNonceEntity {\r\n public box: any;\r\n public boxStr = '';\r\n public cryptUserKey = '';\r\n public date = '';\r\n public endMarker: any;\r\n public entityName = '';\r\n public id = 0;\r\n public key = '';\r\n public message = '';\r\n public nonce: any;\r\n public nonceStr = '';\r\n public sitUserId = 0;\r\n constructor() {\r\n }\r\n copy(from: BoxNonceEntity): any {\r\n return () => {\r\n this.box = from.box;\r\n this.boxStr = from.boxStr;\r\n this.cryptUserKey = from.cryptUserKey;\r\n this.date = from.date;\r\n this.endMarker = from.endMarker;\r\n this.entityName = from.entityName;\r\n this.id = from.id;\r\n this.key = from.key;\r\n this.message = from.message;\r\n this.nonce = from.nonce;\r\n this.nonceStr = from.nonceStr;\r\n this.sitUserId = from.sitUserId;\r\n };\r\n }\r\n copyIfExists(from: BoxNonceEntity): any {\r\n return () => {\r\n this.box = from.box ? from.box : this.box;\r\n this.boxStr = from.boxStr ? from.boxStr : this.boxStr;\r\n this.cryptUserKey = from.cryptUserKey ? from.cryptUserKey : this.cryptUserKey;\r\n this.date = from.date ? from.date : this.date;\r\n this.endMarker = from.endMarker;\r\n this.entityName = from.entityName ? from.entityName : this.entityName;\r\n this.id = from.id > 0 ? from.id : this.id;\r\n this.key = from.key ? from.key : this.key;\r\n this.message = from.message ? from.message : this.message;\r\n this.nonce = from.nonce ? from.nonce : this.nonce;\r\n this.nonceStr = from.nonceStr ? from.nonceStr : this.nonceStr;\r\n this.sitUserId = from.sitUserId > 0 ? from.sitUserId : this.sitUserId;\r\n };\r\n }\r\n\r\n toString(): string {\r\n return '{box:' + this.box + ',' +\r\n 'boxStr:' + this.boxStr + ',' +\r\n 'cryptUserKey:' + this.cryptUserKey + ',' +\r\n 'date:' + this.date + ',' +\r\n 'endMarker:' + this.endMarker + ',' +\r\n 'entityName:' + this.entityName + ',' +\r\n 'id:' + this.id + ',' +\r\n 'key:' + this.key + ',' +\r\n 'nonce:' + this.nonce + ',' +\r\n 'nonceStr:' + this.nonceStr + ',' +\r\n 'sitUserId:' + this.sitUserId + '}';\r\n }\r\n}\r\n","\r\nexport class DexieBne {\r\n public box: any;\r\n public key = '';\r\n public id = 0;\r\n public nonce : any;\r\n public entityName : string = '';\r\n constructor() {\r\n }\r\n}\r\n","// import { ModuleComponentLoader } from '../common/moduleComponentLoader.model';\r\nimport { KvAny } from '../keyValue/kvAny.model';\r\n\r\n// Note: the Kv name where the first leter is capital and the second letter is lowercase, implies that the value is of type 'any'\r\nexport class BrdCrmKvAny {\r\n public date = '';\r\n public id: any;\r\n // to be used by programmer during search to store transient value such as index of the item in array; not to store any value to persist\r\n public index = 0;\r\n public key: any;\r\n public modelName = '';\r\n public pageNo = 0;\r\n public returnUrl = '';\r\n public sitUserId = 0;\r\n public value: any;\r\n constructor() {\r\n }\r\n copy(a: BrdCrmKvAny): BrdCrmKvAny {\r\n const that = new BrdCrmKvAny();\r\n if (a.date) { that.date = a.date; }\r\n if (a.id) { that.id = a.id; }\r\n if (a.key) { that.key = a.key; }\r\n if (a.modelName) { that.modelName = a.modelName; }\r\n if (a.pageNo) { that.pageNo = a.pageNo; }\r\n if (a.sitUserId) { that.sitUserId = a.sitUserId; }\r\n if (a.value) { that.value = a.value; }\r\n return that;\r\n }\r\n\r\n copyFromKvAny(a: KvAny): BrdCrmKvAny {\r\n const that = new BrdCrmKvAny();\r\n if (a.date) { that.date = a.date; }\r\n if (a.id) { that.id = a.id; }\r\n if (a.index) { that.pageNo = a.index; }\r\n if (a.key) { that.key = a.key; }\r\n if (a.modelName) { that.modelName = a.modelName; }\r\n if (a.sitUserId) { that.sitUserId = a.sitUserId; }\r\n if (a.value) { that.value = a.value; }\r\n return that;\r\n }\r\n}\r\n","import { ModuleComponentLoader } from '../common/moduleComponentLoader.model';\r\n\r\nexport class PagerBreadcrum {\r\n public actionName: any;\r\n public breadcrumRing : ModuleComponentLoader[] = [];\r\n public currentPage = 0;\r\n public currentBrdCrmPage : ModuleComponentLoader = new ModuleComponentLoader();\r\n public lastPage = 0; // very last page\r\n public pagedEndIndex = 0;\r\n public pagedEndPage = 0; // paged==currently-displayed-pages\r\n public nextBrdCrmPage : ModuleComponentLoader = new ModuleComponentLoader();\r\n public nextPage = 0; // AppComponent.html's Arrow does not use it, but BreadcrumComponent.html may use it\r\n public pagedBrdCrmArr : ModuleComponentLoader[] = [];\r\n public pagedPages : number[] = [];\r\n public pageSize = 0;\r\n public previousBrdCrmPage : ModuleComponentLoader = new ModuleComponentLoader();\r\n public previousPage = 0; // AppComponent.html's Arrow may not use it, but BreadcrumComponent.html may use it\r\n public firstPage = 0; // very first page\r\n public pagedStartPage = 0;\r\n public pagedStartIndex = 0;\r\n public totalItems = 0; // breadcrumRing.length\r\n public totalPagedBlocks = 0; // paged-blocks-Total==how many blocks of paged-items\r\n constructor() { }\r\n}\r\n","import { CommunicationActivity } from '../communication/communicationActivity.model';\r\nimport { Communicator } from '../communication/communicator.model';\r\n\r\nexport class Chat {\r\n public id? = 0;\r\n public baseFileName = ''; // TODO: make sure that the image-file-name generated is stored here\r\n public chatActivityId? = 0;\r\n public chatMessageId? = 0;\r\n public communicationActivityId? = 0;\r\n public communicationMessageId? = 0;\r\n public communicationType = '';\r\n public commTypeEnum = 0;\r\n public contentType = '';\r\n public contents = '';\r\n public date = '';\r\n public dateFormatted = '';\r\n public description = '';\r\n public file: any;\r\n public files: any[] = [];\r\n public fileNames: string[] = [];\r\n public fileBytesArr: any[] = [];\r\n public fileImageString = '';\r\n public fileImageArrBox !: any[];\r\n public fileImageArrNonce !: any[];\r\n public fileImageStringArr: string[] = [];\r\n public fromUser = '';\r\n public groupId? = 0;\r\n public groupName = '';\r\n public groupKey = '';\r\n public isAdministrative? = false;\r\n public isPic = false;\r\n public isReceiver = false;\r\n public isSender = false;\r\n public latitude? = 0;\r\n public longitude? = 0;\r\n public messageBody = '';\r\n public messageBodyShort = '';\r\n public receiver: Communicator = new Communicator();\r\n public receiverCryptUserKey = '';\r\n public receiverAction = '';\r\n public receiverEmail = '';\r\n public receiverPic = '';\r\n public receiverModelString = '';\r\n public receiverProfileName = '';\r\n public receiverSITUserId? = 0; // holds server-value\r\n public receiverSitUserId? = 0; // holds client-value\r\n public receiverSITUserKey = ''; // holds server-value\r\n public receiverSitUserKey = ''; // holds client-value\r\n public receiverSitUserKeyBackup = '';\r\n public repliedToId? = 0;\r\n public sender: Communicator = new Communicator();\r\n public senderCryptUserKey = '';\r\n public senderAction = '';\r\n public senderEmail = '';\r\n public senderPic = '';\r\n public senderModelString = '';\r\n public senderProfileName = '';\r\n public senderSITUserId? = 0; // holds server-value\r\n public senderSitUserId? = 0; // holds client-value\r\n public senderSITUserKey = ''; // holds server-value\r\n public senderSitUserKey = ''; // holds client-value\r\n public senderSitUserKeyBackup = '';\r\n public sentPic = '';\r\n public signedInUserId? = 0;\r\n public signedInUserKey = '';\r\n public sitUserId? = 0;\r\n public subject = '';\r\n public subjectShort = '';\r\n public timeLapsed = '';\r\n public timeLapsedPlaceholder = '';\r\n public toUser = '';\r\n constructor () {\r\n this.harmonize(this);\r\n }\r\n harmonize (chat: Chat) : void {\r\n chat.receiverSITUserId == chat.receiverSitUserId;\r\n chat.receiverSitUserKey == chat.receiverSITUserKey;\r\n chat.senderSITUserId == chat.senderSitUserId;\r\n chat.senderSITUserKey == chat.senderSitUserKey;\r\n\t}\r\n copy2CommunicationActivity () {\r\n let commAct = new CommunicationActivity();\r\n commAct.id = this.id.toString();\r\n commAct.baseFileName = this.baseFileName;\r\n commAct.chatActivityId = this.chatActivityId;\r\n commAct.communicationActivityId = this.communicationActivityId;\r\n commAct.communicationMessageId = this.communicationMessageId;\r\n commAct.chatMessageId = this.chatMessageId;\r\n commAct.communicationType = \"Chat\";\r\n commAct.commTypeEnum = this.commTypeEnum;\r\n // commAct.contents = this.contents;\r\n commAct.dateFormatted = this.dateFormatted;\r\n commAct.date = this.date;\r\n commAct.fromUser = this.fromUser;\r\n commAct.isPic = this.isPic;\r\n commAct.latitude = this.latitude;\r\n commAct.longitude = this.longitude;\r\n commAct.messageBody = this.messageBody;\r\n commAct.messageBodyShort = this.messageBodyShort;\r\n\r\n commAct.receiver = this.receiver;\r\n commAct.receiverAction = this.receiverAction;\r\n commAct.receiverModelString = this.receiverModelString;\r\n commAct.receiverProfileName = this.receiverProfileName;\r\n commAct.receiverSITUserId = this.receiverSITUserId;\r\n commAct.receiverSitUserId = this.receiverSitUserId;\r\n commAct.receiverSITUserKey = this.receiverSITUserKey;\r\n commAct.receiverSitUserKey = this.receiverSitUserKey;\r\n\r\n commAct.sender = this.sender;\r\n commAct.senderAction = this.senderAction;\r\n commAct.senderModelString = this.senderModelString;\r\n commAct.senderProfileName = this.senderProfileName;\r\n commAct.senderSITUserId = this.senderSITUserId;\r\n commAct.senderSitUserId = this.senderSitUserId;\r\n commAct.senderSITUserKey = this.senderSITUserKey;\r\n commAct.senderSitUserKey = this.senderSitUserKey;\r\n\r\n commAct.sentPic = this.sentPic;\r\n\r\n commAct.signedInUserId = this.signedInUserId;\r\n commAct.signedInUserKey = this.signedInUserKey;\r\n\r\n\r\n commAct.subject = this.subject;\r\n commAct.subjectShort = this.subjectShort;\r\n commAct.timeLapsed = this.timeLapsed;\r\n\r\n commAct.toUser = this.toUser;\r\n\r\n // to harmonize these values:\r\n this.harmonize(this);\r\n\t}\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from \"./../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\nimport { Chat } from \"./chat.model\";\r\nimport { ChatMessage } from \"./chatMessage.model\";\r\n\r\nexport class ChatActivity {\r\n public chatActivityId : number = 0;\r\n public chatMessageId : number = 0;\r\n public contents : string = '';\r\n public date : any;\r\n public dateFormatted : any;\r\n public groupName : string = '';\r\n public isAdministrative : boolean = false;\r\n public isReceiver : boolean = false;\r\n public isSender : boolean = false;\r\n public messageBody: string = '';\r\n public note: string = '';\r\n public receiverAction : string = '';\r\n public receiverSITUserKey : string = '';\r\n public replyToId : number = 0;\r\n public senderAction : string = '';\r\n public senderSITUserKey : string = '';\r\n public sentPic : string = '';\r\n public timeLapsed: string = '';\r\n public timeLapsedPlaceholder: string = '';\r\n public chatMessage : ChatMessage = new ChatMessage();\r\n\r\n\r\n // -----------------------------------------------------\r\n constructor () {\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public Copy (destination : ChatActivity, source : ChatActivity) : ChatActivity {\r\n if (source != null && destination != null) {\r\n destination.contents = source.contents;\r\n destination.chatMessage = source.chatMessage;\r\n destination.chatMessageId = source.chatMessageId;\r\n destination.date = source.date;\r\n destination.isSender = source.isSender;\r\n destination.isReceiver = source.isReceiver;\r\n destination.timeLapsed = source.timeLapsed;\r\n destination.groupName = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(source.groupName) ? source.groupName : '';\r\n destination.isAdministrative = source.isAdministrative != null ? source.isAdministrative : false;\r\n destination.messageBody = source.messageBody;\r\n destination.note = source.note;\r\n destination.receiverAction = source.receiverAction;\r\n destination.receiverSITUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(source.receiverSITUserKey) ? source.receiverSITUserKey : '';\r\n destination.replyToId = source.replyToId != null ? source.replyToId : 0;\r\n destination.senderAction = source.senderAction;\r\n destination.senderSITUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(source.senderSITUserKey) ? source.senderSITUserKey : '';\r\n destination.sentPic = source.sentPic;\r\n return destination;\r\n }\r\n return source;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public CopyFromChat (source : Chat) : ChatActivity {\r\n var destination : ChatActivity = new ChatActivity();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(source)) {\r\n destination.chatMessageId = source.chatMessageId;\r\n destination.date = source.date;\r\n destination.isSender = source.isSender;\r\n destination.isReceiver = source.isReceiver;\r\n destination.timeLapsed = source.timeLapsed;\r\n destination.groupName = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(source.groupName) ? source.groupName : '';\r\n destination.isAdministrative = source.isAdministrative != null ? source.isAdministrative : false;\r\n destination.messageBody = source.messageBody;\r\n destination.receiverAction = source.receiverAction;\r\n destination.receiverSITUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(source.receiverSITUserKey) ? source.receiverSITUserKey : '';\r\n // destination.replyToId = source.replyToId != null ? source.replyToId : 0;\r\n destination.senderAction = source.senderAction;\r\n destination.senderSITUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(source.senderSITUserKey) ? source.senderSITUserKey : '';\r\n destination.sentPic = source.sentPic;\r\n }\r\n return destination;\r\n }\r\n}\r\n","\r\nimport { Communicator } from \"../communication/communicator.model\";\r\nimport { ChatActivity } from \"./chatActivity.model\";\r\nimport { ChatMessage } from \"./chatMessage.model\";\r\n\r\nexport class ChatConversationModel {\r\n public chatConversationModelId = 0;\r\n public date = '';\r\n public receiver : Communicator = new Communicator();\r\n public sender : Communicator = new Communicator();\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public chatActivities : ChatActivity[] = [];\r\n public chatMessages : ChatMessage[] = [];\r\n}","export class ChatFileUpload {\n public cryptUserKey = '';\n public date = '';\n public description = '';\n public fileMap : Map = new Map();\n public filesToStringArr : string[] = [];\n public formData = new FormData();\n public formDataArr : FormData[] = [];\n public fileArr : File[] = [];\n \n public id = 0;\n \n public longitude = 0;\n public latitude = 0;\n public picArr:any[] = [];\n public sitUserId = 0;\n constructor() { }\n}\n","import { FrequentlyUsedFunctionsServiceStatic } from \"../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\nimport { Chat } from \"./chat.model\";\r\nimport { ChatActivity } from \"./chatActivity.model\";\r\n\r\nexport class ChatMessage {\r\n public chatMessageId : number = 0;\r\n public date : string = '';\r\n public dateFormatted : string = '';\r\n public description : string = '';\r\n public isPic: boolean = false;\r\n public image : any;\r\n public messageBody: string = '';\r\n public replyToId: number = 0;\r\n public senderCryptUserKey : string = '';\r\n public senderSITUserKey : string = '';\r\n public subject : string = '';\r\n public isEncrypted: boolean = false;\r\n public sentPic: any;\r\n public oldMessageBody : string = '';\r\n constructor () { }\r\n\r\n copyFromChat (s : Chat) : ChatMessage {\r\n var cMsg : ChatMessage = new ChatMessage();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(s)) { \r\n cMsg.chatMessageId = s.chatMessageId;\r\n cMsg.date = s.date;\r\n cMsg.dateFormatted = s.dateFormatted;\r\n cMsg.description = s.description;\r\n cMsg.isPic = s.isPic;\r\n cMsg.image = s.sentPic;\r\n cMsg.messageBody = s.messageBody;\r\n cMsg.replyToId = s.repliedToId;\r\n cMsg.senderCryptUserKey = s.senderCryptUserKey;\r\n cMsg.senderSITUserKey = s.senderSITUserKey;\r\n cMsg.subject = s.subject;\r\n cMsg.sentPic = s.sentPic; \r\n }\r\n return cMsg;\r\n }\r\n copyFromChatActivity (s : ChatActivity) : ChatMessage {\r\n var cMsg : ChatMessage = new ChatMessage();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(s) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(s.chatMessage)) {\r\n cMsg.chatMessageId = s.chatMessage.chatMessageId;\r\n cMsg.date = s.chatMessage.date;\r\n cMsg.dateFormatted = s.chatMessage.dateFormatted;\r\n cMsg.description = s.chatMessage.description;\r\n cMsg.isPic = s.chatMessage.isPic;\r\n cMsg.image = s.chatMessage.sentPic;\r\n cMsg.messageBody = s.chatMessage.messageBody;\r\n cMsg.replyToId = s.chatMessage.replyToId;\r\n cMsg.senderCryptUserKey = s.chatMessage.senderCryptUserKey;\r\n cMsg.senderSITUserKey = s.chatMessage.senderSITUserKey;\r\n cMsg.subject = s.chatMessage.subject;\r\n cMsg.sentPic = s.chatMessage.sentPic;\r\n }\r\n return cMsg;\r\n }\r\n}\r\n","export class ActionId {\n public action = '';\n public date = '';\n public id = 0;\n public message: undefined;\n public value: undefined;\n constructor() {\n // ;\n }\n}\n","export class Address {\n public id = 0;\n public addressStr = '';\n public aptUnit = '';\n public addressKey = '';\n public billingAddressId = 0;\n public businessCardId = 0;\n public cartId = 0;\n public city = '';\n public country = '';\n public email = '';\n public firstName = '';\n public isBilling = true;\n public isSameAsBilling = false;\n public lastName = '';\n public message = '';\n public outsideVendorCardId = 0;\n public shippingAddressId = 0;\n public sitUserId = 0;\n public streetNum = '';\n public streetName = '';\n public state = '';\n public zipCode = '';\n constructor() { }\n}\n","export class AppFeature\r\n{\r\n public description = ''; /*required*/\r\n public featureGroup = ''; /*optional*/\r\n public featureName = ''; /*required; also used as key*/\r\n public isPrimary = false; /*required*/\r\n public isValued = false; /*required*/\r\n public maxPrimaryCount = ''; /*required*/\r\n public maxValuedCount = ''; /*required*/\r\n public message : undefined; /*optional*/\r\n public note : undefined; /*optional*/\r\n constructor() {\r\n // ;\r\n }\r\n}\r\n","export class Bool {\n public index = -1;\n public isClosed = true;\n public isOpened = false;\n public id = 0;\n public date! : Date;\n public name = '';\n constructor() { }\n}\n","export class ClientApiModel {\n public callerName = '';\n public date = '';\n public id = 0;\n public sitUserId = 0;\n public sitUserKey = '';\n public sitUserIdArr : number[] = [];\n public signedInUserId = 0;\n public signedInUserKey = '';\n public message: undefined;\n public value: undefined;\n constructor() {\n // ;\n }\n}\n","import { BoxNonceEntity } from '../boxNonce/boxNonceEntity.model';\n\nexport class ClientData {\n public id = 0;\n public date = '';\n public key = '';\n public preference: BoxNonceEntity = new BoxNonceEntity();\n public profileInfo: BoxNonceEntity = new BoxNonceEntity();\n public profilePics: BoxNonceEntity = new BoxNonceEntity();\n public profileTiles: BoxNonceEntity[] = [];\n constructor() { }\n}\n","import { ChatFileUpload } from '../chat/chatFileUpload.model';\r\n\r\nexport class Content {\r\n public aBstract = '';\r\n public authorSitUserId = 0;\r\n public contentId = 0;\r\n public contents = '';\r\n public date = '';\r\n public chatFileUpload: ChatFileUpload = new ChatFileUpload();\r\n public fileType = '';\r\n public heading = '';\r\n public isCode = false;\r\n public isSuccess = false;\r\n public isPic = false;\r\n public latitude = 0;\r\n public longitude = 0;\r\n public message = '';\r\n public paragraphNo = 0;\r\n public photoId = 0;\r\n public profileId = 0;\r\n public sitUserId = 0;\r\n public signedInUserId = 0;\r\n public sitUserKey = '';\r\n public signedInUserKey = '';\r\n constructor(\r\n ) { }\r\n\r\n\r\n copy(source: Content) {\r\n this.authorSitUserId = source.authorSitUserId;\r\n this.contentId = source.contentId;\r\n this.profileId = source.profileId;\r\n this.contents = source.contents;\r\n this.date = source.date;\r\n this.chatFileUpload = source.chatFileUpload;\r\n this.fileType = source.fileType;\r\n this.heading = source.heading;\r\n this.isCode = source.isCode;\r\n this.isPic = source.isPic;\r\n this.latitude = source.latitude;\r\n this.longitude = source.longitude;\r\n this.message = source.message;\r\n this.paragraphNo = source.paragraphNo;\r\n this.photoId = source.photoId;\r\n this.sitUserId = source.sitUserId;\r\n this.sitUserKey = source.sitUserKey;\r\n this.signedInUserId = source.signedInUserId;\r\n this.signedInUserKey = source.signedInUserKey;\r\n }\r\n\r\n copyTo(destination: Content, source: Content) {\r\n if (source && destination) {\r\n destination.authorSitUserId = source.authorSitUserId;\r\n destination.contentId = source.contentId;\r\n destination.profileId = source.profileId;\r\n destination.contents = source.contents;\r\n destination.date = source.date;\r\n destination.chatFileUpload = source.chatFileUpload;\r\n destination.fileType = source.fileType;\r\n destination.heading = source.heading;\r\n destination.isCode = source.isCode;\r\n destination.isPic = source.isPic;\r\n destination.latitude = source.latitude;\r\n destination.longitude = source.longitude;\r\n destination.message = source.message;\r\n destination.paragraphNo = source.paragraphNo;\r\n destination.photoId = source.photoId;\r\n destination.sitUserId = source.sitUserId;\r\n destination.sitUserKey = source.sitUserKey;\r\n destination.signedInUserId = source.signedInUserId;\r\n destination.signedInUserKey = source.signedInUserKey;\r\n }\r\n }\r\n\r\n reset() {\r\n this.authorSitUserId = 0;\r\n this.contentId = 0;\r\n this.profileId = 0;\r\n this.contents = '';\r\n this.date = '';\r\n this.chatFileUpload = new ChatFileUpload();\r\n this.fileType = '';\r\n this.heading = '';\r\n this.isCode = false;\r\n this.isPic = false;\r\n this.latitude = 0;\r\n this.longitude = 0;\r\n this.message = '';\r\n this.paragraphNo = 0;\r\n this.photoId = 0;\r\n this.sitUserId = 0;\r\n this.sitUserKey = '';\r\n this.signedInUserId = 0;\r\n this.signedInUserKey = '';\r\n }\r\n}\r\n","export class Counters {\n public callDictionary = 0;\n public callIndexedDb = 0;\n public callServer = 0;\n public callerName = '';\n public date = '';\n public id = 0;\n public key = '';\n public message: any;\n public value: any;\n constructor() { }\n}\n","export class DateAssay {\n public millss = -1;\n public ss = -1;\n public mm = -1;\n public hh = -1;\n public dd = -1;\n public months = -1;\n public yyyy = -1;\n\n public jsTicks = '';\n public jsTicksNum = -1;\n public csTicks = '';\n public csTicksNum = -1;\n\n public UTCoffset = '';\n public hasDST = false;\n public UTCoffsetT = '';\n\n public isBool = true;\n public id = 0;\n public date!: Date;\n public dateFormatted = '';\n public csTicks2JsDateFormatted!: string;\n public csTicks2JsDate!: Date;\n constructor() { }\n}\n","export class EmitCheckboxResult {\n public checkboxName = '';\n public checkboxSelectionsIndex = -1;\n // public checkboxSelectionsString: string = '';\n public selectedCheckboxsArr: any[] = [];\n public isRequiredPassed = false;\n constructor() { }\n}\n","export class EmitDatePickerResult {\n public pickedDate: any;\n public pickedDateEvent: any;\n constructor() { }\n}\n","export class EmitDropDownResult {\n public index = -1;\n public dropdownBoxName = '';\n public dropdownSelection = '';\n public isRequiredPassed = false;\n constructor() { }\n}\n","export class EmitOffOnResult {\n public offOnName = '';\n public offOnDistance = '';\n public offOnSelection = '';\n public offOnStatusEnum = -1;\n public selectedOffOnIndex = -1;\n public isRequiredPassed = false;\n public offOnStatusColorTimer: any; // NodeJS.Timeout;\n public offOnStatusColor = '';\n public away = '';\n public link = ''; // used by setLink\n public pTileElemId = ''; // used by setLink\n public unit = 'm';\n constructor() { }\n}\n","export class EmitRadioboxResult {\n public index = -1;\n public radioboxName = '';\n public radioboxSelection = '';\n public isRequiredPassed = false;\n constructor() { }\n}\n","// ---------------------------------------------------------------\nexport class Filter {\n property!: keyof T;\n constructor(public isTruthyPicked: boolean) { }\n}\n// ---------------------------------------------------------------\nexport class Sorter {\n property!: Extract;\n\n constructor(public isDescending: boolean) { }\n}\n// --------------------------------------------------------------\n","import { FrequentlyUsedFunctionsServiceStatic } from \"../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\n\r\n\r\nexport class Heartbeat {\r\n public callerName = '';\r\n public city = '';\r\n public country = '';\r\n public date = '';\r\n public distance = 0;\r\n public distanceStr = '';\r\n public gender = '';\r\n public heartbeatTime = 0;\r\n public id = 0;\r\n public isOnline = false;\r\n public jsDateForCs = '';\r\n public latitude = 0;\r\n public longitude = 0;\r\n public neighborhood = '';\r\n public regionCode = '';\r\n public prevHeartbeat = 0;\r\n public sitUserId = 0;\r\n public signedInUserId = 0;\r\n public unit = '';\r\n constructor () { }\r\n\r\n // Note: CopyServiceStatic has the other copyHeartbeatIfExists(destination, source) : Heartbeat\r\n\r\n public copy (hb : Heartbeat) : Heartbeat | any {\r\n // debugger;\r\n if (!this.isNullOrEmpty(hb) && this.typeCheck(hb) === 'object' && hb instanceof Heartbeat) {\r\n // debugger;\r\n // if (typeof (this) == 'object') {\r\n if (this.typeCheck(this) === 'object' && this instanceof Heartbeat) {\r\n if (!this.isNullOrEmpty(hb.callerName)) {\r\n this.callerName = hb.callerName;\r\n }\r\n if (!this.isNullOrEmpty(hb.city)) {\r\n this.city = hb.city;\r\n }\r\n if (!this.isNullOrEmpty(hb.country)) {\r\n this.country = hb.country;\r\n }\r\n if (!this.isNullOrEmpty(hb.date)) {\r\n this.date = hb.date;\r\n }\r\n if (hb.distance > 0) {\r\n this.distance = hb.distance;\r\n }\r\n if (!this.isNullOrEmpty(hb.distanceStr)) {\r\n this.distanceStr = hb.distanceStr;\r\n }\r\n if (hb.heartbeatTime > 0) {\r\n this.heartbeatTime = hb.heartbeatTime;\r\n }\r\n if (!this.isNullOrEmpty(hb.gender)) {\r\n this.gender = hb.gender;\r\n }\r\n if (hb.id > 0) {\r\n this.id = hb.id;\r\n }\r\n\r\n // NOTE: this is very important because we compare it with now to get offOnStatusEnum value;\r\n if (hb.prevHeartbeat > 0) {\r\n this.prevHeartbeat = hb.prevHeartbeat;\r\n }\r\n\r\n this.isOnline = hb.isOnline;\r\n\r\n if (!this.isNullOrEmpty(hb.jsDateForCs)) {\r\n this.jsDateForCs = hb.jsDateForCs;\r\n }\r\n if (hb.latitude !== 0) {\r\n this.latitude = hb.latitude;\r\n }\r\n if (hb.longitude !== 0) {\r\n this.longitude = hb.longitude;\r\n }\r\n if (!this.isNullOrEmpty(hb.neighborhood)) {\r\n this.neighborhood = hb.neighborhood;\r\n }\r\n if (!this.isNullOrEmpty(hb.regionCode)) {\r\n this.regionCode = hb.regionCode;\r\n }\r\n if (hb.sitUserId > 0) {\r\n this.sitUserId = hb.sitUserId;\r\n }\r\n }\r\n else {\r\n return hb.heartbeatTime;\r\n }\r\n }\r\n else if (typeof (this) !== 'object') {\r\n return hb;\r\n // debugger;\r\n } \r\n }\r\n public copySourceToDestination (destHb: Heartbeat, hb : Heartbeat) : Heartbeat | any {\r\n // debugger;\r\n if (!this.isNullOrEmpty(hb) && this.typeCheck(hb) === 'object' && hb instanceof Heartbeat) {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destHb)) {\r\n destHb = new Heartbeat();\r\n\t\t\t}\r\n // if (typeof (this) == 'object') {\r\n if (this.typeCheck(destHb) === 'object' && destHb instanceof Heartbeat) {\r\n if (!this.isNullOrEmpty(hb.callerName)) {\r\n destHb.callerName = hb.callerName;\r\n }\r\n if (!this.isNullOrEmpty(hb.city)) {\r\n destHb.city = hb.city;\r\n }\r\n if (!this.isNullOrEmpty(hb.country)) {\r\n destHb.country = hb.country;\r\n }\r\n if (!this.isNullOrEmpty(hb.date)) {\r\n destHb.date = hb.date;\r\n }\r\n if (hb.distance > 0) {\r\n destHb.distance = hb.distance;\r\n }\r\n if (!this.isNullOrEmpty(hb.distanceStr)) {\r\n destHb.distanceStr = hb.distanceStr;\r\n }\r\n if (hb.heartbeatTime > 0) {\r\n destHb.heartbeatTime = hb.heartbeatTime;\r\n }\r\n if (!this.isNullOrEmpty(hb.gender)) {\r\n destHb.gender = hb.gender;\r\n }\r\n if (hb.id > 0) {\r\n destHb.id = hb.id;\r\n }\r\n\r\n // NOTE: this is very important because we compare it with now to get offOnStatusEnum value;\r\n if (hb.prevHeartbeat > 0) {\r\n destHb.prevHeartbeat = hb.prevHeartbeat;\r\n }\r\n\r\n destHb.isOnline = hb.isOnline;\r\n\r\n if (!this.isNullOrEmpty(hb.jsDateForCs)) {\r\n destHb.jsDateForCs = hb.jsDateForCs;\r\n }\r\n if (hb.latitude !== 0) {\r\n destHb.latitude = hb.latitude;\r\n }\r\n if (hb.longitude !== 0) {\r\n destHb.longitude = hb.longitude;\r\n }\r\n if (!this.isNullOrEmpty(hb.neighborhood)) {\r\n destHb.neighborhood = hb.neighborhood;\r\n }\r\n if (!this.isNullOrEmpty(hb.regionCode)) {\r\n destHb.regionCode = hb.regionCode;\r\n }\r\n if (hb.sitUserId > 0) {\r\n destHb.sitUserId = hb.sitUserId;\r\n }\r\n }\r\n else {\r\n return hb.heartbeatTime;\r\n }\r\n }\r\n else if (typeof (this) !== 'object') {\r\n return destHb;\r\n // debugger;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n public isNullOrEmpty (input : any) : boolean {\r\n if (input === null || input === '' || input === undefined || (input !== null && (input.toString().toLowerCase() === 'null' || input.toString().toLowerCase() === 'undefined'))) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/4456336/finding-variable-type-in-javascript\r\n * ---------------------------------------------------------------\r\n */\r\n public typeCheck (obj : any) : any {\r\n if (!this.isNullOrEmpty(obj)) {\r\n // debugger;\r\n switch (typeof obj) {\r\n // object prototypes\r\n case 'undefined':\r\n return 'Undefined';\r\n case 'boolean':\r\n return 'Boolean';\r\n case 'number':\r\n return 'Number';\r\n case 'string':\r\n return 'String';\r\n case 'object':\r\n if (obj instanceof Array) {\r\n return 'Array';\r\n }\r\n else if (obj instanceof String) {\r\n return 'String';\r\n }\r\n else if (obj instanceof Number) {\r\n return 'Number';\r\n }\r\n else if (obj instanceof Date) {\r\n return 'Date';\r\n }\r\n else if (obj instanceof Object) {\r\n return 'Object';\r\n }\r\n else if (obj instanceof RegExp) {\r\n return 'RegExp';\r\n }\r\n else if (obj instanceof Function) {\r\n return 'Function';\r\n }\r\n else if (obj instanceof Symbol) {\r\n return 'Symbol';\r\n }\r\n else return 'Object';\r\n // object literals\r\n default:\r\n return typeof obj;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","// Note: MessageModel will be used to display plain messages as well as spinner if necessary.\r\n\r\nimport { FrequentlyUsedFunctionsServiceStatic } from \"../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\nimport { DateStringServiceStatic } from \"../../services/staticServices/commonStaticServices/dateStringServiceStatic.service\";\r\n\r\n// Hence IsBusy Model will not be used for Spinner-System.\r\nexport class MessageModel {\r\n public message: any;\r\n public isSpinner = false;\r\n public isSuccess = false;\r\n public callerName = '';\r\n public id = 0;\r\n public date = '';\r\n public startTime = new Date().getTime();\r\n public endTime = this.startTime + 20000; // spinner will be displayed for 20 seconds\r\n public interval = 20000; // message will be displayed for 20 seconds\r\n constructor () { }\r\n\r\n getTimeDiff () : any {\r\n let diff = this.endTime - this.startTime;\r\n let dAssay = DateStringServiceStatic.dateInYYYYMMDDhhmmss(diff);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dAssay)) {\r\n return dAssay;\r\n }\r\n }\r\n\r\n// TODO: intend to depracate\r\n getTimeoutInterval () : any {\r\n\r\n if (this.endTime && this.startTime) {\r\n let eTime = this.endTime;\r\n let sTime = this.startTime;\r\n if (eTime > sTime) {\r\n this.interval = eTime - sTime + 5000;\r\n }\r\n }\r\n\r\n return this.interval;\r\n }\r\n setTimeoutInterval (interval : number) : void {\r\n this.interval = interval;\r\n }\r\n\r\n\r\n}\r\n","export class ModalModel {\n public message = '';\n public date = '';\n public sitUserId = 0;\n public inputs: any;\n public outputs: any;\n public componentName = '';\n public parent = '';\n public isModalVisible = false;\n constructor() { }\n}\n","\r\nimport { Router } from \"@angular/router\";\r\nimport { LoginSuccess } from \"../account/loginSuccess.model\";\r\n\r\nexport class ModuleComponentLoader {\r\n public action = '';\r\n public componentName = '';\r\n public controller = '';\r\n public callerName = ''; // importnat! to be used in conjusction with componentName, but not with moduleName\r\n public isModalVisible = false;\r\n public id = 0; // is meant to contain angular-generated-id-for-routing\r\n public index = 0;\r\n public loginSuccess = new LoginSuccess();\r\n public message = '';\r\n public moduleName = '';\r\n public origin = '';\r\n public paramMap : Map = new Map();\r\n public returnUrl = '';\r\n public router!: any;\r\n public sitUserId = 0; // Caution: not to use for routing, but for other purposes\r\n public url = '';\r\n\r\n // -----------------------------------------------\r\n constructor () {\r\n }\r\n}\r\n","export class Photo {\n public approval = '';\n public contentType = '';\n public cryptUserKey = '';\n public date = '';\n public description = '';\n public file = File;\n public formData : FormData = new FormData();\n public id = 0;\n public imageBytes : [] = [];\n public image: any;\n public imageString = '';\n public isPrimary = false;\n public isSelected = false;\n public isUnlocked = false;\n public itemNum = 0;\n public latitude = '';\n public longitude = '';\n public location = {};\n public path = '';\n public pic = '';\n public photoId = 0;\n public privacy = '';\n public profileId = 0;\n public sitUserId = 0;\n public sitUserKey = '';\n public signedInUserId = 0;\n public sourceId = 0;\n public sourceType = '';\n public title = '';\n public url = '';\n constructor() { }\n\n copy(that: Photo): Photo {\n this.approval = that.approval;\n this.contentType = that.contentType;\n this.cryptUserKey = that.cryptUserKey;\n this.date = that.date;\n this.description = that.description;\n this.file = that.file;\n this.formData = that.formData;\n this.id = that.id;\n this.image = that.image;\n this.imageBytes = that.imageBytes;\n this.imageString = that.imageString;\n this.isPrimary = that.isPrimary;\n this.isSelected = that.isSelected;\n this.isUnlocked = that.isUnlocked;\n this.itemNum = that.itemNum;\n this.latitude = that.latitude;\n this.location = that.location;\n this.longitude = that.longitude;\n this.path = that.path;\n this.photoId = that.photoId;\n this.pic = that.pic;\n this.privacy = that.privacy;\n this.profileId = that.profileId;\n this.sitUserId = that.sitUserId;\n this.sitUserKey = that.sitUserKey;\n this.signedInUserId = that.signedInUserId;\n this.sourceId = that.sourceId;\n this.sourceType = that.sourceType;\n this.title = that.title;\n this.url = that.url;\n return this;\n }\n\n cloneTo(to: Photo, that: Photo): Photo {\n to.approval = that.approval;\n to.contentType = that.contentType;\n to.cryptUserKey = that.cryptUserKey;\n to.date = that.date;\n to.description = that.description;\n to.file = that.file;\n to.formData = that.formData;\n to.id = that.id;\n to.image = that.image;\n to.imageBytes = that.imageBytes;\n to.imageString = that.imageString;\n to.isPrimary = that.isPrimary;\n to.isSelected = that.isSelected;\n to.isUnlocked = that.isUnlocked;\n to.latitude = that.latitude;\n to.location = that.location;\n to.longitude = that.longitude;\n to.itemNum = that.itemNum;\n to.path = that.path;\n to.pic = that.pic;\n to.photoId = that.photoId;\n to.privacy = that.privacy;\n to.profileId = that.profileId;\n to.sitUserId = that.sitUserId;\n to.sitUserKey = that.sitUserKey;\n to.signedInUserId = that.signedInUserId;\n to.sourceId = that.sourceId;\n to.sourceType = that.sourceType;\n to.title = that.title;\n to.url = that.url;\n return to;\n }\n \n // ---------------------------------------------\n copyIfExists (a : Photo) : Photo {\n if (a.cryptUserKey) {\n this.cryptUserKey = a.cryptUserKey;\n }\n\n if (a.date) {\n this.date = a.date;\n }\n\n if (a.description) {\n this.description = a.description;\n } \n\n if (a.file) {\n this.file = a.file;\n }\n\n if (a.formData) {\n this.formData = a.formData;\n }\n\n if (a.id) {\n this.id = a.id;\n }\n\n if (a.image) {\n this.image = a.image;\n }\n\n if (a.imageString) {\n this.imageString = a.imageString;\n }\n\n if (a.imageBytes) {\n this.imageBytes = a.imageBytes;\n }\n\n if (a.isPrimary) {\n this.isPrimary = a.isPrimary;\n }\n\n if (a.isSelected) {\n this.isSelected = a.isSelected;\n }\n if (a.isUnlocked) {\n this.isUnlocked = a.isUnlocked;\n }\n\n if (a.itemNum) {\n this.itemNum = a.itemNum;\n }\n\n if (a.latitude) {\n this.latitude = a.latitude;\n }\n\n if (a.location) {\n this.location = a.location;\n }\n\n if (a.longitude) {\n this.longitude = a.longitude;\n }\n\n if (a.path) {\n this.path = a.path;\n }\n\n if (a.photoId) {\n this.photoId = a.photoId;\n }\n\n if (a.pic) {\n this.pic = a.pic;\n }\n if (a.profileId) {\n this.profileId = a.profileId;\n }\n if (a.privacy) {\n this.privacy = a.privacy;\n }\n\n if (a.signedInUserId) {\n this.signedInUserId = a.signedInUserId;\n }\n\n if (a.sitUserId) {\n this.sitUserId = a.sitUserId;\n }\n\n if (a.sitUserKey) {\n this.sitUserKey = a.sitUserKey;\n }\n\n if (a.title) {\n this.title = a.title;\n }\n\n if (a.url) {\n this.url = a.url;\n }\n return this;\n }\n // ---------------------------------------------\n cloneIfExists (a : Photo) : Photo {\n const that = new Photo();\n that.copyIfExists(a);\n return that;\n }\n // ---------------------------------------------\n}\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../../services/staticServices/stringServiceStatic.service';\r\nimport { KvPhoto } from '../keyValue/kvPhoto.model';\r\nimport { Photo } from './photo.model';\r\nvar _ = require('lodash');\r\n\r\nexport class PhotoBn extends Photo {\r\n public action:any = '';\r\n public box: any;\r\n public nonce: any; \r\n public distance: any = 0;\r\n public enctype : any = '';\r\n public fileBytes : any;\r\n public message : any = '';\r\n public photoBnId : any = 0;\r\n public value : any = '';\r\n // ---------------\r\n constructor ()\r\n {\r\n super();\r\n }\r\n // ---------------------------------------------\r\n public copy2 (a : PhotoBn) : void {\r\n super.copy(a);\r\n debugger;\r\n this.action = a.action;\r\n this.box = a.box;\r\n this.distance = a.distance;\r\n this.enctype = a.enctype;\r\n this.fileBytes = a.fileBytes;\r\n this.message = a.message;\r\n this.nonce = a.nonce;\r\n this.photoBnId = a.photoBnId;\r\n debugger;\r\n }\r\n // ---------------------------------------------\r\n public override copy (a : PhotoBn) : PhotoBn {\r\n // const that = new KvPhoto();\r\n this.action = a.action;\r\n this.approval = a.approval;\r\n this.box = a.box;\r\n this.contentType = a.contentType;\r\n this.cryptUserKey = a.cryptUserKey;\r\n this.date = a.date;\r\n this.description = a.description;\r\n this.distance = a.distance;\r\n this.enctype = a.enctype;\r\n this.file = a.file;\r\n this.fileBytes = a.fileBytes;\r\n this.formData = a.formData;\r\n this.id = a.id;\r\n this.image = a.image;\r\n this.imageBytes = a.imageBytes;\r\n this.imageString = a.imageString;\r\n this.isUnlocked = a.isUnlocked;\r\n this.isPrimary = a.isPrimary;\r\n this.itemNum = a.itemNum;\r\n this.latitude = a.latitude;\r\n this.location = a.location;\r\n this.longitude = a.longitude;\r\n this.message = a.message;\r\n this.nonce = a.nonce;\r\n this.path = a.path;\r\n this.photoId = a.photoId;\r\n this.photoBnId = a.photoBnId;\r\n this.pic = a.pic;\r\n this.privacy = a.privacy;\r\n this.profileId = a.profileId;\r\n this.signedInUserId = a.signedInUserId;\r\n this.sitUserId = a.sitUserId;\r\n this.sitUserKey = a.sitUserKey;\r\n this.sourceId = a.sourceId;\r\n this.sourceType = a.sourceType;\r\n this.title = a.title;\r\n this.url = a.url;\r\n this.value = a.value;\r\n return this;\r\n }\r\n // ---------------------------------------------\r\n public copySourceToDestination (pbn :PhotoBn, a : PhotoBn) : PhotoBn|any {\r\n // const that = new KvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn)) {\r\n pbn = new PhotoBn();\r\n }\r\n pbn.action = a.action;\r\n pbn.approval = a.approval;\r\n pbn.box = a.box;\r\n pbn.contentType = a.contentType;\r\n pbn.cryptUserKey = a.cryptUserKey;\r\n pbn.date = a.date;\r\n pbn.description = a.description;\r\n pbn.distance = a.distance;\r\n pbn.enctype = a.enctype;\r\n pbn.file = a.file;\r\n pbn.fileBytes = a.fileBytes;\r\n pbn.formData = a.formData;\r\n pbn.id = a.id;\r\n pbn.image = a.image;\r\n pbn.imageBytes = a.imageBytes;\r\n pbn.imageString = a.imageString;\r\n pbn.isUnlocked = a.isUnlocked;\r\n pbn.isPrimary = a.isPrimary;\r\n pbn.itemNum = a.itemNum;\r\n pbn.latitude = a.latitude;\r\n pbn.location = a.location;\r\n pbn.longitude = a.longitude;\r\n pbn.message = a.message;\r\n pbn.nonce = a.nonce;\r\n pbn.path = a.path;\r\n pbn.photoId = a.photoId;\r\n pbn.photoBnId = a.photoBnId;\r\n pbn.pic = a.pic;\r\n pbn.privacy = a.privacy;\r\n pbn.profileId = a.profileId;\r\n pbn.signedInUserId = a.signedInUserId;\r\n pbn.sitUserId = a.sitUserId;\r\n pbn.sitUserKey = a.sitUserKey;\r\n pbn.sourceId = a.sourceId;\r\n pbn.sourceType = a.sourceType;\r\n pbn.title = a.title;\r\n pbn.url = a.url;\r\n pbn.value = a.value;\r\n return pbn;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------\r\n public clone (a : PhotoBn) : PhotoBn {\r\n let that = new PhotoBn();\r\n that.copy(a);\r\n return that;\r\n }\r\n // ---------------------------------------------\r\n public override copyIfExists (a : PhotoBn) : PhotoBn {\r\n if (a.action) {\r\n this.action = a.action;\r\n }\r\n if (a.approval) {\r\n this.approval = a.approval;\r\n }\r\n if (a.box) {\r\n this.box = a.box;\r\n }\r\n if (a.contentType) {\r\n this.contentType = a.contentType;\r\n }\r\n\r\n if (a.cryptUserKey) {\r\n this.cryptUserKey = a.cryptUserKey;\r\n }\r\n\r\n if (a.date) {\r\n this.date = a.date;\r\n }\r\n\r\n if (a.description) {\r\n this.description = a.description;\r\n }\r\n\r\n if (a.distance) {\r\n this.distance = a.distance;\r\n }\r\n\r\n if (a.enctype) {\r\n this.enctype = a.enctype;\r\n }\r\n\r\n if (a.file) {\r\n this.file = a.file;\r\n }\r\n if (a.fileBytes) {\r\n this.fileBytes = a.fileBytes;\r\n }\r\n if (a.formData) {\r\n this.formData = a.formData;\r\n }\r\n\r\n if (a.id > 0) {\r\n this.id = a.id;\r\n }\r\n\r\n if (a.image) {\r\n this.image = a.image;\r\n }\r\n\r\n if (a.imageString) {\r\n this.imageString = a.imageString;\r\n }\r\n\r\n if (a.imageBytes) {\r\n this.imageBytes = a.imageBytes;\r\n }\r\n\r\n if (a.isPrimary) {\r\n this.isPrimary = a.isPrimary;\r\n }\r\n\r\n if (a.isUnlocked) {\r\n this.isUnlocked = a.isUnlocked;\r\n }\r\n\r\n if (a.itemNum) {\r\n this.itemNum = a.itemNum;\r\n }\r\n\r\n if (a.latitude) {\r\n this.latitude = a.latitude;\r\n }\r\n\r\n if (a.location) {\r\n this.location = a.location;\r\n }\r\n\r\n if (a.longitude) {\r\n this.longitude = a.longitude;\r\n }\r\n\r\n if (a.message) {\r\n this.message = a.message;\r\n }\r\n\r\n if (a.nonce) {\r\n this.nonce = a.nonce;\r\n }\r\n\r\n if (a.path) {\r\n this.path = a.path;\r\n }\r\n\r\n if (a.photoId > 0) {\r\n this.photoId = a.photoId;\r\n }\r\n\r\n if (a.photoBnId > 0) {\r\n this.photoBnId = a.photoBnId;\r\n }\r\n\r\n if (a.pic) {\r\n this.pic = a.pic;\r\n }\r\n\r\n if (a.profileId > 0) {\r\n this.profileId = a.profileId;\r\n }\r\n\r\n if (a.privacy) {\r\n this.privacy = a.privacy;\r\n }\r\n\r\n if (a.signedInUserId > 0) {\r\n this.signedInUserId = a.signedInUserId;\r\n }\r\n\r\n if (a.sitUserId > 0) {\r\n this.sitUserId = a.sitUserId;\r\n }\r\n\r\n if (a.sitUserKey) {\r\n this.sitUserKey = a.sitUserKey;\r\n }\r\n\r\n if (a.sourceId > 0) {\r\n this.sourceId = a.sourceId;\r\n }\r\n\r\n if (a.sourceType) {\r\n this.sourceType = a.sourceType;\r\n }\r\n\r\n if (a.title) {\r\n this.title = a.title;\r\n }\r\n\r\n if (a.url) {\r\n this.url = a.url;\r\n }\r\n if (a.value) {\r\n this.value = a.value;\r\n }\r\n return this;\r\n }\r\n // ---------------------------------------------\r\n public override cloneIfExists (a : PhotoBn) : PhotoBn {\r\n const that = new PhotoBn();\r\n that.copyIfExists(a);\r\n return that;\r\n }\r\n // ---------------------------------------------\r\n public toCamelCase (a : any) : PhotoBn {\r\n let that = new PhotoBn();\r\n // let p : Photo = new Photo();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a)) {\r\n // debugger;\r\n // Note: This scheme does not work!\r\n // ---------------------------------\r\n // p = p.cloneIfExists(a);\r\n // debugger;\r\n // that = that.cloneIfExists(p as KvPhoto);\r\n // ---------------------------------\r\n // debugger;\r\n that.action = a.Action; // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.Action) ? a.Action : \"none\";\r\n that.approval = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.Approval) ? a.Approval : \"none\";\r\n that.box = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.Box) ? a.Box : [];\r\n that.contentType = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.ContentType) ? a.ContentType : \"none\";\r\n that.cryptUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.CryptUserKey) ? a.CryptUserKey : '';\r\n that.date = a.Date;\r\n that.description = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.Description) ? a.Description : '';\r\n that.distance = a.Distance;\r\n that.enctype = a.Enctype;\r\n that.file = (a.Files != null) ? a.Files : undefined;\r\n that.fileBytes = a.FileBytes;\r\n //that.formData = a.FormData;\r\n that.id = a.Id;\r\n that.image = a.Image;\r\n that.imageBytes = a.ImageBytes;\r\n that.imageString = a.ImageString;\r\n that.isUnlocked = a.IsUnlocked;\r\n that.isPrimary = a.IsPrimary;\r\n that.itemNum = a.ItemNum;\r\n that.latitude = a.Latitude;\r\n that.location = a.Location;\r\n that.longitude = a.Longitude;\r\n that.message = a.message;\r\n that.nonce = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.Nonce) ? a.Nonce : [];\r\n that.path = a.Path;\r\n that.photoId = a.PhotoId;\r\n that.photoBnId = a.PhotoBnId;\r\n that.pic = a.pic; // Note: the serverside uses the lower-case `pic`\r\n // debugger;\r\n that.privacy = a.Privacy;\r\n /// debugger;\r\n that.profileId = a.ProfileId;\r\n that.signedInUserId = a.SignedInUserId;\r\n that.sitUserId = a.SitUserId;\r\n that.sitUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.SitUserKey) ? a.SitUserKey : '';\r\n that.sourceType = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.SourceType) ? a.SourceType : '';\r\n that.sourceId = a.SourceId;\r\n that.title = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.Title) ? a.Title : '';\r\n that.url = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.Url) ? a.Url : '';\r\n that.value = a.value;\r\n // debugger;\r\n //that.glyphName = a.IsPrimary === true ? 'primary' : a.Privacy; // Note: important!! // to hold the glyphName for privacy\r\n //that.isPrivate = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.Privacy) && a.Privacy.toLowerCase().indexOf('private') !== -1 ? true : false;\r\n //that.key = a.PhotoBnId > 0 ? a.PhotoBnId.toString() : '';\r\n //that.value = a.Pic && a.Pic.length > 5 ? a.Pic\r\n // : a.Image && a.Image.length > 5 ? a.Image\r\n // : a.ImageString.length > 5 ? a.ImageString\r\n // : that.pic;\r\n }\r\n // debugger;\r\n return that;\r\n }\r\n // ---------------------------------------------\r\n // Note: does not work, looses data 20231013\r\n public cloneToCamelCasedKvPhoto (pbn : PhotoBn) : KvPhoto {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn)) {\r\n // debugger;\r\n let a = this.toCamelCase(pbn);\r\n // debugger;\r\n // ---------------------------------\r\n return this.cloneToKvPhoto(a);\r\n }\r\n }\r\n // ---------------------------------------------\r\n public toKvPhoto (pbn : PhotoBn) : KvPhoto {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn)) {\r\n // debugger;\r\n // ---------------------------------\r\n return this.cloneToKvPhoto(pbn);\r\n }\r\n }\r\n // ---------------------------------------------\r\n public cloneToPhoto (to : Photo, that : PhotoBn) : Photo { \r\n to.approval = that.approval;\r\n to.contentType = that.contentType;\r\n to.cryptUserKey = that.cryptUserKey;\r\n to.date = that.date;\r\n to.description = that.description;\r\n to.file = that.file;\r\n to.imageBytes = that.fileBytes.length > 0 ? that.fileBytes : that.imageBytes;\r\n to.formData = that.formData;\r\n to.id = that.id;\r\n to.image = that.image;\r\n to.imageString = that.imageString;\r\n to.isPrimary = that.isPrimary;\r\n to.isSelected = that.isSelected;\r\n to.isUnlocked = that.isUnlocked;\r\n to.latitude = that.latitude;\r\n to.location = that.location;\r\n to.longitude = that.longitude;\r\n to.itemNum = that.itemNum;\r\n to.path = that.path;\r\n to.pic = that.pic;\r\n to.photoId = that.photoId;\r\n to.privacy = that.privacy;\r\n to.profileId = that.profileId;\r\n to.sitUserId = that.sitUserId;\r\n to.sitUserKey = that.sitUserKey;\r\n to.signedInUserId = that.signedInUserId;\r\n to.sourceId = that.sourceId;\r\n to.sourceType = that.sourceType;\r\n to.title = that.title;\r\n to.url = that.url;\r\n return to;\r\n }\r\n // ---------------------------------------------\r\n public cloneToKvPhoto (pbn : PhotoBn) : KvPhoto {\r\n let that = new KvPhoto();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn)) {\r\n // debugger;\r\n let a = pbn;\r\n // ---------------------------------\r\n //debugger;\r\n that.action = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.action) ? a.action : \"none\";\r\n that.approval = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.approval) ? a.approval : \"none\";\r\n that.contentType = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.contentType) ? a.contentType : \"none\";\r\n that.cryptUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.cryptUserKey) ? a.cryptUserKey : '';\r\n that.date = a.date;\r\n that.description = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.description) ? a.description : '';\r\n // that.distance = a.distance;\r\n // that.enctype = a.enctype;\r\n that.file = a.file;\r\n that.formData = a.formData;\r\n that.id = a.id;\r\n that.image = a.image;\r\n that.imageBytes = a.imageBytes;\r\n that.imageString = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.imageString) ? a.imageString : '';\r\n that.isUnlocked = a.isUnlocked;\r\n that.isPrimary = a.isPrimary;\r\n that.itemNum = a.itemNum;\r\n that.latitude = a.latitude;\r\n that.location = a.location;\r\n that.longitude = a.longitude;\r\n // that.message = a.message;\r\n // that.nonce = a.nonce;\r\n that.path = a.path;\r\n that.photoId = a.photoId;\r\n that.photoBnId = a.photoBnId;\r\n that.pic = a.pic;\r\n // debugger;\r\n that.privacy = a.privacy;\r\n /// debugger;\r\n that.profileId = a.profileId;\r\n that.signedInUserId = a.signedInUserId;\r\n that.sitUserId = a.sitUserId;\r\n that.sitUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.sitUserKey) ? a.sitUserKey : '';\r\n that.sourceType = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.sourceType) ? a.sourceType : '';\r\n that.sourceId = a.sourceId;\r\n that.title = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.title) ? a.title : '';\r\n that.url = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.url) ? a.url : '';\r\n // debugger;\r\n that.glyphName = a.isPrimary === true ? 'primary' : a.privacy; // Note: important!! // to hold the glyphName for privacy\r\n that.isPrivate = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.privacy) && a.privacy.toLowerCase().indexOf('private') !== -1 ? true : false;\r\n that.key = a.photoBnId > 0 ? a.photoBnId.toString() : '';\r\n that.value = a.pic && a.pic.length > 5 ? a.pic\r\n : a.image && a.image.length > 5 ? a.image\r\n : !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.imageString) && a.imageString.length > 5 ? a.imageString\r\n : that.pic;\r\n }\r\n // debugger;\r\n return that;\r\n }\r\n // ---------------------------------------------\r\n}\r\n","import { KvMemberActivityGlyph } from \"../keyValue/kvMemberActivityGlyph.model\";\r\n\r\nexport class PhotoMgmtAction {\r\n public action !: string;\r\n public date = '';\r\n public photoId = 0;\r\n public photoBnId = 0;\r\n public sitUserId = 0;\r\n public message ! : any;\r\n public kvg : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n constructor() { }\r\n}\r\n","import { KvPhoto } from \"../keyValue/kvPhoto.model\";\r\nimport { Photo } from \"./photo.model\";\r\nimport { PhotoBn } from \"./photoBn.model\";\r\n\r\n// Note: This model is a container model for all photo-related models. \r\n// So add other photo - related models in it on the need basis.\r\n// -------------------------------------------------------------------\r\nexport class PhotoOmniModel {\r\n public photo : Photo = new Photo();\r\n public photoBn : PhotoBn = new PhotoBn();\r\n public kvPhoto : KvPhoto = new KvPhoto();\r\n public date = '';\r\n public id = 0;\r\n public sitUserId = 0;\r\n public message !: any;\r\n constructor() { }\r\n}\r\n","// Note: MessageModel will be used to display plain messages as well as spinner if necessary.\r\n// Hence SpinnerModel Model will not be used for Spinner-System.\r\n\r\nexport class SpinnerModel {\r\n public message: any;\r\n public isOpen = false; // may be used is 'isOpen'\r\n public isSpinner = false;\r\n public callerName = '';\r\n public id = 0;\r\n public date = '';\r\n public timer : any; // to be set to start the setTimeout\r\n public startTime : any;\r\n public endTime : any;\r\n public timeoutInterval = 15000; // to be set to end the setTimeout\r\n constructor () { }\r\n\r\n clear () {\r\n // debugger;\r\n this.isOpen = false;\r\n this.isSpinner = false;\r\n this.message = '';\r\n this.callerName = '';\r\n this.id = 0;\r\n this.date = '';\r\n this.timer = '';\r\n this.startTime = '';\r\n this.endTime = '';\r\n this.timeoutInterval = 1500;\r\n }\r\n getTimeoutInterval (): any\r\n {\r\n\r\n if ( this.endTime && this.startTime)\r\n {\r\n let eTime = this.endTime.getTime();\r\n let sTime = this.startTime.getTime();\r\n if ( eTime > sTime )\r\n {\r\n this.timeoutInterval = eTime - sTime + 5000;\r\n }\r\n }\r\n \r\n return this.timeoutInterval;\r\n }\r\n setTimeoutInterval ( interval : number ) : void\r\n {\r\n this.timeoutInterval = interval;\r\n }\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from \"../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\n\r\nexport class Unit {\r\n public distance = 0;\r\n public distanceStr = '';\r\n public unit = 'meter';\r\n public id = 0;\r\n public computeCount = 0;\r\n public date!: Date;\r\n constructor() {\r\n }\r\n\r\n copy (sourceUnit: Unit) : Unit {\r\n if (!this.isNullOrEmpty(sourceUnit)) {\r\n if (sourceUnit.distance >= 0) {\r\n this.distance = sourceUnit.distance;\r\n }\r\n this.unit = sourceUnit.unit.length > 0 ? sourceUnit.unit : 'meter';\r\n this.distanceStr = sourceUnit.distanceStr.length > 0 ? sourceUnit.distanceStr : '';\r\n this.date = sourceUnit.date;\r\n this.id = sourceUnit.id;\r\n }\r\n return this;\r\n }\r\n copySourceToDestination (destinationUnit: Unit, sourceUnit : Unit) : Unit {\r\n if (!this.isNullOrEmpty(sourceUnit)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationUnit)) {\r\n destinationUnit = new Unit();\r\n\t\t\t}\r\n if (sourceUnit.distance >= 0) {\r\n destinationUnit.distance = sourceUnit.distance;\r\n }\r\n destinationUnit.unit = sourceUnit.unit.length > 0 ? sourceUnit.unit : 'meter';\r\n destinationUnit.distanceStr = sourceUnit.distanceStr.length > 0 ? sourceUnit.distanceStr : '';\r\n destinationUnit.date = sourceUnit.date;\r\n destinationUnit.id = sourceUnit.id;\r\n }\r\n return destinationUnit;\r\n }\r\n // --------------------------------------------------------------\r\n public isNullOrEmpty (input : any) : boolean {\r\n if (input === null || input === '' || input === undefined || (input !== null && (input.toString().toLowerCase() === 'null' || input.toString().toLowerCase() === 'undefined'))) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","export class UserAndPageTitle {\n public pageTitle = '';\n public sitUserId = 0;\n public cryptUserKey = '';\n public date = '';\n public profileName = '';\n public userName = '';\n public isPrepared = false;\n constructor() { }\n}\n","export class ViewportDimension {\n public name = '';\n public id = 0;\n public vw = 0;\n public vh = 0;\n public centerX = 0;\n public centerY = 0;\n public date!: Date;\n constructor() {\n }\n}\n","import { BoxNonceEntity } from '../boxNonce/boxNonceEntity.model';\n\nexport class BoxEmailBn {\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\n public communicationId = 0;\n public isInbox = true;\n public sitUserId = 0;\n public signedInUserId = 0;\n public boxType = '';\n constructor() { }\n}\n","export class ChatConnectionInfo {\n public id = 0;\n public date!: Date;\n public cancellationToken: any;\n public channel: any;\n public connectionId: any;\n public cryptUserKey = '';\n public sitUserId = 0;\n public sitUserKey = '';\n constructor() { }\n}\n","export class Communication {\n public beginIndex = 0;\n public chatActivityId = 0;\n public chatMessageId = 0;\n public communicationType = '';\n public communicationActivityId = 0;\n public communicationActivityIds : number[] = [];\n public communicationMessageId = 0;\n public date = '';\n public isInbox = true;\n public isFreshDataRequested = false;\n public jsDateForCs = '';\n public sitUserId = 0;\n public SitUserKey = 0;\n public signedInUserId = 0;\n public signedInUserKey = '';\n public fileName = '';\n constructor() { }\n}\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Chat } from '../chat/chat.model';\r\nimport { ChatMessage } from '../chat/chatMessage.model';\r\nimport { KvMemberActivityGlyph } from '../keyValue/kvMemberActivityGlyph.model';\r\nimport { MemberActivity } from '../member/memberActivity.model';\r\nimport { ProfileTile } from '../profile/profileTile.model';\r\nimport { CommunicationMessage } from './communicationMessage.model';\r\nimport { Communicator } from './communicator.model';\r\n\r\n// Note: CommunicationActivity model is used for the following acitvities/purposes:\r\n// 1. ChatAcivity in which case we convert it to Chat via copy2Chat() if necessary\r\n// 2. NotificationActivity in which case we use notificationActivityId\r\n// 3. LockingActivity in whihc case we use lockingActivityId\r\n// 4. CommunicationActivityId in all other applicable cases\r\n\r\nexport class CommunicationActivity {\r\n public action = '';\r\n public actionLabel = '';\r\n public boxName = '';\r\n public baseFileName = '';\r\n public communicationActivityId = 0;\r\n public communicationMessageId = 0;\r\n public chatMsg : ChatMessage = new ChatMessage();\r\n public communicationMessage : CommunicationMessage = new CommunicationMessage();\r\n public chatActivityId = 0;\r\n public chatMessageId = 0;\r\n public communicationType = ''; // Email/Notification/Chat/etc.\r\n public communicationSubType = ''; // Buddy, Friend, Like, Unlock, Star, Track, Wink, etc...\r\n public commTypeEnum = 0;\r\n public date = '';\r\n public dateFormatted = '';\r\n public dateStr = '';\r\n public elemId = '';\r\n public expiryDate = '';\r\n public fromUser = '';\r\n public groupName = '';\r\n public heading = '';\r\n public id = '';\r\n public isBlocked = false;\r\n public isBuddied = false;\r\n public isFriend = false;\r\n public isLiked = false;\r\n public isStarred = false;\r\n public isTracked = false;\r\n public isUnlocked = false;\r\n public isWinked = false;\r\n public isAdministrative = false;\r\n public isNew = false\r\n public isOnline = false;\r\n public isReceiver = false;\r\n public isSender = false;\r\n public isPremiumMember = false;\r\n public image: any[] = [];\r\n public index? = -0;\r\n public isPic = false;\r\n public latitude? = 0;\r\n public link = '';\r\n public longitude ?= 0;\r\n public lockingActivityId = 0;\r\n public memberActivity : any; // === communicationSubType\r\n public memberActivityTs: MemberActivity = new MemberActivity();\r\n public membership = '';\r\n public messageBody = '';\r\n public messageBodyShort = '';\r\n public newMessageTotal ?= 0;\r\n public notificationActivityId = 0;\r\n public receiver: Communicator = new Communicator();\r\n public receiverAction = '';\r\n public receiverCryptUserId? = 0;\r\n public receiverModelString = '';\r\n public receiverProfileName = '';\r\n public receiverPic = '';\r\n public receiverPrimaryPhotoBnId = 0;\r\n public receiverSITUserId? = 0;\r\n public receiverSitUserId? = 0;\r\n public receiverSITUserKey = '';\r\n public receiverSitUserKey = '';\r\n public receiverSitUserKeyBackup = '';\r\n public pElemId = '';\r\n public photoBnId ?= 0;\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public replyToId? = 0;\r\n public sender: Communicator = new Communicator();\r\n public senderAction = '';\r\n public senderCryptUserId? = 0;\r\n public senderModelString = '';\r\n public senderProfileName = '';\r\n public senderPic = '';\r\n public senderPrimaryPhotoBnId? = 0;\r\n public senderSITUserId? = 0;\r\n public senderSitUserId? = 0;\r\n public senderSITUserKey = '';\r\n public senderSitUserKey = '';\r\n public senderSitUserKeyBackup = '';\r\n public sentPic = '';\r\n public signedInUserId? = 0;\r\n public signedInUserKey = '';\r\n public sitUserId? = 0;\r\n public subject = '';\r\n public subjectShort = '';\r\n public trackingActivityId = 0;\r\n public timeLapsed = '';\r\n public toUser = '';\r\n public unit = 'm';\r\n public kvGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n\r\n constructor () {\r\n // this.receiverSITUserId == this.receiverSitUserId;\r\n // this.receiverSitUserKey == this.receiverSITUserKey;\r\n // this.senderSITUserId == this.senderSitUserId;\r\n // this.senderSITUserKey == this.senderSitUserKey;\r\n }\r\n\r\n \r\n\r\n public copy2Chat () {\r\n let chat = new Chat();\r\n chat.id = parseInt(this.id, 10);\r\n chat.baseFileName = this.baseFileName;\r\n chat.communicationActivityId = this.communicationActivityId;\r\n chat.communicationMessageId = this.communicationMessageId;\r\n chat.chatMessageId = this.chatMessageId;\r\n chat.chatActivityId = this.chatActivityId;\r\n chat.communicationType = this.communicationType;\r\n chat.commTypeEnum = this.commTypeEnum;\r\n chat.dateFormatted = this.dateFormatted;\r\n chat.date = this.date;\r\n chat.fromUser = this.fromUser;\r\n chat.groupName = this.groupName;\r\n chat.latitude = this.latitude;\r\n chat.longitude = this.longitude;\r\n chat.isPic = this.isPic;\r\n // Chat.isNew = this.isNew;\r\n chat.messageBody = this.messageBody;\r\n chat.messageBodyShort = this.messageBodyShort;\r\n\r\n chat.receiver = this.receiver;\r\n chat.receiverAction = this.receiverAction;\r\n chat.receiverModelString = this.receiverModelString;\r\n chat.receiverProfileName = this.receiverProfileName;\r\n chat.receiverPic = this.receiverPic;\r\n chat.receiverSITUserId = this.receiverSITUserId;\r\n chat.receiverSitUserId = this.receiverSitUserId;\r\n chat.receiverSITUserKey = this.receiverSITUserKey;\r\n chat.receiverSitUserKey = this.receiverSitUserKey;\r\n\r\n chat.sender = this.sender;\r\n chat.senderAction = this.senderAction;\r\n chat.senderModelString = this.senderModelString;\r\n chat.senderProfileName = this.senderProfileName;\r\n chat.senderSITUserId = this.senderSITUserId;\r\n chat.senderSitUserId = this.senderSitUserId;\r\n chat.senderSITUserKey = this.senderSITUserKey;\r\n chat.senderSitUserKey = this.senderSitUserKey;\r\n chat.senderPic = this.senderPic;\r\n\r\n chat.sentPic = this.sentPic;\r\n\r\n chat.signedInUserId = this.signedInUserId;\r\n chat.signedInUserKey = this.signedInUserKey;\r\n\r\n chat.subject = this.subject;\r\n chat.subjectShort = this.subjectShort;\r\n chat.timeLapsed = this.timeLapsed;\r\n chat.toUser = this.toUser;\r\n\r\n // to harmonize these values:\r\n chat.receiverSITUserId == chat.receiverSitUserId;\r\n chat.receiverSitUserKey == chat.receiverSITUserKey;\r\n chat.senderSITUserId == chat.senderSitUserId;\r\n chat.senderSITUserKey == chat.senderSitUserKey;\r\n\r\n }\r\n public copy2MemberActivity (mAct : CommunicationActivity) : MemberActivity {\r\n let cAct = new MemberActivity();\r\n cAct.action = mAct.action;\r\n cAct.actionLabel = mAct.actionLabel;\r\n cAct.date = mAct.date;\r\n cAct.dateStr = mAct.dateStr;\r\n cAct.doeeSitUserKey = mAct.receiverSitUserKey;\r\n cAct.doeeSitUserId = mAct.receiverSitUserId;\r\n cAct.doerSitUserId = mAct.senderSitUserId;\r\n cAct.doerSitUserKey = mAct.senderSitUserKey;\r\n\r\n cAct.expiryDate = mAct.expiryDate;\r\n cAct.id = parseInt(mAct.id);\r\n cAct.isBlocked = mAct.isBlocked;\r\n cAct.isBuddied = mAct.isBuddied;\r\n cAct.isFriend = mAct.isFriend;\r\n cAct.isLiked = mAct.isLiked;\r\n cAct.isStarred = mAct.isStarred;\r\n cAct.isUnlocked = mAct.isUnlocked;\r\n cAct.isWinked = mAct.isWinked;\r\n\r\n cAct.index = mAct.index;\r\n cAct.photoBnId = mAct.photoBnId;\r\n cAct.profileTile = mAct.profileTile;\r\n return cAct;\r\n } \r\n // ------------------------------------------------------------\r\n static parseCommunicationActivity (inCommAct : string) : CommunicationActivity {\r\n var commAct = new CommunicationActivity();\r\n var patternO = \"{\";\r\n var patternC = \"}\";\r\n var patternQ = \"\\\"\";\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inCommAct)) {\r\n commAct = JSON.parse(inCommAct);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.communicationActivityId)) {\r\n\r\n var parts = inCommAct.split(',');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length > 0) {\r\n parts.map(e => {\r\n var kvParts = e.split(':');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvParts) && kvParts.length > 0) {\r\n switch (kvParts[ 0 ]) {\r\n case 'boxName':\r\n commAct.boxName = kvParts[ 1 ];\r\n break;\r\n case 'baseFileName':\r\n commAct.baseFileName = kvParts[ 1 ];\r\n break;\r\n case 'communicationActivityId':\r\n commAct.communicationActivityId = parseInt(kvParts[1], 10);\r\n break;\r\n case 'communicationMessageId':\r\n commAct.communicationMessageId = parseInt(kvParts[ 1 ], 10);\r\n break;\r\n //case 'chatMsg ':\r\n // commAct.chatMsg = new ChatMessage().toJson(kvParts[ 1 ]);\r\n // break;\r\n //case 'communicationMsg':\r\n // commAct.communicationMsg = new CommunicationMessage().toJson(kvParts[1]);\r\n // break;\r\n case 'chatActivityId':\r\n commAct.chatActivityId = parseInt(kvParts[ 1 ], 10);\r\n break;\r\n case 'chatMessageId':\r\n commAct.chatMessageId = parseInt(kvParts[ 1 ], 10);\r\n break;\r\n case 'communicationType':\r\n commAct.communicationType = kvParts[ 1 ];\r\n break;\r\n case 'communicationSubType':\r\n commAct.communicationSubType = kvParts[ 1 ];\r\n break;\r\n case 'commTypeEnum':\r\n commAct.commTypeEnum = parseInt(kvParts[ 1 ], 10);\r\n break;\r\n case 'date':\r\n commAct.date = kvParts[ 1 ];\r\n break;\r\n case 'dateFormatted':\r\n commAct.dateFormatted = kvParts[ 1 ];\r\n break;\r\n case 'elemId':\r\n commAct.elemId = kvParts[ 1 ];\r\n break;\r\n case 'fromUser':\r\n commAct.fromUser = kvParts[ 1 ];\r\n break;\r\n case 'groupName':\r\n commAct.groupName = kvParts[ 1 ];\r\n break;\r\n case 'heading':\r\n commAct.heading = kvParts[ 1 ];\r\n break;\r\n case 'id':\r\n commAct.id = kvParts[ 1 ];\r\n break;\r\n case 'isAdministrative':\r\n commAct.isAdministrative = kvParts[ 1 ] as boolean | any;\r\n break;\r\n case 'isNew':\r\n commAct.isNew = kvParts[ 1 ] as boolean | any;\r\n break;\r\n case 'isOnline':\r\n commAct.isOnline = kvParts[ 1 ] as boolean | any;\r\n break;\r\n case 'isReceiver':\r\n commAct.isReceiver = kvParts[ 1 ] as boolean | any;\r\n break;\r\n case 'isSender':\r\n commAct.isSender = kvParts[ 1 ] as boolean | any;\r\n break;\r\n case 'isPremiumMember':\r\n commAct.isPremiumMember = kvParts[ 1 ] as boolean | any;\r\n break;\r\n case 'image':\r\n commAct.image = kvParts[ 1 ] as any[] | any\r\n break;\r\n case 'index':\r\n commAct.index = parseInt(kvParts[ 1 ], 10);\r\n break;\r\n case 'isPic':\r\n commAct.isPic = kvParts[ 1 ] as boolean | any;\r\n break;\r\n case 'latitude':\r\n commAct.latitude = parseFloat(kvParts[ 1 ]);\r\n break;\r\n case 'link':\r\n commAct.link = kvParts[ 1 ];\r\n break;\r\n case 'longitude':\r\n commAct.longitude = parseFloat(kvParts[ 1 ]);\r\n break;\r\n //case 'memberActivityTs':\r\n // commAct.memberActivityTs = new MemberActivity().toJson(kvParts[ 1 ]);\r\n // break;\r\n case 'membership':\r\n commAct.membership = kvParts[ 1 ];\r\n break;\r\n case 'messageBody':\r\n commAct.messageBody = kvParts[ 1 ];\r\n break;\r\n case 'messageBodyShort':\r\n commAct.messageBodyShort = kvParts[ 1 ];\r\n break;\r\n case 'newMessageTotal':\r\n commAct.newMessageTotal = parseInt(kvParts[ 1 ]);\r\n break;\r\n //case 'receiver':\r\n // commAct.receiver = new Communicator().toJson(kvParts[ 1 ]);\r\n // break;\r\n case 'receiverAction':\r\n commAct.receiverAction = kvParts[ 1 ];\r\n break;\r\n case 'receiverModelString':\r\n commAct.receiverModelString = kvParts[ 1 ];\r\n break;\r\n case 'receiverProfileName':\r\n commAct.receiverProfileName = kvParts[ 1 ];\r\n break;\r\n case 'receiverPic':\r\n commAct.receiverPic = kvParts[ 1 ];\r\n break;\r\n case 'receiverSITUserId':\r\n commAct.receiverSITUserId = parseInt(kvParts[ 1 ]);\r\n break;\r\n case 'receiverSitUserId':\r\n commAct.receiverSitUserId = parseInt(kvParts[ 1 ]);\r\n break;\r\n case 'receiverSITUserKey':\r\n commAct.receiverSITUserKey = kvParts[ 1 ];\r\n break;\r\n case 'receiverSitUserKey':\r\n commAct.receiverSitUserKey = kvParts[ 1 ];\r\n break;\r\n //case 'sender':\r\n // commAct.sender = new Communicator().toJson(kvParts[ 1 ]);\r\n // break;\r\n case 'senderAction':\r\n commAct.senderAction = kvParts[ 1 ];\r\n break;\r\n case 'senderModelString':\r\n commAct.senderModelString = kvParts[ 1 ];\r\n break;\r\n case 'senderProfileName':\r\n commAct.senderProfileName = kvParts[ 1 ];\r\n break;\r\n case 'senderSITUserId':\r\n commAct.senderSITUserId = parseInt(kvParts[ 1 ]);\r\n break;\r\n case 'senderSitUserKey':\r\n commAct.senderSitUserKey = kvParts[ 1 ];\r\n break;\r\n case 'senderPic':\r\n commAct.senderPic = kvParts[ 1 ];\r\n break;\r\n case 'sentPic':\r\n commAct.sentPic = kvParts[ 1 ];\r\n break;\r\n case 'signedInUserId':\r\n commAct.signedInUserId = parseInt(kvParts[ 1 ]);\r\n break;\r\n case 'signedInUserKey':\r\n commAct.signedInUserKey = kvParts[ 1 ];\r\n case 'subject':\r\n commAct.subject = kvParts[ 1 ];\r\n break;\r\n case 'subjectShort':\r\n commAct.subjectShort = kvParts[ 1 ];\r\n break;\r\n case 'timeLapsed':\r\n commAct.timeLapsed = kvParts[ 1 ];\r\n break;\r\n case 'toUser':\r\n commAct.toUser = kvParts[ 1 ];\r\n break;\r\n case 'unit':\r\n commAct.unit = kvParts[ 1 ];\r\n break;\r\n //case 'kvGlyph':\r\n // commAct.kvGlyph = new KvMemberActivityGlyph().toJson(kvParts[ 1 ]);\r\n // break;\r\n default:\r\n break;\r\n }\r\n }\r\n })\r\n }\r\n }\r\n }\r\n return commAct;\r\n\t}\r\n}\r\n","export class CommunicationMessage {\n public id = 0;\n public date = '';\n public groupId = 0;\n public groupKey = '';\n public messageBody = '';\n public messageBodyShort = '';\n public messageId = 0;\n public receiverEmail = '';\n public senderEmail = '';\n public signedInUserId = 0;\n public signedInUserKey = '';\n public subject = '';\n public subjectShort = '';\n constructor() { }\n}\n","export class Communicator {\n public communicationActivityId = 0;\n public communicatorType = ''; // {receiver, sender}\n public cryptUserKey = '';\n public date = '';\n public email = '';\n public id = 0;\n public latitude = 0;\n public longitude = 0;\n public profileId = 0;\n public profileName = '';\n public primaryImage = '';\n public primaryPhotoBnId = 0;\n public sitUserId = 0;\n public sitUserKey = '';\n constructor() { }\n}\n","import { Heartbeat } from '../common/heartbeat.model';\n// Note: primarily used for copying from CommunicationActivity model in CopyServieStaticService.tys\n\nexport class ENoteTile {\n public age = 0;\n public away = 'off-line';\n public awayId = '';\n public beginIndex = 0;\n public city = '';\n public communicationMessageId = 0;\n public countryCode = '';\n public date = '';\n public dateFormatted = '';\n public distance = 0;\n public distanceStr = '';\n /*\n * public dob: string = '';\n * public gender: string = '';\n */\n public heading = '';\n // public heartbeat: Heartbeat = new Heartbeat();\n public id = '';\n public isImageRendered = false;\n public isOnline = false;\n public isPremiumMember = false;\n public isTileSetupComplete = false;\n public image = '';\n public index = -0;\n public prevHeartbeat = -1;\n public isPic = false;\n public latitude = 0;\n public link = '';\n public longitude = 0;\n public messageBody: any;\n public neighborhood = '';\n public pElemId = '';\n public photoId = 0;\n // public position: string = '';\n public profileId = 0;\n public profileName = '';\n public regionCode = '';\n // public reply: ENoteTile = new ENoteTile();\n public replyId = 0;\n /*\n * public sexuality: string = '';\n * public selectedOffOnIndex: number = -1;\n */\n public senderSitUserId = 0;\n public signedInUserId = 0;\n public subject = '';\n public unit = 'm';\n\n constructor() { }\n}\n","import { CommunicationActivity } from './communicationActivity.model';\n\nexport class EnoteBox {\n public boxType = '';\n public communicationId = 0;\n public isInbox = true;\n\n public allPremiumEnotes: CommunicationActivity[] = [];\n public inboxPremiumEnotes: CommunicationActivity[] = [];\n public savedPremiumEnotes: CommunicationActivity[] = [];\n public sentPremiumEnotes: CommunicationActivity[] = [];\n public trashedPremiumEnotes : CommunicationActivity[] = [];\n\n public sitUserId = 0;\n public signedInUserId = 0;\n\n public allPremiumEnoteTotal = 0;\n public inboxPremiumEnoteTotal = 0;\n public savedPremiumEnoteTotal = 0;\n public sentPremiumEnoteTotal = 0;\n public trashedPremiumEnoteTotal = 0;\n constructor() { }\n}\n","import { CommunicationActivity } from './communicationActivity.model';\r\nimport { EnoteBox } from './enoteBox.model';\r\n\r\nexport class MailBox {\r\n public enoteBox : EnoteBox = new EnoteBox();\r\n public boxType = '';\r\n public communicationId = 0;\r\n public isInbox = true;\r\n public myEmails: CommunicationActivity[] = [];\r\n public myInboxEmails: CommunicationActivity[] = [];\r\n public mySavedEmails: CommunicationActivity[] = [];\r\n public mySentEmails: CommunicationActivity[] = [];\r\n public myTrashedEmails: CommunicationActivity[] = [];\r\n\r\n\r\n public myAllEnotes : CommunicationActivity[] = [];\r\n public myBuddyEnotes : CommunicationActivity[] = [];\r\n public myDeletedEnotes : CommunicationActivity[] = [];\r\n public myFriendEnotes : CommunicationActivity[] = [];\r\n public myLikeEnotes : CommunicationActivity[] = [];\r\n public myStarEnotes : CommunicationActivity[] = [];\r\n public myTrackEnotes : CommunicationActivity[] = [];\r\n public myUnlockEnotes : CommunicationActivity[] = [];\r\n public myWinkEnotes : CommunicationActivity[] = [];\r\n\r\n public sitUserId = 0;\r\n public signedInUserId = 0;\r\n\r\n public inboxTotal = 0;\r\n public inboxNewTotal = 0;\r\n public sentTotal = 0;\r\n public sentNewTotal = 0;\r\n public savedTotal = 0;\r\n public savedNewTotal = 0;\r\n public deletedNewTotal = 0;\r\n\r\n public allTotal = 0;\r\n public buddyTotal = 0;\r\n public deletedTotal = 0;\r\n public friendTotal = 0;\r\n public likeTotal = 0;\r\n public starTotal = 0;\r\n public trackTotal = 0;\r\n public unlockTotal = 0;\r\n public winkTotal = 0;\r\n\r\n public allNewTotal = 0;\r\n public newBuddyTotal = 0;\r\n public newDeletedTotal = 0;\r\n public newFriendTotal = 0;\r\n public newLikeTotal = 0;\r\n public newStarTotal = 0;\r\n public newTrackTotal = 0;\r\n public newUnlockTotal = 0;\r\n public newWinkTotal = 0;\r\n constructor() { }\r\n}\r\n","export class SenderReceiverEmails {\n public id = 0;\n public date!: Date;\n public isSendFile = false;\n public receiverEmail = '';\n public senderEmail = '';\n public groupId = 0;\n constructor() { }\n}\n","export class NaclPairClient {\n public publicKey: any; //\n public secretKey: any; //\n public id = 0;\n public cryptUserKey = '';\n public modelName = '';\n public date = '';\n constructor() { }\n}\n","export class NaclPairLocal {\n public out: any; // publicKey\n public in: any; // secretkey\n public id = 0;\n public modelName = '';\n public date = '';\n constructor() { }\n}\n","export class Salt {\n public saltId = 0;\n public date = '';\n public publicKey: any;\n public secretKey: any;\n public ktype = '';\n constructor() { }\n}\n","\r\nexport class ClientHttpDataModel {\r\n public action = '';\r\n public box : any;\r\n public commActIds : number[] = [];\r\n public cryptUserKey = '';\r\n public contentType = '';\r\n public date = '';\r\n public entityName = '';\r\n public key = '';\r\n public id = 0;\r\n public message = '';\r\n public modelName = '';\r\n public nonce: any;\r\n public profileId = 0;\r\n public photoBnId = 0;\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public value = '';\r\n constructor() {\r\n }\r\n}\r\n","\r\nexport class RemoteDataModel {\r\n public data : any;\r\n public headerType = '';\r\n public methodName = '';\r\n public message = '';\r\n public options : any;\r\n public id = 0;\r\n public isForComponent = true;\r\n public isInbox = true;\r\n public isMethodCalled = false;\r\n public timestamp = '';\r\n public url : string = '';\r\n constructor() {\r\n }\r\n}\r\n","import { ProfileTile } from '../profile/profileTile.model';\r\n\r\nexport class ProfileTileArrEmitterModel {\r\n public type = ''; // indexDb/serverDb\r\n public arr : ProfileTile[] = [];\r\n public sitUserId = 0;\r\n public date !: Date;\r\n constructor() {\r\n }\r\n}\r\n","\r\nexport class Group\r\n{\r\n public id = 0;\r\n public date !: Date;\r\n public displayDate = '';\r\n public name = '';\r\n public businessKey = '';\r\n public groupCryptKey = ''; // TODO: implement throughout the app\r\n public groupKey = '';\r\n public sitUserKey = '';\r\n public signedInUserId = 0;\r\n constructor() {\r\n }\r\n}\r\n","export class KeyValueResult {\n public kvName = '';\n public kvSelection = '';\n public isRequiredPassed = false;\n constructor() { }\n}\n","// Note: the KV name where both leters are capital, implies that the value is a string type\nexport class KV {\n public key = '';\n public value = '';\n public id = 0;\n public date!: Date;\n constructor() { }\n}\n","// Note: the Kv name where the first leter is capital and the second letter is lowercase, implies that the value is of type 'any'\nexport class KvAction {\n public id: any;\n public cryptUserKey = '';\n public date = '';\n public doeeSitUserId = 0;\n public doerSitUserId = 0;\n public expDate = '';\n public index = 0;\n public isUnlocked = false;\n public key = ''; // Note: memberActivityId is a good candidate for this model\n public memberActivityId = 0;\n public profileId = 0;\n public receiverSitUserId = 0;\n public signedInUserId = 0;\n public senderSitUserId = 0;\n public value: any; // expected to hold action-name as string\n constructor() { }\n copy(a: KvAction): KvAction {\n const that = new KvAction();\n\n if (a.cryptUserKey) {\n that.cryptUserKey = a.cryptUserKey;\n }\n if (a.date) {\n that.date = a.date;\n }\n if (a.doeeSitUserId) {\n that.doeeSitUserId = a.doeeSitUserId;\n }\n if (a.doerSitUserId) {\n that.doerSitUserId = a.doerSitUserId;\n }\n if (a.expDate) {\n that.expDate = a.expDate;\n }\n if (a.memberActivityId) {\n that.memberActivityId = a.memberActivityId;\n }\n if (a.profileId) {\n that.profileId = a.profileId;\n }\n if (a.id) {\n that.id = a.id;\n }\n if (a.isUnlocked) {\n that.isUnlocked = a.isUnlocked;\n }\n if (a.index) {\n that.index = a.index;\n }\n if (a.key) {\n that.key = a.key;\n }\n if (a.memberActivityId) {\n that.memberActivityId = a.memberActivityId;\n }\n if (a.receiverSitUserId) {\n that.receiverSitUserId = a.receiverSitUserId;\n }\n if (a.senderSitUserId) {\n that.senderSitUserId = a.senderSitUserId;\n }\n if (a.signedInUserId) {\n that.signedInUserId = a.signedInUserId;\n }\n if (a.value) {\n that.value = a.value;\n }\n return that;\n }\n}\n","// Note: the Kv name where the first leter is capital and the second letter is lowercase, implies that the value is of type 'any'\nexport class KvAny {\n public cryptUserKey = '';\n public date = '';\n public id: any;\n public index = 0;\n public key = '';\n public modelName = '';\n public sitUserId = 0;\n public value: any;\n constructor () { }\n\n copy(a: KvAny): KvAny {\n const that = new KvAny();\n\n if (a.cryptUserKey) {\n that.cryptUserKey = a.cryptUserKey;\n }\n if (a.id) {\n that.id = a.id;\n }\n if (a.index) {\n that.index = a.index;\n }\n if (a.key) {\n that.key = a.key;\n }\n if (a.modelName) {\n that.modelName = a.modelName;\n }\n if (a.sitUserId) {\n that.sitUserId = a.sitUserId;\n }\n if (a.value) {\n that.value = a.value;\n }\n return that;\n }\n}\n","/*\n * Note: the Kv name where the first leter is capital and the second letter is lowercase,\n * implies that the value is of type 'any'\n */\nexport class KvAnyArr {\n public cryptUserKey = '';\n public date = '';\n public id = 0;\n public key = '';\n public modelName = '';\n public sitUserId = 0;\n public value: any[] = [];\n constructor() { }\n}\n","import { KV } from './kv.model';\n\nexport class KVKV {\n public key = '';\n public value: KV = new KV();\n public id = 0;\n public date!: Date;\n constructor() { }\n}\n","import { KvAnyArr } from './kvAnyArr.model';\n\nexport class KvKvAnyArr {\n public key = '';\n public value: KvAnyArr = new KvAnyArr();\n public id = 0;\n public date!: Date;\n constructor() { }\n}\n","\r\n// Note: the Kv name where the first leter is capital and the second letter is lowercase, implies that the value is of type 'any'\r\n// this model is postfixed with 'glyph' because it is exclusively used to represent each activity with a unique glyph.\r\n// ------------------------------------------------------------\r\n\r\nimport { FrequentlyUsedFunctionsServiceStatic } from \"../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\nimport { KvPhoto } from \"./kvPhoto.model\";\r\n\r\n//\r\nexport class KvMemberActivityGlyph {\r\n // ----------------------------------\r\n // Begin of Photo model's properties:\r\n // ----------------------------------\r\n // public approval = '';\r\n //public contentType = '';\r\n //public cryptUserKey = '';\r\n //public date = '';\r\n //public description = '';\r\n //public file = File;\r\n //public formData : FormData = new FormData();\r\n //public id = 0;\r\n //public imageBytes : [] = [];\r\n //public image : any;\r\n //public imageString = '';\r\n //public isPrimary = false;\r\n //public isSelected = false;\r\n //public isUnlocked = false;\r\n //public itemNum = 0;\r\n //public latitude = 0;\r\n //public longitude = 0;\r\n //public location = {};\r\n //public path = '';\r\n //public pic = '';\r\n //public photoId = 0;\r\n //public photoBnId = 0;\r\n //public privacy = '';\r\n //public profileId = 0;\r\n //public sitUserId = 0;\r\n //public sitUserKey = '';\r\n //public signedInUserId = 0;\r\n //public sourceId = 0;\r\n //public sourceType = '';\r\n //public title = '';\r\n //public url = '';\r\n // ----------------------------------\r\n // End of Photo model's properties\r\n // ----------------------------------\r\n public action = '';\r\n public callerName = '';\r\n public cryptUserKey = '';\r\n public date = '';\r\n public receiverCryptUserKey = '';\r\n public senderCryptUserKey = '';\r\n public receiverSitUserId = 0;\r\n public senderSitUserId = 0;\r\n public receiverSitUserKey = '';\r\n public senderSitUserKey = '';\r\n public elemId = '';\r\n public glyphName = ''; // to hold the glyphName for privacy\r\n public glyphIndex = -1; // for primary, public, private\r\n public id = 0;\r\n public index = 0;\r\n public isBlocked = false;\r\n public isBuddied = false;\r\n public isFriend = false;\r\n public isLiked = false;\r\n public isPrimary = false;\r\n public isPrivate = false;\r\n public isStarred = false;\r\n public isTracked = false;\r\n public isUnlocked = false;\r\n public isVisible = false;\r\n public isWinked = false;\r\n public itemNum = 0;\r\n public key = '';\r\n public kvPhoto : KvPhoto = new KvPhoto();\r\n public message = '';\r\n public model : any;\r\n public modelName = '';\r\n public pageNum = 0;\r\n public pic = '';\r\n public photoId = 0;\r\n public photoBnId = 0;\r\n public privacy = '';\r\n public profileId = 0;\r\n public returnUrl = '';\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public signedInUserId = 0;\r\n public value : any;\r\n // ---------------------------------------------\r\n constructor () { }\r\n // ---------------------------------------------\r\n public copySourceToDestination (s : KvMemberActivityGlyph, a : KvMemberActivityGlyph) : KvMemberActivityGlyph {\r\n \r\n s.action = a.action;\r\n s.callerName = a.callerName;\r\n s.cryptUserKey = a.cryptUserKey;\r\n s.date = a.date;\r\n s.receiverCryptUserKey = a.receiverCryptUserKey;\r\n s.senderCryptUserKey = a.senderCryptUserKey;\r\n s.receiverSitUserId = a.receiverSitUserId;\r\n s.senderSitUserId = a.senderSitUserId;\r\n s.receiverSitUserKey = a.receiverSitUserKey;\r\n s.senderSitUserKey = a.senderSitUserKey;\r\n s.glyphName = a.glyphName;\r\n s.glyphIndex = a.glyphIndex;\r\n s.id = a.id;\r\n s.index = a.index;\r\n s.isBlocked = a.isBlocked;\r\n s.isBuddied = a.isBuddied;\r\n s.isFriend = a.isFriend;\r\n s.isLiked = a.isLiked;\r\n s.isPrimary = a.isPrimary;\r\n s.isPrivate = a.isPrivate;\r\n s.isStarred = a.isStarred;\r\n s.isTracked = a.isTracked;\r\n s.isUnlocked = a.isUnlocked;\r\n s.isWinked = a.isWinked;\r\n s.key = a.key;\r\n s.kvPhoto = new KvPhoto().copySourceToDestination(s.kvPhoto, a.kvPhoto);\r\n // -------------------------------\r\n // Begin of KvPhoto model:\r\n // -------------------------------\r\n //this.description = a.description;\r\n s.elemId = a.elemId;\r\n // this.entityName = a.entityName;\r\n // this.file = a.file;\r\n // this.formData = a.formData;\r\n s.glyphName = a.glyphName;\r\n s.glyphIndex = a.glyphIndex;\r\n s.id = a.id;\r\n //this.image = a.image;\r\n //this.imageBytes = a.imageBytes;\r\n //this.imageString = a.imageString;\r\n s.index = a.index;\r\n s.pic = a.pic;\r\n s.isPrivate = a.isPrivate;\r\n s.isUnlocked = a.isUnlocked;\r\n s.isPrimary = a.isPrimary;\r\n s.itemNum = a.itemNum;\r\n s.key = a.key;\r\n //this.latitude = a.latitude;\r\n //this.location = a.location;\r\n //this.longitude = a.longitude;\r\n //this.path = a.path;\r\n s.pageNum = a.pageNum;\r\n //this.pic = a.pic;\r\n s.privacy = a.privacy;\r\n s.profileId = a.profileId;\r\n s.returnUrl = a.returnUrl;\r\n //this.title = a.title;\r\n s.value = a.value;\r\n //this.url = a.url;\r\n // -------------------------------\r\n // End of KvPhoto model:\r\n // -------------------------------\r\n\r\n s.message = a.message;\r\n s.model = a.model;\r\n s.modelName = a.modelName;\r\n s.pageNum = a.pageNum;\r\n s.photoId = a.photoId;\r\n s.photoBnId = a.photoBnId;\r\n s.profileId = a.profileId;\r\n s.privacy = a.privacy;\r\n s.returnUrl = a.returnUrl;\r\n s.sitUserId = a.sitUserId;\r\n s.sitUserKey = a.sitUserKey;\r\n s.signedInUserId = a.signedInUserId;\r\n s.value = a.value;\r\n return this;\r\n }\r\n // ---------------------------------------------\r\n // Caution!!: if you call this you may loose the non-KvPhoto properties' data.\r\n // ---------------------------------------------\r\n public copyFromKvPhoto (a : KvPhoto) : KvMemberActivityGlyph {\r\n //this.action = a.action;\r\n //this.callerName = a.callerName;\r\n this.cryptUserKey = a.cryptUserKey;\r\n this.date = a.date;\r\n //this.doeeCryptUserKey = a.doeeCryptUserKey;\r\n //this.doerCryptUserKey = a.doerCryptUserKey;\r\n //this.doeeSitUserId = a.doeeSitUserId;\r\n //this.doerSitUserId = a.doerSitUserId;\r\n //this.doeeSitUserKey = a.doeeSitUserKey;\r\n //this.doerSitUserKey = a.doerSitUserKey;\r\n this.glyphName = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( a.privacy) ? a.privacy : a.glyphName;\r\n //this.isBlocked = a.isBlocked;\r\n //this.isBuddied = a.isBuddied;\r\n //this.isFriend = a.isFriend;\r\n //this.isLiked = a.isLiked;\r\n this.isPrimary = a.isPrimary;\r\n this.isPrivate = a.isPrivate;\r\n //this.isStarred = a.isStarred;\r\n //this.isTracked = a.isTracked;\r\n this.isUnlocked = a.isUnlocked;\r\n // this.isWinked = a.isWinked;\r\n this.key = a.privacy; // a.privacy.toLocaleLowerCase().indexOf('primary') !== -1 ? a.privacy : a.glyphName;\r\n this.kvPhoto = new KvPhoto().copySourceToDestination(this.kvPhoto, a);\r\n // -------------------------------\r\n // Begin of KvPhoto model:\r\n // -------------------------------\r\n //this.description = a.description;\r\n this.elemId = a.elemId;\r\n // this.entityName = a.entityName;\r\n //this.file = a.file;\r\n //this.formData = a.formData;\r\n this.glyphName = a.glyphName;\r\n // this.glyphIndex = a.glyphIndex;\r\n this.id = a.id;\r\n //this.image = a.image;\r\n //this.imageBytes = a.imageBytes;\r\n //this.imageString = a.imageString;\r\n this.index = a.index;\r\n this.pic = a.pic;\r\n this.isPrivate = a.isPrivate;\r\n this.isUnlocked = a.isUnlocked;\r\n this.isPrimary = a.isPrimary;\r\n this.itemNum = a.itemNum;\r\n this.key = a.key;\r\n //this.latitude = a.latitude;\r\n //this.location = a.location;\r\n //this.longitude = a.longitude;\r\n //this.path = a.path;\r\n this.pageNum = a.pageNum;\r\n //this.pic = a.pic;\r\n this.privacy = a.privacy;\r\n this.profileId = a.profileId;\r\n this.returnUrl = a.returnUrl;\r\n //this.title = a.title;\r\n this.value = a.value;\r\n //this.url = a.url;\r\n // -------------------------------\r\n // End of KvPhoto model:\r\n // -------------------------------\r\n\r\n //this.message = a.message;\r\n //this.model = a.model;\r\n // this.modelName = a.modelName;\r\n this.pageNum = a.pageNum;\r\n this.photoId = a.photoId;\r\n this.photoBnId = a.photoBnId;\r\n this.profileId = a.profileId;\r\n this.privacy = a.privacy;\r\n this.returnUrl = a.returnUrl;\r\n this.sitUserId = a.sitUserId;\r\n this.sitUserKey = a.sitUserKey;\r\n this.signedInUserId = a.signedInUserId;\r\n this.value = a.value;\r\n return this;\r\n }\r\n // ---------------------------------------------\r\n // Caution!!: if you call this you may loose the non-KvPhoto properties' data.\r\n // ---------------------------------------------\r\n public copyToKvPhoto (a : KvMemberActivityGlyph) : KvPhoto {\r\n var d : KvPhoto = new KvPhoto();\r\n //d.action = a.action;\r\n //d.callerName = a.callerName;\r\n d.cryptUserKey = a.cryptUserKey;\r\n d.date = a.date;\r\n //d.doeeCryptUserKey = a.doeeCryptUserKey;\r\n //d.doerCryptUserKey = a.doerCryptUserKey;\r\n //d.doeeSitUserId = a.doeeSitUserId;\r\n //d.doerSitUserId = a.doerSitUserId;\r\n //d.doeeSitUserKey = a.doeeSitUserKey;\r\n //d.doerSitUserKey = a.doerSitUserKey;\r\n d.glyphName = a.glyphName;\r\n d.id = a.id;\r\n d.index = a.index;\r\n //d.isBlocked = a.isBlocked;\r\n //d.isBuddied = a.isBuddied;\r\n //d.isFriend = a.isFriend;\r\n //d.isLiked = a.isLiked;\r\n d.isPrimary = a.isPrimary;\r\n d.isPrivate = a.isPrivate;\r\n // d.isStarred = a.isStarred;\r\n // d.isTracked = a.isTracked;\r\n d.isUnlocked = a.isUnlocked;\r\n // d.isWinked = a.isWinked;\r\n d.key = a.key.toLowerCase().indexOf('primary') !== -1 ? a.key : a.glyphName;\r\n d = a.kvPhoto;\r\n // -------------------------------\r\n // Begin of KvPhoto model:\r\n // -------------------------------\r\n // this.description = a.description;\r\n d.elemId = a.elemId;\r\n // d.entityName = a.entityName;\r\n //d.file = a.file;\r\n //d.formData = a.formData;\r\n d.glyphName = a.glyphName;\r\n d.id = a.id;\r\n // d.image = a.image;\r\n // d.imageBytes = a.imageBytes;\r\n // d.imageString = a.imageString;\r\n d.index = a.index;\r\n d.pic = a.pic;\r\n d.isPrivate = a.isPrivate;\r\n d.isUnlocked = a.isUnlocked;\r\n d.isPrimary = a.isPrimary;\r\n d.itemNum = a.itemNum;\r\n d.key = a.key;\r\n // d.latitude = a.latitude;\r\n // d.location = a.location;\r\n // d.longitude = a.longitude;\r\n // d.path = a.path;\r\n d.pageNum = a.pageNum;\r\n // d.pic = a.pic;\r\n d.privacy = a.privacy;\r\n d.profileId = a.profileId;\r\n d.returnUrl = a.returnUrl;\r\n //d.title = a.title;\r\n d.value = a.value;\r\n //d.url = a.url;\r\n // -------------------------------\r\n // End of KvPhoto model:\r\n // -------------------------------\r\n\r\n //d.message = a.message;\r\n //d.model = a.model;\r\n //d.modelName = a.modelName;\r\n d.pageNum = a.pageNum;\r\n d.photoId = a.photoId;\r\n d.photoBnId = a.photoBnId;\r\n d.profileId = a.profileId;\r\n d.privacy = a.privacy;\r\n d.returnUrl = a.returnUrl;\r\n d.sitUserId = a.sitUserId;\r\n d.sitUserKey = a.sitUserKey;\r\n d.signedInUserId = a.signedInUserId;\r\n d.value = a.value;\r\n return d;\r\n }\r\n // ---------------------------------------------\r\n public copyIfExists (s : KvMemberActivityGlyph, a : KvMemberActivityGlyph) : KvMemberActivityGlyph {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(s)) {\r\n s = new KvMemberActivityGlyph();\r\n\t\t}\r\n if (a.action) {\r\n s.action = a.action;\r\n }\r\n\r\n if (a.cryptUserKey) {\r\n s.cryptUserKey = a.cryptUserKey;\r\n }\r\n\r\n if (a.callerName) {\r\n s.callerName = a.callerName;\r\n }\r\n\r\n if (a.date) {\r\n s.date = a.date;\r\n }\r\n if (a.receiverCryptUserKey) {\r\n s.receiverCryptUserKey = a.receiverCryptUserKey;\r\n }\r\n if (a.senderCryptUserKey) {\r\n s.senderCryptUserKey = a.senderCryptUserKey;\r\n }\r\n\r\n if (a.receiverSitUserId) {\r\n s.receiverSitUserId = a.receiverSitUserId;\r\n }\r\n\r\n if (a.senderSitUserId) {\r\n s.senderSitUserId = a.senderSitUserId;\r\n }\r\n\r\n if (a.receiverSitUserKey) {\r\n s.receiverSitUserKey = a.receiverSitUserKey;\r\n }\r\n\r\n if (a.senderSitUserKey) {\r\n s.senderSitUserKey = a.senderSitUserKey;\r\n }\r\n\r\n if (a.glyphName) {\r\n s.glyphName = a.glyphName;\r\n }\r\n if (a.glyphIndex) {\r\n s.glyphIndex = a.glyphIndex;\r\n }\r\n if (a.id) {\r\n s.id = a.id;\r\n }\r\n if (a.index) {\r\n s.index = a.index;\r\n }\r\n if (a.isBlocked) {\r\n s.isBlocked = a.isBlocked;\r\n }\r\n\r\n if (a.isBuddied) {\r\n s.isBuddied = a.isBuddied;\r\n }\r\n\r\n if (a.isFriend) {\r\n s.isFriend = a.isFriend;\r\n }\r\n\r\n if (a.isLiked) {\r\n s.isLiked = a.isLiked;\r\n }\r\n if (a.pic) {\r\n s.pic = a.pic;\r\n }\r\n if (a.isPrimary) {\r\n s.isPrimary = a.isPrimary;\r\n }\r\n\r\n if (a.isPrivate) {\r\n s.isPrivate = a.isPrivate;\r\n }\r\n\r\n if (a.isStarred) {\r\n s.isStarred = a.isStarred;\r\n }\r\n\r\n if (a.isTracked) {\r\n s.isTracked = a.isTracked;\r\n }\r\n\r\n if (a.isUnlocked) {\r\n s.isUnlocked = a.isUnlocked;\r\n }\r\n\r\n if (a.isWinked) {\r\n s.isWinked = a.isWinked;\r\n }\r\n\r\n if (a.key) {\r\n s.key = a.key;\r\n }\r\n s.kvPhoto = new KvPhoto().copySourceToDestination(s.kvPhoto, a.kvPhoto);\r\n\r\n if (a.photoId > 0) {\r\n s.photoId = a.photoId;\r\n }\r\n\r\n if (a.photoBnId > 0) {\r\n s.photoBnId = a.photoBnId;\r\n }\r\n\r\n if (a.profileId > 0) {\r\n s.profileId = a.profileId;\r\n }\r\n if (a.privacy) {\r\n s.privacy = a.privacy;\r\n }\r\n\r\n if (a.returnUrl) {\r\n s.returnUrl = a.returnUrl;\r\n }\r\n\r\n if (a.sitUserId > 0) {\r\n s.sitUserId = a.sitUserId;\r\n }\r\n\r\n if (a.sitUserKey) {\r\n s.sitUserKey = a.sitUserKey;\r\n }\r\n\r\n if (a.signedInUserId > 0) {\r\n s.signedInUserId = a.signedInUserId;\r\n }\r\n\r\n if (a.value) {\r\n s.value = a.value;\r\n }\r\n // -----------------------------------\r\n // Begin of KvPhoto model:\r\n // -----------------------------------\r\n\r\n //if (a.description) {\r\n // s.description = a.description;\r\n //}\r\n\r\n if (a.elemId) {\r\n s.elemId = a.elemId;\r\n }\r\n\r\n // if (a.entityName) {\r\n // s.entityName = a.entityName;\r\n // }\r\n\r\n //if (a.file) {\r\n // s.file = a.file;\r\n //}\r\n\r\n //if (a.formData) {\r\n // s.formData = a.formData;\r\n //}\r\n\r\n \r\n if (a.id) {\r\n s.id = a.id;\r\n }\r\n //if (a.image) {\r\n // s.image = a.image;\r\n //}\r\n\r\n //if (a.imageString) {\r\n // s.imageString = a.imageString;\r\n //}\r\n\r\n //if (a.imageBytes) {\r\n // s.imageBytes = a.imageBytes;\r\n //}\r\n\r\n if (a.index) {\r\n s.index = a.index;\r\n }\r\n\r\n if (a.isPrimary) {\r\n s.isPrimary = a.isPrimary;\r\n }\r\n\r\n if (a.isPrivate) {\r\n s.isPrivate = a.isPrivate;\r\n }\r\n\r\n if (a.isUnlocked) {\r\n s.isUnlocked = a.isUnlocked;\r\n }\r\n\r\n if (a.itemNum) {\r\n s.itemNum = a.itemNum;\r\n }\r\n\r\n if (a.key) {\r\n s.key = a.key;\r\n }\r\n\r\n //if (a.latitude !== 0) {\r\n // s.latitude = a.latitude;\r\n //}\r\n\r\n //if (a.location) {\r\n // s.location = a.location;\r\n //}\r\n\r\n //if (a.longitude !== 0) {\r\n // s.longitude = a.longitude;\r\n //}\r\n\r\n //if (a.path) {\r\n // s.path = a.path;\r\n //}\r\n\r\n if (a.pageNum > 0) {\r\n s.pageNum = a.pageNum;\r\n }\r\n\r\n //if (a.pic) {\r\n // s.pic = a.pic;\r\n //}\r\n\r\n if (a.returnUrl) {\r\n s.returnUrl = a.returnUrl;\r\n }\r\n\r\n //if (a.title) {\r\n // s.title = a.title;\r\n //}\r\n\r\n if (a.value) {\r\n s.value = a.value;\r\n }\r\n //if (a.url) {\r\n // s.url = a.url;\r\n //}\r\n // -----------------------------------\r\n // End of KvPhoto model:\r\n // -----------------------------------\r\n return s;\r\n }\r\n // ---------------------------------------------\r\n //copyFromKvPhotoIfExists (s : KvMemberActivityGlyph, a : any) : KvMemberActivityGlyph {\r\n \r\n // return this.copyIfExists(s,a);\r\n //}\r\n\r\n // ---------------------------------------------\r\n public cloneIfExists (a : KvMemberActivityGlyph) : KvMemberActivityGlyph {\r\n const that = new KvMemberActivityGlyph();\r\n\r\n if (a.action) {\r\n that.action = a.action;\r\n }\r\n\r\n if (a.cryptUserKey) {\r\n that.cryptUserKey = a.cryptUserKey;\r\n }\r\n\r\n if (a.callerName) {\r\n that.callerName = a.callerName;\r\n }\r\n\r\n if (a.date) {\r\n that.date = a.date;\r\n }\r\n if (a.receiverCryptUserKey) {\r\n that.receiverCryptUserKey = a.receiverCryptUserKey;\r\n }\r\n if (a.senderCryptUserKey) {\r\n that.senderCryptUserKey = a.senderCryptUserKey;\r\n }\r\n\r\n if (a.receiverSitUserId > 0) {\r\n that.receiverSitUserId = a.receiverSitUserId;\r\n }\r\n\r\n if (a.senderSitUserId > 0) {\r\n that.senderSitUserId = a.senderSitUserId;\r\n }\r\n\r\n if (a.receiverSitUserKey) {\r\n that.receiverSitUserKey = a.receiverSitUserKey;\r\n }\r\n\r\n if (a.senderSitUserKey) {\r\n that.senderSitUserKey = a.senderSitUserKey;\r\n }\r\n\r\n if (a.glyphName) {\r\n that.glyphName = a.glyphName;\r\n }\r\n //if (a.glyphIndex) {\r\n // s.glyphIndex = a.glyphIndex;\r\n //}\r\n\r\n if (a.id) {\r\n that.id = a.id;\r\n }\r\n\r\n if (a.index) {\r\n that.index = a.index;\r\n }\r\n if (a.isBlocked) {\r\n that.isBlocked = a.isBlocked;\r\n }\r\n\r\n if (a.isBuddied) {\r\n that.isBuddied = a.isBuddied;\r\n }\r\n\r\n if (a.isFriend) {\r\n that.isFriend = a.isFriend;\r\n }\r\n\r\n if (a.isLiked) {\r\n that.isLiked = a.isLiked;\r\n }\r\n\r\n if (a.isPrimary) {\r\n that.isPrimary = a.isPrimary;\r\n }\r\n\r\n if (a.isPrivate) {\r\n that.isPrivate = a.isPrivate;\r\n }\r\n\r\n if (a.isStarred) {\r\n that.isStarred = a.isStarred;\r\n }\r\n\r\n if (a.isTracked) {\r\n that.isTracked = a.isTracked;\r\n }\r\n\r\n if (a.isUnlocked) {\r\n that.isUnlocked = a.isUnlocked;\r\n }\r\n\r\n if (a.isWinked) {\r\n that.isWinked = a.isWinked;\r\n }\r\n\r\n if (a.key) {\r\n that.key = a.key;\r\n }\r\n that.kvPhoto = new KvPhoto().copySourceToDestination(that.kvPhoto, a.kvPhoto);\r\n if (a.photoId > 0) {\r\n that.photoId = a.photoId;\r\n }\r\n\r\n if (a.photoBnId > 0) {\r\n that.photoBnId = a.photoBnId;\r\n }\r\n\r\n if (a.profileId > 0) {\r\n that.profileId = a.profileId;\r\n }\r\n if (a.privacy) {\r\n that.privacy = a.privacy;\r\n }\r\n\r\n if (a.returnUrl) {\r\n that.returnUrl = a.returnUrl;\r\n }\r\n\r\n if (a.sitUserId > 0) {\r\n that.sitUserId = a.sitUserId;\r\n }\r\n\r\n if (a.sitUserKey) {\r\n that.sitUserKey = a.sitUserKey;\r\n }\r\n\r\n if (a.signedInUserId > 0) {\r\n that.signedInUserId = a.signedInUserId;\r\n }\r\n\r\n if (a.value) {\r\n that.value = a.value;\r\n }\r\n // -----------------------------------\r\n // Begin of KvPhoto model:\r\n // -----------------------------------\r\n\r\n //if (a.description) {\r\n // that.description = a.description;\r\n //}\r\n\r\n if (a.elemId) {\r\n that.elemId = a.elemId;\r\n }\r\n\r\n // if (a.entityName) {\r\n // that.entityName = a.entityName;\r\n // }\r\n\r\n //if (a.file) {\r\n // that.file = a.file;\r\n //}\r\n\r\n //if (a.formData) {\r\n // that.formData = a.formData;\r\n //}\r\n\r\n if (a.glyphName) {\r\n that.glyphName = a.glyphName;\r\n }\r\n\r\n if (a.id) {\r\n that.id = a.id;\r\n }\r\n //if (a.image) {\r\n // that.image = a.image;\r\n //}\r\n\r\n //if (a.imageString) {\r\n // that.imageString = a.imageString;\r\n //}\r\n\r\n //if (a.imageBytes) {\r\n // that.imageBytes = a.imageBytes;\r\n //}\r\n\r\n if (a.index) {\r\n that.index = a.index;\r\n }\r\n\r\n if (a.isPrimary) {\r\n that.isPrimary = a.isPrimary;\r\n }\r\n\r\n if (a.isPrivate) {\r\n that.isPrivate = a.isPrivate;\r\n }\r\n\r\n if (a.isUnlocked) {\r\n that.isUnlocked = a.isUnlocked;\r\n }\r\n\r\n if (a.itemNum) {\r\n that.itemNum = a.itemNum;\r\n }\r\n\r\n if (a.key) {\r\n that.key = a.key;\r\n }\r\n\r\n //if (a.latitude !== 0) {\r\n // that.latitude = a.latitude;\r\n //}\r\n\r\n //if (a.location) {\r\n // that.location = a.location;\r\n //}\r\n\r\n //if (a.longitude !== 0) {\r\n // that.longitude = a.longitude;\r\n //}\r\n\r\n //if (a.path) {\r\n // that.path = a.path;\r\n //}\r\n\r\n if (a.pageNum > 0) {\r\n that.pageNum = a.pageNum;\r\n }\r\n\r\n if (a.pic) {\r\n that.pic = a.pic;\r\n }\r\n\r\n if (a.returnUrl) {\r\n that.returnUrl = a.returnUrl;\r\n }\r\n\r\n //if (a.title) {\r\n // that.title = a.title;\r\n //}\r\n\r\n if (a.value) {\r\n that.value = a.value;\r\n }\r\n //if (a.url) {\r\n // that.url = a.url;\r\n //}\r\n // -----------------------------------\r\n // End of KvPhoto model:\r\n // -----------------------------------\r\n return that;\r\n }\r\n // ---------------------------------------------\r\n \r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from \"../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\nimport { Photo } from \"../common/photo.model\";\r\nimport { PhotoBn } from \"../common/photoBn.model\";\r\n\r\n// Note: the Kv name where the first leter is capital and the second letter is lowercase, implies that the value is of type 'any'\r\n// there is no separate KvGlyph models because we can use KvPhoto model for it since a glyph may contain an image or icon,\r\n// and value 'any' can accomodate both.\r\n// -----------------------------------------------------------------\r\n// \r\nexport class KvPhoto extends Photo{\r\n public action = '';\r\n public elemId = '';\r\n public entityName = '';\r\n public glyphName = ''; // to hold the glyphName for privacy\r\n public isPrivate = false;\r\n public isUploaded = false;\r\n public isPublic = false;\r\n public isPrimaryGlyph = false;\r\n public index = 0;\r\n public key = '';\r\n public pageNum = 0;\r\n public photoBnId = 0;\r\n public returnUrl = '';\r\n public value : any;\r\n // ---------------------------------------------\r\n constructor () { super(); }\r\n // ---------------------------------------------\r\n // NOte: Not sure how to make the base class to be copied automatically.\r\n //copySuper (a : KvPhoto) : void {\r\n // this.elemId = a.elemId;\r\n // this.entityName = a.entityName;\r\n // this.glyphName = a.glyphName;\r\n // this.isPrivate = a.isPrivate;\r\n // this.index = a.index;\r\n // this.key = a.key;\r\n // this.pageNum = a.pageNum;\r\n // this.returnUrl = a.returnUrl;\r\n // this.value = a.value;\r\n // this.setupPicImageAndValueOfKvPhoto(); \r\n //}\r\n // ---------------------------------------------\r\n public override copy (a : KvPhoto) : KvPhoto {\r\n if (!this.isNullOrEmpty(a)) {\r\n this.action = a.action;\r\n this.cryptUserKey = a.cryptUserKey;\r\n this.date = a.date;\r\n this.description = a.description;\r\n this.elemId = a.elemId;\r\n this.entityName = a.entityName;\r\n this.file = a.file;\r\n this.formData = a.formData;\r\n this.glyphName = a.glyphName;\r\n this.id = a.id;\r\n this.image = a.image;\r\n this.imageBytes = a.imageBytes;\r\n this.imageString = a.imageString;\r\n this.index = a.index;\r\n this.isPrivate = a.isPrivate;\r\n this.isUnlocked = a.isUnlocked;\r\n this.isUploaded = a.isUploaded;\r\n // this.isPrimary = a.isPrimary;\r\n // console.log('kvPhoto.isPrimary:' + this.isPrimary);\r\n this.isPrimary = a.isPrimary;\r\n // console.log('kvPhoto.isPrimary:' + this.isPrimary);\r\n this.isPrimaryGlyph = a.isPrimaryGlyph;\r\n this.isPublic = a.isPublic;\r\n this.itemNum = a.itemNum;\r\n this.key = a.key;\r\n this.latitude = a.latitude;\r\n this.location = a.location;\r\n this.longitude = a.longitude;\r\n this.path = a.path;\r\n this.pageNum = a.pageNum;\r\n this.photoId = a.photoId;\r\n this.photoBnId = a.photoBnId;\r\n this.pic = a.pic;\r\n this.privacy = a.privacy;\r\n this.profileId = a.profileId;\r\n this.returnUrl = a.returnUrl;\r\n this.signedInUserId = a.signedInUserId;\r\n this.sitUserId = a.sitUserId;\r\n this.sitUserKey = a.sitUserKey;\r\n this.sourceId = a.sourceId;\r\n this.sourceType = a.sourceType;\r\n this.title = a.title;\r\n this.url = a.url;\r\n this.value = a.value;\r\n }\r\n this.setupPicImageAndValueOfKvPhoto(this, a);\r\n return this;\r\n }\r\n // -------------------------------------------------\r\n public copySourceToDestination (destination : KvPhoto, source : KvPhoto) : KvPhoto {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destination)) {\r\n destination = new KvPhoto();\r\n\t\t}\r\n if (!this.isNullOrEmpty(source)) {\r\n destination.action = source.action;\r\n destination.cryptUserKey = source.cryptUserKey;\r\n destination.date = source.date;\r\n destination.description = source.description;\r\n destination.elemId = source.elemId;\r\n destination.entityName = source.entityName;\r\n destination.file = source.file;\r\n destination.formData = source.formData;\r\n destination.glyphName = source.glyphName;\r\n destination.id = source.id;\r\n destination.image = source.image;\r\n destination.imageBytes = source.imageBytes;\r\n destination.imageString = source.imageString;\r\n destination.index = source.index;\r\n destination.isPrivate = source.isPrivate;\r\n destination.isUnlocked = source.isUnlocked;\r\n destination.isUploaded = source.isUploaded;\r\n // console.log('kvPhoto.isPrimary:' + destination.isPrimary);\r\n destination.isPrimary = source.isPrimary;\r\n // console.log('kvPhoto.isPrimary:' + destination.isPrimary);\r\n destination.isPrimaryGlyph = source.isPrimaryGlyph;\r\n destination.isPublic = source.isPublic;\r\n destination.itemNum = source.itemNum;\r\n destination.key = source.key;\r\n destination.latitude = source.latitude;\r\n destination.location = source.location;\r\n destination.longitude = source.longitude;\r\n destination.path = source.path;\r\n destination.pageNum = source.pageNum;\r\n destination.photoId = source.photoId;\r\n destination.photoBnId = source.photoBnId;\r\n destination.pic = source.pic;\r\n destination.privacy = source.privacy;\r\n destination.profileId = source.profileId;\r\n destination.returnUrl = source.returnUrl;\r\n destination.signedInUserId = source.signedInUserId;\r\n destination.sitUserId = source.sitUserId;\r\n destination.sitUserKey = source.sitUserKey;\r\n destination.sourceId = source.sourceId;\r\n destination.sourceType = source.sourceType;\r\n destination.title = source.title;\r\n destination.value = source.value;\r\n destination.url = source.url;\r\n }\r\n this.setupPicImageAndValueOfKvPhoto(destination, source);\r\n return destination;\r\n }\r\n // ---------------------------------------------\r\n public clone (a : KvPhoto) : KvPhoto {\r\n let that = new KvPhoto();\r\n that.copy(a);\r\n return that;\r\n }\r\n // ---------------------------------------------\r\n public override copyIfExists (a : KvPhoto) : KvPhoto {\r\n if (!this.isNullOrEmpty(a)) {\r\n if (!this.isNullOrEmpty(a.action)) {\r\n this.action = a.action;\r\n }\r\n if (!this.isNullOrEmpty(a.cryptUserKey)) {\r\n this.cryptUserKey = a.cryptUserKey;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.date)) {\r\n this.date = a.date;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.description)) {\r\n this.description = a.description;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.elemId)) {\r\n this.elemId = a.elemId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.entityName)) {\r\n this.entityName = a.entityName;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.file)) {\r\n this.file = a.file;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.formData)) {\r\n this.formData = a.formData;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.glyphName)) {\r\n this.glyphName = a.glyphName;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.id)) {\r\n this.id = a.id;\r\n }\r\n if (!this.isNullOrEmpty(a.image)) {\r\n this.image = a.image;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.imageString)) {\r\n this.imageString = a.imageString;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.imageBytes)) {\r\n this.imageBytes = a.imageBytes;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.index)) {\r\n this.index = a.index;\r\n }\r\n\r\n \r\n /* this.isPrimary = a.isPrimary;*/\r\n // console.log('kvPhoto.isPrimary:' + this.isPrimary);\r\n this.isPrimary = a.isPrimary;\r\n // console.log('kvPhoto.isPrimary:' + this.isPrimary);\r\n\r\n this.isPrimaryGlyph = a.isPrimaryGlyph;\r\n this.isPublic = a.isPublic;\r\n \r\n this.isPrivate = a.isPrivate;\r\n\r\n\r\n \r\n this.isUnlocked = a.isUnlocked;\r\n\r\n this.isUploaded = a.isUploaded;\r\n\r\n if (!this.isNullOrEmpty(a.itemNum)) {\r\n this.itemNum = a.itemNum;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.key)) {\r\n this.key = a.key;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.latitude)) {\r\n this.latitude = a.latitude;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.location)) {\r\n this.location = a.location;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.longitude)) {\r\n this.longitude = a.longitude;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.path)) {\r\n this.path = a.path;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.pageNum)) {\r\n this.pageNum = a.pageNum;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.photoId)) {\r\n this.photoId = a.photoId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.photoBnId)) {\r\n this.photoBnId = a.photoBnId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.pic)) {\r\n this.pic = a.pic;\r\n }\r\n else if (!this.isNullOrEmpty(a.image)) {\r\n this.pic = a.image;\r\n }\r\n else if (!this.isNullOrEmpty(a.imageString)) {\r\n this.pic = a.imageString;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.profileId)) {\r\n this.profileId = a.profileId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.privacy)) {\r\n this.privacy = a.privacy;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.returnUrl)) {\r\n this.returnUrl = a.returnUrl;\r\n }\r\n\r\n if (a.signedInUserId) {\r\n this.signedInUserId = a.signedInUserId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.sitUserId)) {\r\n this.sitUserId = a.sitUserId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.sitUserKey)) {\r\n this.sitUserKey = a.sitUserKey;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.sourceId)) {\r\n this.sourceId = a.sourceId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.sourceType)) {\r\n this.sourceType = a.sourceType;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.title)) {\r\n this.title = a.title;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.value)) {\r\n this.value = a.value;\r\n }\r\n\r\n if (!this.isNullOrEmpty(a.url)) {\r\n this.url = a.url;\r\n }\r\n }\r\n this.setupPicImageAndValueOfKvPhoto(this, a);\r\n return this;\r\n }\r\n // ---------------------------------------------\r\n public override cloneIfExists (a : KvPhoto) : KvPhoto {\r\n const that = new KvPhoto();\r\n that.copyIfExists(a);\r\n return that;\r\n }\r\n // --------------------------------------------------------\r\n public setupPicImageAndValueOfKvPhoto (d: any, s: KvPhoto) : void {\r\n let isImageEmpty = false;\r\n let isPicEmpty = false;\r\n let isValueEmpty = false;\r\n if (this.isNullOrEmpty(d)) {\r\n d = new KvPhoto();\r\n }\r\n if (!this.isNullOrEmpty(s)) {\r\n if (this.isNullOrEmpty(s.pic)) {\r\n isPicEmpty = true;\r\n }\r\n\r\n if (this.isNullOrEmpty(s.value)) {\r\n isValueEmpty = true;\r\n }\r\n\r\n if (this.isNullOrEmpty(s.image)) {\r\n isImageEmpty = true;\r\n }\r\n if (!this.isNullOrEmpty(d)) {\r\n if (!isImageEmpty) {\r\n if (isPicEmpty) {\r\n d.pic = s.image;\r\n }\r\n if (isValueEmpty) {\r\n d.value = s.image;\r\n }\r\n }\r\n if (!isPicEmpty) {\r\n if (isImageEmpty) {\r\n d.image = s.pic;\r\n }\r\n if (isValueEmpty) {\r\n d.value = s.image;\r\n }\r\n }\r\n if (!isValueEmpty) {\r\n if (isImageEmpty) {\r\n d.image = s.value;\r\n }\r\n if (isPicEmpty) {\r\n d.pic = s.value;\r\n }\r\n }\r\n if (!this.isNullOrEmpty(s.value) && s.value.toLowerCase().indexOf('url(') !== -1) {\r\n d.value = this.stripUrlForImageData(s.value);\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public stripUrlForImageData (image : string) : any {\r\n let tImage2 : any;\r\n\r\n if (!this.isNullOrEmpty(image)) {\r\n const pattern1 = /url\\('/;\r\n const tImage = image.replace(pattern1, '');\r\n const pattern2 = /'\\)/;\r\n\r\n if (!this.isNullOrEmpty(tImage)) {\r\n tImage2 = tImage.replace(pattern2, '');\r\n }\r\n if (!this.isNullOrEmpty(tImage2)) {\r\n return tImage2;\r\n }\r\n return '';\r\n }\r\n return '';\r\n }\r\n // -------------------------------------------------\r\n public copyToPhotoBn (destination : PhotoBn, source : KvPhoto) : PhotoBn {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destination)) {\r\n destination = new PhotoBn();\r\n }\r\n if (!this.isNullOrEmpty(source)) {\r\n destination.action = source.action;\r\n destination.cryptUserKey = source.cryptUserKey;\r\n destination.date = source.date;\r\n destination.description = source.description;\r\n //destination.elemId = source.elemId;\r\n //destination.entityName = source.entityName;\r\n destination.file = source.file;\r\n destination.formData = source.formData;\r\n // destination.glyphName = source.glyphName;\r\n destination.id = source.id;\r\n destination.image = source.image;\r\n destination.imageBytes = source.imageBytes;\r\n destination.imageString = source.imageString;\r\n //destination.index = source.index;\r\n //destination.isPrivate = source.isPrivate;\r\n destination.isUnlocked = source.isUnlocked;\r\n // destination.isUploaded = source.isUploaded;\r\n // console.log('kvPhoto.isPrimary:' + destination.isPrimary);\r\n destination.isPrimary = source.isPrimary;\r\n // console.log('kvPhoto.isPrimary:' + destination.isPrimary);\r\n //destination.isPrimaryGlyph = source.isPrimaryGlyph;\r\n //destination.isPublic = source.isPublic;\r\n destination.itemNum = source.itemNum;\r\n // destination.key = source.key;\r\n destination.latitude = source.latitude;\r\n destination.location = source.location;\r\n destination.longitude = source.longitude;\r\n destination.path = source.path;\r\n // destination.pageNum = source.pageNum;\r\n destination.photoId = source.photoId;\r\n destination.photoBnId = source.photoBnId;\r\n destination.pic = source.pic;\r\n destination.privacy = source.privacy;\r\n destination.profileId = source.profileId;\r\n // destination.returnUrl = source.returnUrl;\r\n destination.signedInUserId = source.signedInUserId;\r\n destination.sitUserId = source.sitUserId;\r\n destination.sitUserKey = source.sitUserKey;\r\n destination.sourceId = source.sourceId;\r\n destination.sourceType = source.sourceType;\r\n destination.title = source.title;\r\n destination.value = source.value;\r\n destination.url = source.url;\r\n }\r\n this.setupPicImageAndValueOfKvPhoto(destination, source);\r\n return destination;\r\n }\r\n // --------------------------------------------------------------\r\n public isNullOrEmpty (input : any) : boolean {\r\n if (input === null || input === '' || input === undefined || (input !== null && (input.toString().toLowerCase() === 'null' || input.toString().toLowerCase() === 'undefined'))) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // --------------------------------------------------------\r\n}\r\n","import { MemberActivity } from './memberActivity.model';\r\n\r\nexport class MemberActivitiesAndAction{\r\n public id = 0;\r\n public date!: Date;\r\n public memberActivity = new MemberActivity();\r\n public message = '';\r\n public memberActivities : MemberActivity[] = [];\r\n public action = ''; \r\n public sitUserId = 0;\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n constructor() { }\r\n}\r\n","import { CommunicationActivity } from \"../communication/communicationActivity.model\";\r\n\r\nexport class MemberActivity {\r\n public action = '';\r\n public actionLabel = '';\r\n public date = '';\r\n public dateStr = '';\r\n public jsDateForCs = '';\r\n public doeeCryptUserKey = '';\r\n public doerCryptUserKey = '';\r\n public doeeSitUserKey = '';\r\n public doerSitUserKey = '';\r\n public doeeSitUserId? = 0;\r\n public doerSitUserId? = 0;\r\n public expiryDate = '';\r\n public id? = 0;\r\n public isBlocked = false;\r\n public isBuddied = false;\r\n public isFriend = false;\r\n public isLiked = false;\r\n public isStarred = false;\r\n public isTracked = false;\r\n public isUnlocked = false;\r\n public isWinked = false;\r\n public index? = 0;\r\n public key = '';\r\n public memberActivityId? = 0;\r\n public memberLockingActivityId? = 0;\r\n public memberTrackWinkActivityId? = 0;\r\n public message: any;\r\n public model: any;\r\n public modelName = '';\r\n public photoBnId? = 0;\r\n public profileId? = 0;\r\n public profileTile : any; // ProfileTile model\r\n public receiverSitUserId? = 0;\r\n public senderSitUserId? = 0;\r\n public signedInUserId? = 0;\r\n public value: any;\r\n constructor() {\r\n this.jsDateForCs = this.jsDateToCsDate(this.date);\r\n this.dateStr = new Date(this.date).toLocaleTimeString();\r\n // alert ('toLocalTimeString: ' + this.dateStr);\r\n }\r\n // ref:https:// stackoverflow.com/questions/6702705/how-to-convert-javascript-datetime-to-c-sharp-datetime\r\n /*\r\n * C# code to convert: DateTime.ParseExact(YourString, 'dd/MM/yyyy HH:mm:ss', CultureInfo.InvariantCulture);\r\n */\r\n\r\n jsDateToCsDate(inDate: string): string {\r\n if (inDate) {\r\n const date = new Date(inDate);\r\n const day = date.getDate(); // yields date\r\n const month = date.getMonth() + 1; // yields month (add one as '.getMonth()' is zero indexed)\r\n const year = date.getFullYear(); // yields year\r\n const hour = date.getHours(); // yields hours\r\n const minute = date.getMinutes(); // yields minutes\r\n const second = date.getSeconds(); // yields seconds\r\n const ampm = date.toLocaleTimeString();\r\n /*\r\n * ampm = dateStringService.convertToLocal(date); // outputs: mm-dd-yyyy hh:mm:ss AM/PM\r\n * alert ('toLocalTimeString: ' + ampm);\r\n * After this construct a string with the above results as below\r\n */\r\n const time = day + '/' + month + '/' + year + ' ' + hour + ':' + minute + ':' + second;\r\n // alert ('jsDate2CsDate: ' + time);\r\n\r\n return (this.jsDateForCs = time);\r\n }\r\n return '';\r\n }\r\n\r\n public copy2CommunicationActivity (mAct : MemberActivity) : CommunicationActivity {\r\n let cAct = new CommunicationActivity();\r\n cAct.action = mAct.action;\r\n cAct.actionLabel = mAct.actionLabel;\r\n cAct.date = mAct.date;\r\n cAct.dateStr = mAct.dateStr;\r\n cAct.dateFormatted = mAct.dateStr;\r\n cAct.receiverSitUserKey = mAct.doeeSitUserKey;\r\n cAct.receiverSitUserId = mAct.doeeSitUserId;\r\n cAct.senderSitUserId = mAct.doerSitUserId;\r\n cAct.senderSitUserKey = mAct.doerSitUserKey;\r\n\r\n cAct.expiryDate = mAct.expiryDate;\r\n cAct.id = mAct.id.toString();\r\n cAct.isBlocked = mAct.isBlocked;\r\n cAct.isBuddied = mAct.isBuddied;\r\n cAct.isFriend = mAct.isFriend;\r\n cAct.isLiked = mAct.isLiked;\r\n cAct.isStarred = mAct.isStarred;\r\n cAct.isUnlocked = mAct.isUnlocked;\r\n cAct.isWinked = mAct.isWinked;\r\n\r\n cAct.index = mAct.index;\r\n cAct.photoBnId = mAct.photoBnId;\r\n cAct.profileTile = mAct.profileTile;\r\n cAct.memberActivity = mAct;\r\n return cAct;\r\n } \r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from \"../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\nimport { SitUser } from \"../account/sitUser.model\";\r\nimport { Content } from \"../common/content.model\";\r\nimport { KvAny } from \"../keyValue/kvAny.model\";\r\nimport { Preference } from \"../profile/preference.model\";\r\nimport { ProfileInfo } from \"../profile/profileInfo.model\";\r\nimport { ProfileTile } from \"../profile/profileTile.model\";\r\n\r\nexport class MemberViewMgmtModel {\r\n public id = 0;\r\n public date!: Date;\r\n public kvAnyArr : KvAny[] = [];\r\n public kvLegend : string[] = [ 'Profile description', 'About me', 'My preferences', 'What I am looking for',\r\n 'What I am into', 'Upload Photos' ];\r\n public message = '';\r\n public preference : Preference = new Preference();\r\n public preferenceKvAnyArr : KvAny[] = [];\r\n public profileContent : Content = new Content();\r\n public profileContentKvAnyArr : KvAny[] = [];\r\n public profileContentName = 'Something more about me';\r\n public profileInfo : ProfileInfo = new ProfileInfo();\r\n public profileInfoView : ProfileInfo = new ProfileInfo();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profileName = '';\r\n public primaryImage = '';\r\n \r\n public sitUser : SitUser = new SitUser();\r\n public sitUserId = 0;\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n constructor () { }\r\n\r\n populateModelData (\r\n profileContent? : Content | any,\r\n preference?: Preference | any,\r\n profileInfo?: ProfileInfo | any,\r\n profileInfoView?: ProfileInfo | any,\r\n profileTile?: ProfileTile | any,\r\n inSitUser?: SitUser | any, \r\n preferenceKvAnyArr?: KvAny[] | any,\r\n profileContentKvAnyArr?: KvAny[] | any,\r\n kvAnyArr?: KvAny[] | any ) {\r\n\r\n if (!this.isNullOrEmpty(profileContent) && profileContent.sitUserId > 0) {\r\n this.profileContent = profileContent as Content;\r\n this.profileName = profileContent.heading; // highest priority of profileName\r\n this.sitUserId = profileContent?.sitUserId > 0 ? profileContent.sitUserId : this.sitUserId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(profileInfo) && profileInfo.sitUserId > 0) {\r\n this.profileInfo = profileInfo as ProfileInfo;\r\n this.profileInfo.profileName = !this.isNullOrEmpty(this.profileName) ? this.profileName : this.profileInfo.profileName; // profileContent.heading gets the highest priority\r\n this.profileName = this.isNullOrEmpty(this.profileName) ? profileInfo.profileName : this.profileName; // profileContent.heading gets the highest priority\r\n this.sitUserId = profileInfo && profileInfo.sitUserId > 0 ? profileInfo.sitUserId : this.sitUserId;\r\n\r\n }\r\n\r\n if (!this.isNullOrEmpty(profileInfoView) && profileInfoView.sitUserId > 0) {\r\n this.profileInfoView = profileInfoView as ProfileInfo;\r\n this.profileInfoView.profileName = !this.isNullOrEmpty(this.profileName) ? this.profileName : this.profileInfoView.profileName; // profileContent.heading gets the highest priority\r\n this.profileName = this.isNullOrEmpty(this.profileName) ? profileInfoView.profileName : this.profileName; // profileContent.heading gets the highest priority\r\n this.sitUserId = profileInfoView && profileInfoView.sitUserId > 0 ? profileInfoView.sitUserId : this.sitUserId;\r\n }\r\n\r\n if (!this.isNullOrEmpty(profileTile) && profileTile.sitUserId > 0) {\r\n this.profileTile = profileTile as ProfileTile;\r\n this.profileTile.profileName = !this.isNullOrEmpty(this.profileName) ? this.profileName : this.profileTile.profileName; // profileContent.heading gets the highest priority\r\n this.profileName = this.isNullOrEmpty(this.profileName) ? profileTile.profileName : this.profileName; // profileContent.heading gets the highest priority\r\n this.sitUserId = profileTile && profileTile.sitUserId > 0 ? profileTile.sitUserId : this.sitUserId;\r\n }\r\n \r\n if (!this.isNullOrEmpty(profileContentKvAnyArr) && profileContentKvAnyArr.length > 0) {\r\n this.profileContentKvAnyArr = profileContentKvAnyArr as KvAny[];\r\n }\r\n\r\n // let anyModel = EmitterSubjectService.getAnyModel();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(anyModel) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(anyModel.kvAnyArr) && anyModel.kvAnyArr.length > 0) {\r\n // // debugger;\r\n // this.kvAnyArr = anyModel.kvAnyArr;\r\n // }\r\n\r\n if (!this.isNullOrEmpty(kvAnyArr) && kvAnyArr.length > 0) {\r\n this.kvAnyArr = kvAnyArr;\r\n }\r\n\r\n if (!this.isNullOrEmpty(preference) && preference.sitUserId > 0) {\r\n this.preference = preference as Preference;\r\n }\r\n\r\n if (!this.isNullOrEmpty(preferenceKvAnyArr) && preferenceKvAnyArr.length > 0) {\r\n this.preferenceKvAnyArr = preferenceKvAnyArr as KvAny[];\r\n }\r\n\r\n if (!this.isNullOrEmpty(inSitUser) && inSitUser.sitUserId > 0) {\r\n this.sitUser = inSitUser as SitUser;\r\n this.sitUser.profileName = !this.isNullOrEmpty(this.profileName) ? this.profileName : this.sitUser.profileName; // profileContent.heading gets the highest priority\r\n this.profileName = this.isNullOrEmpty(this.profileName) ? inSitUser.profileName : this.profileName; // profileContent.heading gets the highest priority\r\n this.sitUserId = inSitUser.sitUserId > 0 ? inSitUser.sitUserId : this.sitUserId;\r\n }\r\n\r\n \r\n // debugger;\r\n FrequentlyUsedFunctionsServiceStatic.emitMemberViewMgmtModel(this);\r\n }\r\n // --------------------------------------------------------------\r\n public isNullOrEmpty (input : any) : boolean {\r\n if (input === null || input === '' || input === undefined || (input !== null && (input.toString().toLowerCase() === 'null' || input.toString().toLowerCase() === 'undefined'))) {\r\n return true;\r\n }\r\n return false;\r\n } \r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nexport class CenterCoordinates {\r\n public centerX = 0;\r\n public centerY = 0;\r\n public id = 0;\r\n constructor() {\r\n }\r\n}\r\n","\r\nexport class ImageCounter {\r\n public avatarC = 0;\r\n public defaultC = 0;\r\n public imageC = 0;\r\n public id = 0;\r\n constructor() {\r\n }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { DateStringServiceStatic } from '../../services/staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { EmitOffOnResult } from '../common/emitOffOnResult.model';\r\nimport { Heartbeat } from '../common/heartbeat.model';\r\n\r\n// --------------------------------------------------------------------------------------------------------------------\r\n// Note: OffOn model whould indicate only whether a user is online or off line and if away for certain amount of time.\r\n// It does not deal with anything else such as profileName or distance from other member(s)\r\n// --------------------------------------------------------------------------------------------------------------------\r\nexport class OffOn {\r\n public away = 'offline';\r\n public awayArr : string[] = [ 'online', 'offline', 'away-10mins' ];\r\n public awayMap = new Map();\r\n public awayId = '';\r\n public awayRadioId = '';\r\n public awayTime = 0;\r\n public date = '';\r\n public heartbeat: Heartbeat = new Heartbeat();\r\n public id = '';\r\n public isOnline = false;\r\n public index = -0;\r\n public isStatusUpdated = false;\r\n public offOnLegend = '';\r\n public offOnResult : EmitOffOnResult = new EmitOffOnResult();\r\n public offOnArr: string[] = ['0'];\r\n public offOnId = '';\r\n public offOnElem !: HTMLElement;\r\n public offOnAwayElem ! : ElementRef | HTMLElement; \r\n public offOnRadioElem ! : ElementRef | HTMLElement; \r\n public offOnStatusColor = '';\r\n public offOnStatusEnum = -1;\r\n public offOnStatusColorTimer: any;\r\n public pElemId = '';\r\n public profileId = 0;\r\n public selectedOffOnIndex = -1;\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n public source = '';\r\n public timer : any;\r\n public lastUpdatedOn : any;\r\n\r\n constructor ()\r\n {\r\n this.awayMap = new Map();\r\n this.awayMap.set(\"online\", \"online\");\r\n this.awayMap.set(\"offline\", \"offline\");\r\n this.awayMap.set(\"10mins\", \"away-10mins\");\r\n //this.awayMap.set(\"15mins\", \"away-15mins\");\r\n //this.awayMap.set(\"20mins\", \"away-20mins\");\r\n }\r\n\r\n //public initAwayMap (): Map {\r\n // this.awayMap = new Map();\r\n // this.awayMap.set(\"online\", \"on-line\");\r\n // this.awayMap.set(\"offline\", \"off-line\");\r\n // this.awayMap.set(\"10mins\", \"away-10mins\");\r\n // this.awayMap.set(\"15mins\", \"away-15mins\");\r\n // this.awayMap.set(\"20mins\", \"away-20mins\");\r\n // return this.awayMap;\r\n //}\r\n \r\n\r\n public copy (sourceOffOn : OffOn) : OffOn | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.heartbeat)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.typeCheck(this.heartbeat) === 'object' && this.heartbeat instanceof Heartbeat) {\r\n this.heartbeat = this.heartbeat.copy(sourceOffOn.heartbeat);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.away)\r\n && sourceOffOn.away.length > 0) {\r\n this.away = sourceOffOn.away;\r\n }\r\n debugger;\r\n // this.awayMap = this.offOnService.setOffOnAwayMap(\"\");\r\n debugger;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.distance) && sourceOffOn.distance > 0) {\r\n // this.distance = sourceOffOn.distance;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.distanceStr) && sourceOffOn.distanceStr.length > 0) {\r\n // this.distanceStr = sourceOffOn.distanceStr;\r\n //}\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnArr) && sourceOffOn.offOnArr.length > 0) {\r\n this.offOnArr = sourceOffOn.offOnArr;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnId) && sourceOffOn.offOnId.length > 0) {\r\n this.offOnId = sourceOffOn.offOnId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnElem)) {\r\n this.offOnElem = sourceOffOn.offOnElem;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnAwayElem)) {\r\n this.offOnAwayElem = sourceOffOn.offOnAwayElem;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnRadioElem)) {\r\n this.offOnRadioElem = sourceOffOn.offOnRadioElem;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnStatusEnum) && sourceOffOn.offOnStatusEnum > 0) {\r\n this.offOnStatusEnum = sourceOffOn.offOnStatusEnum;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnStatusColor) && sourceOffOn.offOnStatusColor.length > 0) {\r\n this.offOnStatusColor = sourceOffOn.offOnStatusColor;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnStatusColorTimer) && sourceOffOn.offOnStatusColorTimer.toString().length > 0) {\r\n this.offOnStatusColorTimer = sourceOffOn.offOnStatusColorTimer;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.selectedOffOnIndex) && sourceOffOn.selectedOffOnIndex > -1) {\r\n this.selectedOffOnIndex = sourceOffOn.selectedOffOnIndex;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.lastUpdatedOn) && sourceOffOn.lastUpdatedOn > 0) {\r\n this.lastUpdatedOn = sourceOffOn.lastUpdatedOn;\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n public isReadyForUpdate () : boolean {\r\n // debugger;\r\n let isReady = false;\r\n let now = new Date().getTime();\r\n let diff = now - new Date(this.lastUpdatedOn).getTime();\r\n if (DateStringServiceStatic.dateInYYYYMMDDhhmmss(diff).mm >= 5 ) {\r\n isReady = true;\r\n }\r\n return isReady;\r\n }\r\n}\r\n/*\r\n * // ref: https://howtodoinjava.com/typescript/maps/\r\n//2. Get entries\r\n// let age = nameAgeMapping.get(\"John\");\t\t// age = 40\r\n\r\n//3. Check entry by Key\r\n// nameAgeMapping.has(\"Lokesh\");\t\t // true\r\n// nameAgeMapping.has(\"Brian\");\t\t // false\r\n\r\n//4. Size of the Map\r\n// let count = nameAgeMapping.size; \t // count = 3\r\n\r\n//5. Delete an entry\r\n// let isDeleted = nameAgeMapping.delete(\"Lokesh\");\t // isDeleted = true\r\n\r\n//6. Clear whole Map\r\n// nameAgeMapping.clear();\t\t\t\t//Clear all entries\r\n\r\n\r\n */ \r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { KvMemberActivityGlyph } from '../keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../keyValue/kvPhoto.model';\r\nimport { BasicPagerModel } from './basicPagerModel.model';\r\n\r\n// --------------------------------------------------------\r\n// Note: There are two basic types of KV based pagers:\r\n// 1) KvPhoto 2) KvGlyph\r\n// --------------------------------------------------------\r\n\r\nexport class BasicPagerKvGlyphModel extends BasicPagerModel {\r\n public isPhotoMgmt = false;\r\n \r\n constructor () { super();}\r\n\r\n\r\n // ---------------------\r\n // kvPhotoArr vairables:\r\n // ---------------------\r\n public firstItem : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public lastItem : KvMemberActivityGlyph = new KvMemberActivityGlyph(); \r\n // ----------------------------------\r\n // the PagedItems variables on items:\r\n // Note: item (from modrel) === index (from view)\r\n // ----------------------------------\r\n \r\n public pagedKvGlyphItems : KvMemberActivityGlyph[] = [];\r\n public currentKvGlyphItem : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public endIKvGlyphtem : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public nextKvGlyphItem : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public previousKvGlyphItem : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public startKvGlyphItem : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n\r\n copyToPagerPhotoMgmt (ppMgmt : any) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ppMgmt)) {\r\n ppMgmt.pageSize = this.pageSize;\r\n ppMgmt.totalItems = this.totalItems;\r\n ppMgmt.totalPages = this.totalPages;\r\n\r\n // ---------------------\r\n // kvPhotoArr vairables:\r\n // ---------------------\r\n let kvPhotoArr : KvPhoto[] = [];\r\n //this.kvGlyphArr.forEach(e => {\r\n // kvPhotoArr.push(e.kvPhoto);\r\n //});\r\n ppMgmt.kvPhotoArr = kvPhotoArr;\r\n\r\n ppMgmt.firstItemNo = this.startItemNo;\r\n ppMgmt.totalItems = this.totalItems;\r\n ppMgmt.firstItem = this.firstItem; //.kvPhoto;\r\n ppMgmt.lastItemNo = this.endItemNo;\r\n ppMgmt.lastItem = this.lastItem; //.kvPhoto;\r\n\r\n // ------------------\r\n // pages variables:\r\n // ------------------\r\n ppMgmt.pages = this.pages;\r\n ppMgmt.currentPage = this.currentPage;\r\n ppMgmt.firstPage = this.startPage;\r\n ppMgmt.lastPage = this.endPage;\r\n ppMgmt.nextPage = this.nextPage;\r\n ppMgmt.previousPage = this.previousPage;\r\n // ----------------------------------\r\n // the PagedItems variables on items:\r\n // Note: item (from modrel) === index (from view)\r\n // ----------------------------------\r\n kvPhotoArr = [];\r\n //this.pagedItems.forEach(e => {\r\n // kvPhotoArr.push(e.kvPhoto);\r\n //});\r\n ppMgmt.pagedItems = kvPhotoArr;\r\n ppMgmt.kvPhotoArr = kvPhotoArr;\r\n ppMgmt.currentItemNo = this.currentItemNo;\r\n ppMgmt.currentItem = this.currentItem; //.kvPhoto;\r\n ppMgmt.endItemNo = this.endItemNo;\r\n ppMgmt.endItem = this.endItem; //.kvPhoto;\r\n ppMgmt.nextItemNo = this.nextItemNo;\r\n ppMgmt.nextItem = this.nextItem; //.kvPhoto;\r\n ppMgmt.previousItemNo = this.previousItemNo\r\n ppMgmt.previousItem = this.previousItem; //.kvPhoto;\r\n ppMgmt.startItemNo = this.startItemNo;\r\n ppMgmt.startItem = this.startItem; //.kvPhoto;\r\n \r\n }\r\n return ppMgmt;\r\n }\r\n}\r\n","import { KvMemberActivityGlyph } from '../keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../keyValue/kvPhoto.model';\r\n\r\nexport class BasicPagerModel {\r\n public isPhotoMgmt = false;\r\n public totalItems = 0;\r\n public currentPageNo = 0;\r\n public nextPageNo = 0;\r\n public previousPageNo = 0;\r\n public pageSize = 0;\r\n public totalPages = 0;\r\n public startPageNo = 0;\r\n public endPageNo = 0;\r\n public startIndex = 0;\r\n public endIndex = 0;\r\n public kvPhotoArr: KvPhoto[] = [];\r\n public kvGlyphArr : KvMemberActivityGlyph[] = [];\r\n public page : number = 0;\r\n public pages : number[] = [];\r\n\r\n public pagedItems : KvPhoto[] = [];\r\n public currentItemNo = 0;\r\n public currentItem : KvPhoto = new KvPhoto();\r\n public nextItemNo = 0;\r\n public nextItem : KvPhoto = new KvPhoto();\r\n public previousItemNo = 0;\r\n public previousItem : KvPhoto = new KvPhoto();\r\n public startItemNo = 0;\r\n public startItem : KvPhoto = new KvPhoto();\r\n public endItemNo = 0;\r\n public endItem : KvPhoto = new KvPhoto();\r\n\r\n public pagedKvPhotoArr : KvPhoto[] = [];\r\n public pagedGlyphArr : KvMemberActivityGlyph[] = [];\r\n public currentPage : KvPhoto = new KvPhoto();\r\n public startPage : KvPhoto = new KvPhoto();\r\n public endPage : KvPhoto = new KvPhoto();\r\n public nextPage : KvPhoto = new KvPhoto();\r\n public previousPage : KvPhoto = new KvPhoto();\r\n constructor() { }\r\n}\r\n","import { KvAny } from '../keyValue/kvAny.model';\nimport { KvMemberActivityGlyph } from '../keyValue/kvMemberActivityGlyph.model';\nimport { KvPhoto } from '../keyValue/kvPhoto.model';\nimport { BasicPagerModel } from './basicPagerModel.model';\r\n\nexport class Pager extends BasicPagerModel{\n // public isPhotoMgmt = false;\n //public totalItems = 0;\n //public currentPageNo = 0;\n //public pageSize = 0;\n //public totalPages = 0;\n //public startPageNo = 0;\n //public endPageNo = 0;\n //public startIndex = 0;\n //public endIndex = 0;\n //public kvPhotoArr: KvPhoto[] = [];\n //public kvGlyphsArr : KvMemberActivityGlyph[] = [];\n //public pages: any;\n //public pagedKvPhotoArr: KvPhoto[] = [];\n //public pagedGlyphArr : KvMemberActivityGlyph[] = [];\n //public currentPage : KvPhoto = new KvPhoto();\n //public firstPage : KvPhoto = new KvPhoto();\n //public lastPage : KvPhoto = new KvPhoto();\n //public nextPage : KvPhoto = new KvPhoto();\n //public previousPage : KvPhoto = new KvPhoto();\n constructor () { super();}\n}\n","\r\nimport { Chat } from '../chat/chat.model';\r\nimport { KvMemberActivityGlyph } from '../keyValue/kvMemberActivityGlyph.model';\r\n\r\nexport class PagerChat {\r\n public blockStartPageNo = 0;\r\n public blockEndPageNo = 0;\r\n public blockStartIndex = 0;\r\n public blockEndIndex = 0;\r\n public currentPage : Chat = new Chat();\r\n public currentPageNo = 0;\r\n public endIndex = 0;\r\n public endPage : Chat = new Chat();\r\n public endPageNo = 0;\r\n public firstPage : Chat = new Chat();\r\n public firstPageNo = 0;\r\n public kvPhotoArr : Chat[] = [];\r\n public kvGlyphsArr : KvMemberActivityGlyph[] = [];\r\n public lastPage : Chat = new Chat();\r\n public lastPageNo = 0;\r\n public nextPage : Chat = new Chat();\r\n public nextPageNo = 0;\r\n public pagedKvPhotoArr : Chat[] = [];\r\n public pagedGlyphArr : KvMemberActivityGlyph[] = [];\r\n public pages = [];\r\n public pageSize = 0;\r\n public previousPage : Chat = new Chat();\r\n public previousPageNo = 0;\r\n public startPage : Chat = new Chat();\r\n public startPageNo = 0;\r\n public startIndex = 0;\r\n public totalItems = 0;\r\n public totalPageNo = 0;\r\n // specific use-case data:\r\n // -----------------------\r\n //use-case-chat:\r\n public chats : Array = [];\r\n public pagedChats : Chat[] = [];\r\n\r\n\r\n constructor () { }\r\n}\r\n","\r\nimport { KvMemberActivityGlyph } from '../keyValue/kvMemberActivityGlyph.model';\r\nimport { BasicPagerKvGlyphModel } from './basicPagerKvGlyphModel.model';\r\n\r\n// --------------------------------------------------------\r\n// Note: There are two basic types of KV based pagers:\r\n// 1) KvPhoto 2) KvGlyph\r\n//\r\n// PagerMemberActiviy relates to KvGlyph category.\r\n// --------------------------------------------------------\r\n\r\nexport class PagerMemberActivity extends BasicPagerKvGlyphModel {\r\n\r\n // Note: the following two variables are for hodling the glyphArr for viewMember:\r\n // (during ViewMember, there will be a set of glyphs representing various activities\r\n // that the signedInUser can take on other non-signedInUser's profile such as:\r\n // [like, dislike, friend, unfriend, buddy (managed by the slakes's logic), wink, track, etc.])\r\n // ---------------------------------------------------------------------------------------------------\r\n\r\n // Note: the following properties are used to accomphish represenging these glyphs for various activities:\r\n // -------------------------------------------------------------------------------------------------------\r\n \r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n // public currentItemKvGlyph : KvPhoto = new KvPhoto(); n// Note: there is no model for Glyph, so a KvPhoto model is used which inherits Photo model\r\n constructor () {\r\n super();\r\n }\r\n}\r\n","import { KvMemberActivityGlyph } from '../keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../keyValue/kvPhoto.model';\r\nimport { BasicPagerModel } from './basicPagerModel.model';\r\nimport { PagerMemberActivity } from './pagerMemberActivity.model';\r\n\r\n// --------------------------------------------------------\r\n// Note: There are two basic types of KV based pagers:\r\n// 1) KvPhoto 2) KvGlyph\r\n//\r\n// PagerPhotoMgmt relates to KvPhoto category.\r\n// --------------------------------------------------------\r\n\r\n\r\nexport class PagerPhotoMgmt extends BasicPagerModel{\r\n\r\n public pagedItems : KvPhoto[] = [];\r\n\r\n // Note: the following two variables are for hodling the glyphArr for photoMgmt and/or viewMember:\r\n // -----------------------------------------------------------------------------------------------\r\n // Note: variable/property naming convention: prefix as {container, model,class} ) + name (can be emptyString) + postfix (as type {primitives, custom-type} or action) == variable-name\r\n // -----------------------------------------------------------------------------------------------\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n\r\n // Note: and the respective pagers:\r\n public pagerVMemberActivityForPhotoMgmt : PagerMemberActivity = new PagerMemberActivity();\r\n public pagerVMemberActivityForViewMember : PagerMemberActivity = new PagerMemberActivity();\r\n \r\n constructor () { super(); }\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from \"../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\n\r\nexport class Preference {\r\n public profileId = 0;\r\n public preferenceId = 0;\r\n public date : string = '';\r\n\r\n public hobby : string = '';\r\n public hobbies : string = '';\r\n public hobbyArr : string[] = [];\r\n\r\n public isSuccess = false;\r\n\r\n public into : string = '';\r\n public intos : string = '';\r\n public intoArr : string[] = [];\r\n\r\n public lookingFor : string = '';\r\n public lookingFors : string = '';\r\n public lookingForArr : string[] = [];\r\n\r\n public message = '';\r\n\r\n public meetingLocation : string = '';\r\n public meetingLocations: string = '';\r\n public meetingLocationArr : string[] = [];\r\n\r\n public pet : string = '';\r\n public pets : string = '';\r\n public petArr : string[] = [];\r\n\r\n public petPeeve : string = '';\r\n public petPeeves : string = '';\r\n public petpeeveArr : string[] = [];\r\n\r\n public relationshipPreference : string = '';\r\n public relationshipPreferences : string = '';\r\n public relationshipPreferenceArr : string[] = []; \r\n\r\n // Note: since multiple-selections-allowed, we keep the var names plural:\r\n public selectedHobbiesString : string = '';\r\n public selectedIntosString : string = '';\r\n public selectedLookingForsString : string = '';\r\n public selectedMeetingLocationsString : string = '';\r\n public selectedPetsString : string = ''; \r\n public selectedPetPeevsString : string = '';\r\n public selectedRelationshipPreferencesString : string = '';\r\n public selectedWhenLookingToMeetsString : string = '';\r\n\r\n public sitUserId = 0;\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n\r\n public whenLookingToMeet : string = '';\r\n public whenLookingToMeets : string = '';\r\n public whenLookingToMeetArr : string[] = [];\r\n // ----------------------------------------\r\n constructor () { }\r\n // ----------------------------------------\r\n doesModelHaveData (): boolean{\r\n let out = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this) && ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.hobbies) && this.hobbies.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.intos) && this.intos.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.lookingFors) && this.lookingFors.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.meetingLocations) && this.meetingLocations.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pets) && this.pets.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.petPeeves) && this.petPeeves.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.relationshipPreferences) && this.relationshipPreferences.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.relationshipPreferences) && this.relationshipPreferences.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.whenLookingToMeets) && this.whenLookingToMeets.length > 0))\r\n ) {\r\n out = true;\r\n }\r\n return out;\r\n }\r\n // ----------------------------------------\r\n}\r\n","import { Content } from '../common/content.model';\n\nexport class Profile {\n public abstract = '';\n public contentId = 0;\n public contents = '';\n public date = '';\n public email = '';\n public heading = '';\n public highestEducation = '';\n public image = '';\n public isProfileComplete = false;\n public isSuccess = false;\n public memberId = 0;\n public message = '';\n public name = 0;\n public playSafe = '';\n public photoId = 0;\n public position = '';\n public profileContent: Content = new Content();\n public profileId = 0;\n public primaryPhotoBnId = 0;\n public relationshipStatus = '';\n public religion = '';\n public signedInUserId = 0;\n public signedInUserKey = '';\n public sitUserId = 0;\n public sitUserKey = '';\n public smokingStatus = '';\n\n constructor() { }\n}\n","export class ProfileImage {\n public approval = '';\n public cryptUserKey = '';\n public date = '';\n public description = '';\n public entityName = '';\n public imageBytes: [] = [];\n public imageFile: any;\n public image = '';\n public imageFromBytes = '';\n public isPrimary = false;\n public photoId = 0;\n public photoBnId = 0;\n public privacy = '';\n public profileId = 0;\n public sitUserId = 0;\n public sitUserKey = '';\n public sourceId = 0;\n public sourceType = '';\n public type: any;\n public title = '';\n\n constructor() { }\n\n compareNumbers (a : any, b : any) {\n return a - b;\n }\n}\n","import { FR } from 'angular-mydatepicker';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ProfilePics } from './profilePics.model';\r\nimport { Unit } from '../common/unit.model';\r\n\r\nexport class ProfileInfo {\r\n public age = 0;\r\n public aBstract = '';\r\n public away = '';\r\n public box : any;\r\n public city = '';\r\n public contentId = 0;\r\n public contents = '';\r\n public countryCode = '';\r\n public cryptUserKey = '';\r\n public cutUncut = '';\r\n public date = '';\r\n public dickSize = '';\r\n public distance : any;\r\n public distanceStr = '';\r\n public distanceUnit: Unit = new Unit();\r\n public dob: any;\r\n public email = '';\r\n public eyes = '';\r\n public ethnicity = '';\r\n public gender = '';\r\n public hair = '';\r\n public heading = '';\r\n public height = 0;\r\n public heightStr = '';\r\n public heartbeatTime = '';\r\n public highestEducation = '';\r\n public image = '';\r\n public isOnline = false;\r\n public isServer = false;\r\n public isProfileComplete = false;\r\n public isSuccess = false;\r\n public link = '';\r\n public longitude = '';\r\n public latitude = '';\r\n public memberId = 0;\r\n public message = '';\r\n public name = '';\r\n public neighborhood = '';\r\n public nonce : any;\r\n public pagedProfilePics: string[] = [];\r\n public photoId = 0;\r\n public photoBnId = 0;\r\n public primaryPhotoBnId = 0;\r\n public position = '';\r\n public profileId = 0;\r\n public profileName = '';\r\n public profilePics: ProfilePics = new ProfilePics();\r\n public regionCode = '';\r\n public relationshipStatus = '';\r\n public religion = '';\r\n public sexuality = '';\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public SITUserId = 0;\r\n public SITUserKey = '';\r\n public smokingStatus = '';\r\n public unit = '';\r\n public weight = 0;\r\n public weightStr = '';\r\n\r\n constructor () { }\r\n\r\n copy (a : ProfileInfo): void {\r\n this.age = a.age;\r\n this.aBstract = a.aBstract;\r\n this.away = a.away;\r\n this.box = a.box;\r\n this.city = a.city;\r\n this.contentId = a.contentId;\r\n this.contents = a.contents;\r\n this.countryCode = a.countryCode;\r\n this.cryptUserKey = a.cryptUserKey;\r\n this.cutUncut = a.cutUncut;\r\n this.dickSize = a.dickSize;\r\n this.distance = a.distance;\r\n this.distanceStr = a.distanceStr;\r\n this.distanceUnit = a.distanceUnit;\r\n this.dob = a.dob;\r\n this.email = a.email;\r\n this.eyes = a.eyes;\r\n this.ethnicity = a.ethnicity;\r\n this.gender = a.gender;\r\n this.hair = a.hair;\r\n this.heading = a.heading;\r\n this.heartbeatTime = a.heartbeatTime;\r\n this.highestEducation = a.highestEducation;\r\n this.height = a.height;\r\n this.image = a.image;\r\n this.isOnline = a.isOnline;\r\n this.isServer = a.isServer;\r\n this.isProfileComplete = a.isProfileComplete;\r\n this.isSuccess = a.isSuccess;\r\n this.link = a.link;\r\n this.longitude = a.longitude;\r\n this.latitude = a.latitude;\r\n this.memberId = a.memberId;\r\n this.message = a.message;\r\n this.name = a.name;\r\n this.neighborhood = a.neighborhood;\r\n this.nonce = a.nonce;\r\n this.pagedProfilePics = a.pagedProfilePics;\r\n this.photoId = a.photoId;\r\n this.photoBnId = a.photoBnId;\r\n this.position = a.position;\r\n this.primaryPhotoBnId = a.primaryPhotoBnId;\r\n this.profileId = a.profileId;\r\n this.profileName = a.profileName;\r\n this.profilePics = a.profilePics;\r\n this.regionCode = a.regionCode;\r\n this.relationshipStatus = a.relationshipStatus;\r\n this.religion = a.religion;\r\n this.sexuality = a.sexuality;\r\n this.signedInUserId = a.signedInUserId;\r\n this.signedInUserKey = a.signedInUserKey;\r\n this.sitUserId = a.sitUserId;\r\n this.sitUserKey = a.sitUserKey;\r\n this.SITUserId = a.sitUserId;\r\n this.SITUserKey = a.sitUserKey;\r\n this.smokingStatus = a.smokingStatus;\r\n this.unit = a.unit;\r\n this.weight = a.weight;\r\n }\r\n// ---------------------------------------\r\n public copySourceToDestination (d : ProfileInfo, a : ProfileInfo) : ProfileInfo {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(d)) {\r\n d = new ProfileInfo();\r\n }\r\n d.age = a.age;\r\n d.aBstract = a.aBstract;\r\n d.away = a.away;\r\n d.box = a.box;\r\n d.city = a.city;\r\n d.contentId = a.contentId;\r\n d.contents = a.contents;\r\n d.countryCode = a.countryCode;\r\n d.cryptUserKey = a.cryptUserKey;\r\n d.cutUncut = a.cutUncut;\r\n d.dickSize = a.dickSize;\r\n d.distance = a.distance;\r\n d.distanceStr = a.distanceStr;\r\n d.distanceUnit = a.distanceUnit;\r\n d.dob = a.dob;\r\n d.email = a.email;\r\n d.eyes = a.eyes;\r\n d.ethnicity = a.ethnicity;\r\n d.gender = a.gender;\r\n d.hair = a.hair;\r\n d.heading = a.heading;\r\n d.heartbeatTime = a.heartbeatTime;\r\n d.highestEducation = a.highestEducation;\r\n d.height = a.height;\r\n d.image = a.image;\r\n d.isOnline = a.isOnline;\r\n d.isServer = a.isServer;\r\n d.isProfileComplete = a.isProfileComplete;\r\n d.isSuccess = a.isSuccess;\r\n d.link = a.link;\r\n d.longitude = a.longitude;\r\n d.latitude = a.latitude;\r\n d.memberId = a.memberId;\r\n d.message = a.message;\r\n d.name = a.name;\r\n d.neighborhood = a.neighborhood;\r\n d.nonce = a.nonce;\r\n d.pagedProfilePics = a.pagedProfilePics;\r\n d.photoId = a.photoId;\r\n d.photoBnId = a.photoBnId;\r\n d.position = a.position;\r\n d.primaryPhotoBnId = a.primaryPhotoBnId;\r\n d.profileId = a.profileId;\r\n d.profileName = a.profileName;\r\n d.profilePics = a.profilePics;\r\n d.regionCode = a.regionCode;\r\n d.relationshipStatus = a.relationshipStatus;\r\n d.religion = a.religion;\r\n d.sexuality = a.sexuality;\r\n d.signedInUserId = a.signedInUserId;\r\n d.signedInUserKey = a.signedInUserKey;\r\n d.sitUserId = a.sitUserId;\r\n d.sitUserKey = a.sitUserKey;\r\n d.SITUserId = a.sitUserId;\r\n d.SITUserKey = a.sitUserKey;\r\n d.smokingStatus = a.smokingStatus;\r\n d.unit = a.unit;\r\n d.weight = a.weight;\r\n return d;\r\n }\r\n }\r\n// ---------------------------------------\r\n copyIfExists (a : ProfileInfo) {\r\n this.age = a.age > 0 ? a.age : this.age;\r\n this.aBstract = a.aBstract?.length > 0 ? a.aBstract: this.aBstract;\r\n this.away = a.away?.length > 0 ? a.away : this.away\r\n this.box = a.box?.length > 0 ? a.box : this.box;\r\n this.city = a.city?.length > 0 ? a.city : this.city;\r\n this.contentId = a.contentId > 0 ? a.contentId : this.contentId;\r\n this.contents = a.contents?.length > 0 ? a.contents : this.contents;\r\n this.countryCode = a.countryCode?.length > 0 ? a.countryCode : this.countryCode\r\n this.cryptUserKey = a.cryptUserKey?.length > 0 ? a.cryptUserKey: this.cryptUserKey;\r\n this.cutUncut = a.cutUncut?.length > 0 ? a.cutUncut : this.cutUncut\r\n this.dickSize = a.dickSize?.length > 0 ? a.dickSize : this.dickSize;\r\n this.distance = a.distance > 0 ? a.distance : this.distance;\r\n this.distanceStr = a.distanceStr?.length > 0 ? a.distanceStr : this.distanceStr;\r\n this.distanceUnit = a.distanceUnit !== null ? a.distanceUnit : this.distanceUnit;\r\n this.dob = a.dob?.length > 0 ? a.dob : this.dob;\r\n this.email = a.email?.length > 0 ? a.email : this.email;\r\n this.eyes = a.eyes?.length > 0 ? a.eyes : this.eyes;\r\n this.ethnicity = a.ethnicity?.length > 0 ? a.ethnicity : this.ethnicity;\r\n this.hair = a.hair?.length > 0 ? a.hair : this.hair;\r\n this.heartbeatTime = a.heartbeatTime?.length > 0 ? a.heartbeatTime : this.heartbeatTime;\r\n this.highestEducation = a.highestEducation?.length > 0 ? a.highestEducation : this.highestEducation;\r\n this.height = a.height > 0 ? a.height : this.height;\r\n this.image = a.image?.length > 0 ? a.image : this.image;\r\n this.isOnline = a.isOnline;\r\n this.isServer = a.isServer;\r\n this.isProfileComplete = a.isProfileComplete;\r\n this.isSuccess = a.isSuccess;\r\n this.link = a.link?.length > 0 ? a.link : this.link;\r\n this.longitude = a.longitude;\r\n this.latitude = a.latitude;\r\n this.memberId = a.memberId;\r\n this.message = a.message?.length > 0 ? a.message : this.message;\r\n this.name = a.name?.length > 0 ? a.name : this.name;\r\n this.neighborhood = a.neighborhood?.length > 0 ? a.neighborhood : this.neighborhood;\r\n this.nonce = a.nonce?.length > 0 ? a.nonce : this.nonce;\r\n this.pagedProfilePics = a.pagedProfilePics?.length > 0 ? a.pagedProfilePics : this.pagedProfilePics;\r\n this.photoId = a.photoId;\r\n this.photoBnId = a.photoBnId;\r\n this.position = a.position?.length > 0 ? a.position : this.position;\r\n this.primaryPhotoBnId = a.primaryPhotoBnId > 0 ? a.primaryPhotoBnId : this.primaryPhotoBnId;\r\n this.profileId = a.profileId;\r\n this.profileName = a.profileName?.length > 0 ? a.profileName : this.profileName;\r\n this.profilePics = a.profilePics !== null ? a.profilePics : this.profilePics;\r\n this.regionCode = a.regionCode?.length > 0 ? a.regionCode : this.regionCode;\r\n this.relationshipStatus = a.relationshipStatus?.length > 0 ? a.relationshipStatus : this.relationshipStatus;\r\n this.religion = a.religion?.length > 0 ? a.religion : this.religion;\r\n this.sexuality = a.sexuality?.length > 0 ? a.sexuality : this.sexuality;\r\n this.signedInUserId = a.signedInUserId;\r\n this.signedInUserKey = a.signedInUserKey?.length > 0 ? a.signedInUserKey : this.signedInUserKey;\r\n this.sitUserId = a.sitUserId;\r\n this.sitUserKey = a.sitUserKey?.length > 0 ? a.contents : this.sitUserKey\r\n this.SITUserId = a.sitUserId;\r\n this.SITUserKey = a.sitUserKey?.length > 0 ? a.sitUserKey : this.SITUserKey;\r\n this.smokingStatus = a.smokingStatus?.length > 0 ? a.smokingStatus : this.smokingStatus;\r\n this.unit = a.unit?.length > 0 ? a.unit : this.unit;\r\n this.weight = a.weight;\r\n }\r\n}\r\n","import { Dictionary } from 'dictionaryjs';\r\n// import * as Collections from 'typescript-collections';\r\nimport { ProfilePicsInterface } from '../../interfaces/modelInterfaces/profilePics.model.interface';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../../services/staticServices/stringServiceStatic.service';\r\nimport { BoxNonceEntity } from '../boxNonce/boxNonceEntity.model';\r\nimport { Photo } from '../common/photo.model';\r\nimport { PhotoBn } from '../common/photoBn.model';\r\nimport { KV } from '../keyValue/kv.model';\r\nimport { KvAny } from '../keyValue/kvAny.model';\r\nimport { KvMemberActivityGlyph } from '../keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../keyValue/kvPhoto.model';\r\nimport { ProfileImage } from './profileImage.model';\r\n// BSTreeKV<{order: number}, {order: number, data: string}>\r\nexport class ProfilePics implements ProfilePicsInterface {\r\n public arrKv: KV[] = [];\r\n public arrKvAny: KvAny[] = [];\r\n public cryptUserKey = '';\r\n public date = '';\r\n public entityName = '';\r\n // will most likely contain modified data depending on for example, Locking/Unlocking activities or isUnlocked\r\n // public filteredKvPhotoBST: BSTreeKV<{ order: number}, { order: number; data: KvPhoto}> = new BSTreeKV<{ order: number}, { order: number; data: KvPhoto}>();\r\n public filteredKvPhotoDictionary: Dictionary = new Dictionary();\r\n public filteredKvPhotoArr : KvPhoto[] = [];\r\n // public filteredKvPhotoDictionary : Dictionary = new Dictionary();\r\n public unFilteredKvPhotoArr : KvPhoto[] = [];\r\n public unFilteredKvPhotoMap : Map = new Map(); // !!! intend to deprecate !!!\r\n public unFilteredKvPhotoDictionary : Dictionary = new Dictionary();\r\n /*\r\n * Note: this is just a dummy variable, which should be disrgarded, and not used.\r\n * Note: should contain server-send-data that will not be changed unless acted duing PhotoMgmtActivities.\r\n */\r\n public profileImageDictionary : Dictionary = new Dictionary();\r\n public profilePhotoDictionary : Dictionary = new Dictionary();\r\n // --------------------------------------------------------------\r\n public id = 0;\r\n public isPhotoUploadSuccessful = false;\r\n public images: string[] = [];\r\n public model !: any[];\r\n public pagedProfilePics: string[] = [];\r\n public pagedGlyphArr : KvMemberActivityGlyph[] = [];\r\n // will most likely contain modified data depending on for example, Locking/Unlocking activities or isUnlocked\r\n public pagedKvPhotoArr : KvPhoto[] = [];\r\n public primaryKvPhoto : KvPhoto = new KvPhoto();\r\n public profilePhotoBnArr : PhotoBn[] = [];\r\n public profileImageArr: ProfileImage[] = [];\r\n public profileImageBnArr: BoxNonceEntity[] = [];\r\n public profileGlyphArr : KvMemberActivityGlyph[] = [];\r\n public profileKvPhotoArr: KvPhoto[] = [];\r\n\r\n /*\r\n * Note: should contain server-send-data that will not be changed unless acted duing PhotoMgmtActivities.\r\n * public profileImageBST: Collections.BSTreeKV<{ order: number }, { order: number, data: ProfileImage }> =\r\n * new Collections.BSTreeKV<{ order: number }, { order: number, data: ProfileImage }>();\r\n * public profileGlyphBST: Collections.BSTreeKV<{ order: number }, { order: number, data: KvGlyph }> =\r\n * new Collections.BSTreeKV<{ order: number }, { order: number, data: KvGlyph }>();\r\n * public profileKvPhotoBST: Collections.BSTreeKV<{ order: number }, { order: number, data: KvPhoto }> =\r\n * new Collections.BSTreeKV<{ order: number }, { order: number, data: KvPhoto }>();\r\n */\r\n\r\n /*\r\n * Note: should contain server-send-data that will not be changed unless acted duing PhotoMgmtActivities.\r\n * public profileImageDictionary: Collections.Dictionary =\r\n * new Collections.Dictionary ();\r\n * public profileGlyphDictionary: Collections.Dictionary =\r\n * new Collections.Dictionary();\r\n * public profileKvPhotoDictionary: Collections.Dictionary =\r\n * new Collections.Dictionary();\r\n */\r\n\r\n public profileId = 0;\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public unsalted: any;\r\n\r\n constructor () { }\r\n // ---------------------------------------------------------------\r\n\r\n public compareNumbers (a : any, b : any) {\r\n return a - b;\r\n }\r\n public sort(): any {\r\n return (a: any, b: any) => {\r\n if (a && a.id && b && b.id) {\r\n return a.id - b.id; // sort it in ascending order\r\n }\r\n return a.localeCompare(b);\r\n };\r\n }\r\n // ---------------------------------------------------------------\r\n public isModelKvPhotoArraysEmpty (pPics: ProfilePics) : boolean {\r\n let result = true;\r\n if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr) && pPics.filteredKvPhotoArr.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr) && pPics.unFilteredKvPhotoArr.length > 0))\r\n {\r\n result = false;\r\n }\r\n\r\n // debugger;\r\n return result;\r\n }\r\n // ---------------------------------------------------------------\r\n public isKvPhotoDictionariesEmpty (pPics:ProfilePics) : boolean {\r\n let result = true;\r\n if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoDictionary) && pPics.filteredKvPhotoDictionary?.values?.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoDictionary) && pPics.unFilteredKvPhotoDictionary?.values?.length > 0)) {\r\n result = false;\r\n }\r\n\r\n // debugger;\r\n return result;\r\n }\r\n // ---------------------------------------------------------------\r\n public getIndexOfProfileImageInArr ( pImage: ProfileImage ): number\r\n {\r\n // debugger;\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profileImageArr ) && this.profileImageArr.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pImage ) && pImage.photoId > 0 )\r\n {\r\n for ( let i = 0; i < this.profileImageBnArr.length; i++ )\r\n {\r\n // TODO: change the condition to find this bn, may be by photoId alone or with sitUserId\r\n if ( this.profileImageArr[ i ].photoId === pImage.photoId && this.profileImageArr[ i ].sitUserId === pImage.sitUserId )\r\n {\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n public getIndexOfProfileImageBnInArr ( bn: BoxNonceEntity ): number\r\n {\r\n // debugger;\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profileImageBnArr ) && this.profileImageBnArr.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( bn ) && bn.sitUserId > 0 )\r\n {\r\n for ( let i = 0; i < this.profileImageBnArr.length; i++ )\r\n {\r\n // TODO: change the condition to find this bn, may be by photoId or bnId\r\n if ( this.profileImageBnArr[ i ].id === bn.id && this.profileImageBnArr[ i ].sitUserId === bn.sitUserId && this.profileImageBnArr[ i ].entityName === bn.entityName )\r\n {\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: array.splice(index, howmany, item1, ....., itemX)\r\n //\r\n // The first argument specifies the location at which to begin adding or removing elements.\r\n // The second argument specifies the number of elements to remove.;\r\n // The third and subsequent arguments are optional; they specify elements to be added to the array.\r\n // ---------------------------------------------------------------\r\n public updateProfileImageBnInArr ( bn: BoxNonceEntity ): void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( bn ) && bn.sitUserId > 0 )\r\n {\r\n let index = this.getIndexOfProfileImageBnInArr( bn );\r\n if ( index === -1 )\r\n {\r\n this.profileImageBnArr.push( bn );\r\n }\r\n else\r\n {\r\n this.profileImageBnArr.splice(index, 1, bn);\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public updateProfileImageInArr ( pImage: ProfileImage ): void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pImage ) && pImage.photoId > 0 )\r\n {\r\n let index = this.getIndexOfProfileImageInArr( pImage );\r\n if ( index === -1 )\r\n {\r\n this.profileImageArr.push( pImage );\r\n }\r\n else\r\n {\r\n this.profileImageArr.splice( index, 1, pImage );\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public setKvPhoto (id: number, dictionaryName: string, kvp: KvPhoto) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp) && kvp.photoBnId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryName)) {\r\n let kvpd : any;\r\n \r\n switch (dictionaryName) {\r\n case 'filteredKvPhotoDictionary':\r\n kvpd = this.filteredKvPhotoDictionary.set(kvp.photoBnId, kvp);\r\n return JSON.parse(JSON.stringify(this.filteredKvPhotoDictionary));\r\n case 'unFilteredKvPhotoDictionary':\r\n kvpd = this.unFilteredKvPhotoDictionary.set(kvp.photoBnId, kvp);\r\n debugger;\r\n return JSON.parse(JSON.stringify(this.unFilteredKvPhotoDictionary));\r\n\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public getKvPhoto (photoBnId : number, dictionaryName : string) : any {\r\n if (photoBnId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryName)) {\r\n let kvp : KvPhoto = null;\r\n switch (dictionaryName) {\r\n case 'filteredKvPhotoDictionary':\r\n kvp = this.filteredKvPhotoDictionary.get(photoBnId);\r\n debugger;\r\n return kvp;\r\n case 'unFilteredKvPhotoDictionary':\r\n kvp = this.unFilteredKvPhotoDictionary.get(photoBnId);\r\n return kvp;\r\n\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public populateDictionaries (): void {\r\n if (!StringServiceStatic.isNullOrEmpty(this.filteredKvPhotoArr) && this.filteredKvPhotoArr.length > 0) {\r\n this.filteredKvPhotoArr.forEach(e => {\r\n this.filteredKvPhotoDictionary.set(e.photoBnId, e);\r\n })\r\n }\r\n if (!StringServiceStatic.isNullOrEmpty(this.unFilteredKvPhotoArr) && this.unFilteredKvPhotoArr.length > 0) {\r\n this.unFilteredKvPhotoArr.forEach(e => {\r\n this.unFilteredKvPhotoDictionary.set(e.photoBnId, e);\r\n })\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../../services/staticServices/stringServiceStatic.service';\r\nimport { SitUser } from '../account/sitUser.model';\r\nimport { Heartbeat } from '../common/heartbeat.model';\r\nimport { Person } from '../common/person';\r\nimport { Unit } from '../common/unit.model';\r\nimport { KvPhoto } from '../keyValue/kvPhoto.model';\r\nimport { OffOn } from '../offOn/offOn.model';\r\nimport { Profile } from './profile.model';\r\nimport { ProfileImage } from './profileImage.model';\r\nimport { ProfileInfo } from './profileInfo.model';\r\n\r\n// --------------------------------------------------------------------------------------------------------------------\r\n// Note: ProfileTile model should indicate all about a member's Profile status in a single tile which includes the following:\r\n// 1. ProfileName\r\n// 2. Profile-Pic/Image\r\n// 3. Online/Offline and away status via OffOn Model\r\n// 4. Distance from the signedInUser\r\n// 5. Other profile-matrix such as age/gender/sexuality/position/city/state-province/\r\n// --------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\nexport class ProfileTile {\r\n public age = 0;\r\n public beginIndex = 0;\r\n public bodyhair = '';\r\n public built = '';\r\n public city = '';\r\n public cutuncut = '';\r\n public cryptUserKey = '';\r\n public countryCode = '';\r\n public date = '';\r\n public dicksize = '';\r\n public distance = 0;\r\n public distanceStr = '';\r\n public distanceUnit: Unit = new Unit();\r\n public dob = '';\r\n public ethnicity = '';\r\n public eyes = '';\r\n public gender = '';\r\n public hair = '';\r\n public heading = '';\r\n public heartbeat : Heartbeat = new Heartbeat();\r\n public heartbeatTime = 0;\r\n public height = '';\r\n public id = '';\r\n public isImageRendered = false;\r\n public isIndexDbTile = false; // to indicate whether the model data was from indexedDb or not\r\n public isOnline = false;\r\n public isPremiumMember = false;\r\n public isPrimaryPhoto = false; // TODO: change the back-end\r\n public isTileSetupComplete = false;\r\n public imageWithoutUrl = '';\r\n public index = -0;\r\n public jsDateForCs = '';\r\n public kvPhoto: KvPhoto = new KvPhoto();\r\n public link = '';\r\n public latitude = '';\r\n public longitude = '';\r\n public neighborhood = '';\r\n public offOn : OffOn = new OffOn();\r\n public pElemId = '';\r\n public photoId = 0;\r\n public photoBnId = 0;\r\n public position = '';\r\n public primaryImage = '';\r\n public privacy = ''; // TODO: change the back-end\r\n public profileId = 0;\r\n public profileName = '';\r\n public pTileElement : any;\r\n public regionCode = '';\r\n public sexuality = '';\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n public smokingStatus = '';\r\n public source = '';\r\n public unit = 'meter';\r\n public weight = 0;\r\n\r\n constructor ()\r\n {\r\n /*this.source = this.sitUserId.toString();*/\r\n }\r\n // ------------------------------------------------------------\r\n copyToKvPhoto (kvPhoto: KvPhoto, pTile: ProfileTile) : KvPhoto {\r\n let a : KvPhoto = new KvPhoto();\r\n // debugger;\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n a = new KvPhoto().copySourceToDestination(a, kvPhoto);\r\n }\r\n\r\n a.date = pTile.date;\r\n a.elemId = pTile.pElemId;\r\n a.entityName = \"ProfileTile\"\r\n a.glyphName = pTile.isPrimaryPhoto ? 'Primary' : ''; // Note: or some other value\r\n a.isPrimary = pTile.isPrimaryPhoto;\r\n a.isPrivate = pTile.privacy?.toLowerCase().indexOf('public') !== -1 ? false : true;\r\n a.key = pTile.isPrimaryPhoto ? 'Primary' : pTile.sitUserId.toString(); // Note: or some other value\r\n a.photoId = pTile.photoId;\r\n a.photoBnId = pTile.photoBnId;\r\n a.privacy = pTile.isPrimaryPhoto ? 'Public' : '';\r\n a.profileId = pTile.profileId;\r\n a.signedInUserId = pTile.signedInUserId;\r\n a.sitUserId = pTile.sitUserId;\r\n a.sitUserKey = pTile.sitUserKey;\r\n a.sourceType = pTile.source,\r\n a.value = a.pic = a.image = pTile.primaryImage;\r\n\r\n a = new ProfileTile().setupPicImageAndValueOfKvPhoto(a);\r\n return a;\r\n }\r\n // --------------------------------------------------------\r\n\r\n copy (sourceTile : ProfileTile) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile)) {\r\n \r\n this.age = sourceTile.age;\r\n this.beginIndex = sourceTile.beginIndex; \r\n this.bodyhair = sourceTile.bodyhair;\r\n this.built = sourceTile.built; \r\n \r\n this.city = sourceTile.city;\r\n this.cutuncut = sourceTile.cutuncut; \r\n this.countryCode = sourceTile.countryCode;\r\n \r\n this.date = sourceTile.date;\r\n this.dicksize = sourceTile.dicksize; \r\n this.distance = sourceTile.distance; \r\n this.distanceStr = sourceTile.distanceStr;\r\n this.distanceUnit = new Unit().copySourceToDestination(this.distanceUnit, sourceTile.distanceUnit);\r\n this.dob = sourceTile.dob;\r\n this.ethnicity = sourceTile.ethnicity;\r\n this.eyes = sourceTile.eyes;\r\n \r\n this.gender = sourceTile.gender;\r\n this.hair = sourceTile.hair; \r\n this.heading = sourceTile.heading;\r\n this.height = sourceTile.height;\r\n this.heartbeatTime = sourceTile.heartbeatTime;\r\n \r\n this.id = sourceTile.id;\r\n \r\n this.primaryImage = sourceTile.primaryImage;\r\n\r\n this.index = sourceTile.index;\r\n\r\n this.isImageRendered = sourceTile.isImageRendered;\r\n\r\n this.isOnline = sourceTile.isOnline;// sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n\r\n this.isPremiumMember = sourceTile.isPremiumMember;\r\n\r\n this.isTileSetupComplete = sourceTile.isTileSetupComplete;\r\n \r\n this.latitude = sourceTile.latitude;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.link) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.link)) {\r\n this.link = sourceTile.link;\r\n } else {\r\n this.link = 'view/';\r\n }\r\n this.longitude = sourceTile.longitude;\r\n\r\n this.neighborhood = sourceTile.neighborhood;\r\n\r\n this.pElemId = sourceTile.pElemId;\r\n\r\n this.position = sourceTile.position;\r\n\r\n this.privacy = sourceTile.privacy;\r\n\r\n this.profileId = sourceTile.profileId;\r\n\r\n this.profileName = sourceTile.profileName;\r\n\r\n this.pTileElement = sourceTile.pTileElement;\r\n\r\n this.regionCode = sourceTile.regionCode;\r\n\r\n this.sexuality = sourceTile.sexuality;\r\n\r\n this.sitUserId = sourceTile.sitUserId;\r\n\r\n this.signedInUserId = sourceTile.signedInUserId;\r\n\r\n this.sitUserKey = sourceTile.sitUserKey;\r\n\r\n this.signedInUserId = sourceTile.signedInUserId;\r\n\r\n this.signedInUserKey = sourceTile.signedInUserKey;\r\n\r\n this.unit = sourceTile.unit;\r\n this.weight = sourceTile.weight;\r\n\r\n // must appear at the end but before CopyToKvPhoto() to capture ProfileTile's data\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeat)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.typeCheck(sourceTile.heartbeat) == 'object' && sourceTile.heartbeat instanceof Heartbeat) {\r\n // debugger;\r\n if (sourceTile.heartbeat.heartbeatTime > 0) {\r\n // debugger;\r\n this.heartbeat = this.heartbeat.copy(sourceTile.heartbeat);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.heartbeat = sourceTile.heartbeat\r\n }\r\n }\r\n // must appear at the end to capture ProfileTile's data for KvPhoto\r\n this.copyToKvPhoto(sourceTile.kvPhoto, sourceTile);\r\n }\r\n return this;\r\n }\r\n // --------------------------------------------------------\r\n\r\n public copySourceToDestination (destinationTile: ProfileTile, sourceTile : ProfileTile) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationTile)) {\r\n destinationTile = new ProfileTile();\r\n\t\t\t}\r\n destinationTile.age = sourceTile.age;\r\n destinationTile.beginIndex = sourceTile.beginIndex;\r\n destinationTile.bodyhair = sourceTile.bodyhair;\r\n destinationTile.built = sourceTile.built;\r\n\r\n destinationTile.city = sourceTile.city;\r\n destinationTile.cutuncut = sourceTile.cutuncut;\r\n destinationTile.countryCode = sourceTile.countryCode;\r\n\r\n destinationTile.date = sourceTile.date;\r\n destinationTile.dicksize = sourceTile.dicksize;\r\n destinationTile.distance = sourceTile.distance;\r\n destinationTile.distanceStr = sourceTile.distanceStr;\r\n destinationTile.distanceUnit = new ProfileTile().distanceUnit?.copySourceToDestination(destinationTile.distanceUnit, sourceTile.distanceUnit);\r\n destinationTile.dob = sourceTile.dob;\r\n destinationTile.ethnicity = sourceTile.ethnicity;\r\n destinationTile.eyes = sourceTile.eyes;\r\n\r\n destinationTile.gender = sourceTile.gender;\r\n destinationTile.hair = sourceTile.hair;\r\n destinationTile.heading = sourceTile.heading;\r\n destinationTile.height = sourceTile.height;\r\n\r\n\r\n destinationTile.city = sourceTile.city;\r\n\r\n destinationTile.countryCode = sourceTile.countryCode;\r\n\r\n destinationTile.date = sourceTile.date;\r\n\r\n destinationTile.distance = sourceTile.distance;\r\n\r\n destinationTile.distanceStr = sourceTile.distanceStr;\r\n\r\n destinationTile.dob = sourceTile.dob;\r\n\r\n destinationTile.gender = sourceTile.gender;\r\n\r\n destinationTile.heading = sourceTile.heading;\r\n\r\n destinationTile.heartbeatTime = sourceTile.heartbeatTime;\r\n\r\n destinationTile.id = sourceTile.id;\r\n\r\n destinationTile.primaryImage = sourceTile.primaryImage;\r\n\r\n destinationTile.index = sourceTile.index;\r\n\r\n destinationTile.isImageRendered = sourceTile.isImageRendered;\r\n\r\n destinationTile.isOnline = sourceTile.isOnline;// sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n\r\n destinationTile.isPremiumMember = sourceTile.isPremiumMember;\r\n\r\n destinationTile.isTileSetupComplete = sourceTile.isTileSetupComplete;\r\n\r\n destinationTile.latitude = sourceTile.latitude;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.link) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationTile.link)) {\r\n destinationTile.link = sourceTile.link;\r\n } else {\r\n destinationTile.link = 'view/';\r\n }\r\n destinationTile.longitude = sourceTile.longitude;\r\n\r\n destinationTile.neighborhood = sourceTile.neighborhood;\r\n\r\n destinationTile.pElemId = sourceTile.pElemId;\r\n\r\n destinationTile.position = sourceTile.position;\r\n\r\n destinationTile.privacy = sourceTile.privacy;\r\n\r\n destinationTile.profileId = sourceTile.profileId;\r\n\r\n destinationTile.profileName = sourceTile.profileName;\r\n\r\n destinationTile.pTileElement = sourceTile.pTileElement;\r\n\r\n destinationTile.regionCode = sourceTile.regionCode;\r\n\r\n destinationTile.sexuality = sourceTile.sexuality;\r\n\r\n destinationTile.sitUserId = sourceTile.sitUserId;\r\n\r\n destinationTile.signedInUserId = sourceTile.signedInUserId;\r\n\r\n destinationTile.sitUserKey = sourceTile.sitUserKey;\r\n\r\n destinationTile.signedInUserId = sourceTile.signedInUserId;\r\n\r\n destinationTile.signedInUserKey = sourceTile.signedInUserKey;\r\n\r\n destinationTile.unit = sourceTile.unit;\r\n destinationTile.weight = sourceTile.weight;\r\n\r\n // must appear at the end but before CopyToKvPhoto() to capture ProfileTile's data\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeat)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.typeCheck(sourceTile.heartbeat) == 'object' && sourceTile.heartbeat instanceof Heartbeat) {\r\n // debugger;\r\n if (sourceTile.heartbeat.heartbeatTime > 0) {\r\n // debugger;\r\n destinationTile.heartbeat = destinationTile.heartbeat.copySourceToDestination(destinationTile.heartbeat, sourceTile.heartbeat);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n destinationTile.heartbeat = sourceTile.heartbeat\r\n }\r\n }\r\n // must appear at the end to capture ProfileTile's data for KvPhoto\r\n destinationTile.kvPhoto = new ProfileTile().kvPhoto.copySourceToDestination(destinationTile.kvPhoto, sourceTile.kvPhoto);\r\n }\r\n return destinationTile;\r\n }\r\n // --------------------------------------------------------\r\n\r\n public copySourceIfExistsToDestination (destinationTile : ProfileTile, sourceTile : ProfileTile) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationTile)) {\r\n destinationTile = new ProfileTile();\r\n }\r\n destinationTile.age = sourceTile.age > 0 ? sourceTile.age : destinationTile.age;\r\n\r\n destinationTile.beginIndex = sourceTile.beginIndex > 0 ? sourceTile.beginIndex : destinationTile.beginIndex;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.bodyhair)) {\r\n destinationTile.bodyhair = sourceTile.bodyhair;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.built)) {\r\n destinationTile.built = sourceTile.built;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.city)) {\r\n destinationTile.city = sourceTile.city;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.countryCode)) {\r\n destinationTile.countryCode = sourceTile.countryCode;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.cutuncut)) {\r\n destinationTile.cutuncut = sourceTile.cutuncut;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.date)) {\r\n destinationTile.date = sourceTile.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.dicksize)) {\r\n destinationTile.dicksize = sourceTile.dicksize;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distance)) {\r\n destinationTile.distance = sourceTile.distance;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distanceStr)) {\r\n destinationTile.distanceStr = sourceTile.distanceStr;\r\n }\r\n\r\n destinationTile.distanceUnit = new ProfileTile().distanceUnit?.copySourceToDestination(destinationTile.distanceUnit, sourceTile.distanceUnit);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.dob)) {\r\n destinationTile.dob = sourceTile.dob;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.eyes)) {\r\n destinationTile.eyes = sourceTile.eyes;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.ethnicity)) {\r\n destinationTile.ethnicity = sourceTile.ethnicity;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.gender)) {\r\n destinationTile.gender = sourceTile.gender;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.hair)) {\r\n destinationTile.hair = sourceTile.hair;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heading)) {\r\n destinationTile.heading = sourceTile.heading;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeatTime)) {\r\n destinationTile.heartbeatTime = sourceTile.heartbeatTime;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.height)) {\r\n destinationTile.height = sourceTile.height;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.id)) {\r\n destinationTile.id = sourceTile.id;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.primaryImage)) {\r\n destinationTile.primaryImage = sourceTile.primaryImage;\r\n }\r\n\r\n destinationTile.index = sourceTile.index > -1 ? sourceTile.index : destinationTile.index;\r\n\r\n destinationTile.isImageRendered = sourceTile.isImageRendered;\r\n\r\n destinationTile.isOnline = sourceTile.isOnline;// sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n\r\n destinationTile.isPremiumMember = sourceTile.isPremiumMember;\r\n\r\n destinationTile.isTileSetupComplete = sourceTile.isTileSetupComplete;\r\n\r\n destinationTile.latitude = sourceTile.latitude.length > 0 ? sourceTile.latitude : destinationTile.latitude;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.link) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationTile.link)) {\r\n destinationTile.link = sourceTile.link;\r\n } else {\r\n destinationTile.link = 'view/';\r\n }\r\n destinationTile.longitude = sourceTile.longitude.length > 0 ? sourceTile.longitude: destinationTile.longitude;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.neighborhood)) {\r\n destinationTile.neighborhood = sourceTile.neighborhood;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.pElemId)) {\r\n destinationTile.pElemId = sourceTile.pElemId;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.position)) {\r\n destinationTile.position = sourceTile.position;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.privacy)) {\r\n destinationTile.privacy = sourceTile.privacy;\r\n }\r\n\r\n destinationTile.profileId = sourceTile.profileId > 0 ? sourceTile.profileId : destinationTile.profileId;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.profileName)) {\r\n destinationTile.profileName = sourceTile.profileName;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.pTileElement)) {\r\n destinationTile.pTileElement = sourceTile.pTileElement;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.regionCode)) {\r\n destinationTile.regionCode = sourceTile.regionCode;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.sexuality)) {\r\n destinationTile.sexuality = sourceTile.sexuality;\r\n }\r\n\r\n destinationTile.sitUserId = sourceTile.sitUserId > 0 ? sourceTile.sitUserId : destinationTile.sitUserId;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.sitUserKey)) {\r\n destinationTile.sitUserKey = sourceTile.sitUserKey;\r\n }\r\n\r\n destinationTile.signedInUserId = sourceTile.signedInUserId > 0 ? sourceTile.signedInUserId: destinationTile.signedInUserId;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.signedInUserKey)) {\r\n destinationTile.signedInUserKey = sourceTile.signedInUserKey;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.unit)) {\r\n destinationTile.unit = sourceTile.unit;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.weight)) {\r\n destinationTile.weight = sourceTile.weight;\r\n }\r\n\r\n // must appear at the end but before CopyToKvPhoto() to capture ProfileTile's data\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeat)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.typeCheck(sourceTile.heartbeat) == 'object' && sourceTile.heartbeat instanceof Heartbeat) {\r\n // debugger;\r\n if (sourceTile.heartbeat.heartbeatTime > 0) {\r\n // debugger;\r\n destinationTile.heartbeat = destinationTile.heartbeat.copySourceToDestination(destinationTile.heartbeat, sourceTile.heartbeat);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n destinationTile.heartbeat = sourceTile.heartbeat\r\n }\r\n }\r\n // must appear at the end to capture ProfileTile's data for KvPhoto\r\n destinationTile.kvPhoto = new ProfileTile().kvPhoto.copySourceToDestination(destinationTile.kvPhoto, sourceTile.kvPhoto);\r\n }\r\n return destinationTile;\r\n }\r\n // --------------------------------------------------------\r\n // Note: this is incomplete!!\r\n // --------------------------------------------------------\r\n copyIfExists (sourceTile : ProfileTile) : ProfileTile {\r\n let a : ProfileTile = new ProfileTile();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile)) {\r\n if (sourceTile.age > 0) {\r\n a.age = sourceTile.age;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.offOn)) {\r\n a.offOn = a.offOn.copy(sourceTile.offOn);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distanceUnit)) {\r\n a.distanceUnit = new Unit().copySourceToDestination(a.distanceUnit, sourceTile.distanceUnit);\r\n }\r\n\r\n if (sourceTile.beginIndex && sourceTile.beginIndex > 0) {\r\n a.beginIndex = sourceTile.beginIndex;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.city) && sourceTile.city.length > 0) {\r\n a.city = sourceTile.city;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.countryCode) && sourceTile.countryCode.length > 0) {\r\n a.countryCode = sourceTile.countryCode;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.date) && sourceTile.date.length > 0) {\r\n a.date = sourceTile.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distance)) {\r\n a.distance = sourceTile.distance;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distanceStr)) {\r\n a.distanceStr = sourceTile.distanceStr;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distanceUnit)) {\r\n a.distanceUnit = sourceTile.distanceUnit;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.dob) && sourceTile.dob != null) {\r\n a.dob = sourceTile.dob;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.pElemId)) {\r\n a.pElemId = sourceTile.pElemId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.pTileElement)) {\r\n a.pTileElement = sourceTile.pTileElement;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.gender) && sourceTile.gender.length > 0) {\r\n a.gender = sourceTile.gender;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heading) && sourceTile.heading.length > 0) {\r\n a.heading = sourceTile.heading;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeatTime) && sourceTile.heartbeatTime > 0 )\r\n {\r\n a.heartbeatTime = sourceTile.heartbeatTime;\r\n } \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.id) && sourceTile.id.length > 0) {\r\n a.id = sourceTile.id;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.primaryImage) && sourceTile.primaryImage.length > 0) {\r\n a.primaryImage = sourceTile.primaryImage;\r\n }\r\n if (sourceTile.index > -1) {\r\n a.index = sourceTile.index;\r\n }\r\n\r\n this.isImageRendered = sourceTile.isImageRendered;\r\n //if (sourceTile.isImageRendered) {\r\n // this.isImageRendered = sourceTile.isImageRendered.toString().toLowerCase().indexOf('true') !== -1;\r\n //}\r\n\r\n a.isOnline = sourceTile.isOnline;\r\n //if (sourceTile.isOnline) {\r\n // this.isOnline = sourceTile.isOnline;// sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n //}\r\n\r\n a.isPremiumMember = sourceTile.isPremiumMember;\r\n //if (sourceTile.isPremiumMember) {\r\n // this.isPremiumMember = sourceTile.isPremiumMember.toString().toLowerCase().indexOf('true') !== -1;\r\n //}\r\n\r\n a.isTileSetupComplete = sourceTile.isTileSetupComplete;\r\n //if (sourceTile.isTileSetupComplete) {\r\n // a.isTileSetupComplete = sourceTile.isTileSetupComplete.toString().toLowerCase().indexOf('true') !== -1;\r\n //}\r\n \r\n\r\n if (sourceTile.latitude != null && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.latitude)) {\r\n a.latitude = sourceTile.latitude;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.link) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.link)) {\r\n a.link = sourceTile.link;\r\n } else {\r\n a.link = 'view/';\r\n }\r\n\r\n if (sourceTile.longitude != null && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.longitude)) {\r\n a.longitude = sourceTile.longitude;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.neighborhood) && sourceTile.neighborhood.length > 0) {\r\n a.neighborhood = sourceTile.neighborhood;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.pElemId) && sourceTile.pElemId.length > 0) {\r\n a.pElemId = sourceTile.pElemId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.position) && sourceTile.position.length > 0 && this.position != null) {\r\n a.position = sourceTile.position;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.profileId) && sourceTile.profileId > 0) {\r\n a.profileId = sourceTile.profileId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.profileName) && sourceTile.profileName.length > 0) {\r\n a.profileName = sourceTile.profileName;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.pTileElement)) {\r\n a.pTileElement = sourceTile.pTileElement;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.regionCode) && sourceTile.regionCode.length > 0) {\r\n a.regionCode = sourceTile.regionCode;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.sexuality) && sourceTile.sexuality.length > 0) {\r\n a.sexuality = sourceTile.sexuality;\r\n }\r\n\r\n if (sourceTile.sitUserId != null && sourceTile.sitUserId > 0) {\r\n a.sitUserId = sourceTile.sitUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.signedInUserId) && sourceTile.signedInUserId > 0) {\r\n a.signedInUserId = sourceTile.signedInUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.sitUserKey)) {\r\n a.sitUserKey = sourceTile.sitUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.signedInUserId) && sourceTile.signedInUserId > 0) {\r\n a.signedInUserId = sourceTile.signedInUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.signedInUserKey)) {\r\n this.signedInUserKey = sourceTile.signedInUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.unit)) {\r\n a.unit = sourceTile.unit;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.weight)) {\r\n a.weight = sourceTile.weight;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeat)) {\r\n if (typeof sourceTile.heartbeat == 'object') {\r\n if (sourceTile.heartbeat.heartbeatTime > 0) {\r\n a.heartbeat = a.heartbeat.copy(sourceTile.heartbeat);\r\n }\r\n }\r\n else if (typeof sourceTile.heartbeat == 'number') {\r\n a.heartbeat = sourceTile.heartbeat\r\n }\r\n }\r\n\r\n a.copyToKvPhoto(sourceTile.kvPhoto, sourceTile);\r\n }\r\n return a;\r\n }\r\n // --------------------------------------------------------\r\n copyToProfileInfo (pTile:ProfileTile) : ProfileInfo {\r\n const profileInfo = new ProfileInfo();\r\n\r\n // debugger;\r\n profileInfo.age = pTile.age;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn.away)) {\r\n profileInfo.away = pTile.offOn.away;\r\n }\r\n profileInfo.city = pTile.city;\r\n profileInfo.countryCode = pTile.countryCode;\r\n profileInfo.date = pTile.date;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.distance) && pTile.distance > 0) {\r\n profileInfo.distance = pTile.distance + ' ' + pTile.unit;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn.offOnArr) && pTile.offOn.offOnArr.length > 0) {\r\n profileInfo.distance = pTile.offOn.offOnArr[ 0 ];\r\n }\r\n else {\r\n profileInfo.distance = '0 m';\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfo.distance) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.distanceStr)) {\r\n profileInfo.distance = pTile.distanceStr;\r\n }\r\n profileInfo.dob = pTile.dob;\r\n profileInfo.gender = pTile.gender;\r\n profileInfo.heading = pTile.heading;\r\n\r\n // must appear at the end but before CopyToKvPhoto() to capture ProfileTile's data\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat)) {\r\n // if (FrequentlyUsedFunctionsServiceStatic.typeCheck(pTile.heartbeat) == 'object' && pTile.heartbeat instanceof Heartbeat) {\r\n // // debugger;\r\n // if (pTile.heartbeat.heartbeatTime > 0) {\r\n // // debugger;\r\n // profileInfo.heartbeat = pTile.heartbeat.copy(pTile.heartbeat);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // pTile.heartbeat = this.heartbeat\r\n // }\r\n //}\r\n\r\n // debugger;\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat.prevHeartbeat) ? pTile.heartbeat.prevHeartbeat.toString() : new Date().toLocaleString();\r\n profileInfo.heartbeatTime = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeatTime) ? pTile.heartbeatTime.toString() : \"0\";\r\n // debugger;\r\n\r\n let tPic : any\r\n if (pTile.primaryImage) {\r\n tPic = pTile.primaryImage;\r\n }\r\n else if (pTile.kvPhoto && pTile.kvPhoto.value) {\r\n tPic = pTile.kvPhoto.value;\r\n }\r\n else if (pTile.kvPhoto && pTile.kvPhoto.pic) {\r\n tPic = pTile.kvPhoto.pic;\r\n }\r\n profileInfo.image = tPic;\r\n const pImage = new ProfileImage();\r\n\r\n pImage.image = tPic;\r\n pImage.sitUserId = pTile.sitUserId;\r\n pImage.photoId = pTile.photoId > 0 ? pTile.photoId : !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.kvPhoto) ? pTile.kvPhoto.photoId : 0;\r\n pImage.photoBnId = pTile.photoBnId > 0 ? pTile.photoBnId : !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.kvPhoto) ? pTile.kvPhoto.photoBnId : 0;\r\n if (profileInfo.profilePics && profileInfo.profilePics.profileImageArr) {\r\n profileInfo.profilePics.profileImageArr.push(pImage);\r\n }\r\n // debugger;\r\n profileInfo.latitude = pTile.latitude;\r\n profileInfo.longitude = pTile.longitude;\r\n profileInfo.neighborhood = pTile.neighborhood;\r\n profileInfo.position = pTile.position;\r\n profileInfo.profileId = pTile.profileId;\r\n profileInfo.profileName = pTile.profileName;\r\n profileInfo.regionCode = pTile.regionCode;\r\n profileInfo.sexuality = pTile.sexuality;\r\n profileInfo.sitUserId = pTile.sitUserId;\r\n profileInfo.signedInUserId = pTile.signedInUserId;\r\n profileInfo.sitUserKey = pTile.sitUserKey;\r\n profileInfo.signedInUserKey = pTile.signedInUserKey;\r\n profileInfo.unit = pTile.unit;\r\n\r\n // debugger;\r\n return profileInfo;\r\n }\r\n // --------------------------------------------------------\r\n public copyFromSitUser (sitUser : SitUser, pTile : ProfileTile) : ProfileTile {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)) {\r\n // this.age = sitUser.age;\r\n // this.beginIndex = sourceTile.beginIndex;\r\n // this.bodyhair = sourceTile.bodyhair;\r\n // this.built = sourceTile.built;\r\n\r\n // this.city = sitUser.city;\r\n // this.cutuncut = sourceTile.cutuncut;\r\n // this.countryCode = sourceTile.countryCode;\r\n\r\n pTile.date = sitUser.date;\r\n // this.dicksize = sitUser.dicksize;\r\n // this.distance = sitUser.distance;\r\n // this.distanceStr = sitUser.distanceStr;\r\n // this.distanceUnit = new Unit().copySourceToDestination(this.distanceUnit, sourceTile.distanceUnit);\r\n // this.dob = sitUser.dob;\r\n // this.ethnicity = sourceTile.ethnicity;\r\n // this.eyes = sourceTile.eyes;\r\n\r\n // this.gender = sourceTile.gender;\r\n // this.hair = sitUser.hair;\r\n // this.heading = sitUser.heading;\r\n // this.height = sourceTile.height;\r\n // this.heartbeatTime = sourceTile.heartbeatTime;\r\n\r\n // pTile.id = sitUser.id;\r\n\r\n pTile.primaryImage = sitUser.primaryImage;\r\n\r\n // this.index = sitUser.index;\r\n\r\n // this.isImageRendered = sourceTile.isImageRendered;\r\n\r\n // this.isOnline = sourceTile.isOnline;// sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n\r\n // this.isPremiumMember = sitUser.isPremiumMember;\r\n\r\n // this.isTileSetupComplete = sourceTile.isTileSetupComplete;\r\n\r\n pTile.latitude = sitUser.latitude;\r\n pTile.longitude = sitUser.longitude;\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.link) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.link)) {\r\n // this.link = sourceTile.link;\r\n //} else {\r\n // this.link = 'view/';\r\n //}\r\n\r\n // this.neighborhood = sitUser.neighborhood;\r\n\r\n // this.pElemId = sitUser.pElemId;\r\n\r\n // this.position = sourceTile.position;\r\n\r\n // this.privacy = sitUser.privacy;\r\n\r\n pTile.profileId = sitUser.profileId;\r\n\r\n pTile.profileName = sitUser.profileName;\r\n\r\n // this.pTileElement = sitUser.pTileElement;\r\n\r\n // this.regionCode = sourceTile.regionCode;\r\n\r\n // this.sexuality = sitUser.sexuality;\r\n\r\n pTile.sitUserId = sitUser.sitUserId;\r\n\r\n // this.signedInUserId = sitUser.signedInUserId;\r\n\r\n pTile.sitUserKey = sitUser.sitUserKey;\r\n\r\n // this.signedInUserId = sourceTile.signedInUserId;\r\n\r\n // this.signedInUserKey = sourceTile.signedInUserKey;\r\n\r\n // this.unit = sourceTile.unit;\r\n\r\n // must appear at the end but before CopyToKvPhoto() to capture ProfileTile's data\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeat)) {\r\n // if (FrequentlyUsedFunctionsServiceStatic.typeCheck(sourceTile.heartbeat) == 'object' && sourceTile.heartbeat instanceof Heartbeat) {\r\n // // debugger;\r\n // if (sourceTile.heartbeat.heartbeatTime > 0) {\r\n // // debugger;\r\n // this.heartbeat = this.heartbeat.copy(sourceTile.heartbeat);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.heartbeat = sourceTile.heartbeat\r\n // }\r\n //}\r\n //// must appear at the end to capture ProfileTile's data for KvPhoto\r\n //this.copyToKvPhoto(sourceTile.kvPhoto, sourceTile);\r\n }\r\n return pTile;\r\n }\r\n // --------------------------------------------------------\r\n public copyFromPerson (p : Person, pTile : ProfileTile) : ProfileTile {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n\r\n pTile = new ProfileTile();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p)) {\r\n this.age = p.age;\r\n // this.beginIndex = p.beginIndex;\r\n pTile.bodyhair = p.bodyHair;\r\n pTile.built = p.built;\r\n\r\n // this.city = p.city;\r\n pTile.cutuncut = p.cutUncut;\r\n // this.countryCode = p.countryCode;\r\n\r\n pTile.date = p.date;\r\n pTile.dicksize = p.dickSize;\r\n // this.distance = p.distance;\r\n // this.distanceStr = p.distanceStr;\r\n // this.distanceUnit = new Unit().copySourceToDestination(this.distanceUnit, sourceTile.distanceUnit);\r\n pTile.dob = p.doB;\r\n pTile.ethnicity = p.ethnicity;\r\n pTile.eyes = p.eyes;\r\n\r\n pTile.gender = p.gender;\r\n pTile.hair = p.hair;\r\n // this.heading = p.heading;\r\n pTile.height = p.height;\r\n // this.heartbeatTime = p.heartbeatTime;\r\n\r\n // pTile.id = sitUser.id;\r\n\r\n // pTile.primaryImage = p.primaryImage;\r\n\r\n // this.index = sitUser.index;\r\n\r\n // this.isImageRendered = sourceTile.isImageRendered;\r\n\r\n // this.isOnline = sourceTile.isOnline;// sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n\r\n // this.isPremiumMember = sitUser.isPremiumMember;\r\n\r\n // this.isTileSetupComplete = sourceTile.isTileSetupComplete;\r\n\r\n //pTile.latitude = p.latitude;\r\n //pTile.longitude = p.longitude;\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.link) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.link)) {\r\n // this.link = sourceTile.link;\r\n //} else {\r\n // this.link = 'view/';\r\n //}\r\n\r\n // this.neighborhood = sitUser.neighborhood;\r\n\r\n // this.pElemId = sitUser.pElemId;\r\n\r\n // this.position = p.position;\r\n\r\n // this.privacy = sitUser.privacy;\r\n\r\n //pTile.profileId = sitUser.profileId;\r\n\r\n //pTile.profileName = sitUser.profileName;\r\n\r\n // this.pTileElement = sitUser.pTileElement;\r\n\r\n // this.regionCode = sourceTile.regionCode;\r\n\r\n // this.sexuality = sitUser.sexuality;\r\n\r\n pTile.sitUserId = p.sitUserId;\r\n\r\n // this.signedInUserId = sitUser.signedInUserId;\r\n\r\n pTile.sitUserKey = p.sitUserKey;\r\n\r\n // this.signedInUserId = sourceTile.signedInUserId;\r\n\r\n // this.signedInUserKey = sourceTile.signedInUserKey;\r\n\r\n // this.unit = sourceTile.unit;\r\n\r\n // must appear at the end but before CopyToKvPhoto() to capture ProfileTile's data\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeat)) {\r\n // if (FrequentlyUsedFunctionsServiceStatic.typeCheck(sourceTile.heartbeat) == 'object' && sourceTile.heartbeat instanceof Heartbeat) {\r\n // // debugger;\r\n // if (sourceTile.heartbeat.heartbeatTime > 0) {\r\n // // debugger;\r\n // this.heartbeat = this.heartbeat.copy(sourceTile.heartbeat);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.heartbeat = sourceTile.heartbeat\r\n // }\r\n //}\r\n //// must appear at the end to capture ProfileTile's data for KvPhoto\r\n //this.copyToKvPhoto(sourceTile.kvPhoto, sourceTile);\r\n }\r\n return pTile;\r\n }\r\n // --------------------------------------------------------\r\n public copyFromProfile (profile : Profile, pTile : ProfileTile) : ProfileTile {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profile)) {\r\n // pTile.contentId = profile.contentId;\r\n pTile.position = profile.position;\r\n pTile.smokingStatus = profile.smokingStatus;\r\n\r\n //pTile.built = profile.built;\r\n\r\n //pTile.city = profile.city;\r\n //pTile.cutuncut = profile.cutuncut;\r\n //pTile.countryCode = profile.countryCode;\r\n\r\n //pTile.date = profile.date;\r\n //pTile.dicksize = profile.dicksize;\r\n //pTile.distance = profile.distance;\r\n //pTile.distanceStr = profile.distanceStr;\r\n // pTile.distanceUnit = new Unit().copySourceToDestination(pTile.distanceUnit, profile.distanceUnit);\r\n //pTile.dob = profile.dob;\r\n //pTile.ethnicity = profile.ethnicity;\r\n //pTile.eyes = profile.eyes;\r\n\r\n //pTile.gender = profile.gender;\r\n //pTile.hair = profile.hair;\r\n pTile.heading = profile.heading;\r\n //pTile.height = profile.height;\r\n //pTile.heartbeatTime = profile.heartbeatTime;\r\n\r\n // pTile.id = sitUser.id;\r\n\r\n // pTile.primaryImage = profile.primaryImage;\r\n\r\n //pTile.index = sitUser.index;\r\n\r\n //pTile.isImageRendered = sourceTile.isImageRendered;\r\n\r\n //pTile.isOnline = sourceTile.isOnline;// sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n\r\n // this.isPremiumMember = sitUser.isPremiumMember;\r\n\r\n // this.isTileSetupComplete = sourceTile.isTileSetupComplete;\r\n\r\n //pTile.latitude = profile.latitude;\r\n //pTile.longitude = profile.longitude;\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.link) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.link)) {\r\n // this.link = sourceTile.link;\r\n //} else {\r\n // this.link = 'view/';\r\n //}\r\n\r\n //pTile.neighborhood = sitUser.neighborhood;\r\n\r\n //pTile.pElemId = sitUser.pElemId;\r\n\r\n //pTile.position = sourceTile.position;\r\n\r\n //pTile.privacy = sitUser.privacy;\r\n\r\n pTile.profileId = profile.profileId;\r\n\r\n //pTile.profileName = profile.profileName;\r\n\r\n //pTile.pTileElement = sitUser.pTileElement;\r\n\r\n //pTile.regionCode = sourceTile.regionCode;\r\n\r\n //pTile.sexuality = sitUser.sexuality;\r\n\r\n pTile.sitUserId = profile.sitUserId;\r\n\r\n //pTile.signedInUserId = sitUser.signedInUserId;\r\n\r\n pTile.sitUserKey = profile.sitUserKey;\r\n\r\n //pTile.signedInUserId = sourceTile.signedInUserId;\r\n\r\n //pTile.signedInUserKey = sourceTile.signedInUserKey;\r\n\r\n //pTile.unit = sourceTile.unit;\r\n\r\n // must appear at the end but before CopyToKvPhoto() to capture ProfileTile's data\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeat)) {\r\n // if (FrequentlyUsedFunctionsServiceStatic.typeCheck(sourceTile.heartbeat) == 'object' && sourceTile.heartbeat instanceof Heartbeat) {\r\n // // debugger;\r\n // if (sourceTile.heartbeat.heartbeatTime > 0) {\r\n // // debugger;\r\n // this.heartbeat = this.heartbeat.copy(sourceTile.heartbeat);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.heartbeat = sourceTile.heartbeat\r\n // }\r\n //}\r\n //// must appear at the end to capture ProfileTile's data for KvPhoto\r\n //this.copyToKvPhoto(sourceTile.kvPhoto, sourceTile);\r\n }\r\n return pTile;\r\n }\r\n // --------------------------------------------------------\r\n setupPicImageAndValueOfKvPhoto (kvp : KvPhoto): KvPhoto {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n let isPicEmpty = false;\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.pic)) {\r\n isPicEmpty = true;\r\n }\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.pic)) {\r\n kvp.value = kvp.pic;\r\n }\r\n else if (isPicEmpty) {\r\n kvp.pic = kvp.value;\r\n }\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.pic)) {\r\n kvp.image = kvp.pic;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value) && kvp.value.indexOf('url(') !== -1) {\r\n // debugger;\r\n kvp.value = this.stripUrlForImageData(kvp.value);\r\n }\r\n }\r\n // debugger;\r\n return kvp;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Important!!!\r\n // These methods,-normalizeImageData (), normalizeImageData() and stripUrlForImageData(()\r\n // can accomplish almost all the tasks that ImageProcessing will require.\r\n // ---------------------------------------------------------------\r\n // Note: Tested, and works! Date ?, but prior to 20220421\r\n // ---------------------------------------------------------------------------------\r\n public stripUrlForImageData (image : string) : any {\r\n let tImage2 : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n const pattern1 = /url\\(\\'/gi;\r\n const tImage = image.replace(pattern1, '');\r\n const pattern2 = /\\'\\)/gi;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tImage)) {\r\n tImage2 = tImage.replace(pattern2, '');\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tImage2)) {\r\n return tImage2;\r\n }\r\n return '';\r\n }\r\n return '';\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // --------------------------------------------------------\r\n}\r\n","import { ProfileTile } from './profileTile.model';\r\n\r\nexport class UpgradedTile extends ProfileTile {\r\n public dateStr : any = '';\r\n public expDate : any = '';\r\n public expDateStr : any = '';\r\n public membership : any = '';\r\n public message : any = '';\r\n public promoCode : any = '';\r\n public sitUserKeyBackup : any = '';\r\n\r\n constructor () { super(); }\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { PayPalBreakdown } from './payPalBreakdown.model';\r\n\r\nexport class AmountModel {\r\n public breakdown = new PayPalBreakdown();\r\n public currency_code = '';\r\n public date! : Date;\r\n public value = 0;\r\n public hst = 0;\r\n public subscriptionMonths = 0;\r\n public subtotal = 0;\r\n public total = 0;\r\n // ----------------------------------------------------------------------------------\r\n constructor() {\r\n this.date = new Date;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from : AmountModel ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.currency_code = from.currency_code;\r\n this.value = from.value; \r\n this.breakdown.copy( from.breakdown );\r\n this.date = from.date;\r\n this.hst = from.hst;\r\n this.subscriptionMonths = from.subscriptionMonths;\r\n this.subtotal = from.subtotal;\r\n this.total = from.total;\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n' +\r\n 'currency_code: ' +\r\n this.currency_code +\r\n\r\n ',\\n' +\r\n 'date:' +\r\n this.date + \r\n\r\n ',\\n' +\r\n 'value: ' +\r\n this.value +\r\n\r\n ',\\n' +\r\n 'hst: ' +\r\n this.hst +\r\n\r\n ',\\n' +\r\n 'subscriptionMonths: ' +\r\n this.subscriptionMonths +\r\n\r\n ',\\n' +\r\n 'subtotal: ' +\r\n this.subtotal +\r\n\r\n ',\\n' +\r\n 'total: ' +\r\n this.total +\r\n\r\n ',\\n' +\r\n 'breakdown: ' +\r\n this.breakdown.toString() + \r\n \r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\nexport class CreditCard {\r\n public creditCardNumber = '';\r\n public creditCardTransactionData : any;\r\n public cryptUserKey = '';\r\n public cvv2Number = '';\r\n public expiryMonth = '';\r\n public expiryYY = '';\r\n public id = 0;\r\n public nameOnCard = '';\r\n public paymentOption = '';\r\n public signedInUserId = 0;\r\n public signedInUserKey = '';\r\n public date = '';\r\n public ip = '';\r\n // ---------------------------------------------------\r\n constructor() {\r\n }\r\n // ---------------------------------------------------\r\n public copy ( a : CreditCard ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( a ) )\r\n {\r\n //let outCC = new CreditCard();\r\n this.creditCardNumber = a.creditCardNumber;\r\n this.creditCardTransactionData = a.creditCardTransactionData; // TODO: is it needed?\r\n this.cryptUserKey = a.cryptUserKey;\r\n this.cvv2Number = a.cvv2Number;\r\n this.date = a.date;\r\n this.expiryMonth = a.expiryMonth;\r\n this.expiryYY = a.expiryYY;\r\n this.id = a.id;\r\n this.nameOnCard = a.nameOnCard;\r\n this.paymentOption = a.paymentOption;\r\n this.signedInUserId = a.signedInUserId;\r\n this.signedInUserKey = a.signedInUserKey;\r\n }\r\n }\r\n\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n id: ' +\r\n this.id + \r\n ',\\n' +\r\n 'date:' +\r\n this.date +\r\n ',\\n creditCardNumber: ' +\r\n this.creditCardNumber +\r\n ',\\n' +\r\n 'creditCardTransactionData: ' +\r\n this.creditCardTransactionData +\r\n ',\\n' +\r\n 'cryptUserKey: ' +\r\n this.cryptUserKey +\r\n ',\\n' +\r\n 'cvv2Number: ' +\r\n this.cvv2Number +\r\n ',\\n' +\r\n 'expiryMonth: ' +\r\n this.expiryMonth +\r\n ',\\n' +\r\n 'expiryYY: ' +\r\n this.expiryYY +\r\n ',\\n' +\r\n 'nameOnCard: ' +\r\n this.nameOnCard +\r\n ',\\n' +\r\n 'paymentOption: ' +\r\n this.paymentOption +\r\n ',\\n' +\r\n 'signedInUserId: ' +\r\n this.signedInUserId +\r\n ',\\n' +\r\n 'signedInUserKey: ' +\r\n this.signedInUserKey +\r\n '\\n}';\r\n return outString;\r\n }\r\n // ---------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\nexport class Name {\r\n public given_name = '';\r\n public surname = '';\r\n public fullName = '';\r\n // ----------------------------------------------------------------------------------\r\n constructor() {\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from : Name ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.given_name = from.given_name;\r\n this.surname = from.surname;\r\n this.fullName = from.fullName;\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public captureNameData ( name : Name ) : Name\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name.given_name )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name.surname ) )\r\n {\r\n this.given_name = name.given_name;\r\n this.surname = name.surname;\r\n this.fullName = this.given_name + ' ' + this.surname;\r\n }\r\n return this;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public getFullName (name: Name) : string\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name.given_name )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name.surname ) )\r\n {\r\n this.fullName = this.given_name + ' ' + this.surname; \r\n }\r\n return this.fullName;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n' +\r\n ',\\n given_name: ' +\r\n this.given_name +\r\n\r\n ',\\n' +\r\n 'surname: ' +\r\n this.surname +\r\n\r\n ',\\n' +\r\n 'fullName: ' +\r\n this.fullName +\r\n\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\nexport class PayPalAddress {\r\n public address_line_1 = '';\r\n public address_line_2 = '';\r\n public admin_area_1 = '';\r\n public admin_area_2 = '';\r\n public country_code = '';\r\n public postal_code = '';\r\n public sitUserKey = '';\r\n public PayPalAddressId = 0;\r\n public PayPalOrderId = '';\r\n public date! : Date;\r\n // ----------------------------------------------------------------------------------\r\n constructor() {\r\n this.date = new Date;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from : PayPalAddress ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.address_line_1 = from.address_line_1;\r\n this.address_line_2 = from.address_line_2;\r\n this.admin_area_1 = from.admin_area_1;\r\n this.admin_area_2 = from.admin_area_2;\r\n this.country_code = from.country_code;\r\n this.postal_code = from.postal_code;\r\n this.sitUserKey = from.sitUserKey;\r\n this.PayPalOrderId = from.PayPalOrderId;\r\n this.date = from.date;\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toStringCsv (): string\r\n {\r\n let payPalAddressString = this.address_line_1 + ', ' + this.address_line_2 + ', ' + this.admin_area_1 + ', '\r\n + this.admin_area_2 + ', ' + this.country_code + ', ' + this.postal_code + ', ' + this.PayPalOrderId + ', ' + this.date;\r\n return payPalAddressString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString (): string\r\n {\r\n let outString = '' +\r\n '{\\n address_line_1: ' +\r\n this.address_line_1 +\r\n\r\n ',\\n address_line_2: ' +\r\n this.address_line_2 +\r\n\r\n ',\\n min_area_1: ' +\r\n this.admin_area_1+\r\n\r\n ',\\n admin_area_2: ' +\r\n this.admin_area_2 +\r\n\r\n ',\\n' +\r\n 'country_code:' +\r\n this.country_code +\r\n\r\n ',\\n' +\r\n 'postal_code:' +\r\n this.postal_code +\r\n\r\n ',\\n PayPalOrderId: ' +\r\n this.PayPalOrderId +\r\n\r\n ',\\n date: ' +\r\n this.date +\r\n ',\\n sitUserKey: ' +\r\n this.sitUserKey +\r\n\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { PayPalItem_Total } from './payPalItemTotal.model';\r\n\r\nexport class PayPalBreakdown {\r\n public item_total = new PayPalItem_Total();\r\n // ----------------------------------------------------------------------------------\r\n constructor() {\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from : PayPalBreakdown ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.item_total.copy( from.item_total);\r\n }\r\n }\r\n\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n' +\r\n ',\\n item_total: ' +\r\n this.item_total.toString() +\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { PayPalSellerProtection } from './payPalSellerProtection';\r\n\r\nexport class PayPalCapture {\r\n public amount_currency_code = '';\r\n public amount_value = '';\r\n public create_time = '';\r\n public currency_code = '';\r\n public date = '';\r\n public final_capture = false;\r\n public status = '';\r\n public sitUserKey = '';\r\n public update_time = '';\r\n public value = '';\r\n public orderID = '';\r\n public PayPalOrderId = 0;\r\n public payPalSellerProtection: PayPalSellerProtection = new PayPalSellerProtection();\r\n constructor() {\r\n }\r\n public copy ( from: PayPalCapture ): void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.amount_currency_code = from.amount_currency_code;\r\n this.amount_value = from.amount_value;\r\n this.create_time = from.create_time;\r\n this.currency_code = from.currency_code;\r\n this.date = from.date;\r\n this.final_capture = from.final_capture;\r\n this.update_time = from.update_time;\r\n this.status = from.status;\r\n this.sitUserKey = from.sitUserKey;\r\n this.orderID = from.orderID;\r\n this.PayPalOrderId = from.PayPalOrderId;\r\n this.payPalSellerProtection.copy( from.payPalSellerProtection );\r\n this.value = from.value;\r\n }\r\n }\r\n public toStringCsv (): string\r\n {\r\n let payPalCaptureString = this.amount_currency_code + ', '\r\n + this.amount_value + ', '\r\n + this.create_time + ', '\r\n + this.currency_code + ', '\r\n + this.date + +', '\r\n + this.final_capture + ', '\r\n + this.orderID + ', '\r\n + this.PayPalOrderId + ', '\r\n + this.payPalSellerProtection.toString() + ', '\r\n + this.sitUserKey + ', ' \r\n + this.status + ', '\r\n + this.update_time + ', '\r\n + this.value + ', ';\r\n return payPalCaptureString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n amount_currency_code: ' +\r\n this.amount_currency_code + \r\n\r\n ',\\n amount_value: ' +\r\n this.amount_value +\r\n\r\n ',\\n' +\r\n 'currency_code:' +\r\n this.currency_code +\r\n\r\n ',\\n' +\r\n 'create_time:' +\r\n this.create_time +\r\n\r\n ',\\n date: ' +\r\n this.date +\r\n\r\n ',\\n final_capture: ' +\r\n this.final_capture +\r\n\r\n ',\\n orderID: ' +\r\n this.orderID +\r\n\r\n ',\\n PayPalOrderId: ' +\r\n this.PayPalOrderId +\r\n \r\n ',\\n payPalSellerProtection: ' +\r\n this.payPalSellerProtection.toString() + \r\n\r\n ',\\n sitUserKey: ' +\r\n this.sitUserKey +\r\n\r\n ',\\n status: ' +\r\n this.status +\r\n\r\n ',\\n' +\r\n 'update_time:' +\r\n this.update_time +\r\n\r\n ',\\n value: ' +\r\n this.value +\r\n\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\nexport class PayPalCreditCardAddress {\r\n public id = 0;\r\n public addressStr = '';\r\n public aptUnit = '';\r\n public addressKey = '';\r\n public billingAddress = '';\r\n public billingAddressId = 0;\r\n public city = '';\r\n public country = '';\r\n public date = '';\r\n public email = '';\r\n public isBilling = true;\r\n public isSameAsBilling = false;\r\n public latitude = 0;\r\n public longitude = 0;\r\n public message = '';\r\n public nameOnCard = '';\r\n public shippingAddressId = 0;\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public state = '';\r\n public zipCode = '';\r\n // ---------------------------------------------------\r\n constructor () { }\r\n // ---------------------------------------------------\r\n public copy ( from : PayPalCreditCardAddress ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.id = from.id;\r\n this.addressStr = from.addressStr;\r\n this.aptUnit = from.aptUnit;\r\n this.addressKey = from.addressKey;\r\n this.billingAddress = from.billingAddress;\r\n this.billingAddressId = from.billingAddressId;\r\n this.city = from.city;\r\n this.country = from.country;\r\n this.date = from.date;\r\n this.email = from.email;\r\n this.isBilling = from.isBilling;\r\n this.isSameAsBilling = from.isSameAsBilling;\r\n this.latitude = from.latitude;\r\n this.longitude = from.longitude;\r\n this.message = from.message;\r\n this.nameOnCard = from.nameOnCard;\r\n this.shippingAddressId = from.shippingAddressId;\r\n this.sitUserId = from.sitUserId;\r\n this.sitUserKey = from.sitUserKey;\r\n this.state = from.state;\r\n this.zipCode = from.zipCode;\r\n }\r\n }\r\n // ---------------------------------------------------\r\n public toString (): string\r\n {\r\n let outputStr = \r\n '{\\n id:' +\r\n this.id +\r\n ',\\n' +\r\n 'addressStr:' +\r\n this.addressStr +\r\n ',\\n' +\r\n 'aptUnit:' +\r\n this.aptUnit +\r\n ',\\n' +\r\n 'addressKey:' +\r\n this.addressKey +\r\n ',\\n' +\r\n 'billingAddress:' +\r\n this.billingAddress +\r\n ',\\n' +\r\n 'billingAddressId:' +\r\n this.billingAddressId +\r\n ',\\n' +\r\n 'city:' +\r\n this.city +\r\n ',\\n' +\r\n 'country:' +\r\n this.country +\r\n ',\\n' +\r\n 'date:' +\r\n this.date +\r\n ',\\n' +\r\n 'email:' +\r\n this.email +\r\n ',\\n' +\r\n 'isBilling:' +\r\n this.isBilling +\r\n ',\\n' +\r\n 'isSameAsBilling:' +\r\n this.isSameAsBilling +\r\n ',\\n' +\r\n 'latitude:' +\r\n this.latitude +\r\n ',\\n' +\r\n 'longitude:' +\r\n this.longitude +\r\n ',\\n' +\r\n 'message:' +\r\n this.message +\r\n ',\\n' +\r\n 'nameOnCard:' +\r\n this.nameOnCard +\r\n ',\\n' +\r\n 'shippingAddressId:' +\r\n this.shippingAddressId +\r\n ',\\n' +\r\n 'sitUserId:' +\r\n this.sitUserId +\r\n ',\\n' +\r\n 'sitUserKey:' +\r\n this.sitUserKey +\r\n ',\\n' +\r\n 'state:' +\r\n this.state +\r\n ',\\n' +\r\n 'zipCode:' +\r\n this.zipCode +\r\n '\\n}';\r\n return outputStr;\r\n }\r\n // ---------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\nexport class PayPalItem_Total {\r\n public currency_code = '';\r\n public value = '';\r\n public date = '';\r\n public orderID = '';\r\n public sitUserKey = '';\r\n // ----------------------------------------------------------------------------------\r\n constructor() {\r\n this.currency_code = '';\r\n this.value = '';\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from : PayPalItem_Total ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.currency_code = from.currency_code;\r\n this.value = from.value;\r\n this.orderID = from.orderID;\r\n this.date = from.date;\r\n this.sitUserKey = from.sitUserKey;\r\n }\r\n }\r\n\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n' +\r\n ',\\n currency_code: ' +\r\n this.currency_code +\r\n\r\n ',\\n' +\r\n 'value: ' +\r\n this.value +\r\n\r\n ',\\n' +\r\n 'date: ' +\r\n this.date +\r\n\r\n ',\\n' +\r\n 'orderID: ' +\r\n this.orderID +\r\n\r\n ',\\n' +\r\n 'sitUserKey: ' +\r\n this.sitUserKey +\r\n\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { PayPalItem } from './payPalItem.model';\r\n\r\nexport class PayPalItems\r\n{\r\n public date = '';\r\n public orderID = '';\r\n public payerID = '';\r\n public sitUserKey = '';\r\n public items : PayPalItem[] = [];\r\n // ----------------------------------------------------------------------------------\r\n constructor() {\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from : PayPalItems ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.date = from.date;\r\n this.orderID = from.orderID;\r\n this.payerID = from.payerID;\r\n this.sitUserKey = from.sitUserKey;\r\n this.items = from.items;\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public itemsToString ( items : any[] ): string\r\n {\r\n let itemsStr = '';\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( items ) && items.length > 0 )\r\n {\r\n itemsStr += this.date + ',' + this.orderID + ',' + this.payerID + ',' + this.sitUserKey + ',';\r\n items.map( e =>\r\n {\r\n itemsStr += e.toString() + \", \";\r\n } );\r\n }\r\n return \"[\" + itemsStr + \" ]\";\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n' +\r\n 'orderID: ' +\r\n this.orderID +\r\n\r\n '\\n' +\r\n 'payerID: ' +\r\n this.payerID +\r\n\r\n '\\n' +\r\n 'date: ' +\r\n this.date +\r\n\r\n '\\n' +\r\n 'sitUserKey: ' +\r\n this.sitUserKey +\r\n\r\n '\\n' +\r\n 'items: ' +\r\n this.itemsToString(this.items) +\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { LoginSuccess } from '../account/loginSuccess.model';\r\nimport { PayPalCreditCardAddress } from './payPalCreditCardAddress.model';\r\nimport { CreditCard } from './creditCard.model';\r\nimport { PayPalCapture } from './payPalCapture.model';\r\nimport { PayPalPayer } from './payPalPayer';\r\nimport { PayPalPayment } from './payPalPayment.model';\r\nimport { PayPalPurchaseUnits } from './payPalPurchaseUnits';\r\nimport { PayPalSellerProtection } from './payPalSellerProtection';\r\nimport { Upgrade } from '../upgrade/upgrade.model';\r\nimport { PayPalAddress } from './payPalAddress.model';\r\nimport { PayPalShipping } from './payPalShipping.model';\r\nimport { PayPalPayee } from './payPalPayee';\r\nimport { PayPalItems } from './payPalItems.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n\r\n// TODO: prune unnecessary properties.\r\n\r\nexport class PayPalOrder\r\n{\r\n public authorizedData : any;\r\n public billingToken = '';\r\n public callerName = '';\r\n public create_time = '';\r\n public cryptUserKey = '';\r\n public date = ''; // tick in string\r\n public dateStr = '';\r\n public email = '';\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public facilitatorAccessToken = '';\r\n public fullName = '';\r\n public id = '';\r\n public intent = '';\r\n public ip = '';\r\n public isOnApprovedComplete = false;\r\n public isOnClientAuthorizationComplete = false;\r\n public latitude = 0;\r\n public longitude = 0;\r\n public onApproved : any;\r\n public onApprovedDetails : any;\r\n // public onApprovedDetailsModel: OnApprovedDetailsModel = new OnApprovedDetailsModel();\r\n public onCanceled : any;\r\n public onClientAuthorization : any;\r\n public onError : any;\r\n public orderID = '';\r\n public orderNo = ''; // PayPalOrderId.orderID.C#-ticks\r\n public payerID = '';\r\n public payPalCreditCardAddress : PayPalCreditCardAddress = new PayPalCreditCardAddress(); // common to both payPay & creditCard processing\r\n // public payerAddressStr = '';\r\n public paypalAddress : PayPalAddress = new PayPalAddress(); //todo: remove since shipping has address\r\n public paypalCapture : PayPalCapture = new PayPalCapture(); \r\n public paypalCreditCard : CreditCard = new CreditCard(); // to be implemented during creditCardProcessing implementation\r\n public paypalItems : PayPalItems = new PayPalItems();\r\n public paypalPayee : PayPalPayee = new PayPalPayee();\r\n public paypalPayer : PayPalPayer = new PayPalPayer();\r\n public paypalPayment : PayPalPayment = new PayPalPayment();\r\n public paypalPurchaseUnits : PayPalPurchaseUnits = new PayPalPurchaseUnits();\r\n public paypalSellerProtection : PayPalSellerProtection = new PayPalSellerProtection();\r\n public paypalShipping : PayPalShipping = new PayPalShipping();\r\n public paymentOption = '';\r\n public paymentOptionAmount = 0.0;\r\n public personKey = '';\r\n public sitUserId = 0;\r\n public sitUserKey = '';\r\n public status = '';\r\n public subscriptionMonths = '';\r\n public subscriptionMonthsNum = 0;\r\n public subtotal = 0;\r\n public tax = 0;\r\n public taxId = '71502 9088 RT0001';\r\n public total = 0;\r\n public totalStr = '';\r\n public upgrade : Upgrade = new Upgrade();\r\n public userName = '';\r\n public update_time = '';\r\n // ----------------------------------------------------------------------------------\r\n constructor ()\r\n {\r\n this.subscriptionMonthsNum = this.getSubscriptionMonthsNum( this.paymentOption );\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.upgrade ) )\r\n {\r\n this.upgrade.subscriptionMonths = this.subscriptionMonths;\r\n }\r\n // --------------------------------------------------------------\r\n // EmitterSubjectService.facilitatorAccessTokenEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( result =>\r\n // {\r\n // // debugger;\r\n // this.facilitatorAccessToken = result.facilitatorAccessToken;\r\n // } );\r\n }\r\n // ----------------------------------------------------------------------------------\r\n // ngOnInit ()\r\n // {\r\n \r\n // }\r\n // ---------------------------------------------------------------\r\n // ngAfterViewInit() {\r\n // debugger;\r\n\r\n // setTimeout( () =>\r\n // {\r\n // ScrollTopServiceStatic.scrollToTop( 'paymentComponentId' );\r\n // }, 1000 );\r\n // }\r\n // ---------------------------------------------------------------\r\n // ngDestroy() {\r\n // // prevent memory leak when component destroyed\r\n // this.emitterDestroyed$.next( true );\r\n // this.emitterDestroyed$.complete();\r\n // // this.timerArray.forEach( timer => clearInterval( timer ) );\r\n // // EmitterSubjectService.emitDisplayDefaultGlyphiconMenu();\r\n // // this.resetPageTitle();\r\n // }\r\n // ----------------------------------------------------------------------------------\r\n public copy (from : PayPalOrder) : PayPalOrder\r\n {\r\n var that : PayPalOrder = new PayPalOrder();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n that.billingToken = from.billingToken;\r\n that.authorizedData = from.authorizedData;\r\n that.create_time = from.create_time;\r\n that.cryptUserKey = from.cryptUserKey;\r\n that.date = from.date;\r\n that.email = from.email;\r\n that.facilitatorAccessToken = from.facilitatorAccessToken;\r\n that.fullName = from.fullName;\r\n // that.paypalOrdId = from.paypalOrdId;\r\n that.intent = from.intent;\r\n that.ip = from.ip;\r\n that.isOnApprovedComplete = from.isOnApprovedComplete;\r\n that.isOnClientAuthorizationComplete = from.isOnClientAuthorizationComplete;\r\n that.latitude = from.latitude;\r\n that.longitude = from.longitude;\r\n that.orderID = from.orderID;\r\n that.payerID = from.payerID;\r\n that.onApproved = from.onApproved;\r\n that.onApprovedDetails = from.onApprovedDetails;\r\n // that.onApprovedDetailsModel.copy(from.onApprovedDetailsModel);\r\n that.onCanceled = from.onCanceled;\r\n that.onError = from.onError;\r\n that.onClientAuthorization = from.onClientAuthorization;\r\n that.payPalCreditCardAddress.copy( from.payPalCreditCardAddress );\r\n // that.payerAddressStr = this.payerAddressToString();\r\n that.paypalAddress.copy( from.paypalAddress );\r\n that.paypalCapture.copy( from.paypalCapture );\r\n that.paypalCreditCard.copy( from.paypalCreditCard );\r\n that.paypalItems.copy( from.paypalItems );\r\n // that.paypalPayee.copy( from.paypalPayee );\r\n that.paypalPayer.copyFrom( from.paypalPayer );\r\n that.paypalPayment.copy( from.paypalPayment );\r\n that.paypalPurchaseUnits.copy( from.paypalPurchaseUnits );\r\n that.paypalSellerProtection.copy( from.paypalSellerProtection );\r\n // that.paypalShipping.copy( from.paypalShipping );\r\n that.paymentOption = from.paymentOption;\r\n that.paymentOptionAmount = from.paymentOptionAmount;\r\n that.personKey = from.personKey;\r\n that.sitUserId = from.sitUserId;\r\n that.sitUserKey = from.sitUserKey;\r\n that.status = from.status;\r\n that.subscriptionMonths = from.subscriptionMonths;\r\n that.subscriptionMonthsNum = from.subscriptionMonthsNum;\r\n that.subtotal = from.subtotal;\r\n that.tax = from.tax;\r\n that.total = from.total;\r\n that.totalStr = from.totalStr;\r\n that.upgrade.copy( from.upgrade );\r\n that.userName = from.userName;\r\n that.update_time = from.update_time;\r\n }\r\n return that;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n // TODO: apply ifExists condition:\r\n // ----------------------------------------------------------------------------------\r\n public copyIfExists ( from: PayPalOrder ): PayPalOrder\r\n { \r\n var to : PayPalOrder = new PayPalOrder();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n to.authorizedData = from.authorizedData;\r\n to.billingToken = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(from.billingToken) ? from.billingToken : to.billingToken;\r\n to.create_time = from.create_time;\r\n to.cryptUserKey = from.cryptUserKey ? from.cryptUserKey : to.cryptUserKey;\r\n to.date = from.date ? from.date : to.date;\r\n to.email = from.email ? from.email : to.email;\r\n to.facilitatorAccessToken = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(from.facilitatorAccessToken) ? from.facilitatorAccessToken :to.facilitatorAccessToken;\r\n to.fullName = from.fullName ? from.fullName : to.fullName;\r\n // to.paypalOrdId = from.paypalOrdId && from.paypalOrdId.length > 0 ? from.paypalOrdId : to.paypalOrdId;\r\n to.intent = from.intent;\r\n to.ip = from.ip;\r\n to.isOnApprovedComplete = from.isOnApprovedComplete;\r\n to.isOnClientAuthorizationComplete = from.isOnClientAuthorizationComplete;\r\n to.latitude = from.latitude !== 0 ? from.latitude : to.latitude;\r\n to.longitude = from.longitude !== 0 ? from.longitude : to.longitude;\r\n to.orderID = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(from.orderID) ? from.orderID : to.orderID;\r\n to.orderNo = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(from.orderNo) ? from.orderNo : to.orderNo;\r\n to.onApproved = from.onApproved;\r\n to.onApprovedDetails = from.onApprovedDetails;\r\n // to.onApprovedDetailsModel.copy( from.onApprovedDetailsModel );\r\n to.onCanceled = from.onCanceled;\r\n to.onError = from.onError;\r\n to.onClientAuthorization = from.onClientAuthorization;\r\n to.payerID = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(from.payerID) ? from.orderID : to.payerID;\r\n to.payPalCreditCardAddress.copy( from.payPalCreditCardAddress );\r\n // to.payerAddressStr = this.payerAddressToString();\r\n // to.paypalAddress.copy( from.paypalAddress );\r\n to.paypalCapture.copy( from.paypalCapture );\r\n to.paypalCreditCard.copy( from.paypalCreditCard );\r\n // to.paypalPayee.copy( from.paypalPayee );\r\n to.paypalPayer.copyFrom( from.paypalPayer );\r\n to.paypalPayment.copy( from.paypalPayment );\r\n to.paypalPurchaseUnits.copy( from.paypalPurchaseUnits );\r\n to.paypalSellerProtection.copy( from.paypalSellerProtection ); \r\n // to.paypalShipping.copy( from.paypalShipping );\r\n to.paymentOption = from.paymentOption;\r\n to.paymentOptionAmount = from.paymentOptionAmount;\r\n to.personKey = from.personKey;\r\n to.sitUserId = from.sitUserId;\r\n to.sitUserKey = from.sitUserKey;\r\n to.status = from.status;\r\n to.subscriptionMonths = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(from.subscriptionMonths) ? from.subscriptionMonths : to.subscriptionMonths;\r\n to.subscriptionMonthsNum = from.subscriptionMonthsNum;\r\n to.subtotal = from.subtotal;\r\n to.tax = from.tax;\r\n to.total = from.total;\r\n to.totalStr = from.totalStr;\r\n to.upgrade.copy( from.upgrade );\r\n to.userName = from.userName ? from.userName : to.userName;\r\n to.update_time = from.update_time && from.update_time.length > 0 ? from.update_time : to.update_time;\r\n }\r\n return to;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n getSubscriptionMonthsNum ( paymentOption : string ): number\r\n {\r\n let months = 0;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( paymentOption ) )\r\n {\r\n \r\n let parts = paymentOption.split( \"months\" );\r\n if ( parts != null )\r\n {\r\n months = parseInt( parts[ 0 ], 10 );\r\n }\r\n else\r\n {\r\n months = 12;\r\n }\r\n }\r\n return months;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public getSubscriptionMonths ( paymentOption : string ) : string\r\n {\r\n let subscriptionMonths = '';\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( paymentOption ) )\r\n {\r\n let parts = paymentOption.split( '-' );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( parts ) && parts.length > 1 )\r\n {\r\n subscriptionMonths = parts[ 0 ];\r\n }\r\n }\r\n return subscriptionMonths;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public setSitUserKeyAndId (loginSuccess : LoginSuccess): void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( loginSuccess ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( loginSuccess.signedInUserKey ))\r\n {\r\n // this.onApprovedDetailsModel.sitUserKey = loginSuccess.signedInUserKey;\r\n this.sitUserId = this.payPalCreditCardAddress.sitUserId = loginSuccess.signedInUserId;\r\n this.sitUserKey = this.payPalCreditCardAddress.sitUserKey = loginSuccess.signedInUserKey;\r\n this.paypalPayer.sitUserKey = loginSuccess.signedInUserKey;\r\n this.paypalPayment.sitUserKey = loginSuccess.signedInUserKey;\r\n this.paypalSellerProtection.sitUserKey = loginSuccess.signedInUserKey;\r\n \r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.paypalCapture ) )\r\n {\r\n this.paypalCapture.sitUserKey = loginSuccess.signedInUserKey;\r\n this.paypalCapture.payPalSellerProtection.sitUserKey = loginSuccess.signedInUserKey;\r\n }\r\n // this.paypalShipping.sitUserKey = loginSuccess.signedInUserKey; // TODO: may need to verify that sippingAddres===billingAddress or other value here\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n // public payerAddressToString (): string\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.creditCardAddress ) )\r\n // {\r\n\r\n // this.payerAddressStr = this.creditCardAddress.toString();\r\n // }\r\n // else this.payerAddressStr = '';\r\n // return this.payerAddressStr;\r\n // }\r\n // ----------------------------------------------------------------------------------\r\n public payPalPayerToString () : string\r\n {\r\n let paypalPayerStr = '';\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.paypalPayer ) )\r\n {\r\n\r\n paypalPayerStr = JSON.stringify( this.paypalPayer);\r\n\r\n //'{\\n paypalPayer.address.country_code: ' +\r\n //this.paypalPayer.country_code +\r\n\r\n\r\n //',\\n' +\r\n //'fullName:' +\r\n //this.fullName +\r\n\r\n //',\\n payer_id: ' +\r\n //this.paypalPayer.payer_id +\r\n\r\n //',\\n' +\r\n //'sitUserKey:' +\r\n //this.paypalPayer.sitUserKey +\r\n\r\n //'\\n}';\r\n }\r\n return paypalPayerStr;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{' +\r\n '\\n authorizedData: ' +\r\n this.authorizedData +\r\n\r\n ',\\n' +\r\n 'billingToken:' +\r\n this.billingToken +\r\n\r\n ',\\n' +\r\n 'create_time:' +\r\n this.create_time +\r\n\r\n ',\\n' +\r\n 'cryptUserKey: ' +\r\n this.cryptUserKey +\r\n \r\n ',\\n' +\r\n 'date:' +\r\n this.date +\r\n\r\n ',\\n' +\r\n 'dateStr:' +\r\n this.dateStr +\r\n\r\n ',\\n' +\r\n 'email: ' +\r\n this.email +\r\n\r\n ',\\n' +\r\n 'facilitatorAccessToken:' +\r\n this.facilitatorAccessToken +\r\n\r\n ',\\n' +\r\n 'fullName: ' +\r\n this.fullName +\r\n\r\n // '\\n paypalOrdId: ' +\r\n // this.paypalOrdId +\r\n\r\n '\\n intent: ' +\r\n this.intent +\r\n\r\n '\\n ip: ' +\r\n this.ip +\r\n\r\n ',\\n' +\r\n 'latitude: ' +\r\n this.latitude +\r\n\r\n ',\\n' +\r\n 'longitude: ' +\r\n this.longitude + \r\n\r\n ',\\n' +\r\n 'orderID: ' +\r\n this.orderID +\r\n\r\n ',\\n' +\r\n 'payerID: ' +\r\n this.payerID +\r\n\r\n ',\\n' +\r\n 'onApproved: ' +\r\n this.onApproved +\r\n\r\n ',\\n' +\r\n 'onApprovedDetails: ' +\r\n this.onApprovedDetails +\r\n \r\n ',\\n' +\r\n 'onCanceled: ' +\r\n this.onCanceled +\r\n\r\n ',\\n' +\r\n 'onError: ' +\r\n this.onError +\r\n\r\n ',\\n' +\r\n 'onClientAuthorization: ' +\r\n this.onClientAuthorization +\r\n\r\n // ',\\n' +\r\n // 'payerAddress: ' +\r\n // this.payerAddress.toString() +\r\n\r\n ',\\n' +\r\n 'payPalCreditCardAddressStr: ' +\r\n // this.payPalCreditCardAddress.toString() +\r\n JSON.stringify(this.payPalCreditCardAddress) +\r\n\r\n ',\\n' +\r\n 'paypalCapture: ' +\r\n // this.paypalCapture.toString() +\r\n JSON.stringify( this.paypalCapture ) +\r\n\r\n // ',\\n' +\r\n // 'paypalPayee: ' +\r\n // this.paypalPayee.toString() +\r\n\r\n ',\\n' +\r\n 'paypalPayer: ' +\r\n // this.paypalPayer.toString() +\r\n JSON.stringify( this.paypalPayer ) +\r\n\r\n ',\\n' +\r\n 'paypalPurchaseUnits: ' +\r\n // this.paypalPurchaseUnits.toString() +\r\n JSON.stringify( this.paypalPurchaseUnits ) +\r\n\r\n ',\\n' +\r\n 'paypalSellerProtection: ' +\r\n // this.paypalSellerProtection.toString() +\r\n JSON.stringify( this.paypalSellerProtection ) +\r\n\r\n // ',\\n' +\r\n // 'paypalShipping: ' +\r\n // this.paypalShipping.toString() +\r\n\r\n ',\\n' +\r\n 'paypalPayment: ' +\r\n // this.paypalPayment.toString() +\r\n JSON.stringify( this.paypalPayment ) +\r\n \r\n ',\\n' +\r\n 'paymentOption: ' +\r\n this.paymentOption +\r\n\r\n ',\\n' +\r\n 'paymentOptionAmount: ' +\r\n this.paymentOptionAmount +\r\n\r\n '\\n personKey: ' +\r\n this.personKey +\r\n\r\n ',\\n' +\r\n 'sitUserId: ' +\r\n this.sitUserId +\r\n\r\n ',\\n' +\r\n 'sitUserKey: ' +\r\n this.sitUserKey +\r\n\r\n ',\\n' +\r\n 'status: ' +\r\n this.status +\r\n\r\n ',\\n' +\r\n 'subscriptionMonths: ' +\r\n this.subscriptionMonths +\r\n\r\n ',\\n' +\r\n 'subscriptionMonthsNum: ' +\r\n this.subscriptionMonthsNum +\r\n\r\n ',\\n' +\r\n 'subtotal: ' +\r\n this.subtotal +\r\n\r\n ',\\n' +\r\n 'tax: ' +\r\n this.tax +\r\n\r\n ',\\n' +\r\n 'total: ' +\r\n this.total +\r\n\r\n ',\\n' +\r\n 'totalStr: ' +\r\n this.totalStr +\r\n\r\n ',\\n' +\r\n 'upgrade: ' +\r\n // this.upgrade.toString() +\r\n JSON.stringify( this.upgrade ) +\r\n\r\n ',\\n' +\r\n 'userName: ' +\r\n this.userName +\r\n\r\n ',\\n' +\r\n 'update_time:' +\r\n this.update_time +\r\n\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\nexport class PayPalPayee\r\n{\r\n public email_address = '';\r\n public merchant_id = '';\r\n // ----------------------------------------------------------------------------------\r\n constructor () { }\r\n // ----------------------------------------------------------------------------------\r\n public copy( from: PayPalPayee ): void\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(from))\r\n {\r\n this.email_address = from.email_address;\r\n this.merchant_id = from.merchant_id;\r\n }\r\n }\r\n\r\n // ----------------------------------------------------------------------------------\r\n public toString (): string\r\n {\r\n let outString = '' +\r\n '{\\n merchant_id: ' +\r\n this.merchant_id +\r\n ',\\n email_address: ' +\r\n this.email_address + \r\n '\\n}';\r\n return outString;\r\n }\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Name } from './name.model';\r\n\r\nexport class PayPalPayer\r\n{\r\n public country_code = '';\r\n public date = '';\r\n public email_address = '';\r\n public fullName = '';\r\n public payer_id = '';\r\n public orderID = '';\r\n public sitUserKey = '';\r\n public name : Name = new Name();\r\n // ----------------------------------------------------------------------------------\r\n constructor ()\r\n {\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copyFrom( from: PayPalPayer ): void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.country_code = from.country_code;\r\n this.date = from.date;\r\n this.email_address = from.email_address;\r\n this.fullName = from.fullName;\r\n this.payer_id = from.payer_id;\r\n this.sitUserKey = from.sitUserKey;\r\n this.name.copy( from.name );\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString (): string\r\n {\r\n // return JSON.stringify( this );\r\n // OR\r\n let outString = '' +\r\n '{\\n country_code: ' +\r\n this.country_code +\r\n \r\n ',\\n' +\r\n 'name.given:' +\r\n this.name.given_name +\r\n\r\n ',\\n' +\r\n 'name.surname:' +\r\n this.name.surname +\r\n\r\n ',\\n email_address: ' +\r\n this.email_address +\r\n\r\n ',\\n' +\r\n 'fullName:' +\r\n this.fullName +\r\n\r\n ',\\n orderID: ' +\r\n this.orderID +\r\n\r\n ',\\n payer_id: ' +\r\n this.payer_id +\r\n\r\n ',\\n' +\r\n 'sitUserKey:' +\r\n this.sitUserKey +\r\n\r\n ',\\n' +\r\n 'name' +\r\n JSON.stringify(this.name) +\r\n \r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { PayPalCapture } from './payPalCapture.model';\r\nimport { PayPalSellerProtection } from './payPalSellerProtection';\r\n\r\nexport class PayPalPayment {\r\n public reference_id = '';\r\n public payPalCapture : PayPalCapture = new PayPalCapture();\r\n public payPalSellerProtection : PayPalSellerProtection = new PayPalSellerProtection();\r\n public date!: Date;\r\n public sitUserKey = '';\r\n // ----------------------------------------------------------------------------------\r\n constructor() {\r\n this.date = new Date;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from: PayPalPayment ): void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.reference_id = from.reference_id;\r\n this.payPalCapture.copy( from.payPalCapture );\r\n this.payPalSellerProtection.copy(from.payPalSellerProtection);\r\n this.date = from.date;\r\n this.sitUserKey = from.sitUserKey;\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toStringCsv ()\r\n {\r\n let output = '';\r\n output = this.reference_id + ',' + this.date + ', ' + this.payPalCapture.toString() + ', ' + this.payPalSellerProtection.toString() + ',' + this.sitUserKey;\r\n return output;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n reference_id: ' +\r\n this.reference_id +\r\n\r\n ',\\n date: ' +\r\n this.date +\r\n\r\n ',\\n' +\r\n 'paypalCapture:' +\r\n this.payPalCapture.toString() +\r\n\r\n\r\n ',\\n' +\r\n 'payPalSellerProtection:' +\r\n this.payPalSellerProtection.toString() +\r\n\r\n\r\n ',\\n' +\r\n 'sitUserKey:' +\r\n this.sitUserKey +\r\n\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { AmountModel } from './amountModel.model';\r\nimport { PayPalPayee } from './payPalPayee';\r\nimport { PayPalShipping } from './payPalShipping.model';\r\nexport class PayPalPurchaseUnits\r\n{\r\n public amount = new AmountModel();\r\n public amount_currency_code = '';\r\n public amount_value = '';\r\n public date = '';\r\n public items : any[] = []; // new PayPalItems();\r\n public payee = new PayPalPayee();\r\n public shipping = new PayPalShipping();\r\n public reference_id = '';\r\n public sitUserKey = '';\r\n // ----------------------------------------------------------------------------------\r\n constructor () { }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from: PayPalPurchaseUnits ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.amount.copy( from.amount );\r\n this.date = from.date;\r\n this.items = from.items;\r\n this.reference_id = from.reference_id;\r\n this.payee.copy( from.payee );\r\n this.shipping.copy( from.shipping );\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toStringCsv ()\r\n {\r\n let output = '';\r\n output = this.amount.toString() + ',' + this.date + ',' + this.items.toString() + ', ' + this.payee.toString() + ', ' + this.shipping.toString() + ',' + this.reference_id;\r\n return output;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n reference_id: ' +\r\n this.reference_id +\r\n\r\n ',\\n payee: ' +\r\n this.payee.toString() +\r\n\r\n ',\\n shipping: ' +\r\n this.shipping.toString() +\r\n\r\n ',\\n items: ' +\r\n this.items.toString() +\r\n\r\n ',\\n' +\r\n 'date:' +\r\n this.date +\r\n\r\n ',\\n' +\r\n 'amount:' +\r\n this.amount.toString() +\r\n\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\nexport class PayPalSellerProtection\r\n{\r\n public dispute_Categories = ''; // this will contain a csv data that to be split by (',') to get a string[]\r\n public disputeCategoriesStr = '';\r\n public status = '';\r\n public sitUserKey = '';\r\n // ----------------------------------------------------------------------------------\r\n constructor ()\r\n {\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from: PayPalSellerProtection ): void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n this.dispute_Categories = from.dispute_Categories;\r\n this.disputeCategoriesStr = from.disputeCategoriesStr;\r\n this.status = from.status;\r\n this.sitUserKey = from.sitUserKey;\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public getDisputeCategoriesStr (): string\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dispute_Categories))\r\n {\r\n this.disputeCategoriesStr = this.dispute_Categories; //end/destination should split the csv data by (',') to get the string[]\r\n }\r\n return this.disputeCategoriesStr;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toStringCsv ( ): string\r\n {\r\n this.disputeCategoriesStr = this.getDisputeCategoriesStr();\r\n this.disputeCategoriesStr += ',' + this.status + ',' + this.sitUserKey;\r\n return this.disputeCategoriesStr;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n this.disputeCategoriesStr = this.getDisputeCategoriesStr();\r\n let outString = '' +\r\n '{\\n status: ' +\r\n this.status +\r\n\r\n ',\\n dispute_Categories: [' +\r\n this.disputeCategoriesStr + ']' +\r\n\r\n '\\n sitUserKey: ' +\r\n this.sitUserKey +\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Name } from './name.model';\r\nimport { PayPalAddress } from './payPalAddress.model';\r\n\r\nexport class PayPalShipping {\r\n public address = new PayPalAddress();\r\n public addressStr = '';\r\n public PayPalAddressId = 0;\r\n public fullName = '';\r\n public date! : Date;\r\n public orderID = '';\r\n public PayPalOrderId = 0;\r\n public sitUserKey = '';\r\n // ----------------------------------------------------------------------------------\r\n constructor() {\r\n this.date = new Date;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public copy ( from: PayPalShipping ): void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( from ) )\r\n {\r\n\r\n this.address.copy( from.address );\r\n this.addressStr = from.addressStr;\r\n this.PayPalAddressId = from.PayPalAddressId;\r\n this.fullName = from.fullName;\r\n this.date = from.date;\r\n this.orderID = from.orderID;\r\n this.PayPalOrderId = from.PayPalOrderId;\r\n this.sitUserKey = from.sitUserKey;\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public captureName ( name : Name ) : Name\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name ) )\r\n {\r\n let name = new Name();\r\n name = name.captureNameData( name );\r\n this.fullName = name.fullName;\r\n }\r\n return name;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public getFulName (name: Name) : string\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( name.fullName ))\r\n {\r\n this.fullName = name.fullName;\r\n } \r\n return this.fullName;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toStringCsv ()\r\n {\r\n let output = '';\r\n output += this.address.toString() + ',' + this.addressStr + ',' + this.date + ', ';\r\n output += this.fullName + ',' + this.PayPalOrderId + ',' + this.PayPalAddressId + ',' + this.sitUserKey;\r\n return output;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n addressStr: ' +\r\n this.addressStr +\r\n\r\n ',\\n' +\r\n 'address:' +\r\n this.address.toString() +\r\n\r\n ',\\n date: ' +\r\n this.date +\r\n\r\n ',\\n fullName: ' +\r\n this.fullName +\r\n\r\n ',\\n PayPalOrderId: ' +\r\n this.PayPalOrderId +\r\n \r\n ',\\n PayPalAddressId: ' +\r\n this.PayPalAddressId + \r\n\r\n ',\\n sitUserKey: ' +\r\n this.sitUserKey +\r\n\r\n '\\n}';\r\n return outString;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { UpgradeCost } from './upgradeCost.model';\r\n\r\nexport class Upgrade\r\n{\r\n public createTime = '';\r\n public date = '';\r\n public dateStr = '';\r\n public expDate = '';\r\n public expDateStr = '';\r\n public from : any;\r\n public fromStr = '';\r\n public key = '';\r\n public membership = '';\r\n public membershipExpMonthName = '';\r\n public message = '';\r\n public orderID = '';\r\n public orderNo = ''; // ticks.orderID\r\n public promoCode = '';\r\n public signedInUserKey = '';\r\n public signedInUserId = 0;\r\n public sitUserKey = '';\r\n public subscriptionMonths = '';\r\n public subtotal = 0;\r\n public tax = 0;\r\n public taxId = '71502 9088 RT0001';\r\n public till : any;\r\n public tillStr = '';\r\n public total = 0;\r\n public upgradeId = 0;\r\n public upgradeCost : UpgradeCost = new UpgradeCost();\r\n public paymentOption = this.upgradeCost.selectedOption;\r\n constructor () { }\r\n\r\n // -----------------------------------------------\r\n public copy (a : Upgrade) : Upgrade\r\n {\r\n var that : Upgrade = new Upgrade();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( a ) )\r\n {\r\n that.createTime = a.createTime;\r\n that.date = a.date;\r\n that.dateStr = a.dateStr;\r\n that.expDate = a.expDate;\r\n that.expDateStr = a.expDateStr;\r\n that.from = a.from;\r\n that.fromStr = a.fromStr;\r\n // that.invoiceNo = a.invoiceNo;\r\n that.key = a.key;\r\n that.membership = a.membership;\r\n that.membershipExpMonthName = a.membershipExpMonthName;\r\n that.message = a.message;\r\n that.orderID = a.orderID;\r\n that.orderNo = a.orderNo;\r\n that.paymentOption = a.paymentOption;\r\n that.promoCode = a.promoCode;\r\n that.signedInUserId = a.signedInUserId;\r\n that.signedInUserKey = a.signedInUserKey;\r\n that.sitUserKey = a.sitUserKey;\r\n that.subscriptionMonths = a.subscriptionMonths;\r\n that.subtotal = a.subtotal;\r\n that.tax = a.tax;\r\n that.taxId = a.taxId;\r\n that.till = a.till;\r\n that.tillStr = a.tillStr;\r\n that.total = a.total;\r\n that.upgradeId = a.upgradeId;\r\n that.upgradeCost.copy( a.upgradeCost );\r\n }\r\n return that;\r\n }\r\n // -----------------------------------------------\r\n // TODO: \r\n public copyIfExists (a : Upgrade) : Upgrade\r\n {\r\n var d : Upgrade = new Upgrade();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( a ) )\r\n {\r\n d.createTime = a.createTime && a.createTime.length > 0 ? a.createTime : d.createTime;\r\n d.date = a.date && a.date.length > 0 ? a.date : d.date;\r\n d.dateStr = a.dateStr && a.dateStr.length > 0 ? a.dateStr : d.dateStr;\r\n d.expDate = a.expDate && a.expDate.length > 0 ? a.expDate : d.expDate;\r\n d.expDateStr = a.expDateStr && a.expDateStr.length > 0 ? a.expDateStr : d.expDate;\r\n d.from = a.from && a.from.length > 0 ? a.from : d.from;\r\n d.fromStr = a.fromStr && a.fromStr.length > 0 ? a.fromStr : d.fromStr; //\r\n // this.invoiceNo = a.invoiceNo && a.invoiceNo.length > 0 ? a.invoiceNo : this.invoiceNo;\r\n d.key = a.key && a.key.length > 0 ? a.key : d.key;\r\n d.membership = a.membership && a.membership.length > 0 ? a.membership : d.membership;\r\n d.membershipExpMonthName = a.membershipExpMonthName && a.membershipExpMonthName.length > 0 ? a.membershipExpMonthName : d.membershipExpMonthName;\r\n d.message = a.message && a.message.length > 0 ? a.message : d.message;\r\n d.orderID = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.orderID) ? a.orderID : d.orderID;\r\n d.orderNo = a.orderNo && a.orderNo.length > 0 ? a.orderNo : d.orderNo;\r\n d.paymentOption = a.paymentOption && a.paymentOption.length > 0 ? a.paymentOption : d.paymentOption;\r\n d.promoCode = a.promoCode && a.promoCode.length > 0 ? a.message : d.message;\r\n d.signedInUserId = a.signedInUserId > 0 ? a.signedInUserId : d.signedInUserId;\r\n d.signedInUserKey = a.signedInUserKey && a.signedInUserKey.length > 0 ? a.signedInUserKey : d.signedInUserKey;\r\n d.sitUserKey = a.sitUserKey && a.sitUserKey.length > 0 ? a.sitUserKey : d.sitUserKey;\r\n d.subscriptionMonths = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.subscriptionMonths) ? a.subscriptionMonths : d.subscriptionMonths;\r\n d.subtotal = a.subtotal > 0 ? a.subtotal : d.subtotal;\r\n d.tax = a.tax > 0 ? a.tax : d.tax;\r\n d.taxId = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(a.taxId) ? a.taxId : d.taxId;\r\n d.till = a?.till?.length > 0 ? a.till : d.till;\r\n d.tillStr = a.tillStr && a.tillStr.length > 0 ? a.tillStr : d.tillStr;\r\n d.total = a.total > 0 ? a.total : d.total;\r\n d.upgradeId = a.upgradeId > 0 ? a.upgradeId : d.upgradeId;\r\n d.upgradeCost.copyIfExists(a.upgradeCost);\r\n }\r\n return d;\r\n }\r\n // -----------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{\\n createTime: ' +\r\n this.createTime +\r\n ',\\n' +\r\n 'dateStr: ' +\r\n this.dateStr +\r\n ',\\n' +\r\n 'date:' +\r\n this.date +\r\n ',\\n expDate: ' +\r\n this.expDate +\r\n ',\\n' +\r\n 'expDateStr: ' +\r\n this.expDateStr +\r\n ',\\n' +\r\n 'from: ' +\r\n this.from +\r\n ',\\n' +\r\n 'fromStr: ' +\r\n this.fromStr +\r\n \r\n ',\\n' +\r\n 'key: ' +\r\n this.key +\r\n 'membership: ' +\r\n this.membership +\r\n ',\\n' +\r\n 'membershipExpMonthName: ' +\r\n this.membershipExpMonthName + \r\n ',\\n' +\r\n 'membershipMonths: ' +\r\n this.subscriptionMonths +\r\n ',\\n' +\r\n 'message: ' +\r\n this.message +\r\n ',\\n' +\r\n 'orderID: ' +\r\n this.orderID +\r\n ',\\n' +\r\n 'orderNo: ' +\r\n this.orderNo +\r\n ',\\n' +\r\n 'paymentOption: ' +\r\n this.paymentOption +\r\n ',\\n' +\r\n 'promoCode: ' +\r\n this.promoCode +\r\n ',\\n' +\r\n 'signedInUserId: ' +\r\n this.signedInUserId +\r\n ',\\n' +\r\n 'signedInUserKey: ' +\r\n this.signedInUserKey +\r\n ',\\n' +\r\n 'subtotal: ' +\r\n this.subtotal +\r\n ',\\n' +\r\n 'tax: ' +\r\n this.tax +\r\n ',\\n' +\r\n 'taxId: ' +\r\n this.taxId +\r\n ',\\n' +\r\n 'till: ' +\r\n this.till +\r\n ',\\n' +\r\n 'ftillStr: ' +\r\n this.tillStr +\r\n ',\\n' +\r\n 'total: ' +\r\n this.total +\r\n ',\\n' +\r\n 'upgradeId: ' +\r\n this.upgradeId +\r\n ',\\n' +\r\n 'upgradeCost: ' +\r\n JSON.stringify(this.upgradeCost) +\r\n '\\n}';\r\n return outString;\r\n }\r\n // -----------------------------------------------\r\n}\r\n","import { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\nexport class UpgradeCost\r\n{\r\n public date = '';\r\n public id = 0;\r\n public key = '';\r\n public selectedOption = '';\r\n public sitUserKey = '';\r\n public subtotal = 0;\r\n public tax = 0;\r\n public total = 0\r\n constructor () { }\r\n // -----------------------------------------------\r\n public copy ( a : UpgradeCost ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( a ) )\r\n {\r\n this.date = a.date;\r\n this.id = a.id;\r\n this.key = a.key;\r\n this.selectedOption = a.selectedOption;\r\n this.sitUserKey = a.sitUserKey;\r\n this.subtotal = a.subtotal;\r\n this.tax = a.tax;\r\n this.total = a.total;\r\n }\r\n }\r\n // -----------------------------------------------\r\n // TODO:\r\n public copyIfExists ( a : UpgradeCost ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( a ) )\r\n {\r\n this.date = a.date && a.date.length > 0 ? a.date : this.date;\r\n this.id = a.id > 0 ? a.id : this.id;\r\n this.key = a.key && a.key.length > 0 ? a.key : this.key;\r\n this.selectedOption = a.selectedOption && a.selectedOption.length > 0 ? a.selectedOption : this.selectedOption;\r\n this.sitUserKey = a.sitUserKey && a.sitUserKey.length > 0 ? a.sitUserKey : this.sitUserKey;\r\n this.subtotal = a.subtotal > 0 ? a.subtotal : this.subtotal;\r\n this.tax = a.tax > 0 ? a.tax : this.tax;\r\n this.total = a.total > 0 ? a.total : this.total;\r\n }\r\n }\r\n // -----------------------------------------------\r\n public toString () : string\r\n {\r\n let outString = '' +\r\n '{,\\n' +\r\n 'date:' +\r\n this.date +\r\n ',\\n' +\r\n 'id: ' +\r\n this.id +\r\n ', \\n' +\r\n 'selectedOption: ' +\r\n this.selectedOption + \r\n ',\\n' +\r\n 'sitUserKey: ' +\r\n this.sitUserKey +\r\n ',\\n' +\r\n 'subtotal: ' +\r\n this.subtotal +\r\n ',\\n' +\r\n 'tax: ' +\r\n this.tax +\r\n ',\\n' +\r\n 'total: ' +\r\n this.total + \r\n '\\n}';\r\n return outString;\r\n }\r\n // -----------------------------------------------\r\n}\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { PhotoMgmtAction } from '../../models/common/photoMgmtAction.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\n// import { Pager } from '../../models/pagination/pager.model';\r\nimport { PagerMemberActivity } from '../../models/pagination/pagerMemberActivity.model';\r\nimport { SitUserService } from '../commonServiceService/sitUserService.service';\r\nimport { ActivityService } from '../memberServiceService/activityService.service';\r\nimport { BackgroundImageAnimationService } from '../rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DomUtilsServiceStatic } from '../staticServices/domUtilsServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { GlyphiconMenuServiceInterface } from '../../interfaces/serviceInterfaces/pagerServicesInterfaces/glyphiconMenuServiceInterface';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { MemberActivity } from '../../models/member/memberActivity.model';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\n\r\ndeclare let jQuery: any;\r\n\r\ndeclare let $ : any;\r\n\r\n// ref: http://xahlee.info/js/javascript_range_array.html\r\nconst xah_range = ((min : any, max : any, step = 1,) => (Array(Math.floor((max - min) / step) + 1).fill(min).map(((x, i) => (x + i * step)),)));\r\n// const memberViewGlyphNamesHolder: string[] = [ 'wink', 'like', 'star', 'friend', 'block', 'unblock', 'lock', 'unlock', ]; \r\n\r\n@Injectable({ providedIn: 'any' })\r\nexport class GlyphiconMenuService implements OnDestroy, GlyphiconMenuServiceInterface {\r\n public actedGlyphNames = [];\r\n public actedUnlockAndBlockGlyphNames = [];\r\n public actedKvGlyphArr : KvMemberActivityGlyph[] = [];\r\n private allGlyphNameArr : string[] = [\r\n 'block',\r\n 'buddy',\r\n 'camera',\r\n 'chat',\r\n 'delete',\r\n 'deleted',\r\n 'dislike',\r\n 'email',\r\n 'folderClosed',\r\n 'folderOpen',\r\n 'inbox',\r\n 'like',\r\n 'tala',\r\n 'note',\r\n 'private',\r\n 'public',\r\n 'saved',\r\n 'sent',\r\n 'starred',\r\n 'track',\r\n 'unlock',\r\n 'video',\r\n ];\r\n public allGlyphKvArr : KvMemberActivityGlyph[] = [];\r\n public currentItem = 0;\r\n public currentItemKvGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public currentKvPhoto : KvPhoto = new KvPhoto();\r\n public currentPage = 1;\r\n public currentPageGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public currentPhoto : Photo = new Photo();\r\n public defaultViewMemberGlyphNameArr : string[] = [ 'chat', 'email', 'star', 'friend', 'unfriend', 'like', 'dislike', 'tala', 'unlock', 'block', 'unblock', 'private', 'public', 'wink', ];\r\n public defaultGlyphKvArr : KvMemberActivityGlyph[] = [];\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public endIndex = 0;\r\n public firstItem = 0;\r\n public firstPage = 0;\r\n public glyphsForPhotoMgmt : KvMemberActivityGlyph[] = []; // Note : main array that pagination uses.\r\n public glyphsForViewMember : KvMemberActivityGlyph[] = []; // Note : main array that pagination uses.\r\n public glyphNames : string[] = [ 'camera', 'primary', 'private', 'public' ];\r\n public imageArr : string[] = [];\r\n public isBuddy = false;\r\n public isBlocked = false;\r\n public isFriend = false;\r\n public isFriendByDictionaryData = false;\r\n public isLiked = false;\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isStarred = false;\r\n public isToggleCamera = false;\r\n public isUnlocked = false;\r\n public isViewMember = false;\r\n public isWinked = false;\r\n public kvGlyphArr : KvMemberActivityGlyph[] = []; // Note : main array that pagination uses.\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public lastPage = 0;\r\n public lastItem = 0;\r\n public lastItemKvGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public memberViewGlyphNamesHolder : string[] = [ 'wink', 'like', 'star', 'friend', ]; \r\n public memberViewGlyphNames : string[] = [];\r\n public memberViewMenuNames : string[] = [ 'chat', 'email', 'note', 'buddy', 'like', 'private', 'public', 'lock', 'block', 'unblock', 'dislike' ];\r\n\r\n public nextItem = 0;\r\n public nextItemKvGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public nextPage = 0;\r\n public pagedKvGlyphArr : KvMemberActivityGlyph[] = [];\r\n public page = 1;\r\n public pager : PagerMemberActivity = new PagerMemberActivity();\r\n public pagerVMemActGlyph : PagerMemberActivity = new PagerMemberActivity();\r\n public pages : any[] = [];\r\n public pageSize = 10;\r\n public previousItem = 0;\r\n public previousPage = 0;\r\n public previousItemKvGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public photoMgmtMenuNames : string[] = [ 'camera' ];\r\n public photoMgmtGlyphNames : string[] = [];\r\n public photoMgmtAction : PhotoMgmtAction = new PhotoMgmtAction();\r\n public startIndex = 0;\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n public totalItems = 0;\r\n public totalPages = 0;\r\n public renderer! : Renderer2;\r\n public userMemberViewGlyphNames : string[] = [];\r\n // ---------------------------------------------------------------\r\n constructor (\r\n public activityService : ActivityService,\r\n private bias : BackgroundImageAnimationService,\r\n private rendererService : RendererService,\r\n private router : Router,\r\n private sitUserService : SitUserService,\r\n @Inject(DOCUMENT) document : any,\r\n @Inject(Window) window : any\r\n ) {\r\n if (this.rendererService) {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n // -----------------------------------------------------------\r\n // EmitterSubjectService.setMemberViewGlyphMenuEmitter\r\n // .subscribe( result =>\r\n // {\r\n // debugger;\r\n // this.setMemberViewGlyphMenu();\r\n // // debugger;\r\n // } );\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n /*\r\n * ===============================================================\r\n * ---------------------------------------------------------------\r\n */\r\n public clearGlyphMenu () : void {\r\n this.allGlyphKvArr = [];\r\n this.defaultGlyphKvArr = [];\r\n }\r\n // ---------------------------------------------------------------\r\n public clearPhotoMgmtGlyphMenu () : void {\r\n this.glyphsForPhotoMgmt = [];\r\n this.kvGlyphArr = [];\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n }\r\n // ---------------------------------------------------------------\r\n public clearViewMemberGlyphMenu () : void {\r\n this.glyphsForViewMember = [];\r\n this.kvGlyphArr = [];\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n }\r\n // ---------------------------------------------------------------\r\n public cases (action : any, index : number, glyphKvArr : KvMemberActivityGlyph[], receiverSitUserId: number) : KvMemberActivityGlyph[] {\r\n let gKvAny;\r\n \r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n gKvAny = new KvMemberActivityGlyph();\r\n // ---------------------\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action)) {\r\n\r\n switch ((action || action.action || '').toLocaleLowerCase()) {\r\n case 'add':\r\n gKvAny.value = 'glyphicon-plus';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'add';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'block':\r\n case 'blocked':\r\n gKvAny.value = 'glyphicon-ban-circle';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'block';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'buddy':\r\n gKvAny.value = 'glyphicon-heart';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'buddy';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'camera':\r\n gKvAny.value = 'glyphicon-camera';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'camera';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'chat':\r\n gKvAny.value = 'assets/photos/chat.png';\r\n // gKvAny.value = 'glyphicon-comment';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'chat';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n // debugger;\r\n break;\r\n case 'delete':\r\n gKvAny.value = 'glyphicon-remove';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'delete';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'deleted':\r\n gKvAny.value = 'glyphicon-trash';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'deleted';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'dislike':\r\n gKvAny.value = 'glyphicon-thumbs-down';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'dislike';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'email':\r\n gKvAny.value = 'glyphicon-envelope';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'email';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'friend':\r\n gKvAny.value = 'glyphicon-heart';// glyph-members-transparent.png\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'friend';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'folderOpen':\r\n gKvAny.value = 'glyphicon-folder-open';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'folderOpen';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'folderClose':\r\n gKvAny.value = 'glyphicon-folder-close';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'folderClose';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'inbox':\r\n gKvAny.value = 'assets/photos/inbox-lock.png';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'inbox';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'like':\r\n gKvAny.value = 'glyphicon-thumbs-up';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'like';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n // Note: the 'key' is used to display what the user intends to do, that is opposite of current state of the privacy.\r\n // For example, user-A has unlocked the private pics of him for user-B. So when the user-A visits user-B's profile,\r\n // user-A should see the key = 'unlock' pic, to inform the user the current state of his photo-privacy. \r\n case 'tala':\r\n case 'locked':\r\n case 'lock':\r\n gKvAny.value = 'assets/photos/lock.png';\r\n gKvAny.action = gKvAny.key = 'tala'; // when lock key should say to unlock\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n // debugger;\r\n break;\r\n case 'note':\r\n gKvAny.value = 'glyphicon-bell';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'note';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'primary':\r\n gKvAny.value = 'glyphicon-picture';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'primary';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'private':\r\n gKvAny.value = 'assets/photos/private.png'; /* 'private-lock.png';*/\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'private';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'profile':\r\n gKvAny.value = 'glyphicon-user';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'profile';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'public':\r\n gKvAny.value = 'assets/photos/public.png'; /* 'public-unlock.png';*/\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'public';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'remove':\r\n gKvAny.value = 'glyphicon-minus';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'remove';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'save':\r\n case 'saved':\r\n gKvAny.value = 'glyphicon-save';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'save';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'sent':\r\n gKvAny.value = 'glyphicon-inbox';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'sent';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'star':\r\n gKvAny.value = 'glyphicon-star';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'star';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'track':\r\n gKvAny.value = 'glyphicon-eye-open';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'track';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'unblock':\r\n case 'unblocked':\r\n gKvAny.value = 'glyphicon-ok-circle';\r\n gKvAny.action = gKvAny.key = 'unblock';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n // debugger;\r\n break;\r\n case 'unfriend':\r\n gKvAny.value = 'glyphicon-remove-circle';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'unfriend';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'unlock':\r\n case 'unlocked':\r\n gKvAny.value = 'assets/photos/unlock.png';\r\n gKvAny.action = gKvAny.key = 'unlock'; // when unlocked, key should say to lock\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n // debugger;\r\n break;\r\n case 'video':\r\n gKvAny.value = 'glyphicon-facetime-video';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'video';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n case 'wink':\r\n gKvAny.value = 'assets/photos/wink-2.png';\r\n gKvAny.action = gKvAny.key = gKvAny.modelName = 'wink';\r\n gKvAny.receiverSitUserId = receiverSitUserId;\r\n gKvAny.senderSitUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n gKvAny.index = index;\r\n glyphKvArr.push(gKvAny);\r\n break;\r\n default:\r\n /*\r\n * gKvAny.value = 'glyphicon-align-justify';\r\n * gKvAny.action = gKvAny.key = 'default';\r\n * gKvAny.receiverSitUserId = receiverSitUserId;\r\n * gKvAny.doerSitUserId = this.loginSuccess.signedInUserId;\r\n * gKvAny.signedInUserId = this.loginSuccess.signedInUserId;\r\n * gKvAny.index = index++;\r\n * glyphKvArr.push(gKvAny);\r\n */\r\n break;\r\n }\r\n }\r\n return glyphKvArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public createGlyphMenu (names : string[], receiverSitUserId: number) : KvMemberActivityGlyph[] {\r\n // debugger;\r\n let glyphKvArr : any[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(names) && names.length > 0) {\r\n // debugger;\r\n for (var i = 0; i < names.length; i++){\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(names[i])) {\r\n // debugger;\r\n glyphKvArr = this.cases(names[ i ], i, glyphKvArr, receiverSitUserId);\r\n }\r\n }\r\n }\r\n return glyphKvArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public getGlyphs () : KvMemberActivityGlyph[] {\r\n return this.kvGlyphArr;\r\n }\r\n public setGlyphs (value : KvMemberActivityGlyph[]) : void {\r\n this.kvGlyphArr = value;\r\n }\r\n // ---------------------------------------------------------------\r\n public getGlyphsForPhotoMgmt () : KvMemberActivityGlyph[] {\r\n return this.glyphsForPhotoMgmt;\r\n }\r\n public setGlyphsForPhotoMgmt (value : KvMemberActivityGlyph[]) : void {\r\n this.glyphsForPhotoMgmt = value;\r\n }\r\n // ---------------------------------------------------------------\r\n public getGlyphsForViewMember () : KvMemberActivityGlyph[] {\r\n return this.glyphsForViewMember;\r\n }\r\n public setGlyphsForViewMember (value : KvMemberActivityGlyph[]) : void {\r\n this.glyphsForViewMember = value;\r\n }\r\n // ---------------------------------------------------------------\r\n public getImageArr () : string[] {\r\n return this.imageArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public setAllGlyphKvArr (kvArr : KvMemberActivityGlyph[]) : void {\r\n this.allGlyphKvArr = kvArr;\r\n }\r\n // ---------------------------------------------------------------\r\n //public getAllGlyphKvArr () : KvMemberActivityGlyph[] {\r\n // return this.createAllGlyphiconArray();\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n //public createAllGlyphiconArray () : KvMemberActivityGlyph[] {\r\n // // debugger;\r\n // return this.createGlyphMenu(this.allGlyphNameArr);\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n //public createDefaultGlyphiconArray () : KvMemberActivityGlyph[] {\r\n // // debugger;\r\n // return this.createGlyphMenu(this.defaultViewMemberGlyphNameArr);\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n public createMemberViewGlyphiconArray (sitUserId) : Observable {\r\n // debugger;\r\n return new Observable(subscriber => {\r\n if (sitUserId > 0) {\r\n this.getMemberViewGlyphNames(sitUserId).subscribe(data => {\r\n this.memberViewGlyphNames = data;\r\n // debugger;\r\n // each time a new set of glyphs are created, we create acted glyphs as well:\r\n EmitterSubjectService.emitActedGlyphNames(this.actedGlyphNames); // important!\r\n EmitterSubjectService.emitActedUnlockAndBlockGlyphNames(this.actedUnlockAndBlockGlyphNames);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewGlyphNames) && this.memberViewGlyphNames.length > 0) {\r\n this.glyphsForViewMember = this.createGlyphMenu(this.memberViewGlyphNames, sitUserId);\r\n // debugger;\r\n subscriber.next(this.glyphsForViewMember);\r\n } \r\n })\r\n }\r\n }) \r\n }\r\n // ---------------------------------------------------------------------------------\r\n public createGlyphiconArrayFromNames (names: any[], sitUserId: number) : KvMemberActivityGlyph[] { \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(names) && names.length > 0) {\r\n // debugger;\r\n return this.createGlyphMenu(names, sitUserId);\r\n }\r\n else return [];\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setDefaultGlyphiconArray (dKvArr : KvMemberActivityGlyph[]) : void {\r\n // debugger;\r\n this.defaultGlyphKvArr = dKvArr;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n //public getDefaultGlyphiconArray () : KvMemberActivityGlyph[] {\r\n // // debugger;\r\n // return this.createDefaultGlyphiconArray();\r\n //}\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : This is a special-case. Do NOT delete/change this! 2020/October/24\r\n * Note : a single kvGlyph is used to produce an array of glyphs on the basis of:\r\n * 1. camera, 2. isPrimary, 3. isPrivate\r\n * ---------------------------------------------------------------\r\n */\r\n public createPhotoMgmtGlyphMenuArrFromKvGlyph (kvG : KvMemberActivityGlyph) : KvMemberActivityGlyph[] {\r\n // debugger;\r\n const outKvGArr : KvMemberActivityGlyph[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvG)) {\r\n let index = 0;\r\n let primaryImage : any;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n // debugger;\r\n\r\n let kvg = new KvMemberActivityGlyph();\r\n\r\n kvg = new KvMemberActivityGlyph().copyIfExists(kvg, kvG); // = CopyServiceStatic.copyKvGlyph(kvG);\r\n // debugger;\r\n kvg.glyphName = 'camera';\r\n kvg.id = kvG.id;\r\n kvg.index = index++;\r\n kvg.isPrivate = false;\r\n kvg.isPrimary = false;\r\n kvg.key = 'camera';\r\n kvg.signedInUserId = this.loginSuccess.signedInUserId;\r\n kvg.value = 'glyphicon-camera';\r\n outKvGArr.push(kvg);\r\n /*\r\n * debugger;\r\n * if the given(param) kvGlyph's photoId==sitUser.primaryPhotoBnId, then no need to show glyph,\r\n * instead show the primary pic and caption 'Your Primary Pic'.\r\n */\r\n\r\n\r\n // first test to see if the kvG.value contains raw-image-data\r\n // if not then check if loginSuccess.primaryImage contains raw-image-data\r\n // -----------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvG.glyphName)\r\n && kvG.privacy.toLowerCase().indexOf(\"primary\") !== -1) {\r\n // debugger;\r\n let pattern = /\\'*data:image(\\/(jpeg|jpg|png|svg))+;base64,/;\r\n if (pattern.test(kvG.value)) {\r\n primaryImage = kvG.value;\r\n }\r\n else if (pattern.test(this.loginSuccess.primaryImage)\r\n && kvG.photoBnId === this.loginSuccess.primaryPhotoBnId) {\r\n primaryImage = this.loginSuccess.primaryImage;\r\n }\r\n // debugger;\r\n kvg = new KvMemberActivityGlyph();\r\n kvg = new KvMemberActivityGlyph().copyIfExists(kvg, kvG); // = CopyServiceStatic.copyKvGlyph(kvG); // TODO: restore\r\n // debugger;\r\n kvg.glyphName = 'primary';\r\n kvg.id = kvG.id;\r\n kvg.index = index++;\r\n kvg.isPrivate = false;\r\n kvg.isPrimary = true;\r\n kvg.key = 'primary';\r\n kvg.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n kvg.value = JsRegExpServiceStatic.stripUrlForImageData(primaryImage);// imageProcessingServiceStatic.normalizeImageData(primaryImage);//\r\n outKvGArr.push(kvg);\r\n // debugger;\r\n }\r\n /*\r\n * if the given(param) kvGlyph's isPrivate==false, then show-isPrivate, else show-non-isPrivate\r\n * in this case this image is a candidate to be primary, so show the 'Make-Primary' glyphicon.\r\n * --------------------------------------------------------------------------------------------\r\n */\r\n\r\n else {\r\n kvg = new KvMemberActivityGlyph();\r\n kvg = new KvMemberActivityGlyph().copyIfExists(kvg, kvG);// = CopyServiceStatic.copyKvGlyph(kvG);\r\n kvg.glyphName = 'primary';\r\n kvg.id = kvG.id;\r\n kvg.index = index++;\r\n kvg.isPrivate = kvG?.privacy?.toLowerCase()?.indexOf('private') !== -1 ? true : false;\r\n kvg.isPrimary = false; // important!\r\n kvg.key = 'primary';\r\n kvg.signedInUserId = this.loginSuccess.signedInUserId;\r\n kvg.value = 'glyphicon-user'; // or KvPhotoBn's pic \r\n outKvGArr.push(kvg);\r\n // debugger;\r\n }\r\n // Note : always check 'private' condition first, that way 'else' will cover 'public/primary' cases.\r\n if (kvG?.privacy?.toString()?.toLowerCase()?.indexOf('private') !== -1) {\r\n kvg = new KvMemberActivityGlyph();\r\n kvg = new KvMemberActivityGlyph().copyIfExists(kvg, kvG); // = CopyServiceStatic.copyKvGlyph(kvG);\r\n kvg.glyphName = 'public';\r\n kvg.id = kvG.id;\r\n kvg.index = index++;\r\n kvg.isPrivate = true; // should reflect the original value of 'privacy'\r\n kvg.isPrimary = false;\r\n kvg.key = 'public'; // should relfect what the user intends to do\r\n kvg.signedInUserId = this.loginSuccess.signedInUserId;\r\n kvg.value = 'public.png';\r\n outKvGArr.push(kvg);\r\n // debugger;\r\n } else {\r\n kvg = new KvMemberActivityGlyph();\r\n kvg = new KvMemberActivityGlyph().copyIfExists(kvg, kvG);// = CopyServiceStatic.copyKvGlyph(kvG);\r\n kvg.glyphName = 'private';\r\n kvg.id = kvG.id;\r\n kvg.index = index++;\r\n kvg.isPrivate = false; // should reflect the original value of 'privacy'\r\n kvg.isPrimary = false;\r\n kvg.key = 'private'; // should relfect what the user intends to do\r\n kvg.signedInUserId = this.loginSuccess.signedInUserId;\r\n kvg.value = 'private.png';\r\n outKvGArr.push(kvg);\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n return outKvGArr;\r\n }\r\n // =================================================================================\r\n // ---------------------------------------------------------------\r\n public clearViewMemberGlyphNames () : any {\r\n this.memberViewGlyphNames = [];\r\n this.clearGlyphMenu();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public clearPhotoMgmtGlyphNames () : any {\r\n this.photoMgmtGlyphNames = [];\r\n this.clearGlyphMenu();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: There are two types of glyphicon-menues: toggle and non-toggle.\r\n // The toggle glyph-menue-pair(s) are: lock/unlock.\r\n // The non-toggle-glyph-menues ate: 1. block 2. friend 3.like 4. star\r\n //\r\n // Each non-toggle-glyph-menu has it's opposite action such as 'dislike opposing like',\r\n // that can be performed on that 'Action-Page-List' of all the members that beelong to that list\r\n // --------------------------------------------------------------\r\n //public createUserGlyphNames (sitId : number) : Observable {\r\n // // debugger;\r\n // this.userMemberViewGlyphNames = [];\r\n // var myMemberActivities : MemberActivity[] = [];\r\n // var myMemberLockingActivity : MemberActivity = null;\r\n // var mAct : MemberActivity = new MemberActivity();\r\n // var sitUserId = sitId;\r\n // var k = -1;\r\n // var jsExpDate : any;\r\n // var jsNow : any;\r\n // return new Observable(subscriber => {\r\n // //if (sitUserId === 0) {\r\n // // // debugger;\r\n // // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // // sitUserId = this.sitUser.sitUserId;\r\n // //}\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n // && sitUserId > 0\r\n // && sitUserId !== this.loginSuccess.signedInUserId) {\r\n // this.isToggleCamera = false;\r\n // EmitterSubjectService.emitIsToggleCamera(false);\r\n\r\n // // create a deep-copy of memberViewGlyphNames:\r\n // this.userMemberViewGlyphNames = JSON.parse(JSON.stringify(this.memberViewGlyphNames))\r\n // // debugger;\r\n\r\n // this.activityService.getMyActivities(sitUserId, '').subscribe(data => // note: action='' will get all memberActivities\r\n // {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // myMemberActivities = data;\r\n // // debugger;\r\n // EmitterSubjectService.setMyActivityArr(myMemberActivities);\r\n // // debugger;\r\n\r\n // for (var c in myMemberActivities) {\r\n // mAct = myMemberActivities[ c ];\r\n // k = this.isGlyphInMenuArr(this.userMemberViewGlyphNames, mAct.action);\r\n\r\n // // debugger;\r\n // switch (mAct.action.toLowerCase()) {\r\n // case 'friend':\r\n // case 'block':\r\n // case 'unblock':\r\n // case 'like':\r\n // case 'dislike':\r\n // if (k >= 0 && k < this.userMemberViewGlyphNames.length) {\r\n // this.userMemberViewGlyphNames.splice(k, 1);\r\n // }\r\n // break;\r\n // }\r\n // }\r\n // // debugger;\r\n // // Buddying Behavior is not a glyph for V menu:\r\n\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // else {\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // })\r\n // }\r\n // })\r\n //}\r\n // --------------------------------------------------------------\r\n //public addUserUnlockGlyphNames (sitId : number) : Observable {\r\n // // debugger;\r\n // this.userMemberViewGlyphNames = [];\r\n // var myMemberActivities : MemberActivity[] = [];\r\n // var myMemberLockingActivity : MemberActivity = null;\r\n // var mAct : MemberActivity = new MemberActivity();\r\n // var sitUserId = sitId;\r\n // var k = -1;\r\n // var jsExpDate : any;\r\n // var jsNow : any;\r\n // return new Observable(subscriber => {\r\n // if (sitUserId === 0) {\r\n // // debugger;\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // sitUserId = this.sitUser.sitUserId;\r\n // }\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n // && sitUserId > 0\r\n // && sitUserId !== this.loginSuccess.signedInUserId)\r\n // {\r\n // this.isToggleCamera = false;\r\n // EmitterSubjectService.emitIsToggleCamera(false);\r\n\r\n // // create a deep-copy of memberViewGlyphNames:\r\n // this.userMemberViewGlyphNames = JSON.parse(JSON.stringify(this.memberViewGlyphNames))\r\n\r\n // // debugger;\r\n // this.activityService.getMyActivities(sitUserId, 'unlock').subscribe(data =>\r\n // {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data))\r\n // {\r\n\r\n // // we take only the latest entry of locking data:\r\n // myMemberLockingActivity = data[ data.length - 1 ];\r\n\r\n // // merge the lockingActicity with the memberActivities and set:\r\n // myMemberActivities.push(myMemberLockingActivity);\r\n // EmitterSubjectService.setMyActivityArr(myMemberActivities);\r\n // // debugger;\r\n\r\n // mAct = myMemberLockingActivity;\r\n\r\n // //consider expiry time for `unlocked`:\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.action)\r\n // && mAct.action.toLowerCase().indexOf('unlock') !== -1) {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.expiryDate)) { \r\n // jsExpDate = DateStringServiceStatic.convertNetTicsToJsDateTicks(mAct.expiryDate);\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.date)) {\r\n // jsExpDate = DateStringServiceStatic.convertNetTicsToJsDateTicks(mAct.date);\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.jsDateForCs)) {\r\n // jsExpDate = mAct.jsDateForCs;\r\n // }\r\n // if(FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(jsExpDate))\r\n // jsNow = new Date().getTime();\r\n\r\n // // debugger;\r\n // //if expired:\r\n // if (jsExpDate - jsNow < 0)\r\n // {\r\n // // expired, so remove `unlock` & keep `lock` => show ing `locked`\r\n // k = this.isGlyphInMenuArr(this.userMemberViewGlyphNames, 'unlock');\r\n\r\n // if (k >= 0 && k < this.userMemberViewGlyphNames.length) {\r\n // // debugger;\r\n // this.userMemberViewGlyphNames.splice(k, 1);\r\n // // debugger;\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // } // unexpired, so keep `unlock` & remove `lock`\r\n // else { //if `unlock` still valid/unexpired, take out 'tala' => showing `unlocked`\r\n // k = this.isGlyphInMenuArr(this.userMemberViewGlyphNames, 'tala');\r\n\r\n // if (k >= 0 && k < this.userMemberViewGlyphNames.length) {\r\n // // debugger;\r\n // this.userMemberViewGlyphNames.splice(k, 1);\r\n // // debugger;\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // }\r\n // // if lock, remove `unlock` from array => showing `locked`\r\n // else if (mAct.action.toLowerCase().indexOf('tala') !== -1) {\r\n // k = this.isGlyphInMenuArr(this.userMemberViewGlyphNames, 'unlock');\r\n\r\n // if (k >= 0 && k < this.userMemberViewGlyphNames.length) {\r\n // // debugger;\r\n // this.userMemberViewGlyphNames.splice(k, 1);\r\n // // debugger;\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // else {\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // else {\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // }) \r\n // }\r\n // })\r\n //}\r\n // --------------------------------------------------------------\r\n //public addUserTrackWinkGlyphNames (sitId : number) : Observable {\r\n // // debugger;\r\n // this.userMemberViewGlyphNames = [];\r\n // var myMemberActivities : MemberActivity[] = [];\r\n // var myMemberLockingActivity : MemberActivity = null;\r\n // var mAct : MemberActivity = new MemberActivity();\r\n // var sitUserId = sitId;\r\n // var k = -1;\r\n // var jsExpDate : any;\r\n // var jsNow : any;\r\n // return new Observable(subscriber => {\r\n // if (sitUserId === 0) {\r\n // // debugger;\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // sitUserId = this.sitUser.sitUserId;\r\n // }\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n // && sitUserId > 0\r\n // && sitUserId !== this.loginSuccess.signedInUserId) {\r\n // this.isToggleCamera = false;\r\n // EmitterSubjectService.emitIsToggleCamera(false);\r\n\r\n // // create a deep-copy of memberViewGlyphNames:\r\n // this.userMemberViewGlyphNames = JSON.parse(JSON.stringify(this.memberViewGlyphNames))\r\n\r\n // debugger;\r\n // this.activityService.getMyActivities(sitUserId, 'trackwink').subscribe(data => {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data))\r\n // {\r\n\r\n // // we take only the latest entry of locking data:\r\n // myMemberLockingActivity = data[ data.length - 1 ];\r\n\r\n // // merge the lockingActicity with the memberActivities and set:\r\n // myMemberActivities.push(myMemberLockingActivity);\r\n // EmitterSubjectService.setMyActivityArr(myMemberActivities);\r\n // // debugger;\r\n\r\n // mAct = myMemberLockingActivity;\r\n\r\n // //consider expiry time for `unlocked`:\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.action)\r\n // && mAct.action.toLowerCase().indexOf('wink') !== -1)\r\n // {\r\n // // debugger;\r\n // //if expired:\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.expiryDate)) {\r\n // jsExpDate = DateStringServiceStatic.convertNetTicsToJsDateTicks(mAct.expiryDate);\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.date)) {\r\n // jsExpDate = DateStringServiceStatic.convertNetTicsToJsDateTicks(mAct.date);\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.jsDateForCs)) {\r\n // jsExpDate = mAct.jsDateForCs;\r\n // }\r\n // jsNow = new Date().getTime();\r\n\r\n // // debugger;\r\n // if (jsExpDate - jsNow > 0) {\r\n // //if `wink` still valid/unexpired, take out 'wink'\r\n // k = this.isGlyphInMenuArr(this.userMemberViewGlyphNames, 'wink');\r\n\r\n // if (k >= 0 && k < this.userMemberViewGlyphNames.length) {\r\n // // debugger;\r\n // this.userMemberViewGlyphNames.splice(k, 1);\r\n // // debugger;\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // else {\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // } \r\n // else {\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // else {\r\n // subscriber.next(this.userMemberViewGlyphNames);\r\n // subscriber.complete();\r\n // }\r\n // }) \r\n // }\r\n // })\r\n //}\r\n // ---------------------------------------------------------------\r\n public createDefaultPhotoMgmtGlyphNames () : string[] {\r\n // debugger;\r\n this.photoMgmtGlyphNames = [];\r\n if (this.sitUser.sitUserId === this.loginSuccess.signedInUserId) {\r\n // debugger;\r\n if (this.isGlyphInMenuArr(this.photoMgmtGlyphNames, 'camera') === -1) {\r\n this.photoMgmtGlyphNames.push('camera');\r\n }\r\n }\r\n return this.photoMgmtGlyphNames;\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n\r\n // ---------------------------------------------------------------\r\n // Note : a single kvGlyph is used to produce an array of glyphs on the basis of:\r\n // 1. camera, 2. isPrimary, 3. isPrivate\r\n // ---------------------------------------------------------------\r\n public createPhotoMgmtGlyphMenuArrFromKvPhoto (kvP : KvPhoto) : KvMemberActivityGlyph[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP)) {\r\n let kvg : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n kvg = new KvMemberActivityGlyph().copyFromKvPhoto(kvP);\r\n kvg.kvPhoto = kvP;\r\n \r\n var i = 0;\r\n \r\n // debugger; //TODO: watch the kvg\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvg)) { \r\n this.kvMemActGlyphArrForPhotoMgmt = this.createPhotoMgmtGlyphMenuArrFromKvGlyph(kvg);\r\n i = 0;\r\n this.kvMemActGlyphArrForPhotoMgmt.forEach(e => {\r\n e.elemId = \"pagerVGlyphMgmt-\" + i;\r\n i++;\r\n })\r\n this.bias.addPrimaryOrOtherClassToKvPhotoElement(kvP);\r\n return this.kvMemActGlyphArrForPhotoMgmt; \r\n } \r\n }\r\n else return [];\r\n }\r\n // ------------------------------------------------------------------------------\r\n // Should be deleted:\r\n // ------------------------------------------------------------------------------\r\n //public createViewMemberGlyphMenuArrFromKvPhoto (kvP : KvPhoto) : KvMemberActivityGlyph[] {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP)) {\r\n // this.getMemberViewGlyphMenuKvArr(kvP.sitUserId).subscribe(data => {\r\n // this.glyphsForViewMember = data;\r\n // // debugger;\r\n // return this.glyphsForViewMember\r\n // })\r\n\r\n // }\r\n // else return [];\r\n //}\r\n // ------------------------------------------------------------------------------\r\n // Note: This method does not display the selected...halo...highlight\r\n // ------------------------------------------------------------------------------\r\n //displayGlyphiconMenus (sitUserId : number) : Promise {\r\n // return new Promise((resolve, reject) => {\r\n // // debugger;\r\n // // ======================================================\r\n // // Begin of VerticalMemActGlyphsMenus display: required!\r\n // // ======================================================\r\n // this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n // this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n // // debugger;\r\n // if (sitUserId > 0) {\r\n // if (this.isViewMember) {\r\n // // display userActivity glyphs: like/friend/unlock...etc. only for non-signedInUser:\r\n // // -----------------------------------------------------------------------------------\r\n // // Note: the singedInUser should not be able to view the glyphs for member-activities\r\n // // such as like/friend/unlock/wink/etc. because he cannot do this to himself.\r\n // // displayViewMemberGlyphMenu() checks for this condition.\r\n // // -----------------------------------------------------------------------------------\r\n // // debugger;\r\n // this.kvMemActGlyphArrForViewMember = this.displayViewMemberGlyphMenu(sitUserId);\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenu(this.kvMemActGlyphArrForViewMember);\r\n // // resolve(this.kvMemActGlyphArrForViewMember);\r\n // }\r\n // else {\r\n // // debugger;\r\n // if (sitUserId === this.loginSuccess.signedInUserId) {\r\n // // -----------------------------------------------------------\r\n // // NOTE: the following displays the PhotoMgmtGlyphiconMenu:\r\n // // -----------------------------------------------------------\r\n // // debugger;\r\n // this.kvMemActGlyphArrForPhotoMgmt = this.displaySignInUserPrimaryKvPhotoGlyphs();\r\n // EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n // // -----------------------------------------------------------\r\n // } \r\n // }\r\n // resolve(this.kvMemActGlyphArrForPhotoMgmt);\r\n // }\r\n // else {\r\n // reject(null);\r\n // }\r\n // })\r\n //}\r\n // ----------------------------------------------------------------------------------\r\n // This method will cause the pagerGlyphMenu with respect to the KvPhoto to be displayed \r\n // and highlight the primaryImage if it exists in the pagerGlyphMenu.\r\n //\r\n // this method is called after the member-acvity-glyphs-for-photo-mgmt are rendered.\r\n // since prior to displaying the necessary conditions are checked, this does not\r\n // recheck the condition.\r\n // ----------------------------------------------------------------------------------\r\n public displayPhotoMgmtGlyphMenuForKvPhoto (kvp : KvPhoto) : KvMemberActivityGlyph[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value) && kvp.value.length > 0) {\r\n EmitterSubjectService.setCurrentKvPhoto(kvp);\r\n this.glyphsForPhotoMgmt = this.createPhotoMgmtGlyphMenuArrFromKvPhoto(kvp);\r\n // debugger;\r\n EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.glyphsForPhotoMgmt); // \r\n // debugger;\r\n }\r\n return this.glyphsForPhotoMgmt;\r\n }\r\n // ----------------------------------------------------------------\r\n // displaySignInUserPhotoMgmtGlyphs () : KvMemberActivityGlyph[] | any {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n // let primaryKvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto)) {\r\n // return this.displayPhotoMgmtGlyphMenuForKvPhoto(primaryKvPhoto);\r\n // }\r\n // else return null;\r\n // }\r\n // else return null;\r\n // }\r\n // ----------------------------------------------------------------\r\n public displaySignInUserPrimaryKvPhotoGlyphs () : KvMemberActivityGlyph[] | any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n let primaryKvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto)\r\n && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.value)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.pic)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.image))) {\r\n return this.getPhotoMgmtGlyphMenuOfKvPhotoAndHighlightPrimaryPhoto(primaryKvPhoto);\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n // -----------------------------------------------------------------------------------\r\n // Note: the singedInUser should not be able to view the glyphs for member-activities\r\n // such as like/friend/unlock/wink/etc.\r\n // -----------------------------------------------------------------------------------\r\n public displayViewMemberGlyphMenu (sitUserId : number) : KvMemberActivityGlyph[] | any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n && sitUserId > 0 && sitUserId !== this.loginSuccess.signedInUserId) {\r\n \r\n this.createMemberViewGlyphiconArray(sitUserId).subscribe(data => {\r\n this.glyphsForViewMember = data;\r\n debugger;\r\n EmitterSubjectService.emitDisplayViewMemberGlyphiconMenu(this.glyphsForViewMember);\r\n debugger;\r\n return this.glyphsForViewMember\r\n })\r\n }\r\n // else return this.displaySignInUserPrimaryKvPhotoGlyphs(); \r\n }\r\n // ---------------------------------------------------------------------------------\r\n public executeGlyphMenuArr (kvAnyArr : KvMemberActivityGlyph[]) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAnyArr) && kvAnyArr.length > 0) {\r\n this.kvGlyphArr = kvAnyArr;\r\n // debugger;\r\n this.setGlyphs(this.kvGlyphArr);\r\n if (this.kvGlyphArr.length > 10) { this.rotateArrowGlyphicons(); }\r\n // debugger; // TODO: inspect the glyphKvArr\r\n return true;\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public findActedGlyph (glyphs : KvMemberActivityGlyph[], sitId : number, action : string) : KvMemberActivityGlyph {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyphs) && glyphs.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action) && sitId > 0) {\r\n glyphs.map(e => {\r\n if ((e.action.toLocaleLowerCase().indexOf(action) !== -1 || e.key.toLocaleLowerCase().indexOf(action) !== -1) && e.senderSitUserId === sitId) {\r\n return e;\r\n }\r\n })\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: DO NOT DELETE THIS!\r\n // ---------------------------------------------------------------------------------\r\n // executeDefaultGlyphMenu(): any {\r\n // // debugger;\r\n // this.glyphs = this.createDefaultGlyphiconArray();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.glyphs) && this.glyphs.length >= 0) {\r\n // EmitterSubjectService.emitDisplayGlyphiconMenu(this.glyphs);\r\n // }\r\n // return this.glyphs;\r\n // }\r\n // ---------------------------------------------------------------\r\n // This should be only occurance of this method:\r\n // Filter through myMemberActivitiesDictionary for\r\n // like/dislike, lock/unlock, block/unblock status.\r\n // ---------------------------------------------------------------\r\n public getMemberViewGlyphNames (sitId : number) : Observable {\r\n // debugger;\r\n var sitUserId = sitId;\r\n // Note: This method filers the glyphNames according to the following entities in dbo\r\n // 1) myMemberActivities entity\r\n // The following are treated separately:\r\n // 1) myMemberLockingActivities entity\r\n // 2) myMemberTrackWinkActivities entity\r\n // -----------------------------------------------------------------------------------------------------\r\n return new Observable(subscriber => {\r\n this.memberViewGlyphNames = JSON.parse(JSON.stringify(this.memberViewGlyphNamesHolder)); // deepcopy\r\n \r\n // debugger;\r\n this.activityService.getMyActivities(sitId, 'unlock').subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data))\r\n {\r\n if (data instanceof Array) {\r\n data.map(e => {\r\n this.actedUnlockAndBlockGlyphNames.push(e?.memberActivity);\r\n // debugger;\r\n // we do not save lock/unlock in actedGlyphNames:\r\n // ----------------------------------------------\r\n // this.actedGlyphNames.push(e.memberActivity); \r\n\r\n // Note: Unlock/Lock status is determined if they are present in actedGlyphNames.\r\n // The view treats them as it's own display unit.\r\n // We do not create `memberViewGlyphNames` for unlock/lock\r\n //\r\n // Similarly Unblock/Block status is determined if they are present in actedGlyphNames.\r\n // Block / Unblock are treated as they have their own display unit\r\n // We do not create `memberViewGlyphNames` for unblock/block\r\n\r\n })\r\n }\r\n else {\r\n this.actedUnlockAndBlockGlyphNames.push(data.memberActivity);\r\n }\r\n }\r\n // Like/dislike/friend/unfriend/star/wink: \r\n // debugger;\r\n this.activityService.getMyActivities(sitId, 'like').subscribe(data =>\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0)\r\n {\r\n // debugger;\r\n data.map(e => {\r\n // debugger;\r\n if (e?.memberActivity?.toLowerCase().indexOf('unblock') === -1 && e?.memberActivity?.toLowerCase().indexOf('block') === -1) {\r\n this.actedGlyphNames.push(e.memberActivity);\r\n }\r\n else {\r\n this.actedUnlockAndBlockGlyphNames.push(e?.memberActivity);\r\n }\r\n switch ((e?.memberActivity || '').toLocaleLowerCase()) {\r\n case 'like':\r\n // debugger;\r\n var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.memberViewGlyphNames, 'like');// do nothing\r\n if (index > -1) {\r\n this.memberViewGlyphNames.splice(index, 1);\r\n }\r\n break;\r\n case 'friend':\r\n var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.memberViewGlyphNames, 'friend');// do nothing\r\n if (index > -1) {\r\n this.memberViewGlyphNames.splice(index, 1);\r\n }\r\n break;\r\n case 'wink':\r\n var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.memberViewGlyphNames, 'wink');\r\n // debugger;\r\n if (index > -1) {\r\n this.memberViewGlyphNames.splice(index, 1);\r\n // debugger;\r\n }\r\n break;\r\n case 'star':\r\n var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.memberViewGlyphNames, 'star');\r\n // debugger;\r\n if (index > -1) {\r\n this.memberViewGlyphNames.splice(index, 1);\r\n // debugger;\r\n }\r\n break;\r\n }\r\n })\r\n // debugger;\r\n }\r\n subscriber.next(this.memberViewGlyphNames);\r\n })\r\n })\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // This should be only occurance of this method:\r\n // Filter through myMemberActivitiesDictionary for\r\n // like/dislike, lock/unlock, block/unblock status.\r\n // ---------------------------------------------------------------\r\n //public getMemberViewGlyphNames2 (sitId : number) : Observable {\r\n // // debugger;\r\n // var sitUserId = sitId;\r\n // // Note: This method filers the glyphNames according to the following entities in dbo\r\n // // 1) myMemberActivities entity\r\n // // 2) myMemberLockingActivities entity\r\n // // 3) myMemberTrackWinkActivities entity\r\n // // -----------------------------------------------------------------------------------------------------\r\n // return new Observable(subscriber => { \r\n // this.memberViewGlyphNames = this.memberViewGlyphNamesHolder; \r\n // this.activityService.getMyActivities(sitId, 'wink').subscribe(data => {\r\n // // debugger;\r\n // data.map(e => {\r\n // switch ((e.action || '').toLocaleLowerCase()) {\r\n // case 'star':\r\n // var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.memberViewGlyphNames, 'star');\r\n // // debugger;\r\n // if (index > -1) {\r\n // this.actedGlyphNames.push(e.action);\r\n // this.memberViewGlyphNames.splice(index, 1);\r\n // // debugger;\r\n // }\r\n // break;\r\n // }\r\n // })\r\n \r\n // // debugger;\r\n // this.activityService.getMyActivities(sitId, 'like').subscribe(data => {\r\n // // debugger;\r\n // data.map(e => {\r\n // switch ((e.action || '').toLocaleLowerCase()) {\r\n // case 'like':\r\n // var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.memberViewGlyphNames, 'like');// do nothing\r\n // if (index > -1) {\r\n // this.actedGlyphNames.push(e.action);\r\n // this.memberViewGlyphNames.splice(index, 1);\r\n // }\r\n // break;\r\n // case 'friend':\r\n // var index = ArraySupportServiceStatic.getIndexOfStringInArray(this.memberViewGlyphNames, 'friend');// do nothing\r\n // if (index > -1) {\r\n // this.actedGlyphNames.push(e.action);\r\n // this.memberViewGlyphNames.splice(index, 1);\r\n // }\r\n // break;\r\n // }\r\n // }) \r\n // // debugger;\r\n // subscriber.next(this.memberViewGlyphNames); \r\n // // subscriber.next(this.memberViewGlyphNames);\r\n // }) \r\n // // subscriber.next(this.memberViewGlyphNames);\r\n // }) \r\n // })\r\n //}\r\n // --------------------------------------------------------------------\r\n public getPagerVMemActGlyphMenuForViewMember (pageNum : number, sitUser : SitUser) : PagerMemberActivity | any {\r\n // debugger;\r\n if (pageNum > 0) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0) {\r\n this.createMemberViewGlyphiconArray(sitUser.sitUserId).subscribe(data => {\r\n this.glyphsForViewMember = this.pagerVMemActGlyph.kvGlyphArr = data;\r\n })\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.glyphsForViewMember) && this.glyphsForViewMember.length > 0) {\r\n // debugger;\r\n this.pagerVMemActGlyph = this.setPagerWithKvGlyphs(this.glyphsForViewMember, pageNum);\r\n return this.pagerVMemActGlyph;\r\n }\r\n else return null;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public getPagerVMemActGlyphMenuForPhotoMgmt (kvp : KvPhoto) : PagerMemberActivity | any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp) &&\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value) && kvp.value.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && kvp.image.length > 0)) {\r\n\r\n // this is a temporary fix; The kvp should have been complete befoe it gets here!\r\n // ------------------------------------------------------------------------------\r\n // if (kvp.value.length == 0 && kvp.image.length > 0) {\r\n // kvp.value = kvp.image;\r\n // }\r\n // else if (kvp.value.length > 0 && kvp.image.length == 0) {\r\n // kvp.image = kvp.value;\r\n // }\r\n // debugger;\r\n this.glyphsForPhotoMgmt = this.pagerVMemActGlyph.kvGlyphArr = this.createPhotoMgmtGlyphMenuArrFromKvPhoto(kvp);\r\n // debugger;\r\n this.pagerVMemActGlyph = this.setPagerWithKvGlyphs(this.glyphsForPhotoMgmt, kvp.pageNum > 0 ? kvp.pageNum : 1);\r\n // debugger;\r\n return this.pagerVMemActGlyph;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Only SignedInUser should have access to PhotoMgmt-related-activities:\r\n // ---------------------------------------------------------------\r\n // getPrimaryKvPhotoMgmtGlyphMenuForSignedInUserAndHighlightPrimaryImage (pkvPhoto : KvPhoto) : KvMemberActivityGlyph[] | any {\r\n public getPhotoMgmtGlyphMenuOfKvPhotoAndHighlightPrimaryPhoto (pkvPhoto : KvPhoto) : KvMemberActivityGlyph[] | any {\r\n let outGlyphs : KvMemberActivityGlyph[] = [];\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pkvPhoto) && (pkvPhoto.photoBnId > 0 || pkvPhoto.photoId > 0)) {\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n // debugger;\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n if (pkvPhoto.photoBnId === this.loginSuccess?.primaryPhotoBnId) {\r\n // in case of the signedInUserProfile, we get the photoMgmtGlyphs:\r\n // ---------------------------------------------------------------\r\n let outGlyph = new KvMemberActivityGlyph();\r\n outGlyph = outGlyph.copyFromKvPhoto(pkvPhoto);\r\n outGlyphs = this.createPhotoMgmtGlyphMenuArrFromKvGlyph(outGlyph);\r\n this.bias.addPrimaryOrOtherClassToKvPhotoElement(pkvPhoto);\r\n // debugger;\r\n return outGlyphs;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Only SignedInUser should have access to PhotoMgmt-related-activities:\r\n // ---------------------------------------------------------------\r\n public getViewMemberGlyphMenuOfKvPhotoAndHighlightPhoto (pkvP : KvPhoto) : Observable | any {\r\n var pkvPhoto = pkvP;\r\n let outGlyphs : KvMemberActivityGlyph[] = [];\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n return new Observable(subscriber => {\r\n if (this.isViewMember) {\r\n // in case of the non-signedInUserProfile, we get the viewMemberGlyphs:\r\n // ---------------------------------------------------------------\r\n if (pkvPhoto.photoBnId === this.sitUser?.primaryPhotoBnId) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n\r\n //TODO: NOTE: this is the wrong glyph-menu. it should be private/public/primary:\r\n this.createMemberViewGlyphiconArray(this.sitUser.sitUserId).subscribe(data => {\r\n outGlyphs = data;\r\n })\r\n }\r\n this.bias.addPrimaryOrOtherClassToKvPhotoElement(pkvPhoto);\r\n subscriber.next(outGlyphs);\r\n subscriber.complete();\r\n }\r\n }\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Deprecated!\r\n // ---------------------------------------------------------------\r\n //getPhotoMgmtKvArrGlyphMenuForKvPhoto (kvp : KvPhoto) : KvMemberActivityGlyph[] | any {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp) &&\r\n // (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value) && kvp.value.length > 0)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && kvp.image.length > 0)) {\r\n\r\n // // this is a temporary fix; The kvp should have been complete befoe it gets here!\r\n // // ------------------------------------------------------------------------------\r\n // // if (kvp.value.length == 0 && kvp.image.length > 0) {\r\n // // kvp.value = kvp.image;\r\n // // }\r\n // // else if (kvp.value.length > 0 && kvp.image.length == 0) {\r\n // // kvp.image = kvp.value;\r\n // // }\r\n // this.glyphsForPhotoMgmt = this.createPhotoMgmtGlyphMenuArrFromKvPhoto(kvp);\r\n // // debugger;\r\n // return this.glyphsForPhotoMgmt;\r\n // }\r\n // else return null;\r\n //}\r\n // ---------------------------------------------------------------\r\n // Deprecated!\r\n // ---------------------------------------------------------------\r\n //getPhotoMgmtGlyphMenuKvArr (photoMgmgGlyphNames : any[]) : KvMemberActivityGlyph[] | any {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoMgmtGlyphNames) && this.photoMgmtGlyphNames.length > 0) {\r\n // this.glyphsForPhotoMgmt = this.createGlyphMenu(this.photoMgmtGlyphNames);\r\n // } else {\r\n // this.glyphsForPhotoMgmt = this.createGlyphMenu(this.glyphNames);\r\n // }\r\n // // debugger;\r\n // return this.glyphsForPhotoMgmt;\r\n //}\r\n // ---------------------------------------------------------------\r\n // Note: this method gets the glyphs of the primaryKvPhoto, and\r\n // selects the primaryImage\r\n // TODO: need to Rename the function to refrect what it does/it's task\r\n // OR deprecated!\r\n // ---------------------------------------------------------------\r\n public getPrimaryImageGlyphMenuArrAndHighlightPrimaryImage (pkvP : KvPhoto) : Observable | any {\r\n var pkvPhoto = pkvP;\r\n let outGlyphs : KvMemberActivityGlyph[] = [];\r\n \r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n return new Observable(subscriber => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pkvPhoto) && pkvPhoto.photoBnId > 0) { \r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n if (pkvPhoto.photoBnId === this.loginSuccess?.primaryPhotoBnId) {\r\n // in case of the signedInUserProfile, we get the photoMgmtGlyphs:\r\n // ---------------------------------------------------------------\r\n outGlyphs = this.createPhotoMgmtGlyphMenuArrFromKvGlyph(CopyServiceStatic.copyFromKvPhotoToKvGlyph(pkvPhoto));\r\n this.bias.addPrimaryOrOtherClassToKvPhotoElement(pkvPhoto);\r\n\r\n }\r\n }\r\n else if (this.isViewMember) {\r\n // in case of the non-signedInUserProfile, we get the viewMemberGlyphs:\r\n // ---------------------------------------------------------------\r\n if (pkvPhoto.photoBnId === this.sitUser?.primaryPhotoBnId) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n\r\n //TODO: NOTE: this is the wrong glyph-menu. it should be private/public/primary:\r\n this.createMemberViewGlyphiconArray(this.sitUser.sitUserId).subscribe(data => {\r\n outGlyphs = data;\r\n })\r\n }\r\n this.bias.addPrimaryOrOtherClassToKvPhotoElement(pkvPhoto);\r\n }\r\n } \r\n }\r\n subscriber.next(outGlyphs);\r\n subscriber.complete();\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public isGlyphInMenuArr (glyphArr : string[], glyphName : string) : number {\r\n // debugger;\r\n let i = 0;\r\n let index = -1;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyphArr) && glyphArr.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyphName)) {\r\n for (i = 0; i < glyphArr.length; i++) {\r\n if (glyphArr[ i ].toString().toLowerCase().indexOf(glyphName.toLowerCase()) !== -1 ) {\r\n index = i;\r\n // debugger;\r\n break;\r\n } \r\n }\r\n }\r\n // debugger;\r\n return index;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public isGlyphInKvArr (glyphArr : KvMemberActivityGlyph[], glyph : KvMemberActivityGlyph) : number {\r\n // debugger;\r\n let i = 0;\r\n let index = -1;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyphArr) && glyphArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyph) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyph.key)) {\r\n for (i = 0; i < glyphArr.length; i++) {\r\n if (glyphArr[ i ].key.toString().toLowerCase().indexOf(glyph.key) !== -1) {\r\n index = i;\r\n // debugger;\r\n break;\r\n } else {\r\n i++;\r\n }\r\n }\r\n }\r\n // debugger;\r\n return index;\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * Usage : use 'glyphicon glyphicon-camera' for example.\r\n * Note : The View does not require to programatically draw the images,\r\n * just setting the glyph/image name will suffice. For image such as jpg/png/svg\r\n * the view contains the name of the folder. So, for example, no need to add\r\n * '/photos/' + chat.jpg, just simply 'chat.jpg' will suffice.\r\n * ---------------------------------------------------------------------------------\r\n */\r\n public setKvGlyphiconArray (glyphs : KvMemberActivityGlyph[], receiverSitUserId : number) : KvMemberActivityGlyph[] {\r\n let glyphKvArr: KvMemberActivityGlyph[] = [];\r\n let index = 0;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyphs) && glyphs.length > 0) {\r\n // debugger;\r\n glyphs.forEach((e) => {\r\n glyphKvArr = this.cases(e.key, index++, glyphKvArr, receiverSitUserId); // TODO: restore\r\n });\r\n\r\n /*\r\n * this.displayGlyphiconMenu();\r\n * EmitterSubjectService.emitDisplayGlyphiconMenu(this.glyphKvArr);\r\n */\r\n }\r\n // debugger;\r\n return glyphKvArr;\r\n }\r\n \r\n \r\n /*\r\n * =================================================================================\r\n * Begin of Pagination (core):\r\n * =================================================================================\r\n */\r\n // ---------------------------------------------------------------------------------\r\n public setKvGlyphPager (page : number) : any {\r\n return this.setPagerWithKvGlyphs(this.kvGlyphArr, page);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setPagerWithKvGlyphs (glyphs : KvMemberActivityGlyph[], page : number) : PagerMemberActivity {\r\n if (page < 1) {\r\n return null as any;\r\n } \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyphs) && glyphs.length > 0) {\r\n this.totalItems = glyphs.length;\r\n this.kvGlyphArr = glyphs;\r\n this.currentPage = page > 0 && page <= glyphs.length + 1 ? page : 1;\r\n }\r\n\r\n // debugger;\r\n\r\n // calculate total pages\r\n this.totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n // debugger;\r\n this.getPagerOfAnySizeUpto10(this.totalItems, this.page);\r\n\r\n /*\r\n * get pager object\r\n * (totalItems, currentPage, pageSize)\r\n */\r\n\r\n this.pager = this.setupPagerMemberActivity(this.kvGlyphArr, this.currentPage);\r\n\r\n // debugger;\r\n this.pager.kvMemActGlyphArrForPhotoMgmt = this.kvGlyphArr.slice(this.pager.startItemNo, this.pager.endItemNo + 1);\r\n this.pager.kvMemActGlyphArrForViewMember = this.pager.kvMemActGlyphArrForPhotoMgmt;\r\n return this.pager;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public setupPagerMemberActivity (kvGlyphArr : KvMemberActivityGlyph[], page : number) : any {\r\n this.pager = new PagerMemberActivity();\r\n\r\n this.pager.pageSize = this.pageSize;\r\n\r\n // kvPhotoArr varoiables:\r\n // ----------------------\r\n this.pager.kvGlyphArr = kvGlyphArr;\r\n this.pager.startItemNo = 0;\r\n this.pager.firstItem = kvGlyphArr[ 0 ];\r\n this.pager.endItemNo = kvGlyphArr.length;\r\n this.pager.lastItem = kvGlyphArr[ kvGlyphArr.length - 1 ];\r\n\r\n // pages variables:\r\n // ----------------\r\n this.pager.pages = this.pages;\r\n this.pager.currentPageNo = this.page;\r\n this.pager.startPage = this.pages[ 0 ];\r\n this.pager.endPage = this.pages[ this.pages.length - 1 ];\r\n this.pager.nextPageNo = this.page + 1 <= this.totalPages ? this.page + 1 : this.totalPages;\r\n this.pager.previousPageNo = this.page - 1 >= 1 ? this.page - 1 : 1;\r\n this.pager.totalPages = this.totalPages;\r\n\r\n\r\n\r\n // pagedItems variables:\r\n // ---------------------\r\n this.pager.currentKvGlyphItem = this.kvGlyphArr[ this.page - 1 ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pager.currentItem)) {\r\n this.pager.currentItemNo = this.pager.currentItem.index;\r\n }\r\n\r\n this.pager.endItemNo = this.endIndex;\r\n if (this.endIndex < this.totalItems && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvGlyphArr[ this.endIndex ])) {\r\n this.pager.lastItem = this.kvGlyphArr[ this.endIndex ];\r\n }\r\n\r\n if (this.pager.nextPageNo > 0) {\r\n this.pager.nextKvGlyphItem = this.kvGlyphArr[ this.pager.nextPageNo - 1 ];\r\n }\r\n else {\r\n this.pager.nextKvGlyphItem = this.kvGlyphArr[ this.totalItems - 1 ];\r\n }\r\n\r\n if (this.pager.previousPageNo >= 1) {\r\n this.pager.previousKvGlyphItem = this.kvGlyphArr[ this.pager.previousPageNo - 1 ];\r\n }\r\n\r\n this.pager.startItemNo = this.startIndex;\r\n if (this.startIndex >= 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvGlyphArr[ this.startIndex ])) {\r\n this.pager.firstItem = this.kvGlyphArr[ this.startIndex ];\r\n }\r\n this.pager.totalItems = this.totalItems;\r\n\r\n return this.pager;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: Even though this method eliminates the need\r\n // of it's counterParts = [GetPagerOfSize10(), GetPagerOfSize5()]\r\n // we DO NOT delete it's counterParts\r\n // ---------------------------------------------------------------------------------\r\n public getPagerOfAnySizeUpto10 (totalItems : number, page : number) : void {\r\n let midCeilingOfPageSize = 0;\r\n let midFloorOfPageSize = 0;\r\n if (this.pageSize > 0) {\r\n midFloorOfPageSize = Math.floor(this.pageSize / 2);\r\n midCeilingOfPageSize = Math.ceil(this.pageSize / 2);\r\n }\r\n\r\n let startPage;\r\n let endPage;\r\n if (this.totalPages <= this.pageSize) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = this.totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages:\r\n // 1) lowerLimit of currentPageNo:\r\n if (this.page <= midCeilingOfPageSize) {\r\n startPage = 1;\r\n endPage = this.pageSize;\r\n // 2) upperLimit of currentPageNo:\r\n } else if (this.page + midFloorOfPageSize >= this.totalPages) {\r\n startPage = this.totalPages - this.pageSize - 1;\r\n endPage = this.totalPages;\r\n // 3) middleRange of currentPageNo\r\n } else {\r\n startPage = this.page - midCeilingOfPageSize - 1;\r\n endPage = this.page + midFloorOfPageSize;\r\n }\r\n }\r\n this.firstPage = startPage;\r\n this.lastPage = endPage;\r\n\r\n // ref: http://xahlee.info/js/javascript_range_array.html\r\n // const xah_range = ((min, max, step = 1,) => (Array(Math.floor((max - min) / step) + 1).fill(min).map(((x, i) => (x + i * step)),)));\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n this.pages = xah_range(startPage, endPage, 1);\r\n\r\n // --------------------------------------------------------------------------\r\n // this.startIndex = 0;\r\n // var baseEndIndex = Math.min(this.startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize),\r\n // (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n\r\n // this.startIndex = baseEndIndex - this.pageSize + 1;\r\n this.startIndex = (this.page - 1) * this.pageSize;\r\n this.endIndex = Math.min(this.startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize),\r\n (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ---------------------------------------------------------------------------------\r\n public GetPager (totalItems : any, currentPage : any, pageSize : any): any {\r\n // default to first page\r\n currentPage = currentPage || 1;\r\n\r\n // default page size is 10\r\n pageSize = pageSize || 10;\r\n\r\n // calculate total pages\r\n const totalPages = Math.ceil(totalItems / pageSize);\r\n\r\n let startPage;\r\n let endPage;\r\n\r\n if (totalPages <= 10) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (currentPage <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (currentPage + 4 >= totalPages) {\r\n startPage = totalPages - 9;\r\n endPage = totalPages;\r\n } else {\r\n startPage = currentPage - 5;\r\n endPage = currentPage + 4;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n const startIndex = (currentPage - 1) * pageSize;\r\n const endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range(startPage, endPage, 1);\r\n\r\n // return object with all pager properties required by the view\r\n this.pager.totalItems = this.totalItems = totalItems;\r\n this.pager.currentPage = this.currentPage = currentPage;\r\n this.pager.nextPage = this.currentPage = currentPage + 1 <= endPage ? currentPage + 1 : endPage;\r\n this.pager.previousPage = this.previousPage = currentPage - 1 >= startPage ? currentPage - 1 : startPage;\r\n this.pager.pageSize = this.pageSize = pageSize;\r\n this.pager.totalPages = this.totalPages = totalPages;\r\n this.pager.startPage = this.firstPage = startPage;\r\n this.pager.endPage = this.lastPage = endPage;\r\n this.pager.startItemNo = this.startIndex = startIndex;\r\n this.pager.endItemNo = this.endIndex = endIndex;\r\n this.pager.pages = pages;\r\n return this.pager;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n\r\n public GetPagerOfSize10 (totalItems : any, currentPage : any, pageSize : any): any {\r\n // default to first page\r\n this.currentPage = currentPage > 0 ? currentPage : 1;\r\n this.totalItems = totalItems > 0 ? totalItems : 1;\r\n // default page size is 10\r\n this.pageSize = pageSize > 0 ? pageSize : 10;\r\n\r\n // calculate total pages\r\n const totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n let startPage;\r\n let endPage;\r\n\r\n if (totalPages <= 10) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (this.currentPage <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (this.currentPage + 4 >= totalPages) {\r\n startPage = totalPages - 9;\r\n endPage = totalPages;\r\n } else {\r\n startPage = this.currentPage - 5;\r\n endPage = this.currentPage + 4;\r\n }\r\n }\r\n\r\n /*\r\n * calculate start and end item indexes\r\n * Updated version:\r\n * ------------------\r\n * let startIndex = totalItems <= this.pageSize ? (this.currentPage - 1)\r\n * : this.currentPage > this.pageSize && this.pageSize < totalPages ? (this.currentPage - 1) * this.pageSize : 0;\r\n * let endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1\r\n * : this.pageSize), (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n */\r\n\r\n /*\r\n * original version:\r\n * ------------------\r\n */\r\n const startIndex = this.currentPage * this.pageSize - 1;\r\n const endIndex = Math.min(startIndex + this.pageSize - 1, this.totalItems - 1);\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range(startPage, endPage, 1);\r\n\r\n // return object with all pager properties required by the view\r\n this.pager.totalItems = totalItems;\r\n this.pager.currentPage = currentPage;\r\n this.pager.nextPage = currentPage + 1 <= endPage ? currentPage + 1 : endPage;\r\n this.pager.previousPage = currentPage - 1 >= startPage ? currentPage - 1 : startPage;\r\n this.pager.pageSize = pageSize;\r\n this.pager.totalPages = totalPages;\r\n this.pager.startPage = startPage;\r\n this.pager.endPage = endPage;\r\n this.pager.startItemNo = startIndex;\r\n this.pager.endItemNo = endIndex;\r\n this.pager.pages = pages;\r\n return this.pager;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public GetPagerOfSize5 (totalItems : any, currentPage : any, pageSize : any): any {\r\n // default to first page\r\n this.currentPage = currentPage > 0 ? currentPage : 1;\r\n this.totalItems = totalItems > 0 ? totalItems : 1;\r\n // default page size is 10\r\n this.pageSize = pageSize > 0 ? pageSize : 5;\r\n\r\n // calculate total pages\r\n const totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n let startPage;\r\n let endPage;\r\n\r\n if (totalPages <= 5) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (this.currentPage <= 3) {\r\n startPage = 1;\r\n endPage = 5;\r\n } else if (this.currentPage + 2 >= totalPages) {\r\n startPage = totalPages - 4;\r\n endPage = totalPages;\r\n } else {\r\n startPage = this.currentPage - 3;\r\n endPage = this.currentPage + 2;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n const startIndex = (this.currentPage - 1) * this.pageSize;\r\n const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), this.totalItems > 1 ? this.totalItems - 1 : this.totalItems);\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range(startPage, endPage, 1);\r\n\r\n // return object with all pager properties required by the view\r\n this.pager.totalItems = totalItems;\r\n this.pager.currentPage = currentPage;\r\n this.pager.nextPage = currentPage + 1 <= endPage ? currentPage + 1 : endPage;\r\n this.pager.previousPage = currentPage - 1 >= startPage ? currentPage - 1 : startPage;\r\n this.pager.pageSize = pageSize;\r\n this.pager.totalPages = totalPages;\r\n this.pager.startPage = startPage;\r\n this.pager.endPage = endPage;\r\n this.pager.startItemNo = startIndex;\r\n this.pager.endItemNo = endIndex;\r\n this.pager.pages = pages;\r\n return this.pager;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public range (min : any, max : any, delta : any): any {\r\n const arr : any[] = [];\r\n let stepCount;\r\n\r\n if (min && !max && !delta) {\r\n for (let i = 0; i < min; i++) {\r\n arr[i] = i + 1;\r\n }\r\n } else {\r\n if (min && max && !delta) {\r\n stepCount = max - min;\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i + min);\r\n }\r\n } else {\r\n stepCount = Math.floor((max - min) / delta);\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i * delta + min);\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n /*\r\n * =================================================================================\r\n * End of Pagination (core):\r\n * ================================================================================= \r\n */\r\n \r\n // ---------------------------------------------------------------\r\n public rotateArrowGlyphicons () : void\r\n {\r\n this.rotateThisGlyphicon( 'pageV-F' );\r\n this.rotateThisGlyphicon( 'pageV-prev' );\r\n this.rotateThisGlyphicon( 'pageV-L' );\r\n this.rotateThisGlyphicon('pageV-next');\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n }\r\n // ---------------------------------------------------------------\r\n public rotateArrowGlyphiconOfIdPrefix (idPrefix : string) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(idPrefix)) {\r\n this.rotateGlyphiconForId(idPrefix + '-F');\r\n this.rotateGlyphiconForId(idPrefix + '-prev');\r\n this.rotateGlyphiconForId(idPrefix + '-L');\r\n this.rotateGlyphiconForId(idPrefix + '-next');\r\n }\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : this method finds a substring in an array of string to do its task\r\n * ---------------------------------------------------------------\r\n */\r\n public rotateThisGlyphicon ( page : string ) : void\r\n {\r\n const navPageArr = [ 'pageV-F', 'pageV-L', 'pageV-prev', 'pageV-next' ];\r\n\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( page ) && typeof page === 'string' )\r\n {\r\n navPageArr.forEach( ( a ) =>\r\n {\r\n if ( a.indexOf( page ) > -1 )\r\n {\r\n // debugger;\r\n let pElem = document.getElementById( page );\r\n\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pElem ) )\r\n {\r\n const pageId = 'pageV-' + page;\r\n\r\n pElem = document.getElementById( pageId );\r\n if (!DomUtilsServiceStatic.doesElementHasThisClass( pElem, 'pagerRotate' ) )\r\n {\r\n // debugger;\r\n this.renderer?.addClass(pElem, 'pagerRotate');\r\n pElem.remove();\r\n }\r\n }\r\n }\r\n } );\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public rotateGlyphiconForId (id : string) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) && typeof id === 'string') { \r\n debugger;\r\n let pElem = DomUtilsServiceStatic.getElementById(id);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.renderer)) {\r\n if (!DomUtilsServiceStatic.doesElementHasThisClass(pElem, 'pagerRotate45Deg')) {\r\n debugger;\r\n this.renderer?.addClass(pElem, 'pagerRotate45Deg');\r\n pElem.remove();\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------------------------\r\n public setPagerPic(pics: string[], pElem: any, page: number): void {\r\n if (page > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pics) && pics.length > 0) {\r\n let i = 0;\r\n\r\n pics.map((e) => {\r\n ++i;\r\n if (i + 1 === page) {\r\n this.renderer?.setStyle(pElem, 'background-image', 'url(\\'' + pics[i] + '\\')');\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setStyleProperties(properties:any = { }) : void {\r\n Object.keys(properties).forEach((k : any) => document.documentElement.style.setProperty(`--${k}`, properties[k])); // Sayeed: Experimental: 'k.id'\r\n }\r\n /*\r\n * ===============================================================\r\n * Note : Not used at the moment, and may need to be updated in accordance with setPage()\r\n * ---------------------------------------------------------------\r\n */\r\n public setPageOfProfilePics (profilePics : any, page : any): any {\r\n if (profilePics && profilePics.profileImageArr && profilePics.profileImageArr?.length > 0) {\r\n // this.profilePics = profilePics; // TODOL restore\r\n }\r\n if (page < 0) {\r\n return;\r\n }\r\n\r\n this.currentPage = page;\r\n const totalItems = profilePics ? profilePics?.profileImageArr?.length : 0;\r\n // get pager object from service\r\n\r\n this.pager = this.GetPager(totalItems, page, 10); // (totalItems, currentPage, pageSize)\r\n\r\n // get current page of items\r\n if (profilePics && profilePics?.profileImageArr && profilePics?.profileImageArr?.length > 0) {\r\n const profileImageArr = profilePics.profileImageArr.slice(this.pager.startItem, this.pager.endItemNo + 1);\r\n\r\n if (profileImageArr && profileImageArr.length > 0) {\r\n profileImageArr.map((e : any) => {\r\n // this.profilePics.pagedProfilePics.push(e.image); // TODOL restore\r\n });\r\n }\r\n }\r\n /*\r\n * let pElem = document.getElementById('page-' + page);\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pElem)) this.setPagerPic(this.pics, pElem, page);\r\n */\r\n return this.pager;\r\n /*\r\n * EmitterSubjectService.emitPager(this.pager);\r\n * EmitterSubjectService.emitPagedProfilePics(this.profilePics.pagedProfilePics);\r\n */\r\n }\r\n /*\r\n * ===============================================================\r\n * End of paginatoin-related-useful-functions:\r\n * ===============================================================\r\n */\r\n\r\n \r\n /*\r\n * =================================================================================\r\n * --------------------------------------------------\r\n * NOTE : All the image-setter methods are here:\r\n * Note : this method will simply set the background-image of all the numbered-pages (1...10 ->)\r\n * --------------------------------------------------\r\n * TODO : Test with setTimeout\r\n */\r\n public setPagerImagesByKvImageArr(kvImageArr: KvPhoto[]): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvImageArr) && kvImageArr.length > 0) {\r\n // debugger;\r\n kvImageArr.map((e) => {\r\n // debugger;\r\n const image = 'url(\\'' + e.value + '\\')';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n const pageId = 'pageB-' + (e.photoId + 1);\r\n // debugger;\r\n const pElem = document.getElementById(pageId);\r\n\r\n if (pElem) {\r\n // debugger;\r\n this.renderer?.setStyle(pElem, 'backgroumd-image', image);\r\n pElem.remove();\r\n }\r\n }\r\n // debugger;\r\n });\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * This method is not used and deprecated and used as a guide/referene.\r\n * ---------------------------------------------------------------------------------\r\n */\r\n public GetPagerOriginal (totalItems : any, currentPage : any, pageSize : any) : any {\r\n // default to first page\r\n this.currentPage = currentPage > 0 ? currentPage : 1;\r\n this.totalItems = totalItems > 0 ? totalItems : 1;\r\n // default page size is 10\r\n this.pageSize = pageSize > 0 ? pageSize : 10;\r\n\r\n // calculate total pages\r\n const totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n let startPage;\r\n let endPage;\r\n\r\n if (totalPages <= 10) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (this.currentPage <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (this.currentPage + 4 >= totalPages) {\r\n startPage = totalPages - 9;\r\n endPage = totalPages;\r\n } else {\r\n startPage = this.currentPage - 5;\r\n endPage = this.currentPage + 4;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n const startIndex = (this.currentPage - 1) * this.pageSize;\r\n const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), this.totalItems > 1 ? this.totalItems - 1 : this.totalItems);\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range(startPage, endPage, 1);\r\n\r\n // return object with all pager properties required by the view\r\n this.pager.totalItems = this.totalItems;\r\n this.pager.currentPageNo = this.currentPage;\r\n this.pager.pageSize = this.pageSize;\r\n this.pager.totalPages = totalPages;\r\n this.pager.startPage = startPage;\r\n this.pager.endPage = endPage;\r\n this.pager.startItemNo = startIndex;\r\n this.pager.endItemNo = endIndex;\r\n this.pager.pages = pages;\r\n return this.pager;\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * This method is not used and deprecated and used as a guide/referene.\r\n * ---------------------------------------------------------------------------------\r\n */\r\n public rangeOriginal (min : any, max : any, delta : any): any {\r\n const arr : any[] = [];\r\n let stepCount;\r\n\r\n if (min && !max && !delta) {\r\n for (let i = 0; i < min; i++) {\r\n arr[i] = i + 1;\r\n }\r\n } else {\r\n if (min && max && !delta) {\r\n stepCount = max - min;\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i + min);\r\n }\r\n } else {\r\n stepCount = Math.floor((max - min) / delta);\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i * delta + min);\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n /*\r\n * ===============================================================\r\n * End of Code-Reference-for-letious-pagination-tasks:\r\n * ===============================================================\r\n */\r\n}\r\n// ---------------------------------------------------------------------------------\r\n // Note : this method does not check whether it is a isPhotoMgmt or isViewMember.\r\n // the caller should check/filter and call this only in case of isPhotoMgmt==true.\r\n // NOTE: Intend to deprecate!!\r\n // Note: instead of this method, user getPagerVGlyphMenuForKvPhoto (kvp).\r\n // ---------------------------------------------------------------------------------\r\n //getPagerVMemActGlyphForCurrentPage (input : any) : any {\r\n // // Note: IMPORTANT! it may be required that either photoId or PhotoBnId will be used but NOT both\r\n // // and the decision will depend on application wide whether Photo or PhotoBn will be used.\r\n // // ----------------------------------------------------------------------------------------------\r\n // if (input instanceof KvPhoto) {\r\n // // debugger;\r\n // let kvPhoto = input as KvPhoto;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(input) || kvPhoto.sitUserId === 0 || kvPhoto.photoId === 0 || kvPhoto.photoBnId == 0) {\r\n // this.currentPageGlyph = EmitterSubjectService.getCurrentPage();\r\n // // debugger;\r\n\r\n // // if currentPageGlyph is still not complete, create it from currentPhoto or currentKvPhoto\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph.value)) {\r\n // this.currentPhoto = EmitterSubjectService.getCurrentPhoto();\r\n // // debugger;\r\n\r\n // // if currentPhoto data exists:\r\n // // -----------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPhoto) && this.currentPhoto.photoId > 0) {\r\n // this.currentPageGlyph.photoId = this.currentPhoto.photoId;\r\n // this.currentKvPhoto = CopyServiceStatic.copyFromPhotoToKvPhoto(this.currentPhoto);\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // // debugger;\r\n // }\r\n // // create currentKvPhoto from loginSuccess and kvPhoto:\r\n // // -----------------------------------------------------\r\n // else {\r\n // this.currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPhoto)) {\r\n // this.currentKvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPhoto)) {\r\n // this.currentKvPhoto = CopyServiceStatic.copyKvPhotoIfExists(this.currentKvPhoto, kvPhoto);\r\n // this.currentPageGlyph.photoId = this.currentKvPhoto.photoId;\r\n // }\r\n // }\r\n\r\n // // create the currentPageGlyph:\r\n // // ----------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto) && this.currentKvPhoto.photoId > 0) {\r\n // this.currentPageGlyph = CopyServiceStatic.copyFromKvPhotoToKvGlyph(this.currentKvPhoto);\r\n // // debugger;\r\n // }\r\n // }\r\n // // Note : currentKvPhoto does not have a pageNum, so we first create the pagination, and then get its number:\r\n // // ----------------------------------------------------------------------------------------------------------\r\n // if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph) && this.currentPageGlyph.pageNum <= 0)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto) && this.currentKvPhoto.itemNum <= 0)) {\r\n\r\n // this.pagerVMemActGlyph = this.setKvGlyphPager(1);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyph)) {\r\n // this.pagerVMemActGlyph.kvGlyphArr.map(e => {\r\n // // debugger;\r\n // if (e.photoId === this.currentKvPhoto.photoId && e.pageNum > 0) {\r\n // this.currentKvPhoto.itemNum = e.pageNum;\r\n // this.currentPageGlyph.pageNum = e.pageNum;\r\n // this.currentPageGlyph.photoId = e.photoId;\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // EmitterSubjectService.setCurrentPage(this.currentPageGlyph);\r\n // // debugger;\r\n // }\r\n // });\r\n // }\r\n // }\r\n // else {\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // EmitterSubjectService.setCurrentPage(this.currentPageGlyph);\r\n // // debugger;\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // if (this.currentKvPhoto.photoId === 0) {\r\n // this.currentKvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n // this.currentKvPhoto = CopyServiceStatic.copyKvPhotoIfExists(this.currentKvPhoto, kvPhoto);\r\n // }\r\n // this.kvGlyphArr = this.createPhotoMgmtGlyphMenuArrFromKvPhoto(this.currentKvPhoto);\r\n // // debugger; // TODO: watch for primary-photo-case\r\n // this.setGlyphs(this.kvGlyphArr);\r\n // }\r\n // }\r\n // else if (input instanceof KvMemberActivityGlyph) {\r\n // // debugger;\r\n // this.currentPageGlyph = input as KvMemberActivityGlyph;\r\n // }\r\n\r\n // // render the glyphicon-menu for the currentPageGlyph:\r\n // // ----------------------------------------------\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph.value)\r\n // && this.currentPageGlyph.value.length > 0) {\r\n // // debugger;\r\n\r\n // // var returnUrl = window.location.pathname + window.location.search;\r\n\r\n // // debugger;\r\n // // will display the glyphs\r\n // this.kvGlyphArr = this.createPhotoMgmtGlyphMenuArrFromKvGlyph(this.currentPageGlyph);\r\n // // debugger;\r\n\r\n\r\n // // Note : The View does not require to programatically draw the images, just setting the glyph/image name will suffice\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvGlyphArr) && this.kvGlyphArr.length > 0) {\r\n // // debugger;\r\n // this.executeGlyphMenuArr(this.kvGlyphArr);\r\n // // debugger;\r\n // }\r\n // }\r\n\r\n // if (this.currentPageGlyph.pageNum > 0) {\r\n // // debugger;\r\n // this.pagerVMemActGlyph = this.setKvGlyphPager(this.currentPageGlyph.pageNum); // current-case\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.pagerVMemActGlyph = this.setKvGlyphPager(1); // default-case\r\n // }\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemActGlyph)) {\r\n // this.pagerVMemActGlyph.isPhotoMgmt = true;\r\n // // debugger;\r\n // }\r\n // EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n // return this.pagerVMemActGlyph;\r\n //}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { GlyphiconMenuService } from './glypgiconMenuService.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class GlyphiconServiceService implements OnDestroy {\r\n private emitterDestroyed$: Subject = new Subject();\r\n constructor(\r\n private glyphiconMenuService: GlyphiconMenuService,\r\n //private pagerService: PagerService,\r\n //private pagerServiceChatHistory: PagerServiceChatHistory,\r\n //private pagerPhotoMgmtService : PagerPhotoMgmtService,\r\n //private pagerPhotoNavService : PagerPhotoNavService,\r\n //private pagerSupportService : PagerSupportService,\r\n //private abstractPagerVPhotoNavService : AbstractPagerVPhotoNavService,\r\n ) { }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setGlyphiconMenuService(gms: GlyphiconMenuService): void {\r\n this.glyphiconMenuService = gms;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getGlyphiconMenuService(): GlyphiconMenuService {\r\n return this.glyphiconMenuService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n //setPagerService(gd: PagerService): void {\r\n // this.pagerService = gd;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n //getPagerService(): PagerService {\r\n // return this.pagerService;\r\n //}\r\n // ------------------------------------------------------------------\r\n // setPagerServiceChatHistory(chps: PagerServiceChatHistory): void {\r\n // this.pagerServiceChatHistory = chps;\r\n // }\r\n // getPagerServiceChatHistory(): PagerServiceChatHistory {\r\n // return this.pagerServiceChatHistory;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n //getAbstractPagerVPhotoNavService () : AbstractPagerVPhotoNavService {\r\n // return this.abstractPagerVPhotoNavService;\r\n // }\r\n //setAbstractPagerVPhotoNavService (pvs : AbstractPagerVPhotoNavService) : void {\r\n // this.abstractPagerVPhotoNavService = pvs;\r\n // }\r\n // ------------------------------------------------------------------------------------------------\r\n //setPagerPhotoMgmtService (pps : PagerPhotoMgmtService): void {\r\n // this.pagerPhotoMgmtService = pps;\r\n //} \r\n // ------------------------------------------------------------------------------------------------\r\n //getPagerPhotoMgmtService () : PagerPhotoMgmtService {\r\n // return this.pagerPhotoMgmtService;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n //setPagerPhotoNavService (pns : PagerPhotoNavService) : void {\r\n // this.pagerPhotoNavService = pns;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n //getPagerPhotoNavService () : PagerPhotoNavService {\r\n // return this.pagerPhotoNavService;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n //setPagerSupportService (pvs : PagerSupportService) : void {\r\n // this.pagerSupportService = pvs;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n //getPagerSupportService () : PagerSupportService {\r\n // return this.pagerSupportService;\r\n //}\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { AppFeature } from '../../models/common/appFeture.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n// import { } from 'zone.js';\r\n\r\n\r\n\r\n@Injectable( {\r\n providedIn: 'root',\r\n} )\r\nexport class AppFeatureService \r\n{\r\n public appFeatureDictionary = new Dictionary(); //new Collections.Dictionary();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public tempElem : any;\r\n public rendererService : any;\r\n public appFeatureArr : AppFeature[] = [];\r\n public arrKvAny : KvAny[] = [];\r\n public kvAny : KvAny = new KvAny();\r\n public index = -1;\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n // ---------------------------------------------------------------\r\n constructor (\r\n private httpService : HttpService,\r\n private router : Router )\r\n {\r\n // debugger;\r\n this.getAppFeaturesFromServer().subscribe(data => {\r\n this.appFeatureArr = data;\r\n })\r\n }\r\n // ----------------------------------------------------------------\r\n // ngOnDestroy () : void\r\n // {\r\n // this.emitterDestroyed$.next( true );\r\n // this.emitterDestroyed$.complete();\r\n // // RunOutsideAngularServiceStatic.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n // }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public getAppFeatureArr () : AppFeature[]\r\n {\r\n if ( this.appFeatureArr.length == 0 )\r\n {\r\n this.getAppFeaturesFromServer().subscribe(data => {\r\n this.appFeatureArr = data;\r\n return this.appFeatureArr;\r\n })\r\n }\r\n // debugger;\r\n return this.appFeatureArr;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setAppFeatureArr ( aFArr : AppFeature[] ) : void\r\n {\r\n // debugger;\r\n this.appFeatureArr = aFArr;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getArrKvAny () : KvAny[]\r\n {\r\n // debugger;\r\n return this.arrKvAny;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setArrKvAny ( arrKvAny : KvAny[] ) : void\r\n {\r\n // debugger;\r\n this.arrKvAny = arrKvAny;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // static getAppFeatureDictionary () : Collections.Dictionary\r\n // {\r\n // debugger;\r\n // return AppFeatureServiceStatic.appFeatureDictionary;\r\n // }\r\n\r\n // ---------------------------------------------------------------------------------\r\n // static setAppFeature (dictionary : Collections.Dictionary) : void\r\n // {Dictionary\r\n // debugger;\r\n // AppFeatureServiceStatic.appFeatureDictionary = dictionary;\r\n // }\r\n // ---------------------------------------------------------------\r\n // this.httpService.get('/Home/GetAppFeaturesJson').subscribe(\r\n public getAppFeaturesFromServer () : Observable\r\n {\r\n // debugger;\r\n return new Observable(subscriber => {\r\n \r\n \r\n this.httpService.get('/api/Home/GetAppFeaturesJson').subscribe(\r\n (result) => {\r\n // debugger;\r\n //if (result) {\r\n // // debugger;\r\n // this.appFeatureArr = result as AppFeature[];\r\n\r\n // this.appFeatureArr.map(e => {\r\n // this.appFeatureDictionary.set(e.featureName, e);\r\n\r\n // this.kvAny = new KvAny();\r\n // this.kvAny.key = (e as AppFeature).featureName;\r\n // this.kvAny.value = e as AppFeature;\r\n // this.arrKvAny.push(this.kvAny);\r\n // });\r\n //}\r\n // debugger;\r\n //EmitterSubjectService.emitAppFeatureArr(this.appFeatureArr);\r\n //subscriber.next(this.appFeatureArr);\r\n EmitterSubjectService.emitAppFeatureArr(result);\r\n subscriber.next(result);\r\n },\r\n (error) => {\r\n EmitterSubjectService.emitMyErrorLog('Error occured in getAppFeaturesFromServer();\\n Error-message: ' + error.message);\r\n },\r\n ); \r\n })\r\n }\r\n // ---------------------------------------------------------------------------------\r\n}\r\n\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AppFeatureService } from './appFeatureService.service';\r\nimport { BreakPointObserverService } from './breakPointObserverService.service';\r\nimport { SWUpdateService } from './swUpdateService.service';\r\n// import { SWUpdateService } from './swUpdateService.service';\r\nimport { UpgradedMemberService } from './upgradedMemberService.service';\r\n// import { ErrorLogService } from './errorLogServoce.service';\r\n// import { GestureService } from './gestureService.service';\r\n// import { LogEngineService } from './logEngineService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AppServiceService implements OnDestroy {\r\n private emitterDestroyed$: Subject = new Subject();\r\n constructor (\r\n private appFeatureService : AppFeatureService,\r\n private breakpointObserverService: BreakPointObserverService,\r\n // private errorLogService: ErrorLogService,\r\n // private logEngineService: LogEngineService, \r\n private swUpdateService: SWUpdateService,\r\n private upgradedMemberService : UpgradedMemberService,\r\n ) { }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setAppFeatureService ( af : AppFeatureService ) : void\r\n {\r\n this.appFeatureService = af;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getAppFeatureService () : AppFeatureService\r\n {\r\n return this.appFeatureService;\r\n }\r\n // ------------------------------------------------------------------\r\n setBreakPointObserverService(bps: BreakPointObserverService): void {\r\n this.breakpointObserverService = bps;\r\n }\r\n getBreakPointObserverService(): BreakPointObserverService {\r\n return this.breakpointObserverService;\r\n }\r\n // ------------------------------------------------------------------\r\n // setErrorLogService(errs: ErrorLogService): void {\r\n // this.errorLogService = errs;\r\n // }\r\n // getErrorLogService(): ErrorLogService {\r\n // return this.errorLogService;\r\n // }\r\n // ------------------------------------------------------------------\r\n setSWUpdateService(sws: SWUpdateService): void {\r\n this.swUpdateService = sws;\r\n }\r\n getSWUpdateService () : SWUpdateService {\r\n return this.swUpdateService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setUpgradedMemberService ( up : UpgradedMemberService): void {\r\n this.upgradedMemberService = up;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getUpgradedMemberService () : UpgradedMemberService {\r\n return this.upgradedMemberService;\r\n }\r\n // ------------------------------------------------------------------\r\n // setUploadService (us : UploadService) : void {\r\n // this.uploadService = us;\r\n // }\r\n // getUploadService () : UploadService {\r\n // return this.uploadService;\r\n // }\r\n // ------------------------------------------------------------------\r\n\r\n}\r\n","\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { CenterCoordinates } from '../../models/misc/centerCoordinates.model';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class BreakPointObserverService implements OnDestroy {\r\n public condition = false; // potential means \"maybe never\"\r\n public max = 1000000;\r\n public isMobilevar = false;\r\n public isTabletvar = false;\r\n public isDesktopvar = false;\r\n public width = 0;\r\n public height = 0;\r\n private centerCoordinates: CenterCoordinates = new CenterCoordinates();\r\n private subscription!: Subscription;\r\n\r\n /*\r\n * The Old way using private param breakpointObserver:\r\n * ref:https:// coryrylan.com/blog/angular-async-data-binding-with-ng-if-and-ng-else\r\n * private breakpointObserver: BreakpointObserver;\r\n */\r\n\r\n /*\r\n * The New way using DI observer:\r\n * ref: https:// www.prestonlamb.com/blog/angular-cdks-breakpoint-observer\r\n */\r\n constructor(private observer: BreakpointObserver) {\r\n this.breakpointObserving();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n ngOnDestroy() {\r\n // Only need to unsubscribe if its a multi event Observable\r\n this.subscription.unsubscribe();\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * ---------------------------------------------------------------------------------\r\n */\r\n breakpointObserving(): BreakpointObserver {\r\n /*\r\n * const matched = this.observer.isMatched( '(max-width: 700px)' )\r\n * OR\r\n * const matched = this.observer.isMatched( [ '(max-width: 700px)', '(min-width: 500px)' ] );\r\n * OR\r\n */\r\n this.observer.observe( [ Breakpoints.XSmall, Breakpoints.Small, Breakpoints.HandsetPortrait, Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge]).subscribe((result) => {\r\n if ( result.breakpoints[ Breakpoints.XSmall ] || result.breakpoints[ Breakpoints.Small ] || result.breakpoints[ Breakpoints.HandsetPortrait ]) {\r\n // handle XSmall breakpoint\r\n this.isMobilevar = true;\r\n this.isDesktopvar = false;\r\n }\r\n // if (result.breakpoints[Breakpoints.Small]) {\r\n // // handle Small breakpoint\r\n // this.isMobilevar = true;\r\n // this.isDesktopvar = false;\r\n // }\r\n if ( result.breakpoints[ Breakpoints.Medium ] || result.breakpoints[ Breakpoints.Large ] || result.breakpoints[ Breakpoints.XLarge ]) {\r\n // handle Medium breakpoint\r\n this.isMobilevar = false;\r\n this.isDesktopvar = true;\r\n }\r\n // if (result.breakpoints[Breakpoints.Large]) {\r\n // // handle Large breakpoint\r\n // this.isMobilevar = false;\r\n // this.isDesktopvar = true;\r\n // }\r\n // if (result.breakpoints[Breakpoints.XLarge]) {\r\n // // handle XLarge breakpoint\r\n // this.isMobilevar = false;\r\n // this.isDesktopvar = true;\r\n // }\r\n });\r\n\r\n EmitterSubjectService.emitIsMobile(this.isMobilevar);\r\n\r\n this.getCenterCoordinates();\r\n EmitterSubjectService.emitHeightWidth(this.determineHeightWidth());\r\n // return this.breakpointObserver;\r\n return this.observer;\r\n }\r\n // --------------------------------------------------------------\r\n determineHeightWidth(): any {\r\n if (this.isMobilevar) {\r\n this.height = 275;\r\n this.width = 275;\r\n } else {\r\n this.height = 400;\r\n this.width = 400;\r\n }\r\n return this.getHeightWidth();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n getCenterCoordinates () : void\r\n {\r\n // debugger;\r\n this.centerCoordinates.centerX = document.documentElement.clientWidth / 2;\r\n this.centerCoordinates.centerY = document.documentElement.clientHeight / 2;\r\n // debugger;\r\n EmitterSubjectService.emitCenterCoordinates(this.centerCoordinates);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n getHeightWidth(): any {\r\n const hw = {\r\n height: this.height,\r\n width: this.width,\r\n };\r\n\r\n return hw;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n}\r\n","\r\nimport { ApplicationRef, Injectable } from '@angular/core';\r\nimport { SwUpdate } from '@angular/service-worker';\r\nimport { concat, interval, Subject } from 'rxjs';\r\nimport { first } from 'rxjs/operators';\r\n\r\n// import { } from 'zone.js';\r\n\r\n\r\n@Injectable( {\r\n providedIn: 'root',\r\n} )\r\nexport class SWUpdateService\r\n{\r\n public isEnabled = false; \r\n // ---------------------------------------------------------------\r\n \r\n constructor (\r\n public appRef : ApplicationRef,\r\n public swUpdates : SwUpdate) {\r\n // Allow the app to stabilize first, before starting\r\n // polling for updates with `interval()`.\r\n\r\n const appIsStable$ = this.appRef.isStable.pipe(first(isStable => isStable === true));\r\n const everySixHours$ = interval(6 * 60 * 60 * 1000);\r\n const everySixHoursOnceAppIsStable$ = concat(appIsStable$, everySixHours$);\r\n\r\n // everySixHoursOnceAppIsStable$.subscribe(() => this.swUpdates.checkForUpdate());\r\n }\r\n\r\n //----------------------------------------------------------------\r\n //ngOnDestroy () : void\r\n //{\r\n // this.emitterDestroyed$.next( true );\r\n // this.emitterDestroyed$.complete();\r\n // // RunOutsideAngularServiceStatic.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n //}\r\n\r\n // ---------------------------------------------------------------------------------\r\n public forceSwUpdateActivation () : void\r\n {\r\n this.swUpdates.available.subscribe(event => {\r\n if (confirm('A newer version of the application is available. Load the new version ?')){\r\n this.swUpdates.activateUpdate().then(() => document.location.reload());\r\n }\r\n });\r\n }\r\n \r\n // ---------------------------------------------------------------------------------\r\n public setIsEnabled (isEnabled : boolean) : void {\r\n this.isEnabled = isEnabled;\r\n }\r\n \r\n // ---------------------------------------------------------------------------------\r\n}\r\n\r\n","'use strict'\r\nimport { Injectable } from '@angular/core';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { UpgradedTile } from '../../models/profile/upgradedTile.model';\r\nimport { CoreServiceService } from '../coreServiceService/coreServiceService.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class UpgradedMemberService {\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public sitUser: SitUser = new SitUser(); // for sending data to the server\r\n public message = '';\r\n public timer: any;\r\n public timerArray: any[] = [];\r\n constructor ( private coreServiceService: CoreServiceService,\r\n // private triageAllDataForIndexedDbAndDictionaryService: TriageAllDataForIndexedDbAndDictionaryService,\r\n public httpService: HttpService,\r\n )\r\n {\r\n if ( this.coreServiceService ) this.httpService = this.coreServiceService.getHttpService();\r\n }\r\n // --------------------------------------------------------------\r\n createUpgradedTileShellArr ( sitIdArr: number[] ): UpgradedTile[]\r\n {\r\n const uTiles: UpgradedTile[] = [];\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sitIdArr ) && sitIdArr.length > 0 )\r\n {\r\n let uTile : any;\r\n\r\n sitIdArr.map((e : any ) =>\r\n {\r\n uTile = this.createUpgradedTileShell( e ) as UpgradedTile;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( uTile ) )\r\n {\r\n uTiles.push( uTile );\r\n }\r\n } );\r\n }\r\n\r\n return uTiles;\r\n }\r\n // ---------------------------------------------------------------\r\n createUpgradedTileShell ( sitId: number ): UpgradedTile\r\n {\r\n if ( sitId > 0 )\r\n {\r\n const pTile = new UpgradedTile();\r\n\r\n pTile.sitUserId = sitId;\r\n pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n return pTile;\r\n }\r\n else\r\n {\r\n return new UpgradedTile();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n salt (model : any): BoxNonceEntity {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n // debugger;\r\n return (this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model)));\r\n }\r\n return new BoxNonceEntity();\r\n }\r\n // ---------------------------------------------------------------\r\n // fetchSitUser(sitUser: SitUser): Promise {\r\n // // debugger;\r\n // return new Promise( ( resolve, reject ) =>\r\n // {\r\n // if ( sitUser.sitUserId > 0 )\r\n // {\r\n // // debugger;\r\n // this.sitUser = sitUser;\r\n // this.boxNonceEntity = this.salt( this.sitUser );\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.box )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.nonce ) )\r\n // {\r\n // // debugger;\r\n // this.httpService.post( '/api/Member/GetSitUser',\r\n // {\r\n // box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n // nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n // }, 'json' ).subscribe( ( result ) =>\r\n // {\r\n // let tSitUser = this.processSitUserResult( sitUser, result );\r\n // resolve( tSitUser );\r\n // },\r\n // ( error ) =>\r\n // {\r\n // this.message = 'Error occured in GetSitUser(sitUserId:\\'' + sitUser.sitUserId + '\\');\\n Error message: ' + error.message;\r\n // console.log( this.message );\r\n // reject( new Error( this.message ) );\r\n // },\r\n // );\r\n // }\r\n // }\r\n // } );\r\n // }\r\n // ---------------------------------------------------------------\r\n // processSitUserResult(sitUser: any, result: any): any {\r\n // if (result) {\r\n // const bn = result as BoxNonceEntity;\r\n // // debugger;\r\n\r\n // if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n // const tSitUser = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as SitUser;\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tSitUser) && tSitUser.sitUserId > 0) {\r\n // // debugger;\r\n // this.sitUser = tSitUser;\r\n // EmitterSubjectService.setSitUserModel(this.sitUser); // DO NOT EMIT sitUser\r\n\r\n // // debugger;\r\n // // EmitterSubjectService.emitSaveSitUserToIndexedDbAndDictionary( sitUser );\r\n // this.boxNonceEntity = new BoxNonceEntity();\r\n // this.boxNonceEntity.box = result.box;\r\n // this.boxNonceEntity.nonce = result.nonce;\r\n // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // this.boxNonceEntity.id = this.sitUser.sitUserId;\r\n // this.boxNonceEntity.key = this.boxNonceEntity.id.toString();\r\n // this.boxNonceEntity.entityName = 'SitUser';\r\n // this.boxNonceEntity.sitUserId = this.sitUser.sitUserId;\r\n // // this.triageAllDataForIndexedDbAndDictionaryService.saveSitUserDictionaryToIndexedDb( this.boxNonceEntity );\r\n\r\n // return this.sitUser;\r\n // }\r\n // }\r\n // } else {\r\n // this.message = 'Error occured in GetSitUser(sitUserId:\\'' + sitUser.sitUserId + '\\');\\n result: ' + result;\r\n // console.log(this.message);\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n getBatchOfUpgradedMemberIds ( beginIndex : number ) : Promise\r\n {\r\n // debugger;\r\n let tpTiles: UpgradedTile[] = [];\r\n return new Promise( ( resolve, reject ) =>\r\n {\r\n if ( beginIndex > -1 )\r\n {\r\n const bnComm: Communication = new Communication();\r\n\r\n bnComm.beginIndex = beginIndex;\r\n bnComm.sitUserId = 0;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n this.boxNonceEntity = this.salt( bnComm );\r\n\r\n // debugger;\r\n if ( this.boxNonceEntity )\r\n {\r\n this.httpService.postObservable( '/Upgrade/GetBatchOfUpgradedMemberIds', JSON.stringify( {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n } ),\r\n 'json2text',\r\n ).subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n tpTiles = this.processBatchOfUpgradedMemberIdsResult( result );\r\n // debugger;\r\n // this.boxNonceEntity = new BoxNonceEntity();\r\n // this.boxNonceEntity.box = result.box;\r\n // this.boxNonceEntity.nonce = result.nonce;\r\n // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // this.boxNonceEntity.id = this.loginSuccess.signedInUserId;\r\n // this.boxNonceEntity.key = this.boxNonceEntity.id.toString();\r\n // this.boxNonceEntity.entityName = 'ProfileTileId';\r\n // this.boxNonceEntity.sitUserId = this.loginSuccess.signedInUserId;\r\n // this.triageAllDataForIndexedDbAndDictionaryService.saveProfileTileIdDictionaryToIndexedDb( this.boxNonceEntity );\r\n\r\n resolve( tpTiles );\r\n // debugger;\r\n }, ( error ) =>\r\n {\r\n // debugger;\r\n this.message = 'Error occured in GetBatchOfUserIds();\\n Error-msg : ' + error.message;\r\n console.log( this.message );\r\n EmitterSubjectService.emitMyErrorLog( this.message );\r\n // debugger;\r\n } );\r\n }\r\n }\r\n else return this.nullPromise();\r\n } );\r\n }\r\n // -----------------------------------------------------------\r\n nullPromise (): any\r\n {\r\n this.timer = setTimeout( () =>\r\n {\r\n // debugger;\r\n }, 500);\r\n clearTimeout(this.timer);\r\n\r\n if ( this.timer )\r\n {\r\n this.timerArray.push( this.timer );\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n processBatchOfUpgradedMemberIdsResult ( result: any ): any\r\n {\r\n let tBatchOfIds: number[] = [];\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n {\r\n const bn = result;\r\n tBatchOfIds = JSON.parse( SlakezSaltServiceStatic.boxUnsalt( result as BoxNonceEntity ) ) as number[];\r\n // debugger;\r\n }\r\n return tBatchOfIds;\r\n }\r\n\r\n // --------------------------------------------------------------\r\n getUpgradedTile ( sitUserId: number ): Promise\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let tUpgradedTile: any;\r\n // debugger;\r\n\r\n if ( sitUserId > 0 && this.loginSuccess.signedInUserId > 0 )\r\n {\r\n return new Promise( ( resolve, reject ) =>\r\n {\r\n // this.isOnLine &&\r\n const bnComm: Communication = new Communication();\r\n\r\n bnComm.sitUserId = sitUserId;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel( bnComm );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity ) )\r\n {\r\n // debugger;\r\n this.httpService.postObservable( '/Upgrade/GetUpgradedTile',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n },\r\n 'json2text',\r\n ).subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n {\r\n this.boxNonceEntity = result;\r\n let tempTile : any;\r\n /*\r\n * do not directly assing to profileTile!! capture it in a let first\r\n */\r\n const unboxedTile = SlakezSaltServiceStatic.boxUnsalt( result as BoxNonceEntity );\r\n debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( unboxedTile ) )\r\n {\r\n tempTile = unboxedTile as UpgradedTile;\r\n }\r\n debugger;\r\n // if key 'sitUserId' exists, the unslating produced data\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tempTile ) )\r\n {\r\n tempTile = JSON.parse( tempTile ) as UpgradedTile; // convert string to model\r\n }\r\n debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tempTile ) && tempTile.sitUserId > 0 )\r\n // {\r\n // /*\r\n // * -------------------------------------------------------------------------\r\n // * since the received data has been successfull unsalted into model, it is safe to save it to indexedDb\r\n // * -------------------------------------------------------------------------\r\n // */\r\n\r\n // debugger;\r\n // this.profileTile = this.executeBeforeViewInit( tempTile, 'profileTile-' );\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profileTile ) )\r\n // {\r\n // this.boxNonceEntity = new BoxNonceEntity();\r\n // this.boxNonceEntity.box = result.box;\r\n // this.boxNonceEntity.nonce = result.nonce;\r\n // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // this.boxNonceEntity.id = this.profileTile.sitUserId;\r\n // this.boxNonceEntity.key = this.boxNonceEntity.id.toString();\r\n // this.boxNonceEntity.entityName = 'ProfileTile';\r\n // this.boxNonceEntity.sitUserId = this.profileTile.sitUserId;\r\n // this.triageAllDataForIndexedDbAndDictionaryService.saveProfileTileDictionaryToIndexedDb( this.boxNonceEntity );\r\n\r\n // // debugger;\r\n // let tProfileTile = new ProfileTile();\r\n // tProfileTile = CopyServiceStatic.copyProfileTileIfExists( tProfileTile, this.profileTile );\r\n // debugger;\r\n // update the Dictionary:\r\n // ----------------------\r\n // DictionaryServiceStatic.profileTileDictionary.setValue( tProfileTile.sitUserId, tProfileTile );\r\n // debugger;\r\n\r\n resolve( tempTile );\r\n // debugger;\r\n // }\r\n // else resolve( this.upgradedTile );\r\n // }\r\n // else resolve( tempTile );\r\n }\r\n else resolve( tUpgradedTile );\r\n } );\r\n }\r\n else resolve( tUpgradedTile );\r\n } );\r\n }\r\n else return this.nullPromise();\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\n// import { Idle } from '@ng-idle/core';\r\n// import { Keepalive } from '@ng-idle/keepalive';\r\nimport { Subject } from 'rxjs';\r\n// import { IDLE_TOKEN, KEEPALIVE_TOKEN } from '../staticServices/constantServiceStatic.service';\r\nimport { EncodingService } from './encodingService.service';\r\nimport { ImageResizerService } from './imageResizerService.service';\r\nimport { RedirectionService } from './redirectionService.service';\r\nimport { SignedInUserService } from './signedInUserService.service';\r\nimport { SitUserService } from './sitUserService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CommonServiceService implements OnDestroy {\r\n private emitterDestroyed$: Subject = new Subject();\r\n constructor(\r\n // private downloadService: DownloadService,\r\n private encodingService : EncodingService,\r\n private imageResizerService : ImageResizerService,\r\n private redirectionService: RedirectionService,\r\n // private rendererService: RendererService,\r\n // @Inject(KEEPALIVE_TOKEN) private keepAlive,\r\n // @Inject(IDLE_TOKEN) private idle : Idle,\r\n public signedInUserService : SignedInUserService,\r\n public sitUserService: SitUserService,\r\n )\r\n {\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ------------------------------------------------------------------\r\n\r\n // ------------------------------------------------------------------\r\n // setBreadcrumRingService(bcs: BreadcrumService): void {\r\n // this.breadcrumService = bcs;\r\n // }\r\n // getBreadcrumRingService(): BreadcrumService {\r\n // return this.breadcrumService;\r\n // }\r\n // // ------------------------------------------------------------------\r\n // setConstantService(cs: ConstantService): void {\r\n // this.constantService = cs;\r\n // }\r\n // getConstantService(): ConstantService {\r\n // return this.constantService;\r\n // }\r\n\r\n // // ------------------------------------------------------------------\r\n // setCopyService(cps: CopyService): void {\r\n // this.copyService = cps;\r\n // }\r\n // getCopyService(): CopyService {\r\n // return this.copyService;\r\n // }\r\n // ------------------------------------------------------------------\r\n // setDownloadService(dns: DownloadService): void {\r\n // this.downloadService = dns;\r\n // }\r\n // getDownloadService(): DownloadService {\r\n // return this.downloadService;\r\n // }\r\n // ------------------------------------------------------------------\r\n setEncodingService(es: EncodingService): void {\r\n this.encodingService = es;\r\n }\r\n getEncodingService(): EncodingService {\r\n return this.encodingService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n //setIdle(idl: Idle): void {\r\n // this.idle = idl;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n getImageResizerService () : ImageResizerService {\r\n return this.imageResizerService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setImageResizerService ( idl : ImageResizerService ) : void\r\n {\r\n this.imageResizerService = idl;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n //getIdle () : Idle\r\n //{\r\n // return this.idle;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n setRedirectionService (rds: RedirectionService): void {\r\n this.redirectionService =rds;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getRedirectionService(): RedirectionService {\r\n return this.redirectionService;\r\n }\r\n // ------------------------------------------------------------------\r\n // setRendererService(rs: RendererService): void {\r\n // this.rendererService = rs;\r\n // }\r\n // getRendererService(): RendererService {\r\n // return this.rendererService;\r\n // }\r\n // ------------------------------------------------------------------\r\n setSignedInUserService (ss : SignedInUserService) : void {\r\n this.signedInUserService = ss;\r\n }\r\n getSignedInUserService () : SignedInUserService {\r\n return this.signedInUserService;\r\n }\r\n // ------------------------------------------------------------------\r\n setSitUserService(ss: SitUserService): void {\r\n this.sitUserService = ss;\r\n }\r\n getSitUserService(): SitUserService {\r\n return this.sitUserService;\r\n }\r\n // ------------------------------------------------------------------\r\n //setHttpBackgroundService (hbr : HttpBackgroundService) : void {\r\n // this.httpBackgroundService = hbr;\r\n //}\r\n //// -----------------------------------------------------------------\r\n //getHttpBackgroundService () : HttpBackgroundService {\r\n // return this.httpBackgroundService;\r\n //}\r\n\r\n // ------------------------------------------------------------------\r\n // setUnitConversionService(ucs: UnitConversionService): void {\r\n // this.unitConversionService = ucs;\r\n // }\r\n // getUnitConversionService(): UnitConversionService {\r\n // return this.unitConversionService;\r\n // }\r\n \r\n // ------------------------------------------------------------------\r\n // ------------------------------------------------------------------\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'any'})\nexport class EncodingService {\n constructor() { }\n // ---------------------------------------------------------------\n encode (input : any) {\n if (input) {\n let output = input.replace(/\\/g, '%>'));\n }\n }\n // ---------------------------------------------------------------\n decode (input : any) {\n if (input) {\n let output = this.decodeCustomTags(input); // will transform all '<%' into '<'\n\n if (output.indexOf('<pre') !== -1 || output.indexOf('</pre') !== -1 || output.indexOf('/g, '>');\n }\n return output;\n } else if (input.indexOf('<pre') === -1 && input.indexOf('<-pre') === -1 && input.indexOf(''));\n }\n }\n }\n\n // ---------------------------------------------------------------\n decodeCustomTags (input : any) {\n if (input) {\n let output = this.decodeCustomParagraphTags(input);\n\n if (output) {\n output = this.decodeCustomPreTags(output);\n }\n return output;\n }\n }\n // ---------------------------------------------------------------\n decodeCustomLtTags (input : any) {\n if (input) {\n return input.replace(/<%/g, '<');\n }\n }\n // ---------------------------------------------------------------\n decodeCustomParagraphTags (input : any) {\n if (input) {\n const output = input.replace(/<%p%>/g, '

');\n\n return output.replace(/<%\\/p%>/g, '

');\n }\n }\n // ---------------------------------------------------------------\n decodeCustomPreTags (input : any) {\n if (input) {\n const output = input.replace(/<%pre%>/g, '
');\n\n      return output.replace(/<%\\/pre%>/g, '
');\n }\n }\n // ---------------------------------------------------------------\n trimCustomParagraphTags (input : any) {\n if (input) {\n let output = this.decodeCustomLtTags(input); // will transform all '<%' into '<'\n\n if (output) {\n output = output.replace(/<%p%>/g, '');\n }\n return (output = output.replace(/<%\\/p%>/g, ''));\n }\n }\n // ---------------------------------------------------------------\n trimCustomPreTags (input : any) {\n if (input) {\n let output = this.decodeCustomLtTags(input); // will transform all '<%' into '<'\n\n if (output) {\n output = output.replace(/<%pre%>/g, '');\n }\n return (output = output.replace(/<%\\/pre%>/g, ''));\n }\n }\n // ---------------------------------------------------------------\n trimParagraphTags (input : any) {\n if (input) {\n let output = this.decodeCustomLtTags(input); // will transform all '<%' into '<'\n\n if (output) {\n output = output.replace(/

/g, '');\n }\n return (output = output.replace(/<\\/p>/g, ''));\n }\n }\n // ---------------------------------------------------------------\n trimPreTags (input : any) {\n if (input) {\n let output = this.decodeCustomLtTags(input); // will transform all '<%' into '<'\n\n if (output) {\n output = output.replace(/

/g, '');\n      }\n      return (output = output.replace(/<\\/pre>/g, ''));\n    }\n  }\n  // ---------------------------------------------------------------\n}\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { ImageCounter } from '../../models/misc/imageCounter.model';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n@Injectable({\r\n  providedIn: 'any',\r\n})\r\nexport class ImageResizerService {\r\n  public height = 400;\r\n  public image: any;\r\n  public width = 400;\r\n\r\n  public imageCounter: ImageCounter = new ImageCounter();\r\n\r\n  constructor (\r\n    public httpService : HttpService, ) { }\r\n\r\n  /*\r\n   * --------------------------------------------------------------\r\n   * Note: This method shold be called once the profileTile.image is rendered at least once.\r\n   * --------------------------------------------------------------\r\n   */\r\n  // adjustImageSize(pTile: ProfileTile, width: number, height: number): any {\r\n  //  if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n  //    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.image)) {\r\n  //      // check for default-images\r\n  //      const result = this.getDefaultImageByCode(pTile.image);\r\n\r\n  //      result.src = result.src.replace('url(\\'url(\\'data:', 'data:');\r\n\r\n  //      // Note: should check 3 conditions on the result: null, empty-string, and image.length > 25\r\n  //      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.src)) {\r\n  //        this.getDefaultUriPromise(result.src, width, height).then(\r\n  //          (data) => {\r\n  //            // get the image-data from url\r\n  //            if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n  //              return data;\r\n  //            }\r\n  //            return '/photos/avatar3.png';\r\n  //          },\r\n  //          (err) => {\r\n  //            alert(err.message.toString());\r\n  //          }\r\n  //        );\r\n  //      } else {\r\n  //        return '/photos/avatar3.png';\r\n  //      }\r\n\r\n  //      // now process the non-defaut image data\r\n  //      this.resizeImagePromise(pTile.image, width, height).then(\r\n  //        (data) => {\r\n  //          pTile.image = data;\r\n  //          return pTile.image; // as 'image/png/jpg/svg';;\r\n  //        },\r\n  //        (err) => {\r\n  //          alert(err.message.toString());\r\n  //        }\r\n  //      );\r\n  //    } else {\r\n  //      return '/photos/avatar3.png';\r\n  //    }\r\n  //  } else {\r\n  //    return '/photos/avatar3.png';\r\n  //  }\r\n  // }\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   * Note: width and height should be sent in REM\r\n   */\r\n  createImageFromBase64Str(inb64Str: string, width: number, height: number): any {\r\n    const image = new Image();\r\n\r\n    image.src = inb64Str;\r\n    image.src = image.src.replace('url(\\'url(\\'data:', 'data:');\r\n    const canvas = document.createElement('canvas');\r\n\r\n    canvas.width = width > 0 ? width * 16 : 48; // or 'width' if you want a special/scaled size\r\n    canvas.height = height > 0 ? height * 16 : 48; // or 'height' if you want a special/scaled size\r\n\r\n    // canvas.getContext('2d').drawImage(image as CanvasImageSource, 0, 0);  // TPDO: restore\r\n\r\n    /*\r\n     * Get raw image data\r\n     * let imgData = canvas.toDataURL('image/png/jpg/svg').replace(/^data:image\\/(png|svg):base64,/, '');\r\n     * resolve(imgData);\r\n     */\r\n\r\n    // ... or get as Data URI\r\n    return canvas.toDataURL('image/png');\r\n  }\r\n  // ---------------------------------------------------------------\r\n  createImageFromByteArray(byteArr: Uint8Array): any {\r\n    const image = new Image();\r\n\r\n    image.src = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(byteArr);\r\n    image.src = image.src.replace('url(\\'url(\\'data:', 'data:');\r\n    const canvas = document.createElement('canvas');\r\n\r\n    canvas.width = 400; // or 'width' if you want a special/scaled size\r\n    canvas.height = 400; // or 'height' if you want a special/scaled size\r\n\r\n    // canvas.getContext('2d').drawImage(image as CanvasImageSource, 0, 0);  // TPDO: restore\r\n\r\n    /*\r\n     * Get raw image data\r\n     * let imgData = canvas.toDataURL('image/png/jpg/svg').replace(/^data:image\\/(png|svg)base64,/, '');\r\n     * resolve(imgData);\r\n     */\r\n\r\n    // ... or get as Data URI\r\n    return canvas.toDataURL('image/png');\r\n  }\r\n  // ---------------------------------------------------------------\r\n  // TODO: Test\r\n  // ---------------------------------------------------------------\r\n  static fileToString (file : File) : string {\r\n    const myReader : FileReader = new FileReader();\r\n    let tempStringFile : string = '';\r\n    myReader.onerror = () => {\r\n      myReader.abort();\r\n      return new DOMException('Problem parsing input file.');\r\n    };\r\n\r\n    myReader.onloadend = (e) => {\r\n      const fileStr = e;\r\n      // debugger;\r\n      // return fileStr;\r\n      tempStringFile = JSON.stringify(fileStr);\r\n      // debugger;\r\n    };\r\n    // debugger;\r\n    myReader.readAsDataURL(file);\r\n    return tempStringFile;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  static fileToStringArr (file : File) : string[] {\r\n    const myReader : FileReader = new FileReader();\r\n    let tempStringFiles : string[] = [];\r\n    myReader.onerror = () => {\r\n      myReader.abort();\r\n      return new DOMException('Problem parsing input file.');\r\n    };\r\n\r\n    myReader.onloadend = (e) => {\r\n      const fileStr = e;\r\n      // debugger;\r\n\r\n      tempStringFiles.push(JSON.stringify(fileStr));\r\n      // debugger;\r\n    };\r\n    // debugger;\r\n    myReader.readAsDataURL(file);\r\n    return tempStringFiles;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  // Not in use:\r\n  // ---------------------------------------------------------------\r\n  static formDataToString (formData : FormData) : string[] {\r\n    let tempStringFiles : string[] = [];\r\n    formData.forEach(e => {\r\n      tempStringFiles.push(e.valueOf().toString() /*JSON.stringify(e.valueOf)*/);\r\n    });\r\n    // debugger;\r\n    return tempStringFiles;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  // Not in use:\r\n  // ---------------------------------------------------------------\r\n  static formDataToFileMap (formData : FormData) : Map {\r\n    let fileMap : Map = new Map();\r\n    formData.forEach((v, k) => {\r\n      fileMap.set(k, v)\r\n    });\r\n    return fileMap;\r\n  }\r\n  // --------------------------------------------------------------\r\n  // ---------------------------------------------------------------\r\n  getBase64Image(img: any): string {\r\n    const canvas = document.createElement('canvas');\r\n\r\n    canvas.width = img.width > 0 ? img.width : 400;\r\n    canvas.height = img.height > 0 ? img.height : 400;\r\n    const ctx : any = canvas.getContext('2d');\r\n\r\n    ctx.drawImage(img, 0, 0);\r\n    const dataURL = canvas.toDataURL('image/png');\r\n\r\n    return dataURL.replace(/^data:image\\/(png|jpg|svg);base64,/, '');\r\n  }\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   * Ref;https:// turbofuture.com/computers/HTML5-Tutorial-How-To-Use-Canvas-toDataURL\r\n   * Ref;https:// www.html5canvastutorials.com/tutorials/html5-canvas-images/\r\n   * ---------------------------------------------------------------\r\n   */\r\n  getCanvasImage (pTile : any): string {\r\n    let imgData = '';\r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.pElemId)) {\r\n      const canvas = document.getElementById('canvas-' + (pTile?.pElemId?.length > 0 ? pTile?.pElemId : pTile?.index)) as HTMLCanvasElement;\r\n\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(canvas)) {\r\n        const ctx : any = canvas.getContext('2d');\r\n\r\n        if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ctx)) {\r\n          const imageObj = new Image();\r\n\r\n          pTile.image = pTile.image.replace('url(\\'url(\\'data:', 'data:');\r\n          imageObj.src = pTile.image;\r\n          imageObj.onload = () => {\r\n            // debugger;\r\n            ctx.drawImage(imageObj, 400, 400);\r\n          };\r\n          imgData = canvas.toDataURL();\r\n          // debugger;\r\n        }\r\n      }\r\n    }\r\n    return imgData;\r\n  }\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   * Note: If the user does not have any profile picture, the server sends the profileTile.image field with\r\n   *     one of the following codes for the View:\r\n   *     1) image='Male' if the user is a male\r\n   *     2) image='Female' if the user is a male\r\n   *     3) image='DefaultImageEmoji' if the gender of the user is not known or transgender\r\n   *     note: caller should check for the following conditions:\r\n   *     1. if the result is null\r\n   *     2. if the result is empty-string\r\n   *     3. if the result is not the first two possibilities,\r\n   *         i.e. not null and not empty-string. and if it has data, it's image must be more than 25 characters long.\r\n   * ---------------------------------------------------------------\r\n   */\r\n  getDefaultImageByCode(image: string): any {\r\n    let result: any;\r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n      if (image.length > 3 && image.length < 18) {\r\n        const code = image.toLowerCase();\r\n        let srce = image;\r\n        let codeNum = -1;\r\n\r\n        this.imageCounter = new ImageCounter();\r\n        result = {\r\n          src: srce,\r\n          // 'imageCounter': this.imageCounter\r\n        };\r\n        if (code.indexOf('male') > -1) {\r\n          codeNum = 1;\r\n        } else if (code.indexOf('female') > -1) {\r\n          codeNum = 2;\r\n        } else if (code.indexOf('transgender') > -1) {\r\n          codeNum = 3;\r\n        } else if (code.indexOf('defaultimageemoji') > -1) {\r\n          codeNum = 4;\r\n        }\r\n\r\n        switch (codeNum) {\r\n          case 1:\r\n            srce = '/assets/photos/DefaultImageMale.jpg'; // 28chars\r\n            // src =  'url('' + ['/assets/photos/DefaultImageMale.jpg'] + '')';\r\n            break;\r\n          case 2:\r\n            srce = '/assets/photos/DefaultImageFemale.jpg'; // 30chars\r\n            // src =  'url('' + ['/assets/photos/DefaultImageFemale.jpg'] + '')';\r\n            break;\r\n          case 3:\r\n          case 4:\r\n            srce = '/assets/photos/DefaultImageEmoji.jpg'; // 29chars\r\n            // src =  'url('' + ['/assets/photos/DefaultImageEmoji.jpg'] + '')';\r\n            break;\r\n          default:\r\n            srce = ''; // code was not found: empty-string to indicate no-default image is applicable on the basis of the code.\r\n            break;\r\n        }\r\n        result = {\r\n          src: srce,\r\n          // 'imageCounter': this.imageCounter\r\n        };\r\n      } // code could not be found & code.length >= 18\r\n      else {\r\n        result = {\r\n          src: image,\r\n          // 'imageCounter': this.imageCounter\r\n        };\r\n      }\r\n    } // image is null/empty-string\r\n    else {\r\n      result = {\r\n        src: '',\r\n        // 'imageCounter': this.imageCounter\r\n      };\r\n    }\r\n    return result;\r\n  }\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   * ref:https:// davidwalsh.name/convert-image-data-uri-javascript\r\n   * ---------------------------------------------------------------\r\n   */\r\n  getDefaultUriPromise (url : any, width : any, height : any): any {\r\n    return new Promise((resolve) => {\r\n      const image = new Image();\r\n\r\n      url = url.replace('url(\\'url(\\'data:', 'data:');\r\n      image.src = url;\r\n\r\n      image.onload = () => {\r\n        // debugger;\r\n        const canvas = document.createElement('canvas');\r\n\r\n        canvas.width = width > 0 ? width : 400; // or 'width' if you want a special/scaled size\r\n        canvas.height = height > 0 ? width : 400; // or 'height' if you want a special/scaled size\r\n\r\n        // canvas.getContext('2d').drawImage(image as CanvasImageSource, 0, 0);  // TPDO: restore\r\n\r\n        /*\r\n         * Get raw image data\r\n         * let imgData = canvas.toDataURL('image/png/jpg/svg').replace(/^data:image\\/(png|svg):base64,/, '');\r\n         * resolve(imgData);\r\n         */\r\n\r\n        // ... or get as Data URI\r\n        resolve(canvas.toDataURL('image/png/jpg'));\r\n      };\r\n    });\r\n  }\r\n\r\n  // ---------------------------------------------------------------\r\n  getImage() {\r\n    return this.image;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  getImageArrayFromArrayOfBytes(imageArrOfBytes: any[]): any {\r\n    if (imageArrOfBytes && imageArrOfBytes.length > 0) {\r\n      const images : any = [];\r\n      // debugger;\r\n\r\n      imageArrOfBytes.map((e) => {\r\n        // images.push(this.createImageFromByteArray(e));  // TPDO: restore\r\n      });\r\n      return images;\r\n    }\r\n    return null;\r\n  }\r\n  /*\r\n   * ---------------------------------------------------------------------------------\r\n   * Note: This routine will look for comma separated 'image-file-name' in urls[], and if one exists, will fetch the image\r\n   */\r\n  // getImageDataFromUrlArr(urls: ProfileImage[]): string[] {\r\n  //  const images = [];\r\n\r\n  //  if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(urls) && urls.length > 0) {\r\n  //    let i = 0;\r\n\r\n  //    urls.map((e) => {\r\n  //      if (e.image.toLowerCase().indexOf('.png') !== -1 || e.image.toLowerCase().indexOf('.jpg') !== -1) {\r\n  //        const url = '/api/home/GetImageFromUrl';\r\n  //        // debugger;\r\n\r\n  //        this.httpService.post(url, { imageFileName: e.image}, 'image').subscribe((data) => {\r\n  //          // debugger;\r\n  //          if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n  //            images.push(data);\r\n  //          }\r\n  //          // return images;\r\n  //        });\r\n  //        // debugger;\r\n  //      } else {\r\n  //        images.push(urls[i]);\r\n  //      }\r\n  //      i++;\r\n  //    });\r\n  //  }\r\n  //  return images;\r\n  // }\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   * Note: This routine will look for comma separated 'image-file-name' in urls[], and if one exists, will fetch the image\r\n   */\r\n  // getImageDataFromUrl(filePath: string): any {\r\n  //  if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filePath)) {\r\n  //    if (filePath.toLowerCase().indexOf('.png') !== -1 || filePath.toLowerCase().indexOf('.jpg') !== -1) {\r\n  //      const url = '/api/home/GetImageFromUrl';\r\n  //      let bnIn ! : any;// Communication =  new Communication();  // TPDO: restore\r\n  //      // debugger;\r\n\r\n  //      bnIn.fileName = filePath;\r\n  //      const salted = SlakezSaltServiceStatic.saltModel(bnIn);\r\n  //      // debugger;\r\n\r\n  //      // debugger;\r\n  //      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(salted) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(salted.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(salted.nonce)) {\r\n  //        this.httpService\r\n  //          .post(\r\n  //            url,\r\n  //            {\r\n  //              box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(salted.box),\r\n  //              nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(salted.nonce),\r\n  //            },\r\n  //            'json'\r\n  //          )\r\n  //          .subscribe((result) => this.processImageDataFromUrlResult(result));\r\n  //        // debugger;\r\n  //      }\r\n  //    }\r\n  //  }\r\n  //  return false;\r\n  // }\r\n  // ---------------------------------------------------------------\r\n  processImageDataFromUrlResult (result : any): any {\r\n    let imageFile: any;\r\n    // debugger;\r\n\r\n    if (result) {\r\n      const bn = result as BoxNonceEntity;\r\n      // debugger;\r\n\r\n      if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n        imageFile = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn));\r\n        // debugger;\r\n        if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageFile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageFile.FileContents)) {\r\n          EmitterSubjectService.emitImage(imageFile.FileContents);\r\n        }\r\n        return false;\r\n        /*\r\n         * Keep the commented code. it works!\r\n         * const canvasImage = await this.resizeImagePromise(filePath, 300, 300);\r\n         * debugger;\r\n         * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(canvasImage)) image = canvasImage;\r\n         */\r\n      }\r\n    }\r\n  }\r\n  // ---------------------------------------------------------------\r\n  async getImageDataFromUrlPromise (filePath : any): Promise {\r\n    let image = '';\r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filePath)) {\r\n      const canvasImage = await this.resizeImagePromise(filePath, 300, 300);\r\n\r\n      canvasImage.then((data : any) => (image = data));\r\n    }\r\n    return image;\r\n  }\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   * toDataUrl(url, callback) {\r\n   * let xhr = new XMLHttpRequest();\r\n   * xhr.onload = function () {\r\n   *   let reader = new FileReader();\r\n   *   reader.onloadend = function () {\r\n   *     callback(reader.result);\r\n   *   }\r\n   *   reader.readAsDataURL(xhr.response);\r\n   * };\r\n   * xhr.open('GET', url);\r\n   * xhr.responseType = 'blob';\r\n   * xhr.send();\r\n   * }\r\n   * Usage example\r\n   * toDataUrl(imagepath, function(myBase64) {\r\n   * console.log(myBase64); //myBase64 is the base64 string\r\n   * });\r\n   * ---------------------------------------------------------------\r\n   */\r\n  getResizedImage(img: any): string {\r\n    this.image = img;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.image)) {\r\n      this.image = this.resizeImage(this.image, 100, 100);\r\n    }\r\n    return this.image;\r\n  }\r\n\r\n  /*\r\n   * ---------------------------------------------------------------------------------\r\n   * Begin of ImageDataCleanupSystem:\r\n   * API: normalizeImageData(image: string): string {}\r\n   * ---------------------------------------------------------------------------------\r\n   */\r\n  public normalizeImageData(image: string): string {\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n      const pattern = /\\'*data:image(\\/(jpeg|jpg|png|svg))+;base64,/;\r\n      let imageData = image;\r\n\r\n      if (imageData.toLowerCase().indexOf('url(\\'') !== -1) {\r\n        imageData = this.stripUrlFromImageData(imageData);\r\n        // debugger;\r\n      }\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData) && pattern.test(imageData)) {\r\n        imageData = this.setUrlForImageData(imageData);\r\n        return imageData;\r\n      }\r\n    }\r\n    return image;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  private prependToImageData(image: string): string {\r\n    // debugger;\r\n    let outImage = '';\r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n      const pattern1 = /\\'*data:image(\\/(jpeg|jpg|png|svg))+;base64,/;\r\n      const tImage = image.replace(pattern1, '');\r\n      // tImage = tImage.toString().replace(/\\'+/, '\\''); //collapse multiple quotes ('+) to a single (')\r\n\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tImage)) {\r\n        outImage = 'data:image/png;base64,' + tImage.toString();\r\n        // debugger;\r\n      }\r\n      // Note: the above code accomplishes the same objective as the below code:\r\n      // -----------------------------------------------------------------------------\r\n      // if (image.toLowerCase().indexOf('jpeg') !== -1) image.replace('jpeg', 'jpg');\r\n      // if ((image.toLowerCase().indexOf('data:image/jpg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/png;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/svg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/jpg/png;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/png/jpg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/jpg/svg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/svg/jpg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/png/svg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/svg/png;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/jpg/png/svg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/jpg/svg/png;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/png/jpg/svg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/png/svg/jpg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/svg/png/jpg;base64,') !== -1)\r\n      // || (image.toLowerCase().indexOf('data:image/svg/jpg/png;base64,') !== -1)\r\n      // ){\r\n      // //debugger;\r\n      // return image;\r\n      // }\r\n    }\r\n    return outImage;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  setUrlForImageData(image: string): string {\r\n    // debugger;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n      const prependedImageData = this.prependToImageData(image); // check if its an image\r\n\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(prependedImageData)) {\r\n        // debugger;\r\n        if (prependedImageData.indexOf('url(\\'') === -1) {\r\n          /*\r\n           * check if url linked\r\n           * debugger;\r\n           */\r\n          return 'url(\\'' + prependedImageData + '\\')';\r\n        }\r\n        return prependedImageData;\r\n      }\r\n    }\r\n    // debugger;\r\n    return '';\r\n  }\r\n  // ---------------------------------------------------------------\r\n  stripUrlFromImageData(image: string) {\r\n    let tImage: any;\r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n      const pattern1 = /url\\('/;\r\n\r\n      tImage = image.replace(pattern1, '');\r\n      const pattern2 = /'\\)/;\r\n\r\n      tImage = tImage.replace(pattern2, '');\r\n      return tImage;\r\n    }\r\n  }\r\n  /*\r\n   * ---------------------------------------------------------------------------------\r\n   * End of ImageDataCleanupSystem:\r\n   * ---------------------------------------------------------------------------------\r\n   * ---------------------------------------------------------------\r\n   * does not work!!\r\n   * ref:https:// gist.github.com/ORESoftware/ba5d03f3e1826dc15d5ad2bcec37f7bf\r\n   */\r\n  resizeImage (base64Str : any, maxW: number, maxH: number): string {\r\n    const img = new Image();\r\n\r\n    base64Str = base64Str.replace('url(\\'url(\\'data:', 'data:');\r\n    img.src = base64Str;\r\n    const canvas = document.createElement('canvas');\r\n    const MAX_WIDTH = maxW > 0 ? maxW : 400;\r\n    const MAX_HEIGHT = maxH > 0 ? maxH : 400;\r\n    let width = img.width;\r\n    let height = img.height;\r\n\r\n    if (width > height) {\r\n      if (width > MAX_WIDTH) {\r\n        height *= MAX_WIDTH / width;\r\n        width = MAX_WIDTH;\r\n      }\r\n    } else {\r\n      if (height > MAX_HEIGHT) {\r\n        width *= MAX_HEIGHT / height;\r\n        height = MAX_HEIGHT;\r\n      }\r\n    }\r\n    canvas.width = width;\r\n    canvas.height = height;\r\n    const ctx : any = canvas.getContext('2d');\r\n\r\n    ctx.drawImage(img, 0, 0, width, height);\r\n    return canvas.toDataURL();\r\n  }\r\n\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   * THIS DOES NOT WORK!\r\n   * ref:https:// gist.github.com/ORESoftware/ba5d03f3e1826dc15d5ad2bcec37f7bf\r\n   */\r\n  resizeImageInREM (base64Str : any, maxW: number, maxH: number): string {\r\n    const img = new Image();\r\n\r\n    base64Str = base64Str.replace('url(\\'url(\\'data:', 'data:');\r\n    img.src = base64Str;\r\n    const canvas = document.createElement('canvas');\r\n    const MAX_WIDTH = maxW > 0 ? maxW * 16 : 48; // default==baseWidth==3rem==48px\r\n    const MAX_HEIGHT = maxH > 0 ? maxH * 16 : 48; // default==baseHeight==3rem==48px\r\n    let width = img.width;\r\n    let height = img.height;\r\n\r\n    if (width > height) {\r\n      if (width > MAX_WIDTH) {\r\n        height *= MAX_WIDTH / width;\r\n        width = MAX_WIDTH;\r\n      }\r\n    } else {\r\n      if (height > MAX_HEIGHT) {\r\n        width *= MAX_HEIGHT / height;\r\n        height = MAX_HEIGHT;\r\n      }\r\n    }\r\n    canvas.width = width;\r\n    canvas.height = height;\r\n    const ctx : any = canvas.getContext('2d');\r\n\r\n    ctx.drawImage(img, 0, 0, width, height);\r\n    return canvas.toDataURL();\r\n  }\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   * Tested, works! 2020/July/23\r\n   * ref:https:// gist.github.com/ORESoftware/ba5d03f3e1826dc15d5ad2bcec37f7bf\r\n   * Usage: const result = await resizeImagePromise(YOUR_BASE64, MAX_WIDTH, MAX_HEIGHT);\r\n   * ---------------------------------------------------------------\r\n   */\r\n  resizeImagePromise (filePath : any, maxWidth = 400, maxHeight = 400): any {\r\n    return new Promise((resolve) => {\r\n      const img = new Image();\r\n\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filePath)) {\r\n        let width: any;\r\n        let height: any;\r\n\r\n        filePath = filePath.replace('url(\\'url(\\'data:', 'data:');\r\n        if (filePath.indexOf('.jpg') !== -1 || filePath.indexOf('.png') !== -1 || filePath.indexOf('.svg') !== -1) {\r\n          img.src = 'url(\\'' + filePath + '\\')';\r\n          img.onload = () => {\r\n            const canvas = document.createElement('canvas');\r\n            const MAX_WIDTH = maxWidth;\r\n            const MAX_HEIGHT = maxHeight;\r\n\r\n            width = img.width;\r\n            height = img.height;\r\n\r\n            if (width > height) {\r\n              if (width > MAX_WIDTH) {\r\n                height *= MAX_WIDTH / width;\r\n                width = MAX_WIDTH;\r\n              }\r\n            } else {\r\n              if (height > MAX_HEIGHT) {\r\n                width *= MAX_HEIGHT / height;\r\n                height = MAX_HEIGHT;\r\n              }\r\n            }\r\n            canvas.width = width;\r\n            canvas.height = height;\r\n            const ctx : any = canvas.getContext('2d');\r\n\r\n            ctx.drawImage(img, 0, 0, width, height);\r\n            resolve(canvas.toDataURL());\r\n          };\r\n        } else {\r\n          return filePath;\r\n        }\r\n      }\r\n    });\r\n  }\r\n  // ---------------------------------------------------------------\r\n  urlToImageData (image : any): string {\r\n    return image;\r\n  }\r\n  // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Inject, Injectable, NgZone, OnDestroy } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { Observable, Subject, Subscription, interval } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, startWith, take, takeUntil, tap } from 'rxjs/operators';\r\nimport { URLUtils } from '../../app/directiveFilterPipeModule/epl/URLUtils';\r\n// import { URLUtils } from \"../../../src/eplLib/URLUtils\";\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { PagerBreadcrum } from '../../models/breadcrum/pagerBreadcrum.model';\r\nimport { ModuleComponentLoader } from '../../models/common/moduleComponentLoader.model';\r\nimport { SpinnerModel } from '../../models/common/spinnerModel.model';\r\nimport { BackgroundImageAnimationService } from '../rendererServiceService/backgroundImageAnimationService.service';\r\nimport { BreadcrumServiceStatic } from '../staticServices/breadcrumServiceStatic.service';\r\nimport { ModuleComponentLoaderServiceStatic } from '../staticServices/commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { MessageBuilderServiceStatic } from '../staticServices/messgeBuilderServiceStatic.service';\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class RedirectionService implements OnDestroy\r\n{\r\n  public activatedRoute : any;\r\n  public boxNonce : BoxNonceEntity = new BoxNonceEntity();\r\n  public document : Document;\r\n  public spinnerModel : SpinnerModel = new SpinnerModel();\r\n  public isMobilevar = false;\r\n  public loginSuccess : LoginSuccess = new LoginSuccess();\r\n  public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n  public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n  public router: Router;\r\n  public returnUrl : string = '';\r\n  public sitUser : SitUser = new SitUser();\r\n  public urlString = '';\r\n  public urlPathStr = '';\r\n  public urlSearchStr = '';\r\n  public elementRef: any;\r\n  public emitterDestroyed$ : Subject = new Subject();\r\n  public message : any;\r\n  public stable : any;\r\n  public timer : any;\r\n  public timerArray : any[] = [];\r\n  // -----------------------------------------\r\n  public constructor (\r\n    public bias : BackgroundImageAnimationService,\r\n    @Inject(DOCUMENT) _document,\r\n    @Inject(Window) window,) {\r\n    this.document = _document;\r\n    this.initialize();\r\n\r\n    // this.appInitUrlEmitter.subscribe((result) => {\r\n    //  debugger;\r\n    //  this.appStartUrlStringParser();\r\n    // });\r\n\r\n    //\r\n    // -----------------------------------------------------------\r\n    EmitterSubjectService.mcLoaderToNavigateEmitter\r\n      .pipe(takeUntil(this.emitterDestroyed$))\r\n      .subscribe((result) => {\r\n        // debugger;\r\n        this.mcLoader = result;\r\n        return this.fireMcLoaderRoute(this.mcLoader);\r\n      });\r\n  }\r\n  // ---------------------------------------------------------------\r\n  ngOnDestroy () {\r\n    /*\r\n     * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n     *       (2) https:// www.concretepage.com/angular-2/angular-4-renderer2-example\r\n     *       (3) https:// stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n     *       (4) https:// stackblitz.com/edit/timer-with-pdestroyed\r\n     */\r\n    // prevent memory leak when component destroyed\r\n    this.emitterDestroyed$.next(true);\r\n    this.emitterDestroyed$.complete();\r\n    this.emitterDestroyed$.unsubscribe();\r\n    this.timerArray.forEach((timer) => clearInterval(timer));\r\n  }\r\n  // -----------------------------------------\r\n  initialize () {\r\n    // debugger;\r\n    //  -------------------------------------------------------------------------\r\n    EmitterSubjectService.fireMcLoaderRouteEmitter.subscribe((result) => {\r\n      // debugger;\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n        // ---------------------------------------------------\r\n        result = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(result);\r\n        \r\n        this.fireMcLoaderRoute(result as ModuleComponentLoader).subscribe(data => {\r\n          this.pagerBrdCrm = data\r\n        });\r\n        EmitterSubjectService.emitPagerBreadcrum(this.pagerBrdCrm);\r\n      }\r\n    });\r\n    //  -------------------------------------------------------------------------\r\n  } \r\n\r\n  /*\r\n   * -----------------------------------------------------------------\r\n   *\r\n   * The following will reroute on the basis of url string on startup\r\n   *\r\n   * -----------------------------------------------------------------\r\n   */\r\n  public appStartUrlStringParser (router : Router) : any {\r\n    \r\n    let action = '';\r\n    let controller = '';\r\n    let id : any;\r\n    let origin : any;\r\n    let path = '';\r\n\r\n    let tRoute = '';\r\n    let urlParamMap : Map = new Map();\r\n    let urlparts : any[] = [];\r\n    let mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n    this.urlString = window.location.pathname + window.location.search;\r\n    this.urlPathStr = window.location.pathname;\r\n    this.urlSearchStr = window.location.search;\r\n\r\n    this.returnUrl = this.urlString;\r\n    EmitterSubjectService.setReturnUrl(this.returnUrl);\r\n\r\n    if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.router) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(router)) {\r\n      this.router = router;\r\n    }\r\n\r\n    // debugger;\r\n    let paramArr = URLUtils.pathToURIParams(this.urlString);\r\n    origin = URLUtils.pathToLocation(this.urlString).origin;\r\n    urlParamMap.set('origin', origin);\r\n    // -------------------------------------------------------------------------------------------------------------\r\n    // TODO: if this paramArr contains all the attributes of the url such as origin, controller, action, paramMap, \r\n    //       then use this to extract them all, otherwise, there is no need to use this Utility file.\r\n    // -------------------------------------------------------------------------------------------------------------\r\n    // debugger;\r\n\r\n    // debugger;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.urlString))\r\n    {\r\n      if (this.urlString.indexOf('ResetPassword') !== -1) {\r\n        // debugger;\r\n        return this.resetPassword(router, this.urlString);\r\n      }\r\n      else {\r\n        if (this.urlString.length > 1) {\r\n          // api case:\r\n          // Note: api cases are when serviceWorker makes the api calls for getting data, not for page load/reload\r\n          //       But the non-api cases, the url contains the backend's 'controllerName/action' after '/api/'\r\n          //       such as 'https://slakez/api/controller/action'\r\n          // -------------------------------------------------------------------------------------------------------                  \r\n          // non-api cases when the client's router makes redirections or server-reirection is invoked by swipe-down\r\n          // -------------------------------------------------------------------------------------------------------\r\n          if (this.urlString.indexOf('/api') === -1)\r\n          {\r\n             // parameter's case:\r\n             // -----------------\r\n            if (this.urlString.includes('?'))\r\n            {\r\n              // debugger;\r\n              urlparts = this.urlString.split('?');\r\n              if (urlparts.length > 1) {\r\n                this.urlString = urlparts[ 0 ];\r\n                id = urlparts[ 1 ];\r\n\r\n                // ---------------------------------------------------------------------------\r\n                // TODO: follow the pattern/example of a complex url with multiple parameters:\r\n                // ---------------------------------------------------------------------------\r\n                if (id.includes('&')) {\r\n                  // debugger;\r\n                  var idParts = id.split('&');\r\n                  if (idParts.length > 1) {\r\n                    // debugger;\r\n                    mcLoader.id = idParts[ 0 ];\r\n\r\n                    urlParamMap.set(idParts[ 0 ], idParts[ 1 ]);\r\n                    // ---------------------------------------------               \r\n                    // need to convert to number for sitUserId:\r\n                    // ---------------------------------------------\r\n                    if (parseInt(idParts[ 0 ]) > 0) {\r\n                      mcLoader.id = parseInt(idParts[ 0 ]);\r\n                    }\r\n                    // debugger;\r\n                  }\r\n                  var paramParts = idParts[ 1 ].split('&');\r\n                  if (paramParts.length > 1) {\r\n                    paramParts.map((p : any) => {\r\n                      var paramStr = p; // p = param kv pair\r\n                      var paramStrParts = paramStr.split('=');\r\n                      if (paramStrParts.length > 1 && !urlParamMap.has(paramStrParts[ 0 ])) {\r\n                        urlParamMap.set(paramStrParts[ 0 ], paramStrParts[ 1 ]); // p =  = \r\n                        // debugger;\r\n                        if (paramStrParts[ 0 ].toString().indexOf('code') !== -1) {\r\n                          EmitterSubjectService.setResetPasswordCode(paramStrParts[ 1 ]);\r\n                          EmitterSubjectService.emitResetPasswordCode(paramStrParts[ 1 ]);\r\n                        }\r\n                      }\r\n                    })\r\n                    mcLoader.paramMap = urlParamMap;\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n          // componentName(aka action) & moduleName (aka controller) extraction:\r\n          // -------------------------------------------------------------------\r\n          if (this.urlString.includes('/')) {\r\n            // debugger;\r\n            urlparts = this.urlString.split('/');\r\n\r\n            if (urlparts.length > 0) {\r\n              // debugger;\r\n              mcLoader.action = mcLoader.componentName = action = urlparts[ urlparts.length - 1 ]; // Take the last item for componentName i.e. action\r\n              mcLoader.controller = mcLoader.moduleName = controller = urlparts[ urlparts.length - 2 ]; // Take the last item for moduleName i.e. controller\r\n              if (action.length > 0) {\r\n                // debugger;\r\n                // -----------------------------------------------------------------------------------\r\n                // TODO:  If the request is due to an pageRefresh such as swipe down,\r\n                //        preserve the existing component's data on the service and\r\n                //        reuse them at init() so that the page load is fast.\r\n                // Note:  The page on refresh will go though its api calls if relevant regardless\r\n                //        of previously saved values.\r\n                // -----------------------------------------------------------------------------------\r\n                this.setRoute(this.router, mcLoader.componentName, mcLoader.id).subscribe(data => {\r\n                  return data;\r\n                });\r\n\r\n                // hide vertical menues if applicable:\r\n                // -----------------------------------\r\n                // this.hideVerticalMenues();\r\n                // this.hideVerticalMenues(mcLoader);\r\n\r\n              }\r\n            } else {\r\n               debugger;\r\n              return this.setRoute(this.router, 'index', 0).subscribe(data => {\r\n                return data;\r\n              });\r\n            }\r\n          } else {\r\n             debugger;\r\n            return this.setRoute(this.router, 'index', 0).subscribe(data => {\r\n              return data;\r\n            });\r\n          }\r\n        }\r\n        else {\r\n           debugger;\r\n          return this.setRoute(this.router, 'index', 0).subscribe(data => {\r\n            return data;\r\n          });\r\n        }\r\n      }\r\n    }\r\n    else {\r\n       debugger;\r\n      return this.setRoute(this.router, 'index', 0).subscribe(data => {\r\n        return data;\r\n      });\r\n    }\r\n  }\r\n  // -----------------------------------------------------------------\r\n  //  Note: the activatedComponentRouteDictionary gets populated with\r\n  //        mcLoader model when each time a calling function emits\r\n  //        the mcLoader.\r\n  // -----------------------------------------------------------------\r\n  public clearRoutes ( router : Router ) : Promise | any\r\n  {\r\n    BreadcrumServiceStatic.clearRoutes();\r\n    if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.router) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(router)) {\r\n      this.router = router;\r\n    }\r\n    return this.setRoute(this.router, 'index', 0 );\r\n  }\r\n  // --------------------------------------------------------------\r\n  // NOte:  This appplication creates the respective dictionary(ies) \r\n  //        that each component needs when it comes in scope via routing\r\n  //        Therefore, all the DbDexie to Dictionarty nethods that\r\n  //        reads the indexedDb and put the results in the respectie\r\n  //        dictionary here.\r\n  // --------------------------------------------------------------\r\n  public createDictionary (mcLoader : ModuleComponentLoader) : any {\r\n    let path = '';\r\n    this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n    let dbDexieToDictionaryService = EmitterSubjectService.getDbDexieToDictionaryService();\r\n    debugger;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.moduleName) && mcLoader.moduleName.length > 0\r\n      && mcLoader.componentName && mcLoader.componentName.length > 0) {\r\n      switch (mcLoader.componentName.toLowerCase()) {\r\n        case 'buddies':\r\n        case 'iblocked':\r\n        case 'myfriends':\r\n        case 'iliked':\r\n        case 'itracked':\r\n        case 'utracked':\r\n        case 'iwinked':\r\n        case 'uwinked':\r\n          // debugger;\r\n          mcLoader.moduleName = 'activitym';\r\n          break;\r\n        case 'mychats':\r\n        case 'chat':\r\n          mcLoader.moduleName = 'chatm';\r\n          // debugger;\r\n          break;\r\n        case 'myemails':\r\n        case 'myenotes':\r\n        case 'viewemail':\r\n        case 'viewenote':\r\n        case 'composeemail':\r\n        case 'composeenote':\r\n          mcLoader.moduleName = 'communicationm';\r\n          break;\r\n        case 'about':\r\n        case 'features':\r\n        case 'comparememberships':\r\n        case 'contactus':\r\n        case 'notfound':\r\n        case 'privacy':\r\n        case 'terms':\r\n          mcLoader.moduleName = 'publicm';\r\n          break;\r\n        case 'forgot':\r\n        case 'login':\r\n          mcLoader.moduleName = 'loginm';          \r\n          break;\r\n        case 'logout':\r\n        case 'resetpassword':\r\n          // debugger;\r\n          mcLoader.moduleName = 'loginm';\r\n          break;\r\n\r\n        case 'register':\r\n        case 'prescreen':\r\n          mcLoader.moduleName = 'registerm';\r\n          break;\r\n        case 'members':\r\n        case 'membersindividually':\r\n          debugger;\r\n          mcLoader.moduleName = 'membersm';\r\n          break;\r\n        case 'memberscroll':\r\n          debugger;\r\n          mcLoader.moduleName = 'memberscrollm';\r\n          break;\r\n        case 'memberviewmgmt':\r\n        case 'upgradedmembers':\r\n          mcLoader.moduleName = 'memberviewandupgradedm';\r\n          break;\r\n        case 'memberedit':\r\n          mcLoader.moduleName = 'profilem';\r\n          break;\r\n\r\n        case 'dialog':\r\n        case 'message':\r\n        case 'spinner':\r\n          mcLoader.moduleName = 'modalm';\r\n          break;\r\n        case 'myprofileviewmgmt':\r\n        case 'myphotomgmt':\r\n          mcLoader.moduleName = 'mym';\r\n          // debugger;\r\n          break;\r\n        case 'gayatriyantra':\r\n        case 'sandbox':\r\n          mcLoader.moduleName = 'sandboxm';\r\n          break;\r\n        case 'payment':\r\n        case 'upgraded':\r\n          mcLoader.moduleName = 'salesm';\r\n          break;\r\n        case 'animation':\r\n        case 'boxnoncetest':\r\n        case 'errorlog':\r\n        case 'gesturetest':\r\n        case 'imageresizer':\r\n          mcLoader.moduleName = 'staffm';\r\n          break;\r\n        default:\r\n          // debugger;\r\n          mcLoader.moduleName = 'app';\r\n          mcLoader.componentName = 'index';\r\n          break;\r\n      }\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dbDexieToDictionaryService)) {\r\n        debugger;\r\n        dbDexieToDictionaryService.createAllSitUserRelatedDictionariesFromDbDexie();\r\n        debugger;\r\n\t\t\t}\r\n    }\r\n  }\r\n  // --------------------------------------------------------------\r\n  /*\r\n   * ---------------------------------------------------------------\r\n   *  Note: here we hold the Path information on 'mcLoader'\r\n   */\r\n  public determinePathFromLoginSuccess () : any {\r\n    let mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n    this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n\r\n    this.urlString = window.location.pathname + window.location.search;\r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.isEmailConfirmed) {\r\n      mcLoader.id = this.loginSuccess.signedInUserId;\r\n      // debugger;\r\n      if (this.loginSuccess.signedInUserId > 0)\r\n      {\r\n        if (this.loginSuccess.controller === 'member' || this.urlString.toLowerCase().indexOf('member') !== -1) {\r\n          if (!this.loginSuccess.isProfileComplete || this.loginSuccess.isEditProfile) {\r\n            debugger;\r\n            mcLoader.moduleName = 'profilem';\r\n            mcLoader.componentName = 'memberEdit';\r\n\r\n          } else {\r\n            debugger;\r\n            mcLoader.moduleName = 'memberscrollm';\r\n            mcLoader.componentName = 'memberscroll';\r\n          }\r\n        }\r\n        else if (this.loginSuccess.controller === 'index' || this.urlString.toLowerCase().indexOf('index') !== -1) { // if\r\n          debugger;\r\n          mcLoader.moduleName = 'memberscrollm';\r\n          mcLoader.componentName = 'memberscroll';\r\n        }\r\n        else {\r\n          mcLoader.moduleName = 'app';\r\n          mcLoader.componentName = 'index';\r\n        }\r\n      }\r\n      else {\r\n        mcLoader.moduleName = 'app';\r\n        mcLoader.componentName = 'index';\r\n      }\r\n    }\r\n    // debugger;\r\n    return mcLoader;\r\n  }\r\n  \r\n  // --------------------------------------------------------------\r\n  // Note: important aspect of this method is that is updates the\r\n  //       PagerBreadCrum as opposed to BreadcrumService.setBreadcrumPage() that\r\n  //       does not, and instead simply navigates back and forth over breadcrumRingArr entries.\r\n  // --------------------------------------------------------------\r\n  public fireMcLoaderRoute ( mcl:ModuleComponentLoader ) : Observable \r\n  {\r\n    let path = '';\r\n    let isBtb = false;\r\n    let Pgr : any;\r\n    let mcLoader : ModuleComponentLoader = mcl\r\n    return new Observable((subscriber) => {\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader)\r\n        && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.router)) {\r\n        this.router = mcLoader.router;\r\n        // debugger;\r\n      }\r\n      else {\r\n        mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(mcLoader);\r\n        this.router = mcLoader.router;\r\n\t\t  }\r\n      // debugger;\r\n      if (ModuleComponentLoaderServiceStatic.isValidModuleComponentLoader(mcLoader))\r\n      {\r\n        // debugger;\r\n        // must be called before rerouting!\r\n        // --------------------------------\r\n        //\r\n        // debugger;\r\n        // will check if the same component is back to back & update pagerBreadcrum at EmitterService:\r\n        // -------------------------------------------------------------------------------------------\r\n        Pgr = BreadcrumServiceStatic.setNewPath(mcLoader);\r\n\r\n        // debugger;\r\n        // if PagerBreadCrum was returned:\r\n        // -------------------------------\r\n        if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(Pgr) && Pgr.currentPage > 0)\r\n        {\r\n          // debugger;\r\n          this.pagerBrdCrm = Pgr as PagerBreadcrum;\r\n          EmitterSubjectService.setPagerBreadcrum(this.pagerBrdCrm);\r\n\r\n          // EmitterSubjectService.emitPagerBreadcrum(this.pagerBrdCrm);\r\n\r\n          // TODO:  if something does not render, uncomment this. \r\n          //        Not sure which code this can block, but it seems redundant:\r\n          // ------------------------------------------------------------------\r\n       //   if (!BreadcrumServiceStatic.emitProfilePageSelectorBoolean(mcLoader.componentName) && !this.isCurrentUrlAProfilePage(mcLoader.url)) {\r\n       //     switch (mcLoader.componentName.toLowerCase()) {\r\n       //       case 'myphotomgmt':\r\n       //         EmitterSubjectService.setIsPhotoMgmt(true);\r\n       //         break;\r\n       //       case 'memberviewmgmt':\r\n       //         EmitterSubjectService.setIsViewMember(true);\r\n       //         break;\r\n       //       case 'myprofileviewmgmt':\r\n       //         EmitterSubjectService.setIsMyProfile(true);\r\n       //         break;\r\n       //       default:\r\n       //         // this.fireMcLoaderRoute(mcLoader); // TODO: check if it works, otherwise delete this!\r\n       //         break;\r\n\t\t\t\t\t  //}          \r\n       //     // debugger;\r\n       //   }\r\n          // EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n\r\n          //  debugger;          \r\n          // ---------------------------------------------------------------------------------------------------\r\n          // if the user clicked 'myProfileView' while viewing someone else's profile, \r\n          // if the current page is memberView and previous page was also memberView but of different user\r\n          // i.e. back-to-back-memberView:\r\n          // ---------------------------------------------------------------------------------------------------\r\n          // if (mcLoader.componentName.toLowerCase().indexOf('memberviewmgmt') !== -1) {\r\n          // if (BreadcrumServiceStatic.isDifferentMemberView()) {\r\n          //   // emit the fact that this user is different than the previous user\r\n          //   EmitterSubjectService.emitDisplayDifferentMemberView(mcLoader);\r\n          //   // debugger;              \r\n          // }\r\n          // }\r\n          // debugger;\r\n          if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.url) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.router)) {\r\n            // debugger;\r\n            if (mcLoader.url.length >= 1 && mcLoader.url[ 0 ].indexOf(\"/\") !== -1) {\r\n              // debugger;\r\n              try {\r\n                this.document = EmitterSubjectService.getDocument();\r\n                console.log('navigateByUrl : ' + mcLoader.url);\r\n                this.router.navigateByUrl(mcLoader.url).then(data => {\r\n                  console.log(data);\r\n                  // debugger;\r\n                  MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, 'routed url:' + mcLoader.url);\r\n                  subscriber.next(this.pagerBrdCrm);\r\n                  // subscriber.complete();\r\n                }).catch(error => {\r\n                  // debugger;\r\n                  console.log('redirectionService.navigateByUrl.error=' + error);\r\n                });\r\n              }\r\n              catch {\r\n                console.log('redirectionService.navigateByUrl.error');\r\n              }\r\n            }\r\n            else {\r\n              // debugger;\r\n              try {\r\n                this.document = EmitterSubjectService.getDocument();\r\n                console.log('navigate : ');\r\n                this.router.navigate([ mcLoader.url ]).then(data => {\r\n                  console.log(data);\r\n                  //this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n                  //MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, 'routed url:' + mcLoader.url);\r\n                  // debugger;\r\n                  subscriber.next(this.pagerBrdCrm);\r\n                  // subscriber.complete();\r\n                }).catch(error => {\r\n                  // debugger;\r\n                  console.log('redirectionService.navigate.error=' + error);\r\n                });\r\n              }\r\n              catch {\r\n                console.log('redirectionService.navigate.error');\r\n              }\r\n            }\r\n           \r\n            // hide vertical menues if applicable:\r\n            // -----------------------------------\r\n            // this.hideVerticalMenues();\r\n            //if (!this.hideVerticalMenues(mcLoader)) {\r\n            // // debugger;\r\n            //  this.hideVerticalMenues2(mcLoader)\r\n            //}           \r\n          }\r\n          else // mcl was returned, which is most likely invalid, meaning lacks either moduleName or componentName\r\n          {\r\n            // debugger;\r\n            let message = \"mcl is incomplete. moduleName = \" + mcLoader.moduleName + \", componentName = \" + mcLoader.componentName;\r\n            // EmitterSubjectService.emitMessage(message);\r\n            subscriber.next(this.pagerBrdCrm);\r\n            subscriber.complete();\r\n          }\r\n        }\r\n        else // mcl was returned, which is most likely invalid, meaning lacks either moduleName or componentName\r\n        {\r\n          // debugger;\r\n          let message = \"mcl is incomplete. moduleName = \" + mcLoader.moduleName + \", componentName = \" + mcLoader.componentName;\r\n          // EmitterSubjectService.emitMessage(message);\r\n          subscriber.next(this.pagerBrdCrm);\r\n          subscriber.complete();\r\n        }\r\n      }\r\n      else {\r\n        subscriber.next(this.pagerBrdCrm);\r\n        subscriber.complete();\r\n      }\r\n    })\r\n  }\r\n  // --------------------------------------------------------------\r\n  public fireMcLoaderforSignedInUser (mcLoader : ModuleComponentLoader) : any {\r\n    let path = '';\r\n    let isBtb = false;\r\n    let Pgr : any;   \r\n     \r\n    // debugger;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader)\r\n      && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.router)) {\r\n      this.router = mcLoader.router;\r\n      // debugger;\r\n    }\r\n    else {\r\n      mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(mcLoader);\r\n      this.router = mcLoader.router;\r\n    }\r\n\r\n    if (ModuleComponentLoaderServiceStatic.isValidModuleComponentLoader(mcLoader)) {\r\n\r\n      // must be called before rerouting!\r\n      // --------------------------------\r\n      //\r\n      // debugger;\r\n      // will check if the same component is back to back & update pagerBreadcrum at EmitterService:\r\n      // -------------------------------------------------------------------------------------------\r\n      Pgr = BreadcrumServiceStatic.setNewPath(mcLoader);\r\n\r\n      // debugger;\r\n      // if PagerBreadCrum was returned:\r\n      // -------------------------------\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(Pgr) && Pgr.currentPage > 0) {\r\n        // debugger;\r\n        this.pagerBrdCrm = Pgr as PagerBreadcrum;\r\n        EmitterSubjectService.setPagerBreadcrum(this.pagerBrdCrm);\r\n        EmitterSubjectService.emitPagerBreadcrum(this.pagerBrdCrm);\r\n\r\n      }\r\n      \r\n      // debugger;\r\n      // if emitPageSelectorBoolean == false, then:\r\n      // ------------------------------------------\r\n      if (!BreadcrumServiceStatic.emitProfilePageSelectorBoolean(mcLoader.componentName) && !this.isCurrentUrlAProfilePage(mcLoader.url)) {\r\n        switch (mcLoader.componentName.toLowerCase()) {\r\n          case 'myphotomgmt':\r\n            EmitterSubjectService.emitIsMyProfile(false);\r\n            break;\r\n          case 'memberviewmgmt':\r\n            EmitterSubjectService.emitIsPhotoMgmt(false);\r\n            break;\r\n          case 'myprofileviewmgmt':\r\n            EmitterSubjectService.emitIsViewMember(false);\r\n            break;\r\n          default:\r\n            ; // do nothing\r\n            break;\r\n        }\r\n      }\r\n        \r\n      // debugger;\r\n      EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n      return this.pagerBrdCrm;\r\n    }      \r\n    else // mcl was returned, which is most likely invalid, meaning lacks either moduleName or componentName\r\n    {\r\n      // debugger;\r\n      let message = \"mcl is incomplete. moduleName = \" + mcLoader.moduleName + \", componentName = \" + mcLoader.componentName;\r\n      // EmitterSubjectService.emitMessage(message);\r\n    }\r\n  }\r\n  // ---------------------------------------------------------------------------------\r\n  public hideVerticalMenues3 (mcl : ModuleComponentLoader) : void {\r\n    // debugger;\r\n    this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n    if (!this.isMemberViewAndMyPhotosPagesBackToBack()\r\n      &&( mcl.url.toLowerCase().indexOf('myprofileviewmgmt') === -1\r\n      && mcl.url.toLowerCase().indexOf('myphotomgmt') === -1)) {\r\n      // debugger;\r\n\r\n      EmitterSubjectService.emitIsPhotoMgmt(false);\r\n      EmitterSubjectService.emitIsMyProfile(false);\r\n    }\r\n    else  if (mcl.url.toLowerCase().indexOf('memberviewmgmt') !== -1) {\r\n      EmitterSubjectService.emitIsViewMember(true);\r\n      // debugger;\r\n      if (mcl.id > 0 && mcl.id === this.loginSuccess.signedInUserId) {\r\n        // debugger;\r\n        EmitterSubjectService.emitIsPhotoMgmt(true);\r\n        EmitterSubjectService.emitIsMyProfile(false);\r\n      }\r\n    }\r\n    else if (mcl.url.toLowerCase().indexOf('myphotomgmt') !== -1) {\r\n      // debugger;\r\n      EmitterSubjectService.emitIsPhotoMgmt(true);\r\n      EmitterSubjectService.emitIsMyProfile(false);\r\n    }    \r\n  }\r\n  // ---------------------------------------------------------------------------------\r\n  // Note: Keep until this process is stable. Delete before deployment:\r\n  // ---------------------------------------------------------------------------------\r\n  public hideVerticalMenues2 (mcl : ModuleComponentLoader) : any {\r\n    // debugger;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl.componentName)) {\r\n      // debugger;\r\n\r\n      if (mcl.returnUrl.toLowerCase().indexOf('myprofileviewmgmt') !== -1 && !this.isMemberViewAndMyPhotosPagesBackToBack()) {\r\n        // debugger;\r\n        EmitterSubjectService.emitIsMyProfile(false);\r\n        return true;\r\n      }\r\n      else if (mcl.returnUrl.toLowerCase().indexOf('myphotomgmt') !== -1 && !this.isMemberViewAndMyPhotosPagesBackToBack()) {\r\n        // debugger;\r\n        EmitterSubjectService.emitIsPhotoMgmt(false);\r\n        EmitterSubjectService.emitIsMyProfile(false);\r\n        return true;\r\n      }\r\n    }\r\n    else return false;\r\n  }\r\n   // ---------------------------------------------------------------------------------\r\n  //public hideVerticalMenuesExp (mcl : ModuleComponentLoader) : any {\r\n  //  // debugger;\r\n  //  let prevPageComponentName : any;\r\n  //  let prevPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 2 ];\r\n\r\n  //  if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl.componentName)) {\r\n  //    if (!this.isMemberViewAndMyPhotosPagesBackToBack()) {\r\n  //      EmitterSubjectService.emitIsViewMember(false);\r\n  //      EmitterSubjectService.emitIsPhotoMgmt(false);\r\n  //    }\r\n\r\n  //    // debugger;\r\n  //    else if (mcl.url.toLowerCase().indexOf('memberviewmgmt') === -1) { // current page is NOT memberViewMgmt\r\n  //      // debugger;\r\n  //      EmitterSubjectService.emitIsViewMember(false);\r\n  //      return true;\r\n  //    }\r\n  //    else if (prevPage.sitUserId === this.loginSuccess.signedInUserId) { // curent page is memberViewMgmt and previous page was also memberViewMgmt but of signedInUser's\r\n  //      EmitterSubjectService.emitIsPhotoMgmt(false);\r\n  //    }\r\n  //    else if (mcl.url.toLowerCase().indexOf('memberviewmgmt') !== -1\r\n  //      && prevPage.sitUserId !== this.loginSuccess.signedInUserId\r\n  //      && mcl.sitUserId === this.loginSuccess.signedInUserId) { // previous page was memeberViewMgmt of non-signedInUser & current page is also memberViewMgmt of signedInUser's\r\n  //      EmitterSubjectService.emitIsPhotoMgmt(true);\r\n  //    }\r\n  //  }\r\n  //}\r\n  // ---------------------------------------------------------------------------------\r\n  //  TODO: To avoid the malfunctioning of the MyPhotos's and MemberViewMgmt using a single MembreViewMgmtComponent, we need to eliminate the\r\n  //        following scenarios: !!!!!\r\n  //  Note: The follwoing function attempts to address  the following scenarious based problems of displaying wrong information and unauthorized access to private information:\r\n  //        1)  MyPhotos page is implemented through the reuse of MemberViewMgmt and MyPhotos's functionalities are handeled within the MemberViewMgmt page.\r\n  //            This causes a non-signedInUser's information to be accessibe to the signedInUser during page switches in the following way(s):\r\n  //\r\n  //            When signedInUser swithes from someone else's profile to view his profile, incorrect information may be displayed. \r\n  //            And more importantly, the  photoMgmt functionalities of the MyPhotos being handled by MemberViewMgmt page that are the exclusive right to only sigedInUser,\r\n  //            may be compromised in the following way:\r\n  //            After viewing a non-signedInUser's page ( a memberViewMgmt page), singedInUser switching to his own page ( a memberViewMgmt page),\r\n  //            may find previous non-signedInUser's information accessible to the him.\r\n  //            Having access to the previous user's privilaged and private information inadvertently causes a serious violation of privacy of all non-singedInUsers,\r\n  //            since this one non-signedInUser can be any of the non-signedInUsers.\r\n  //\r\n  //            The implementation of MyPhotos is done through the member-router.module, where the url address reflects 'myphotos' that uses MemberViewMgmtComponent,\r\n  //            obstructing the fact that the router switches back to the same page internally, instead of using its own component. Even though visually MyPhotos and\r\n  //            MemberViewMgmt pages are very similar, eith MyPhotos is having extra two child components (PhotoUploadComponent and PagerVerticalPhotoMgmtComponent)\r\n  //            that are not needed by the MemberViewMgmt, they are kept hidden during MemberViewMgmt page and shown during MyPhotos page. However, MemberViewMgmt page\r\n  //            contains and controls the code on behalf of MyPhotos.\r\n  //            \r\n  //            Solution:   There are two possible solutions:\r\n  //                        1) Completely separate MyPhotos functionalities into its own component, including necessary code to run all functionalities of MemberViewMgmt.\r\n  //                        2) Use the MemberViewMgmtComponent as MyPhotosComponent as a child component, but keep the photoMgmt functionalities in the parent MyPhotosComponent\r\n  //                            ans it's respective services separate.\r\n  // \r\n  //        \r\n  // \r\n  //        2) The following scenario though related to the currenly mingled use of MemberViewMgmtComponent, poses it's own problems.\r\n  //\r\n  //        3) For the singedInUser, both current and previous pages can be memberViewMgmt back-to-back under only two conditions:\r\n  //            3.1) If signedInUser clicked his MemberTile on the members' page ( where all the membersTiles are located) first,\r\n  //            that launched the memberViewMgmt page with the signedInUser's information, -\r\n  //            and then clicks the avatar-image or profileName below avatar-image, this also causes the memberViewMgmt\r\n  //            page to be launched the second time.\r\n  //\r\n  //            3.2) In fact if both avatar and avatar's profile name can be clicked enumerably many times back-to-back,\r\n  //            causing the memberViewMgmt page to be launched for each click back-to-back.\r\n  //\r\n  //            Possible solution:  Eliminate the separate click for the profileName under the Avatar, and disable the click of Avatar once it's clicked,\r\n  //                                and restore clickablility only after page switch away from the MemberViewMgmt page.\r\n  //                                Also important to take into account that during any non-signedInUser's profile view, Avatar should be clickable.\r\n  //                                It should be disabled ONLY during viewing of the signedInUser's profile.\r\n  // ---------------------------------------------------------------------------------\r\n  public isMemberViewAndMyPhotosPagesBackToBack () : boolean {\r\n    return this.isSignedInUserPagesBackToBack1();\r\n  }\r\n  // ---------------------------------------------------------------------------------\r\n  public isSignedInUserPagesBackToBack () : boolean {\r\n    // -------------------------------------------------//\r\n    // Back-to-Back-memberView-pges-recognition-system: //\r\n    // -------------------------------------------------//\r\n    let prevPageComponentName : any;\r\n    let currentPageComponentName : any;\r\n\r\n    let prevPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 2 ];\r\n    let currentPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 1 ];\r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(prevPage)) {\r\n      prevPageComponentName = prevPage.componentName;\r\n    }\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentPage)) {\r\n      currentPageComponentName = currentPage.componentName;\r\n    }\r\n    if (\r\n      (currentPageComponentName.toLowerCase().indexOf('myphotomgmt') !== -1 // if current page is myPhotos\r\n        && prevPageComponentName.toLowerCase().indexOf('mymemberviewmgmt') !== -1) // and if previous page was memberView\r\n      ||\r\n      (currentPageComponentName.toLowerCase().indexOf('mymemberviewmgmt') !== -1 // if current page is memberView\r\n        && prevPageComponentName.toLowerCase().indexOf('myphotomgmt') !== -1) // and if previous page was myPhotos\r\n      // ||\r\n      // (currentPageComponentName.toLowerCase().indexOf('mymemberviewmgmt') !== -1 // if current page is my memberView ( can happen if top-right-profileImage is clicked )\r\n      //  && prevPageComponentName.toLowerCase().indexOf('mymemberviewmgmt') !== -1) // and if previous page was my memberView ( can happen if top-right-profileImage is clicked )\r\n     )\r\n    {\r\n      return true;\r\n      // debugger;\r\n    }\r\n    else {\r\n      // debugger;\r\n      return false;\r\n    }\r\n  }\r\n\r\n  // ---------------------------------------------------------------------------------\r\n  public isCurrentUrlAProfilePage (url ?: string) : boolean {\r\n    if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)){\r\n      url = window.location.pathname + window.location.search;\r\n\t\t}\r\n    let isAProfilePage = false;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n      if (url.toLowerCase().indexOf('memberviewmgmt') !== -1 || url.toLowerCase().indexOf('myprofileviewmgmt') !== -1 || url.toLowerCase().indexOf('myphotomgmt') !== -1) {\r\n        isAProfilePage = true;\r\n      }\r\n    }\r\n    return isAProfilePage;\r\n  }\r\n  // ---------------------------------------------------------------------------------\r\n\tpublic isSignedInUserPagesBackToBack1 (): boolean {\r\n\t\t// -------------------------------------------------//\r\n\t\t// Back-to-Back-memberView-pges-recognition-system: //\r\n\t\t// -------------------------------------------------//\r\n\t\tlet prevPageComponentName : any;\r\n\t\tlet currentPageComponentName : any;\r\n\r\n\t\tlet prevPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 2 ];\r\n\t\tlet currentPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 1 ];\r\n\r\n\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(prevPage)) {\r\n\t\t\tprevPageComponentName = prevPage.componentName;\r\n\t\t}\r\n\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentPage)) {\r\n\t\t\tcurrentPageComponentName = currentPage.componentName;\r\n\t\t}\r\n\t\tif (\r\n\t\t\t(currentPageComponentName.toLowerCase().indexOf('myphotosmgmt') !== -1 // if current page is myPhotos\r\n        && prevPageComponentName.toLowerCase().indexOf('mymemberviewmgmt') !== -1) // and if previous page was memberView\r\n\t\t\t||\r\n\t\t\t(currentPageComponentName.toLowerCase().indexOf('mymemberviewmgmt') !== -1 // if current page is memberView\r\n        && prevPageComponentName.toLowerCase().indexOf('myphotosmgmt') !== -1) // and if previous page was myPhotos\r\n\t\t\t||\r\n\t\t\t(currentPageComponentName.toLowerCase().indexOf('mymemberviewmgmt') !== -1 // if current page is my memberView ( can happen if top-right-profileImage is clicked )\r\n\t\t\t\t&& prevPageComponentName.toLowerCase().indexOf('mymemberviewmgmt') !== -1\r\n\t\t\t\t&& prevPage.id == currentPage.id\r\n\t\t\t\t&& currentPage.id === this.loginSuccess.signedInUserId) // and if previous page was my memberView ( can happen if top-right-profileImage is clicked )\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t\t// debugger;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// debugger;\r\n\t\t\treturn false;\r\n\t\t}\t\t\r\n\t}\r\n  \r\n  // ----------------------------------------------------------------\r\n\tpublic getUrlAddress (): any {\r\n\t\treturn window.location.pathname + window.location.search;\r\n\t}\r\n\r\n  // ---------------------------------------------------------------\r\n  public redirectToAction ( rOuter : Router ) : Observable\r\n  {\r\n    let mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n    this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n    this.returnUrl = EmitterSubjectService.getReturnUrl();\r\n    this.sitUser = EmitterSubjectService.getSitUserModel();\r\n    let path = '';\r\n    let router = rOuter;\r\n    \r\n    if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.router) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(router)) {\r\n      this.router = router;\r\n    }\r\n    // debugger;\r\n    return new Observable(subscriber => {\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n        // debugger;\r\n        mcLoader = this.determinePathFromLoginSuccess();\r\n        if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader)) {\r\n          this.setRoute(mcLoader.router, mcLoader.componentName, mcLoader.id).subscribe(data => {\r\n            this.pagerBrdCrm = data;\r\n            subscriber.next(this.pagerBrdCrm);\r\n            subscriber.complete();\r\n          });;\r\n        }\r\n        else return null;\r\n      }\r\n      else {\r\n        this.returnUrl = window.location.pathname + window.location.search;\r\n        // debugger;\r\n        if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.returnUrl) && this.returnUrl.length >= 1) {\r\n          // debugger;\r\n          this.appStartUrlStringParser(router).then(data => {\r\n            this.pagerBrdCrm = data;\r\n            subscriber.next(this.pagerBrdCrm);\r\n            subscriber.complete();\r\n          });;\r\n        }\r\n        else {\r\n          // debugger;\r\n          mcLoader.moduleName = 'app';\r\n          mcLoader.componentName = 'index';\r\n          // ---------------------------------------------------\r\n          mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(mcLoader);\r\n          this.fireMcLoaderRoute(mcLoader).subscribe(data => {\r\n            this.pagerBrdCrm = data;\r\n            subscriber.next(this.pagerBrdCrm);\r\n            subscriber.complete();\r\n          });\r\n        }\r\n      }\r\n    })\r\n    // window.location.reload(); //ref: https://github.com/angular/components/issues/15231\r\n  }\r\n  \r\n  // ---------------------------------------------------------------\r\n   \r\n  public resetPassword ( router : Router , UrlStr: string): any {\r\n    // debugger;\r\n    let id: any;\r\n    const sitUserId = 0;\r\n    let mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n\r\n    if (UrlStr) {\r\n      // if the url contains '?', get the first half and hold the second half on id\r\n      if (UrlStr.length > 5 && UrlStr.includes('?')) {\r\n        const urlparts = UrlStr.split('?');\r\n\r\n        if (urlparts.length > 1) {\r\n          this.urlString = urlparts[ 0 ];\r\n          id = urlparts[ 1 ];\r\n          EmitterSubjectService.setResetPasswordCode(id);\r\n          EmitterSubjectService.emitResetPasswordCode(id);\r\n          const tReturnUrl = '/loginm/resetPassword/' + id;\r\n\r\n          EmitterSubjectService.setReturnUrl(tReturnUrl);\r\n\r\n          mcLoader = new ModuleComponentLoader();\r\n          mcLoader.componentName = 'resetPassowrd';\r\n          mcLoader.moduleName = 'loginm';\r\n          mcLoader.id = id;\r\n          // ---------------------------------------------------\r\n          mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(mcLoader);\r\n          EmitterSubjectService.setMCLoader(mcLoader);\r\n          return this.fireMcLoaderRoute(mcLoader).subscribe(data => {\r\n            this.pagerBrdCrm = data;\r\n            return this.pagerBrdCrm;\r\n          });;\r\n        }\r\n        else return null;\r\n      }\r\n      else return null;\r\n    }\r\n    else return null;\r\n  }  \r\n  //  ---------------------------------------------------------------\r\n  public routeToHomePage (rouTer : Router) : Observable {\r\n    let mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n    mcLoader.componentName = 'index';\r\n    mcLoader.moduleName = 'app';\r\n    let router = rouTer;\r\n    // ---------------------------------------------------\r\n    return new Observable(subscriber => {\r\n      mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(mcLoader);\r\n      this.fireMcLoaderRoute(mcLoader).subscribe(data => {\r\n        this.pagerBrdCrm = data;\r\n        subscriber.next(this.pagerBrdCrm);\r\n        subscriber.complete();\r\n      });\r\n    })\r\n  }\r\n  //  ---------------------------------------------------------------\r\n  public routeToMembersPage (rouTer : any) : Observable {\r\n    let mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n    mcLoader.componentName = 'profileTileScroll';\r\n    mcLoader.moduleName = 'profileTileScrollm';\r\n    let router = rouTer;\r\n    // ---------------------------------------------------\r\n    return new Observable(subscriber => {\r\n      mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(mcLoader);\r\n      this.fireMcLoaderRoute(mcLoader).subscribe(data => {\r\n        this.pagerBrdCrm = data;\r\n        subscriber.next(this.pagerBrdCrm);\r\n        subscriber.complete();\r\n      });\r\n    })\r\n  }\r\n  // --------------------------------------------------------------\r\n  public setRoute (rOuter : Router, rOute : string, Id : number) : Observable {\r\n    // debugger;\r\n    var router = rOuter;\r\n    var route = rOute;\r\n    var id = Id;\r\n    this.document = EmitterSubjectService.getDocument();\r\n    // return new Observable(subscriber => {\r\n      // debugger;\r\n    let mcLoader = this.setupRoute(router, route, id);\r\n      // debugger;\r\n    return this.fireMcLoaderRoute(mcLoader);\r\n    //.subscribe(data => {\r\n    //    subscriber.next(data);\r\n    //   subscriber.complete();\r\n    //  })\r\n    // })\r\n  }\r\n  // --------------------------------------------------------------\r\n  public setRouteforSignedInUser (router : Router, route : string, id : number) : any {\r\n    let mcLoader = this.setupRoute(router, route, id);\r\n    return this.fireMcLoaderforSignedInUser(mcLoader);\r\n  }\r\n  // --------------------------------------------------------------\r\n  // EmitterSubjectService.emitFireMcLoaderRoute (this.mcLoader);\r\n  //\r\n  // --------------------------------------------------------------\r\n  public setupRoute (router : Router, route : string, id : number) : any {\r\n    // debugger;\r\n    let mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n    // debugger;\r\n    let path = '';\r\n    mcLoader = new ModuleComponentLoader();\r\n    if (id > 0) {\r\n      mcLoader.id = id;\r\n    }\r\n    \r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(router)) {\r\n      mcLoader.router = router;\r\n    }\r\n    else {\r\n      mcLoader.router = this.router;\r\n    }\r\n\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(route)) {\r\n      mcLoader.componentName = route;\r\n      // debugger;\r\n    }\r\n    else {\r\n      // debugger;\r\n      mcLoader.moduleName = 'app';\r\n      mcLoader.componentName = 'index';\r\n    }\r\n    // debugger;\r\n    mcLoader = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(mcLoader);\r\n    return mcLoader;\r\n  }\r\n  // ------------------------------------------------------------------------\r\n  //  Begin-of-Element-Rendering-Measurement-System:\r\n  //  ref: https://dev.to/herodevs/route-fully-rendered-detection-in-angular-2nh4\r\n  // ------------------------------------------------------------------------\r\n  public detectNavigationStart (router : Router) : Observable {\r\n    let navStartObservable = new Observable(observer => {\r\n      let navStart$ = router.events.pipe(\r\n        filter(event => event instanceof NavigationStart),\r\n        startWith(null), // Start with something, because the app doesn't fire this on appload, only on subsequent route changes\r\n        tap(event => /* Place code to track NavigationStart here */ EmitterSubjectService.emitElementFullyRendered(true)),\r\n      ).subscribe();\r\n      return navStart$;\r\n    });\r\n    return navStartObservable;\r\n  }\r\n  // ------------------------------------------------------------------------\r\n\r\n  public isElementRendered (router : Router, zone : NgZone) : boolean {\r\n    // Once NavigationStart has fired, start checking regularly until there are\r\n    // no more pending macrotasks in the zone\r\n\r\n    // Have to run this outside of the zone, because the call to `interval`\r\n    // is itself a macrotask. Running that `interval` inside the zone will\r\n    // prevent the macrotasks from ever reaching zero. Running this outside\r\n    // of Angular will not track this `interval` as a macrotask. IMPORTANT!!\r\n    let isStateStable = false;\r\n    let timer : any;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(zone) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(router)) {\r\n      debugger;\r\n      zone.runOutsideAngular(() => {\r\n        // Check very regularly to see if the pending macrotasks have all cleared\r\n        timer = interval(50)\r\n          .pipe(\r\n            startWith(0), // So that we don't initially wait\r\n            // To prevent a memory leak on two closely times route changes, take until the next nav start\r\n            // takeUntil(this.navigationStart$),\r\n            takeUntil(this.detectNavigationStart(router)),\r\n            // Turn the interval number into the current state of the zone\r\n            map(() => !zone.hasPendingMacrotasks),\r\n            // Don't emit until the zone state actually flips from `false` to `true`\r\n            distinctUntilChanged(),\r\n            // Filter out unstable event. Only emit once the state is stable again\r\n            filter(stateStable => stateStable === true),\r\n            // Complete the observable after it emits the first result\r\n            take(1),\r\n            tap(stateStable => {\r\n              // FULLY RENDERED!!!!\r\n              // Add code here to report Fully Rendered\r\n              debugger;\r\n              isStateStable = true;\r\n              // EmitterSubjectService.emitElementFullyRendered(true);\r\n            })\r\n          ).subscribe();\r\n\r\n      });\r\n\r\n      // clearTimeout(timer);\r\n    }\r\n    return isStateStable;\r\n  }\r\n  // ------------------------------------------------------------------------\r\n  public detectElementRendered2 (zone : NgZone) : Observable {\r\n    debugger;\r\n    let isStableObservable = new Observable(observer => {\r\n      let stableSub : Subscription;\r\n      let unstableSub : Subscription;\r\n\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(zone)) {\r\n        zone.runOutsideAngular(() => {\r\n          stableSub = zone.onStable.subscribe(() => {\r\n            NgZone.assertNotInAngularZone();\r\n            if (!this.stable && !zone.hasPendingMacrotasks &&\r\n              !zone.hasPendingMicrotasks) {\r\n              this.stable = true;\r\n              observer.next(true);\r\n            }\r\n          });\r\n        });\r\n\r\n        unstableSub = zone.onUnstable.subscribe(() => {\r\n          NgZone.assertInAngularZone();\r\n          if (this.stable) {\r\n            this.stable = false;\r\n            zone.runOutsideAngular(() => {\r\n              observer.next(false);\r\n            });\r\n          }\r\n        });\r\n      }\r\n      return () => {\r\n        stableSub.unsubscribe();\r\n        unstableSub.unsubscribe();\r\n        debugger;\r\n        isStableObservable;\r\n      };\r\n    });\r\n    debugger;\r\n    return isStableObservable;\r\n  }\r\n  /*\r\n   * usage:\r\n   * this.isStableObservable.pipe(debounceTime(1000)).subscribe(val => {\r\n      console.log('completely stable');\r\n     });\r\n   */\r\n\r\n  // -----------------------------------------------------------\r\n  public nullPromise (data : any) : any {\r\n    let timer = setTimeout(() => {\r\n      // debugger;\r\n      clearTimeout(timer);\r\n      return data;\r\n    }, 50);\r\n  }\r\n  // -----------------------------------------------------------\r\n  public nullObservable () : Observable {\r\n    return new Observable(observer => {\r\n      observer.next(null);\r\n      observer.complete();\r\n    });\r\n  }\r\n  // ---------------------------------------------------------------\r\n}\r\n\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { SitUserService } from './sitUserService.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { MessageBuilderServiceStatic } from '../staticServices/messgeBuilderServiceStatic.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class SignedInUserService {\r\n  public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n  public loginSuccess : LoginSuccess = new LoginSuccess();\r\n  public sitUser : SitUser = new SitUser(); // for sending data to the server\r\n  public emitterDestroyed$ : Subject = new Subject();\r\n  public message = '';\r\n  public timer : any;\r\n  public timerArray : any[] = [];\r\n  constructor (\r\n    public httpService : HttpService,\r\n    public sitUserService : SitUserService,\r\n  ) {  }\r\n\r\n  // ---------------------------------------------------------------\r\n  public ngOnDestroy () : any {\r\n    // prevent memory leak when component destroyed\r\n    this.emitterDestroyed$.next(true);\r\n    this.emitterDestroyed$.complete();\r\n    this.emitterDestroyed$.unsubscribe();\r\n    this.timerArray.forEach((timer) => clearInterval(timer));\r\n    return true;\r\n  }\r\n  // -----------------------------------------------------------\r\n  public nullPromise () : any {\r\n    this.timer = setTimeout(() => {\r\n      // debugger;\r\n      return null;\r\n    }, 10);\r\n    clearTimeout(this.timer);\r\n    if (this.timer) {\r\n      this.timerArray.push(this.timer);\r\n    }\r\n  }\r\n  // ---------------------------------------------------------------\r\n  public salt (model : any) : BoxNonceEntity {\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n      // debugger;\r\n      return (this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model)));\r\n    }\r\n    return new BoxNonceEntity();\r\n  }\r\n\r\n  // ---------------------------------------------------------------------------------\r\n  public resetLoginSuccess () : any {\r\n    this.loginSuccess.action = '';\r\n    this.loginSuccess.blogId = 0;\r\n    this.loginSuccess.businessKey = '';\r\n    this.loginSuccess.code = '';\r\n    this.loginSuccess.controller = '';\r\n    this.loginSuccess.email = '';\r\n    this.loginSuccess.isAuthorized = false;\r\n    this.loginSuccess.isEmailConfirmed = false;\r\n    this.loginSuccess.isEmployee = false;\r\n    this.loginSuccess.isForgotPassword = false;\r\n    this.loginSuccess.isMgmt = false;\r\n    this.loginSuccess.isPic = false;\r\n    this.loginSuccess.isReviewer = false;\r\n    this.loginSuccess.isSuperUser = false;\r\n    this.loginSuccess.imagePath = '';\r\n    this.loginSuccess.iv = '';\r\n    this.loginSuccess.message = '';\r\n    this.loginSuccess.profileName = '';\r\n    this.loginSuccess.id = 0;\r\n    this.loginSuccess.likedArr = []; // who liked me\r\n    this.loginSuccess.myBlockedArr = []; // whom I blocked\r\n    this.loginSuccess.myBuddyArr = [];\r\n    this.loginSuccess.myTrackedArr = []; // whom I tracked\r\n    this.loginSuccess.myUnlockedArr = []; // from whom I unlocked\r\n    this.loginSuccess.signedInUserId = 0;\r\n    this.loginSuccess.signedInUserKey = '';\r\n    this.loginSuccess.trackedArr = []; // who tracked me\r\n    this.loginSuccess.unlockedArr = []; // who unlocked for me\r\n    return this.loginSuccess;\r\n  }\r\n  \r\n  // ---------------------------------------------------------------\r\n  public getSingedInSitUser () : Observable{\r\n    this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n      return new Observable((subscriber) => {\r\n        // debugger;\r\n        console.log('calling fetchSitUser() from signedInUserService@ln99')\r\n        this.sitUserService.getSitUserFromDictionaryOrServer(this.loginSuccess.signedInUserId).subscribe(data => {\r\n          subscriber.next(data);\r\n          subscriber.complete();\r\n        })\r\n      });\r\n    }\r\n    else {\r\n      this.message = MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, 'signedInUserService.getSignedInUser() signedInUserId === 0 ');\r\n      // console.log(this.message);\r\n      return null;\r\n    }\r\n  }\r\n}\r\n  \r\n// ---------------------------------------------------------------\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { DictionaryServiceService } from '../dictionaryServiceService/dictionaryServiceService.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { MessageBuilderServiceStatic } from '../staticServices/messgeBuilderServiceStatic.service';\r\n@Injectable({\r\n  providedIn: 'any',\r\n})\r\nexport class SitUserService {\r\n  public dictionaryService! : DictionaryService;\r\n  public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n  public isMyProfile = false;\r\n  public loginSuccess : LoginSuccess = new LoginSuccess();\r\n  public sitUser : SitUser = new SitUser(); // for sending data to the server\r\n  public signedInUser : SitUser = new SitUser();\r\n  public emitterDestroyed$ : Subject = new Subject();\r\n  public message = '';\r\n  public timer : any;\r\n  public timerArray : any[] = [];\r\n  constructor (\r\n    private dictionaryServiceService : DictionaryServiceService,\r\n    public httpService : HttpService,\r\n    public dbDexieToDictionaryService: DbDexieToDictionaryService,\r\n  ) {\r\n    if (this.dictionaryServiceService) {\r\n      this.dictionaryService = this.dictionaryServiceService.getDictionaryService();\r\n    }\r\n  }\r\n\r\n  // ---------------------------------------------------------------\r\n  ngOnDestroy () : any {\r\n    // prevent memory leak when component destroyed\r\n    this.emitterDestroyed$.next(true);\r\n    this.emitterDestroyed$.complete();\r\n    this.emitterDestroyed$.unsubscribe();\r\n    this.timerArray.forEach((timer) => clearInterval(timer));\r\n    return true;\r\n  }\r\n  // -----------------------------------------------------------\r\n  nullPromise () : any {\r\n    this.timer = setTimeout(() => {\r\n      // debugger;\r\n      return null;\r\n    }, 500);\r\n    clearTimeout(this.timer);\r\n    if (this.timer) {\r\n      this.timerArray.push(this.timer);\r\n    }\r\n  }\r\n  // ---------------------------------------------------------------\r\n  salt (model : any) : BoxNonceEntity | any {\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n      // debugger;\r\n      this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model));\r\n      return this.boxNonceEntity;\r\n    }\r\n    else return null;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  getProfileName (sitUserId : number) : Observable {\r\n    // debugger;\r\n   \r\n    return new Observable((subscriber) => {\r\n      if (sitUserId > 0) {\r\n        // debugger;\r\n        let profileName = '';\r\n        this.sitUser.sitUserId = sitUserId;\r\n        this.boxNonceEntity = this.salt(this.sitUser);\r\n        if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n          && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n          && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n          // debugger;\r\n          this.httpService.post('/api/Member/GetProfileName',\r\n            {\r\n              box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n              nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n            }, 'json').subscribe((result) => {\r\n              // debugger;\r\n              if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n                profileName = SlakezSaltServiceStatic.boxUnsalt(result) as string;\r\n                // debugger;\r\n                subscriber.next(profileName);\r\n                subscriber.complete();\r\n              }\r\n              else {\r\n                this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'the returned data of getProfileName(sitUserId:\\'' + sitUserId + '\\') was null or undefined');\r\n                console.log(this.message);\r\n                subscriber.next(null);\r\n                subscriber.complete();\r\n              }\r\n            })\r\n        }\r\n        else {\r\n          this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'boxNonceEntity\\'s data was null or undefined in GetProfileName(sitUserId:\\'' + sitUserId + '\\')');\r\n          console.log(this.message);\r\n          subscriber.next(null);\r\n          subscriber.complete();\r\n        }\r\n      }\r\n      else {\r\n        this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'Error occured in GetProfileName()');\r\n        console.log(this.message);\r\n        subscriber.next(null);\r\n        subscriber.complete();\r\n      }\r\n    })\r\n  }\r\n  // ---------------------------------------------------------------\r\n  // ---------------------------------------------------------------\r\n  // Note:  this.processSitUserResult() returns a promise,\r\n  //        therefore, this method returns a promise as well\r\n  // ---------------------------------------------------------------\r\n  // Note: this XHR api call will trigger top to bottom changeDetection\r\n  // ---------------------------------------------------------------\r\n  public fetchSitUser (situserid : number) : Observable {\r\n    // debugger;\r\n    let unsaltedSitUser : SitUser = null;\r\n    let sitUserId = situserid;   \r\n    let tsitUser : any;\r\n    return new Observable((subscriber) => {\r\n      // debugger;\r\n      if (!EmitterSubjectService.isSitUserIdCalled(sitUserId)) {\r\n        // debugger;\r\n        EmitterSubjectService.setSitUserIdCalled(sitUserId);\r\n        // debugger;\r\n        if (sitUserId > 0) {\r\n          // debugger;\r\n          this.sitUser = new SitUser();\r\n          this.sitUser.sitUserId = sitUserId;\r\n          this.boxNonceEntity = this.salt(this.sitUser);\r\n          if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n            && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n            && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n\r\n            // debugger;\r\n            this.httpService.postObservable('/api/Member/GetSitUser',\r\n              {\r\n                box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n                nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n              }, 'json2text').subscribe((result) => {\r\n                // debugger;\r\n                if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) \r\n                  && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.box) \r\n                  && result.box.length > 0\r\n                  && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.nonce)\r\n                  && result.nonce.length > 0) {\r\n                  // debugger;\r\n                  let bn : BoxNonceEntity = new BoxNonceEntity();\r\n                  bn.box = result.box;\r\n                  bn.nonce = result.nonce;\r\n                  var unsalted = SlakezSaltServiceStatic.boxUnsalt(bn);\r\n                  if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n                    tsitUser = JSON.parse(unsalted) as SitUser;\r\n\r\n\r\n                   // debugger;\r\n                    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tsitUser)) {\r\n                      // debugger;\r\n                      this.sitUser = tsitUser as SitUser;\r\n                      // debugger;\r\n                      this.dictionaryService.updateDictionary(this.sitUser, 'sitUser', this.sitUser.sitUserId); // important!\r\n                      // debugger;\r\n                      this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n                      \r\n                      // debugger;\r\n                      subscriber.next(tsitUser);\r\n                    }\r\n                    else {\r\n                      this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'unsalting bn failed for GetSitUser(sitUserId: \\'' + sitUserId + '\\'); tsitUser: ' + tsitUser);\r\n                      console.log(this.message);\r\n                      // debugger;\r\n                    }\r\n                  }\r\n                }\r\n                else {\r\n                  this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'result or result.box or result.nonce was null for GetSitUser(sitUserId:\\'' + sitUserId + '\\'); result: ' + result);\r\n                  console.log(this.message);\r\n                  // debugger;\r\n                }\r\n              })\r\n          }\r\n          else {\r\n            this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'bn/bn.box/bn.nonce were null or undefined in GetSitUser(sitUserId:\\'' + sitUserId + '\\')');\r\n            console.log(this.message);\r\n          }\r\n        }\r\n        else {\r\n          this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'sitUserId == 0 in GetSitUser()');\r\n          console.log(this.message);\r\n        }\r\n     \r\n      }\r\n      else {\r\n        // debugger;\r\n        subscriber.next(this.getSitUserFromDictionary(sitUserId));\r\n        subscriber.complete();\r\n      }\r\n    })\r\n  }\r\n  // ---------------------------------------------------------------\r\n  getSitUser () : SitUser {\r\n    return this.sitUser;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  getSitUserById (id : number) : SitUser {\r\n    let sitUserId : number = id;\r\n    this.sitUser = this.getSitUserFromDictionary(sitUserId);\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)) {\r\n      return this.sitUser;\r\n    }\r\n    else {\r\n      this.fetchSitUser(sitUserId).subscribe(data => {\r\n        this.sitUser = data;\r\n        return this.sitUser;\r\n      })\r\n    }\r\n  }\r\n  // ---------------------------------------------------------------\r\n  getSitUserFromDictionary (sitUserId : number) : SitUser | any {\r\n    if (sitUserId > 0) {\r\n      this.sitUser = EmitterSubjectService.getSitUserModel();\r\n      if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n        // debugger;\r\n        return this.dictionaryService.sitUserDictionary.get(sitUserId);\r\n      }\r\n      else if (this.sitUser.sitUserId === sitUserId) {\r\n        return this.sitUser;\r\n      }\r\n      else return null;\r\n    }\r\n    else return null;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  getSitUserFromDictionaryOrServer (situserid : number) : Observable | any {   \r\n    let sitUserId : number = situserid;\r\n\r\n    return new Observable((subscriber) => {\r\n      if (sitUserId > 0) {\r\n        this.sitUser = this.dictionaryService.sitUserDictionary.get(sitUserId);\r\n\r\n        if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n          // debugger;\r\n          console.log('calling fetchSitUser() from sitUserService@ln248')\r\n          this.fetchSitUser(sitUserId).subscribe(data => {\r\n            this.sitUser = data;\r\n            subscriber.next(this.sitUser);\r\n            subscriber.complete();\r\n          })\r\n        }\r\n        else {\r\n          subscriber.next(this.sitUser);\r\n          subscriber.complete();\r\n        }\r\n      }\r\n      else {\r\n        subscriber.next(null);\r\n        subscriber.complete();\r\n      }\r\n    })\r\n\t}\r\n  // ---------------------------------------------------------------\r\n  // Note : This method will get 100 SitUserIds at a time\r\n  // ---------------------------------------------------------------\r\n  // Note: this XHR api call will trigger top to bottom changeDetection\r\n  // ---------------------------------------------------------------\r\n  getBatchOfSitUserIds (bIndex : number) : Observable {\r\n    // debugger;\r\n    let beginIndex : number = bIndex;\r\n    let batchOfSitUserIds : number[] = [];\r\n    this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n    return new Observable((subscriber) => {\r\n      if (beginIndex > -1) {\r\n        const bnComm : Communication = new Communication();\r\n\r\n        bnComm.beginIndex = beginIndex;\r\n        bnComm.sitUserId = 0;\r\n        bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n        // debugger;\r\n        this.boxNonceEntity = this.salt(bnComm);\r\n\r\n        // debugger;\r\n        if (this.boxNonceEntity) {\r\n          this.httpService.post('/api/Member/GetBatchOfSitUserIds', {\r\n            box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n            nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n          },\r\n            'json',\r\n          ).subscribe((result) => {\r\n            // debugger;\r\n            var unsalted = SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity);\r\n            if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n              batchOfSitUserIds = JSON.parse(unsalted) as number[];\r\n            }\r\n            // debugger;\r\n            this.dictionaryService.updateDictionary(batchOfSitUserIds, 'sitUserId', this.loginSuccess.signedInUserId);\r\n            // debugger;\r\n            // Note: the sitUserId is saved on the indexedDb by the caller method:\r\n            // -------------------------------------------------------------------\r\n            // debugger;\r\n            this.dbDexieToDictionaryService\r\n              .saveDictionaryToDbDexie(\r\n                this.dictionaryService.sitUserIdDictionary, 'sitUserId', this.loginSuccess.signedInUserId);\r\n\r\n            EmitterSubjectService.emitHideSpinner(true);\r\n            subscriber.next(batchOfSitUserIds);\r\n            subscriber.complete();\r\n            // debugger;\r\n          })\r\n        }\r\n        else {\r\n          this.message = MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, 'the boxNonceEntity\\'s data was null or undefined in sitUserService.getBatchOfSitUserIds()');\r\n          console.log(this.message);\r\n        }\r\n      }\r\n      else {\r\n        this.message = MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, 'the boxNonceEntity\\'s data was null or undefined in sitUserService.getBatchOfSitUserIds()');\r\n        console.log(this.message);\r\n      }\r\n    })\r\n  }\r\n\r\n  // ---------------------------------------------------------------\r\n  isSignedInUserProfile (sitUser : SitUser) : boolean {\r\n    let isSignedInUserProfile = false;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0) {\r\n      this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n      if (sitUser.sitUserId == this.loginSuccess.signedInUserId) {\r\n        isSignedInUserProfile = true;\r\n      }\r\n    }\r\n    return isSignedInUserProfile;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  processBatchOfMemberIdsResult (result : any) : any {\r\n    let tBatchOfIds : number[] = [];\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n      const bn = result;\r\n      tBatchOfIds = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity)) as number[];\r\n      // debugger;\r\n    }\r\n    return tBatchOfIds;\r\n  }\r\n\r\n  // ---------------------------------------------------------------\r\n  processSitUserResult (sitUserId : number, result : any) : Promise | any {\r\n    let tSitUser : SitUser = null;\r\n    let situserId = sitUserId;\r\n    let reSult = result;\r\n    return new Promise((resolve, reject) => {\r\n      if (situserId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(reSult)) {\r\n\r\n        const bn = reSult as BoxNonceEntity;\r\n        // debugger;\r\n\r\n        // debugger;\r\n        if (bn.box.length > 0 && bn.nonce.length > 0) {\r\n          // debugger;\r\n          let tsitUser = SlakezSaltServiceStatic.boxUnsalt(bn) as undefined;\r\n          // debugger;\r\n          if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tsitUser)) {\r\n            tSitUser = JSON.parse((tsitUser as string).toString()) as SitUser;\r\n            // debugger;\r\n          }\r\n          else {\r\n            this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'unsalting bn failed for GetSitUser(sitUserId:\\'' + sitUserId + '\\'); bn: ' + result);\r\n            console.log(this.message);\r\n            // debugger;\r\n            reject(null);\r\n          }\r\n        }\r\n        else {\r\n          this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'bn or bn.box or bn.noncewas null for GetSitUser(sitUserId:\\'' + sitUserId + '\\'); result: ' + result);\r\n          console.log(this.message);\r\n          // debugger;\r\n          reject(null);\r\n        }\r\n\r\n        if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tSitUser) && tSitUser.sitUserId > 0 && tSitUser.sitUserId === sitUserId) {\r\n          // debugger;\r\n\r\n          // Note:  getSitUserModel & setSitUserModel do not have an associated EmitterMethod\r\n          //        but there is an emitSitUser that sets the same value of sitUser on EmitterSubjectService\r\n          //        which can be obtained via getSitUserModel or getSitUser\r\n          //\r\n          //        !!!! DO NOT EMIT sitUser: EmitterSubjectService.emitSitUser(this.sitUser); !!!!     \r\n          // -----------------------------------------------------------------------------------------------\r\n          this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n          if (tSitUser.sitUserId > 0 && tSitUser.sitUserId === this.loginSuccess.signedInUserId) {\r\n            this.signedInUser = tSitUser;\r\n            // debugger;\r\n            EmitterSubjectService.setSignedInUser(tSitUser); // DO NOT EMIT sitUser\r\n          }\r\n          else {\r\n            // debugger;\r\n            this.sitUser = tSitUser;\r\n            EmitterSubjectService.setSitUserModel(tSitUser); // DO NOT EMIT sitUser\r\n          }\r\n\r\n          // save the sitUser in dictionary (unencrypted):\r\n          this.dictionaryService.updateDictionary(tSitUser, 'sitUser', tSitUser.sitUserId);\r\n          this.dictionaryService.updateDictionary(tSitUser.sitUserId, 'sitUserId', tSitUser.sitUserId);\r\n\r\n          // debugger;\r\n          // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n          if (this.loginSuccess.signedInUserId > 0) {\r\n            // debugger;\r\n            this.dbDexieToDictionaryService\r\n              .saveDictionaryToDbDexie(this.dictionaryService.sitUserDictionary, 'sitUser', this.loginSuccess.signedInUserId);\r\n            // debugger;\r\n          }\r\n\r\n          // debugger;\r\n          resolve(tSitUser);\r\n        }\r\n        else {\r\n          // debugger;\r\n          this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'Error occured in GetSitUser(sitUserId:\\'' + sitUserId + '\\'); sitUser: ' + tSitUser.toString());\r\n          console.log(this.message);\r\n          // return this.nullPromise()\r\n          reject(null);\r\n        }\r\n      }\r\n      else {\r\n        this.message = MessageBuilderServiceStatic.printMessage(sitUserId, 'either sitUserId or the result parameter were null in GetSitUser(sitUserId:\\'' + sitUserId + '\\'); result: ' + reSult.toString());\r\n        console.log(this.message);\r\n        // return this.nullPromise()\r\n        reject(null);\r\n      }\r\n    }).catch((error) => {\r\n      // debugger;\r\n      this.message = MessageBuilderServiceStatic.printMessage(sitUserId, ' promise of processSitUserResult() has some errors. Error-msg: ' + error);\r\n      console.log(this.message);\r\n    });    \r\n  }\r\n  // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Chat } from '../../models/chat/chat.model';\r\nimport { ChatActivity } from '../../models/chat/chatActivity.model';\r\nimport { ChatConversationModel } from '../../models/chat/chatConversationModel';\r\nimport { SpinnerModel } from '../../models/common/spinnerModel.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { Communicator } from '../../models/communication/communicator.model';\r\nimport { ClientHttpDataModel } from '../../models/data/clientHttpDataModel.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { Pager } from '../../models/pagination/pager.model';\r\nimport { PagerChat } from '../../models/pagination/pagerChat.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DbDexieService } from '../dbServiceService/dbDexieService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { PagerServiceChatHistory } from '../pagerServiceService/pagerServiceChatHistory.service';\r\nimport { BackgroundImageAnimationService } from '../rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n// import { ChatConversationModel } from '../../../models/communication/chat/chatConversationModel';\r\n// import { ChatActivity } from '../../models/communication/chat/chatActivity.model';\r\n\r\n\r\n\r\n@Injectable({ providedIn: 'any' })\r\n\r\nexport class ChatService implements OnDestroy {\r\n  \r\n  public currentPageNo = 0;\r\n  public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n  public chat : Chat = new Chat();\r\n  public chats : Chat[] = [];\r\n  public chatDictionary : Dictionary = new Dictionary(); \r\n  public chatMap : Map = new Map();\r\n  public chatHistoryBnEntities : BoxNonceEntity[] = [];\r\n  public conversationIds : number[] = [];\r\n  public chatActivityArr : ChatActivity[] = [];\r\n  private emitterDestroyed$ : Subject = new Subject();\r\n  public i = 0;\r\n  public isInitComplete = false;\r\n  public isMobilevar = false;\r\n  public isOnLine = false;\r\n  public loginSuccess : LoginSuccess = new LoginSuccess();\r\n  // public mailBox: MailBox = new MailBox();\r\n  public message = '';\r\n  // public myCommunicationActivityBns: BoxNonceEntity[] = [];\r\n  // public myCommunicationActivityIds: number[] = [];\r\n  // public myEmails: CommunicationActivity[] = [];\r\n  // public myStaticEmails: CommunicationActivity[] = [];\r\n  // public myEmialsMenuKvArr: KvAny[] = [];\r\n  // public myInboxEmails: CommunicationActivity[] = [];\r\n  // public mySavedEmails: CommunicationActivity[] = [];\r\n  // public mySentEmails: CommunicationActivity[] = [];\r\n  // public myTrashedEmails: CommunicationActivity[] = [];\r\n  // public offOnResult: EmitOffOnResult = new EmitOffOnResult();\r\n  // public profileTile: ProfileTile = new ProfileTile();\r\n  // public setupOffOnStatusColorObservable: Observable = new Observable();\r\n\r\n  public myConversations : ChatActivity[] = [];\r\n  public myConversationsBoxNonceArr : BoxNonceEntity[] = [];\r\n  public myInfo : Communicator = new Communicator();\r\n  public myPrimaryImage = '';\r\n  public pagedChats : Chat[] = [];\r\n  public pager : Pager = new Pager();\r\n  public pagerChat : PagerChat = new PagerChat();\r\n  public pageSize = 10; // Max-page-size. important!\r\n  public renderer! : Renderer2;\r\n  public sitUserId = 0;\r\n  public slicedChats : Chat[] = [];\r\n  public spinnerModel : SpinnerModel = new SpinnerModel();\r\n  public tempElem : any;\r\n  // public timerArray: any[] = [];\r\n  public timer : any;\r\n  public timerArr : any[] = [];\r\n  public yourInfo : Communicator = new Communicator();\r\n  public yourPrimaryImage = '';\r\n  public unsalted : string = '';\r\n  // ---------------------------------\r\n  constructor (\r\n    private bias : BackgroundImageAnimationService,\r\n    private dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n    private dbDexieService : DbDexieService,\r\n    private dictionaryService : DictionaryService,\r\n    private httpService : HttpService,\r\n    private pagerServiceChatHistory : PagerServiceChatHistory,\r\n    private rendererService : RendererService,\r\n  ) {\r\n    // if (rendererService) this.renderer = rendererService.getRenderer();\r\n    this.initialize();\r\n  }\r\n  // ---------------------------------------------------------------\r\n  ngOnDestroy () {\r\n    // prevent memory leak when component destroyed\r\n    this.emitterDestroyed$.next(true);\r\n    this.emitterDestroyed$.complete();\r\n    this.clearTimers();\r\n  }\r\n  // ---------------------------------------------------------------\r\n  attachSentImages (messages : any) : any {\r\n    if (messages && messages.length > 0) {\r\n      messages.map((msg : any) => {\r\n        msg = this.attachSentImage(msg);\r\n      })\r\n    }\r\n    return messages;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  attachSentImagesOfMessages (messages : any) : any {\r\n    if (messages && messages.length > 0) {\r\n      messages.map((msg : any) => {\r\n        if (msg.fileBytes && msg.fileBytes.length > 0) {\r\n          messages.sentPic = '';\r\n        }\r\n      });\r\n    }\r\n    return messages;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  attachSentImage (msg : any) : any {\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(msg)) {\r\n      if (msg.fileBytes && msg.fileBytes.length > 0) {\r\n        msg.sentPic = '';\r\n      }\r\n    };\r\n    return msg;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  clearTimers () : void {\r\n    this.timerArr.map(e => clearInterval(e));\r\n  }\r\n  // ----------------------------------------------------------------\r\n  //  ref: https://javascript.info/promise-error-handling\r\n  //  NOte:  browser we can catch any uncaught errors using the event `unhandledrejection`:\r\n  //        If an error occurs, and there�s no .catch, the`unhandledrejection` handler triggers,\r\n  //        and gets the event object with the information about the error.\r\n  // ----------------------------------------------------------------\r\n  catchUnhandledPromises () {\r\n    window.addEventListener('unhandledrejection', function (event) {\r\n      // the event object has two special properties:\r\n      console.log('unhandled promise event: ', + event); \r\n      console.log('unhandled promise: ', + event.promise); \r\n      console.log('unhandled promise reason: ', + event.reason); \r\n    });\r\n  }\r\n  // ---------------------------------------------------------------\r\n  checkSenderPics (myconvo : any) : ChatActivity[] {\r\n    // debugger;\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myconvo) && myconvo.length > 0) {\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myconvo) && myconvo.length > 0) {\r\n        // debugger;\r\n        for (var i = 0; i < myconvo.length; i++) {\r\n          if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myconvo[ i ].senderPic)) {\r\n            myconvo[ i ].senderPic = '/assets/photos/DefaultImageMale.jpg'; // e.senderPic;\r\n            // debugger;\r\n          }\r\n          // else e.senderPic = '/assets/photos/DefaultImageEmoji.jpg';\r\n          // debugger;\r\n          if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myconvo[ i ].sender) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myconvo[ i ].sender.primaryImage)) {\r\n            myconvo[ i ].sender.primaryImage = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myconvo[ i ].senderPic) ? myconvo[ i ].senderPic : '/assets/photos/DefaultImageMale.jpg';\r\n            // debugger;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return myconvo;\r\n  }\r\n  // ---------------------------------------------------------------\r\n  determineSenderReceiverOfChat (chat : Chat) : Chat {\r\n    if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n      // debugger;\r\n      if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.messageBody)) {\r\n        chat.messageBody.replace('\\r\\n', '
');\r\n chat.messageBody.replace('\\r', '
');\r\n chat.messageBody.replace('\\n', '
');\r\n }\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // check if isSender/isReceiver is null or undefined:\r\n // --------------------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.isSender)) {\r\n chat.isSender = false;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.isReceiver)) {\r\n chat.isReceiver = false;\r\n }\r\n\r\n // check using SITUserKeys and SitUserKeys:\r\n // ----------------------------------------\r\n if (!chat.isSender && !chat.isReceiver)\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.receiverSITUserKey)\r\n && chat.receiverSITUserKey.indexOf(this.loginSuccess.signedInUserKey) !== -1) {\r\n chat.isReceiver = true;\r\n chat.isSender = false;\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.senderSITUserKey)\r\n && chat.senderSITUserKey.indexOf(this.loginSuccess.signedInUserKey) !== -1) {\r\n chat.isSender = true;\r\n chat.isReceiver = false;\r\n // debugger;\r\n console.log('isSender = true; chatActivityId = ' + chat.chatActivityId);\r\n }\r\n\r\n if (!chat.isSender && !chat.isReceiver) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.receiver)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.receiver.sitUserKey)\r\n && chat.receiver.sitUserKey.indexOf(this.loginSuccess.signedInUserKey) !== -1) {\r\n chat.isReceiver = true;\r\n chat.isSender = false;\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.sender)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.sender.sitUserKey)\r\n && chat.sender.sitUserKey.indexOf(this.loginSuccess.signedInUserKey) !== -1) {\r\n chat.isSender = true;\r\n chat.isReceiver = false;\r\n // debugger;\r\n }\r\n }\r\n\r\n // check using SITUserId and SitUserId:\r\n // ------------------------------------\r\n if (!chat.isSender && !chat.isReceiver) {\r\n if (chat.receiverSITUserId > 0 && chat.receiverSITUserId === this.loginSuccess.signedInUserId) {\r\n chat.isReceiver = true;\r\n chat.isSender = false;\r\n // debugger;\r\n }\r\n else if (chat.senderSITUserId > 0 && chat.senderSITUserId === this.loginSuccess.signedInUserId) {\r\n chat.isSender = true;\r\n chat.isReceiver = false;\r\n // debugger;\r\n }\r\n }\r\n\r\n // check using receiver & sender:\r\n // ------------------------------\r\n if (!chat.isSender && !chat.isReceiver)\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.receiver)\r\n && chat.receiver.sitUserId === this.loginSuccess.signedInUserId) {\r\n chat.isReceiver = true;\r\n chat.isSender = false;\r\n debugger;\r\n }\r\n\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.sender)\r\n && chat.sender.sitUserId === this.loginSuccess.signedInUserId) {\r\n chat.isSender = true;\r\n chat.isReceiver = false;\r\n debugger;\r\n }\r\n }\r\n }\r\n }\r\n return chat;\r\n }\r\n // ---------------------------------------------------------------\r\n determineSenderReceiverOfChatActivity (chatA : ChatActivity) : ChatActivity {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatA)) {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // check if isSender/isReceiver is null or undefined:\r\n // --------------------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatA.isSender)) {\r\n chatA.isSender = false;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatA.isReceiver)) {\r\n chatA.isReceiver = false;\r\n }\r\n\r\n // check using SITUserKeys and SitUserKeys:\r\n // ----------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatA.receiverSITUserKey)\r\n && chatA.receiverSITUserKey.indexOf(this.loginSuccess.signedInUserKey) !== -1) {\r\n chatA.isReceiver = true;\r\n chatA.isSender = false;\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatA.senderSITUserKey)\r\n && chatA.senderSITUserKey.indexOf(this.loginSuccess.signedInUserKey) !== -1) {\r\n chatA.isSender = true;\r\n chatA.isReceiver = false;\r\n // debugger;\r\n console.log('isSender = true; chatActivityId = ' + chatA.chatActivityId);\r\n } \r\n }\r\n return chatA;\r\n }\r\n // ---------------------------------------------------------------\r\n determineSenderReceiverOfChats (chats : Chat[]) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chats) && chats.length > 0) {\r\n chats.forEach(c => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(c)) {\r\n c = this.determineSenderReceiverOfChat(c);\r\n }\r\n });\r\n return chats;\r\n }\r\n else return null;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // ref:https:// www.positronx.io/angular-8-es-6-typescript-promises-examples/\r\n ePromise (data : any) : any {\r\n const promise = new Promise((resolve, reject) => {\r\n let timer = setTimeout(() => {\r\n console.log('promise returning resolve!');\r\n resolve(data);\r\n }, 1000);\r\n clearTimeout(this.timer);\r\n });\r\n return promise;\r\n }\r\n // ---------------------------------------------------------------\r\n getChats () : Chat[] {\r\n return this.chats;\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use:\r\n // ---------------------------------------------------------------\r\n getConversationChatActivitiesObservable (sitUserId : number) : Observable {\r\n var tChatIds : any\r\n var unsalted : any;\r\n var chatActs : ChatActivity[] = [];\r\n var ccm : ChatConversationModel = new ChatConversationModel();\r\n return new Observable((subscriber) => {\r\n if (sitUserId > 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n const bnComm : Communication = new Communication();\r\n bnComm.sitUserId = sitUserId;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = this.salt(bnComm);\r\n // debugger;\r\n try {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService.postObservable('api/Chat/GetConversationChatActivities', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text')\r\n .subscribe(result => {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.length > 0)\r\n {\r\n chatActs = result as ChatActivity[]; // JSON.parse(result as string) as ChatActivity[];\r\n debugger;\r\n subscriber.next(chatActs); \r\n\r\n // The following code is when result is salted:\r\n // --------------------------------------------\r\n //const bn = result as BoxNonceEntity\r\n //if (SlakezSaltServiceStatic.isBoxUnsalt(bn))\r\n //{\r\n // unsalted = SlakezSaltServiceStatic.unsalted as unknown;\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // chatActs = JSON.parse(unsalted) as ChatActivity[];\r\n // }\r\n // debugger;\r\n // subscriber.next(chatActs);\r\n //}\r\n //else {\r\n // // debugger;\r\n // subscriber.next(chatActs); \r\n //}\r\n }\r\n else {\r\n // debugger;\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getChatConversationModelObservable(sitUserId:\\'' + sitUserId + '\\');\\n
result: ' + result);\r\n console.log(this.message);\r\n // debugger;\r\n subscriber.next(chatActs); \r\n }\r\n })\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getChatConversationModelObservable(sitUserId:\\'' + sitUserId + '\\') box-nonce were null or undefined. ');\r\n console.log(this.message);\r\n }\r\n }\r\n catch (error) {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getChatConversationModelObservable(sitUserId:\\'' + sitUserId + '\\') try error-message: ' + error.message);\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getChatConversationModelObservable(sitUserId:\\'' + sitUserId + '\\');');\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // This method will slice an array at an interval of 10,\r\n // and send a zagged array(array of array, [[],[],...]).\r\n // ---------------------------------------------------------------\r\n // Currently in use:\r\n // ---------------------------------------------------------------\r\n getZaggedArrayOfCommIdModArray (ids : number[]) : KvAny[] {\r\n var commIdsModKvArr :KvAny[] = [];\r\n var aModArr : number[] = [];\r\n var j = 0;\r\n var isAsc = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ids) && ids.length > 0) {\r\n // -------------------------------------------------------------------------------------------------------\r\n // Note: if the Ids are sorted according to the need, which is to obtain the chats in descending order,\r\n // and to get the latest chat messages sooner byu getting higher numberd chats as the early chunks.\r\n // -------------------------------------------------------------------------------------------------------\r\n let sortedIds = this.sortByItem(ids, isAsc);\r\n\r\n var totalDivs = Math.floor(ids.length / 10);\r\n var diff = ids.length - (totalDivs * 10);\r\n var i = 1;\r\n for (; i < totalDivs + 1; i++) {\r\n for (j; j < (i * 10); j++) {\r\n aModArr.push(ids[ j ]);\r\n // debugger;\r\n }\r\n // debugger;\r\n var commIdsModKv = new KvAny();\r\n commIdsModKv.key = j.toString();\r\n commIdsModKv.value = JSON.parse(JSON.stringify(aModArr));\r\n commIdsModKvArr.push(commIdsModKv);\r\n aModArr = [];\r\n }\r\n // debugger;\r\n aModArr = [];\r\n for (var k = totalDivs * 10; k < diff; k++) {\r\n aModArr.push(ids[ k ]);\r\n }\r\n var commIdsModKv = new KvAny();\r\n commIdsModKv.key = j.toString();\r\n commIdsModKv.value = JSON.parse(JSON.stringify(aModArr));\r\n commIdsModKvArr.push(commIdsModKv);\r\n aModArr = [];\r\n }\r\n // debugger;\r\n return commIdsModKvArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Currently in use:\r\n // ---------------------------------------------------------------\r\n getConversationIdsObservable (sitUserId : number) : Observable {\r\n var tChatIds : any\r\n var unsalted : any;\r\n return new Observable((subscriber) => {\r\n if (sitUserId > 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n const bnComm : Communication = new Communication();\r\n bnComm.sitUserId = sitUserId;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = this.salt(bnComm);\r\n // debugger;\r\n try {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService.postObservable('api/Chat/GetConversationIds', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text')\r\n .subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const bn = result as BoxNonceEntity\r\n if (SlakezSaltServiceStatic.isBoxUnsalt(bn)) {\r\n unsalted = SlakezSaltServiceStatic.unsalted;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n tChatIds = JSON.parse(unsalted) as number[];\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tChatIds) && tChatIds.length > 0) {\r\n this.conversationIds = tChatIds;\r\n\r\n // save the conversationIds of sitUser whom the signedInUser is having a conversation with:\r\n // ----------------------------------------------------------------------------------------\r\n this.dictionaryService.updateDictionary(this.conversationIds, 'ChatConversationId', sitUserId);\r\n // debugger;\r\n\r\n // save salted conversationIds in indexedDb:\r\n // -----------------------------------------\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.chatConversationIdDictionary, 'chatConversationId', this.loginSuccess.signedInUserId);\r\n\r\n EmitterSubjectService.emitCurrentFocus('chatMsgFocus');\r\n // debugger;\r\n\r\n subscriber.next(this.conversationIds);\r\n subscriber.complete();\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n // TODO: check the relevance of this segment of the messaging to the user:\r\n // -----------------------------------------------------------------------\r\n if (this.yourInfo.profileName?.length > 0) {\r\n this.message = 'Currently there is no message/conversation between you and ';\r\n this.message += this.yourInfo.profileName + '.
To start a conversation, please send a message via the below
Chat Message Console.';\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n EmitterSubjectService.emitMessage(this.message);\r\n }\r\n else {\r\n this.message = 'Currently there is no message/conversation between you and ' + this.yourInfo.profileName;\r\n this.message += '.
To start a conversation, please send a message via the Chat Message Console below.';\r\n this.timer = setTimeout(() => {\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n EmitterSubjectService.emitMessage(this.message);\r\n }, 2000);\r\n clearTimeout(this.timer);\r\n // Note:uniqueAddTimer\r\n if (!DateStringServiceStatic.isTimerFound(this.timerArr, this.timer)) {\r\n this.timerArr.push(this.timer);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getConversationIds(sitUserId:\\'' + sitUserId + '\\') unsalted data was null or undefined. ');\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getConversationIds(sitUserId:\\'' + sitUserId + '\\') unsalting failed. ');\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getConversationIds(sitUserId:\\'' + sitUserId + '\\');\\n
result: ' + result);\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n // EmitterSubjectService.emitMessage(this.message);\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getConversationIds(sitUserId:\\'' + sitUserId + '\\') box-nonce were null or undefined. ');\r\n console.log(this.message);\r\n }\r\n }\r\n catch (error) {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getConversation(sitUserId:\\'' + sitUserId + '\\') try error-message: ' + error.message);\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in getConversationIds(sitUserId:\\'' + sitUserId + '\\');');\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // The MyChatComponent has similar method that it uses:\r\n // ---------------------------------------------------------------\r\n getMyConversations () : Observable {\r\n let dbChats : any;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n const url = 'api/Chat/GetMyConversations';\r\n this.chat = new Chat();\r\n this.chat.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(this.chat);\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n this.httpService.post(url, {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json').subscribe((data : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // debugger;\r\n let unsalted = SlakezSaltServiceStatic.boxUnsalt(data as BoxNonceEntity);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n dbChats = JSON.parse(unsalted) as ChatActivity[];\r\n // debugger;\r\n }\r\n else {\r\n console.log('getMyConversations (sitUserId : ' + this.loginSuccess.signedInUserId + ') unsalted data is null or undefined.');\r\n }\r\n this.myConversations = [];\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dbChats) && dbChats.length > 0) {\r\n dbChats.forEach(item => {\r\n \r\n var chatAct = JSON.parse(item) as ChatActivity;\r\n // debugger;\r\n if (!StringServiceStatic.isNullOrEmpty(chatAct.date)) { \r\n chatAct.dateFormatted = DateStringServiceStatic.convertNetTicsToJsDateString(chatAct.date);\r\n }\r\n this.myConversations.push(chatAct);\r\n })\r\n \r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.myConversations) && this.myConversations.length > 0) {\r\n // debugger;\r\n this.myConversations = this.checkSenderPics(this.myConversations);\r\n \r\n // debugger;\r\n EmitterSubjectService.setMyConversations(this.myConversations);\r\n\r\n this.dictionaryService.updateDictionary(this.myConversations, 'myChat', this.loginSuccess.signedInUserId);\r\n }\r\n\r\n EmitterSubjectService.emitMyConversations(this.myConversations);\r\n subscriber.next(this.myConversations);\r\n // debugger;\r\n subscriber.complete();\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('getMyConversations (sitUserId : ' + this.loginSuccess.signedInUserId + ') unsalted and parsed data is null or undefined.');\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('getMyConversations (sitUserId : ' + this.loginSuccess.signedInUserId + ') returned a null or undefined result.');\r\n console.log(this.message);\r\n }\r\n })\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Currently Not in use:\r\n // ---------------------------------------------------------------\r\n fetchSlicedConversationObservable (sitUserId : number, commIds : number[]) : Observable {\r\n // debugger;\r\n const clientData : ClientHttpDataModel = new ClientHttpDataModel();\r\n return new Observable(subscriber => {\r\n if (sitUserId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commIds) && commIds.length > 0) {\r\n \r\n // debugger; \r\n clientData.sitUserId = sitUserId;\r\n clientData.signedInUserId = this.loginSuccess.signedInUserId;\r\n clientData.commActIds = commIds;\r\n this.boxNonceEntity = this.salt(clientData);\r\n\r\n this.spinnerModel.message = 'Getting chat messages...';\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n\r\n this.httpService.postObservable('api/Chat/GetSlicedConversation', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text').subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const bn = result as BoxNonceEntity;\r\n if (SlakezSaltServiceStatic.isBoxUnsalt(bn)) {\r\n this.unsalted = SlakezSaltServiceStatic.unsalted as string;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.unsalted)) {\r\n // debugger;\r\n this.spinnerModel.message = '';\r\n EmitterSubjectService.emitHideSpinner(true);\r\n this.processUnsaltedSlicedDataObservable(this.unsalted).subscribe(data => {\r\n // debugger;\r\n subscriber.next(data);\r\n subscriber.complete();\r\n });\r\n }\r\n }\r\n }\r\n })\r\n } \r\n }\r\n else {\r\n this.message = 'Error occured in fetchSlicedSlicedConversation(sitUserId:\\'' + sitUserId + '\\') && commmActIds: ' + commIds + '; ';\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n initialize () : any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n EmitterSubjectService.loginSuccessEmitter\r\n .subscribe(result => {\r\n this.loginSuccess = result;\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n });\r\n EmitterSubjectService.isMobileEmitter.subscribe(result => {\r\n this.isMobilevar = result;\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n });\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.catchUnhandledPromises();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n isBoxNonceEntityFound( chatBneArr: BoxNonceEntity[], chatBne: BoxNonceEntity ): number {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatBneArr)\r\n && chatBneArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatBne)) {\r\n // debugger;\r\n for (let i = 0; i < chatBneArr.length; i++) {\r\n if (chatBneArr[i].id === chatBne.id) {\r\n // debugger;\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n // ---------------------------------------------------------------\r\n isChatFound( chatArr: Chat[], chat: Chat ): number {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatArr)\r\n && chatArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n // debugger;\r\n for (let i = 0; i < chatArr.length; i++) {\r\n if (chatArr[ i ].chatActivityId === chat.chatActivityId || chatArr[i].chatMessageId === chat.chatMessageId) {\r\n // debugger;\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n // ---------------------------------------------------------------\r\n isChatIdFound (chatIdArr : any, chat : any ): number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatIdArr)\r\n && chatIdArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n // debugger;\r\n for (let i = 0; i < chatIdArr.length; i++) {\r\n if (chatIdArr[i] === chat.chatActivityId) {\r\n // debugger;\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n // ---------------------------------------------------------------\r\n isChatActFound (chatActArr : ChatActivity[], chatAct : ChatActivity) : number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatActArr)\r\n && chatActArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatAct)) {\r\n // debugger;\r\n for (let i = 0; i < chatActArr.length; i++) {\r\n if (chatActArr[ i ].chatActivityId === chatAct.chatActivityId) {\r\n // debugger;\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n // ---------------------------------------------------------------\r\n isChatActFoundByChatMessageId (chatActArr : ChatActivity[], chatMessageId : number) : number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatActArr)\r\n && chatActArr.length > 0 && chatMessageId > 0) {\r\n // debugger;\r\n for (let i = 0; i < chatActArr.length; i++) {\r\n if (chatActArr[ i ].chatMessageId === chatMessageId) {\r\n // debugger;\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n // ---------------------------------------------------------------\r\n isSenderFound( senders: Communicator[], sender: Communicator ): number {\r\n if (senders.length > 0 && sender) {\r\n for (let i = 0; i < senders.length; i++) {\r\n if (senders[i].sitUserId === sender.sitUserId) {\r\n // debugger;\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n // -----------------------------------------------------------\r\n nullPromise () : any {\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n }, 500);\r\n clearTimeout(this.timer);\r\n if (this.timer) {\r\n clearInterval(this.timer);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // This method is used when backend sends the chat-data along with\r\n // the sender and receiver info with it. Hence in this back-end\r\n // version, the back-end determines the receiver and sender.\r\n //\r\n // Note: This is different than processChatResult() method that \r\n // is used for clent that fetches the yourCommunicatiorInto and\r\n // determines the receiver and sender on the client side.\r\n // ---------------------------------------------------------------\r\n processChatAndYourInfoResult (commActId : number, result : any) : any {\r\n let chat : Chat = new Chat();\r\n let tChat1 : any;\r\n let tChat2 : any;\r\n if (result) {\r\n const bn = result;\r\n // debugger;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n tChat1 = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as CommunicationActivity;\r\n // debugger;\r\n // MUST Check the tChat's data !!!\r\n // console.log(\"chat-commActId: \" + commActId + \"\\n\" + tChat1);\r\n try {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tChat1)) {\r\n tChat2 = JSON.parse(tChat1) as CommunicationActivity;\r\n // debugger;\r\n }\r\n }\r\n catch (e) {\r\n console.log(\"error.message: \" + e.message);\r\n tChat2 = JSON.parse(JSON.stringify(JSON.parse(tChat1))) as CommunicationActivity\r\n // debugger;\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tChat2)) {\r\n chat = tChat2 as Chat;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n let sitUserId = 0;\r\n if (chat.senderSITUserId > 0 && chat.senderSITUserId !== this.loginSuccess.signedInUserId) {\r\n sitUserId = chat.senderSITUserId;\r\n }\r\n else if (chat.senderSitUserId > 0 && chat.senderSitUserId !== this.loginSuccess.signedInUserId) {\r\n sitUserId = chat.senderSitUserId;\r\n }\r\n else if (chat.sender && chat.sender.sitUserId > 0 && chat.sender.sitUserId !== this.loginSuccess.signedInUserId) {\r\n sitUserId = chat.sender.sitUserId;\r\n }\r\n if (chat.receiverSITUserId > 0 && chat.receiverSITUserId !== this.loginSuccess.signedInUserId) {\r\n sitUserId = chat.receiverSITUserId;\r\n }\r\n else if (chat.receiverSitUserId > 0 && chat.receiverSitUserId !== this.loginSuccess.signedInUserId) {\r\n sitUserId = chat.receiverSitUserId;\r\n }\r\n else if (chat.receiver && chat.receiver.sitUserId > 0 && chat.receiver.sitUserId !== this.loginSuccess.signedInUserId) {\r\n sitUserId = chat.receiver.sitUserId;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n // debugger;\r\n const dateAssay = DateStringServiceStatic.getDateAssayOfCsTicks(chat.date);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dateAssay)) {\r\n chat.dateFormatted = dateAssay.dateFormatted;\r\n }\r\n\r\n if ((FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.receiver) || chat.receiver.sitUserId === 0)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.receiverModelString)) {\r\n chat.receiver = JSON.parse(chat.receiverModelString) as Communicator;\r\n // debugger;\r\n }\r\n if ((FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.sender) || chat.sender.sitUserId === 0)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.senderModelString)) {\r\n chat.sender = JSON.parse(chat.senderModelString) as Communicator;\r\n // debugger;\r\n\r\n // debugger;\r\n // if (email.subject.length > 150) email.subjectShort = email.subject.slice(0, 149) + '...';\r\n\r\n // if (email.messageBody.length > 200) email.messageBodyShort = email.messageBody.slice(0, 199) + '...';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.subject)) {\r\n if (chat.subject.length >= 100) {\r\n chat.subjectShort = StringServiceStatic.stringBuilder(chat.subject.slice(0, 99) + '...');\r\n }\r\n else {\r\n chat.subjectShort = chat.subject;\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.messageBody)) {\r\n if (chat.messageBody.length >= 150) {\r\n chat.messageBodyShort = StringServiceStatic.stringBuilder(chat.messageBody.slice(0, 149) + '...');\r\n }\r\n else {\r\n chat.messageBodyShort = chat.messageBody;\r\n }\r\n }\r\n }\r\n // debugger;\r\n return chat;\r\n }\r\n }\r\n }\r\n else {\r\n EmitterSubjectService.emitMyErrorLog('Error occured in getChat(commActId:\\'' + commActId + '\\');\\n result: ' + result);\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n processChatMessageBody (chat : Chat) : Chat {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n // debugger;\r\n // if (email.subject.length > 150) email.subjectShort = email.subject.slice(0, 149) + '...';\r\n\r\n // if (email.messageBody.length > 200) email.messageBodyShort = email.messageBody.slice(0, 199) + '...';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.subject)) {\r\n if (chat.subject.length >= 100) {\r\n chat.subjectShort = StringServiceStatic.stringBuilder(chat.subject.slice(0, 99) + '...');\r\n }\r\n else {\r\n chat.subjectShort = chat.subject;\r\n }\r\n\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.messageBody)) {\r\n if (chat.messageBody.length >= 150) {\r\n chat.messageBodyShort = StringServiceStatic.stringBuilder(chat.messageBody.slice(0, 149) + '...');\r\n }\r\n else {\r\n chat.messageBodyShort = chat.messageBody;\r\n }\r\n }\r\n }\r\n return chat;\r\n }\r\n // ---------------------------------------------------------------\r\n processCommunicatorResult (sitUserId : number, result : any) : any {\r\n let commCator : Communicator = new Communicator();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)){\r\n // debugger;\r\n const bn = result;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n var unsalted = SlakezSaltServiceStatic.boxUnsalt(bn);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n commCator = JSON.parse(unsalted) as Communicator;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commCator)) {\r\n this.yourInfo = commCator;\r\n EmitterSubjectService.emitCommunicator(commCator);\r\n return commCator;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('Error occured in GetCommunicator(sitUserId:\\'' + sitUserId + '\\');\\n
result: ' + result);\r\n EmitterSubjectService.emitMyErrorLog(this.message);\r\n return null;\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n processUnsaltedSlicedDataObservable (unsalted : string) : Observable {\r\n var slicedChatArr : Chat[] = [];\r\n var commActStrArr : string[] = [];\r\n var tCommAct : CommunicationActivity = null;\r\n var tChat : Chat = null;\r\n this.unsalted = unsalted\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.unsalted) && this.unsalted.length > 0) {\r\n if (this.unsalted.toLowerCase().indexOf('communicationactivityid') !== -1) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.unsalted)) {\r\n this.chats = JSON.parse(unsalted) as Chat[];\r\n // debugger\r\n for (var i = 0; i < this.chats.length; i++) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats[ i ])) {\r\n this.chats[ i ] = this.attachSentImage(this.chats[ i ]);\r\n // debugger;\r\n\r\n // -----------------------------------------------------------------------------------------------\r\n // Note: instead of having each chat message carry the sender's and receiver's primaryImage, \r\n // we use the service's yourInfo and loginSuccess to render these images and profileNames.\r\n // -----------------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.yourInfo)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.yourInfo.primaryImage)) {\r\n // debugger;\r\n this.chats[ i ] = this.setupChatSenderReceiverInfoOfChat(this.chats[ i ], this.yourInfo);\r\n }\r\n\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats[ i ])) {\r\n this.chats[ i ] = this.setupDateAssayOfChat(this.chats[ i ]);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats[ i ])) {\r\n\r\n this.chats[ i ] = this.determineSenderReceiverOfChat(this.chats[ i ]);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats[ i ])) {\r\n // debugger; \r\n EmitterSubjectService.emitCurrentFocus('chatMsgFocus');\r\n this.chatDictionary.set(this.chats[ i ].chatActivityId, this.chats[ i ]);\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(\"processUnsaltedSlicedData()-> tChat==null or undefined-1\");\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(\"processUnsaltedSlicedData()-> tChat==null or undefined-2\");\r\n console.log(this.message);\r\n }\r\n }\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.chats = this.chatDictionary.size > 0 ? this.chatDictionary.values() : [];\r\n // debugger;\r\n // Note: chatDictionary where the incoming data is held is different than the ChatConversationDictionary.\r\n this.dictionaryService.updateDictionary(this.chats, \"ChatConversation\", this.loginSuccess.signedInUserId);\r\n // debugger;\r\n console.log(\"ChatConversation.size: \" + this.dictionaryService.chatConversationDictionary.size);\r\n EmitterSubjectService.emitConversation(this.chats);\r\n subscriber.next(this.chats);\r\n subscriber.complete();\r\n }\r\n }\r\n\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(\"processUnsaltedSlicedData unsalted data was null or undefined-3.\");\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n runViewTask (chats : Chat[], cPageNo ?: number) : PagerChat {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats) && this.chats.length > 0) {\r\n this.pagerServiceChatHistory.setChats(this.chats);\r\n EmitterSubjectService.setChats(this.chats);\r\n this.pageSize = this.pageSize > 0 ? this.pageSize : 15;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cPageNo) && cPageNo > 0 && this.isInitComplete) {\r\n this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, cPageNo, this.pageSize);\r\n }\r\n else {\r\n // if currentPageNo, i.e. cPageNo is not provided, we need to first create a pager with 1, then with lastPageNo:\r\n this.pagerChat = EmitterSubjectService.getPagerChat();\r\n // Now set the page to the last page from the pager:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerChat)) {\r\n this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, this.pagerChat.currentPageNo, this.pageSize);\r\n }\r\n else {\r\n this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, 1, this.pageSize);\r\n // this.pagerChat = this.pagerServiceChatHistory.setPagerChatDynamic(this.chats, this.pagerChat.totalPageNo, this.pageSize);\r\n }\r\n }\r\n\r\n this.currentPageNo = this.pagerChat.currentPageNo;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerChat)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerChat.pagedChats)\r\n && this.pagerChat.pagedChats.length > 0) {\r\n this.pagedChats = this.pagerChat.pagedChats;\r\n\r\n // Note: pagedChats are in descending order. but we show the latest chat messgae closest to the typing area,\r\n // for which the order has to be ascending, so we just reverse the order of the array.\r\n this.pagedChats = ArraySupportServiceStatic.reverseArrayOnItself(this.pagedChats);\r\n }\r\n this.isInitComplete = true;\r\n return this.pagerChat;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n salt (model : any ): BoxNonceEntity {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n return this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model));\r\n }\r\n else {\r\n return new BoxNonceEntity();\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n setChats (chats : Chat[]) : void {\r\n this.chats = chats;\r\n }\r\n // ---------------------------------------------------------------\r\n setupDateAssayOfChat (chat : Chat) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n const dateAssay = DateStringServiceStatic.getDateAssayOfCsTicks(chat.date);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dateAssay)) {\r\n chat.dateFormatted = dateAssay?.date?.toLocaleString();\r\n if (/*FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.timeLapsed) && */\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.date)) {\r\n // debugger;\r\n var date = DateStringServiceStatic.convertNetTicsToJsDate(chat.date);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(date)) {\r\n // debugger;\r\n //ref: https://stackoverflow.com/questions/3552461/how-do-i-format-a-date-in-javascript\r\n chat.timeLapsed = chat.dateFormatted; // DateStringServiceStatic.timeAgoSince(date);\r\n // chat.timeLapsedPlaceholder = chat.timeLapsed.slice(0, 40) + '...';\r\n }\r\n\t\t\t\t}\r\n }\r\n // debugger; \r\n return chat;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n setupDateAssayOfChatActivity (chatAct : ChatActivity) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatAct)) {\r\n const dateAssay = DateStringServiceStatic.getDateAssayOfCsTicks(chatAct.date);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dateAssay)) {\r\n chatAct.dateFormatted = dateAssay?.date?.toLocaleString();\r\n if (/*FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat.timeLapsed) && */\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatAct.date)) {\r\n // debugger;\r\n var date = DateStringServiceStatic.convertNetTicsToJsDate(chatAct.date);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(date)) {\r\n // debugger;\r\n //ref: https://stackoverflow.com/questions/3552461/how-do-i-format-a-date-in-javascript\r\n chatAct.timeLapsed = chatAct.dateFormatted; // DateStringServiceStatic.timeAgoSince(date);\r\n // chat.timeLapsedPlaceholder = chat.timeLapsed.slice(0, 40) + '...';\r\n }\r\n }\r\n }\r\n // debugger; \r\n return chatAct;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n setupDateAssayOfChats (chats : Chat[]) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chats) && chats.length > 0) {\r\n chats?.forEach(e => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n e = this.setupDateAssayOfChat(e);\r\n }\r\n });\r\n return chats;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n setChatMesssageImage (chat: Chat) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n var elemId = '';\r\n if (chat.isSender) {\r\n elemId = StringServiceStatic.stringBuilder(\"sender-\" + this.chat.chatActivityId);\r\n // this.bias.setImage(elemId, this.chat.receiverPic);\r\n // or\r\n // this.bias.setBackgroundStillImageForElemId(elemId, this.chat.senderPic);\r\n debugger;\r\n this.bias.updateBackgroundImageOutsideAngularById(elemId, this.chat.receiverPic);\r\n }\r\n if (this.chat.isReceiver) {\r\n elemId = StringServiceStatic.stringBuilder(\"receiver-\" + this.chat.chatActivityId);\r\n // this.bias.setImage(elemId, this.chat.senderPic);\r\n // or\r\n // this.bias.setBackgroundStillImageForElemId(elemId, this.chat.senderPic);\r\n // debugger;\r\n this.bias.updateBackgroundImageOutsideAngularById(elemId, this.chat.senderPic)\r\n }\r\n }\r\n\t}\r\n // ---------------------------------------------------------------\r\n setupChatSenderReceiverInfoOfChat(chat : Chat, yourInfo: Communicator) : any {\r\n // debugger; \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(yourInfo) || yourInfo.sitUserId === 0) {\r\n yourInfo = EmitterSubjectService.getCommunicator();\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(yourInfo)) {\r\n chat.sender = yourInfo;\r\n chat.senderPic = yourInfo.primaryImage;\r\n chat.senderProfileName = yourInfo.profileName;\r\n chat.senderSitUserId = chat.senderSITUserId = yourInfo.sitUserId;\r\n chat.senderSitUserKey = chat.senderSITUserKey = yourInfo.sitUserKey; \r\n }\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n chat.receiverPic = this.loginSuccess.primaryImage;\r\n chat.receiverProfileName = this.loginSuccess.profileName;\r\n chat.receiverSITUserId = chat.receiverSitUserId = this.loginSuccess.signedInUserId;\r\n chat.receiverSITUserKey = chat.receiverSitUserKey = this.loginSuccess.signedInUserKey;\r\n // debugger;\r\n return chat;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n setupChatSenderReceiverInfoOfChats (chats : Chat[], yourInfo : Communicator) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(yourInfo)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chats)\r\n && chats.length > 0) {\r\n // debugger;\r\n chats.forEach(c => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(c)) {\r\n var tC = this.setupChatSenderReceiverInfoOfChat(c, yourInfo);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tC)) {\r\n c = tC;\r\n }\r\n }\r\n });\r\n return chats;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // Currently Not in use:\r\n // ---------------------------------------------------------------\r\n setupSlicedChatConversation (sitUserId : number) : Observable | any{\r\n\r\n return new Observable(subscriber => {\r\n var c = 0;\r\n var commIdArr : number[] = [];\r\n var commIdsModKvArr : KvAny[] = [];\r\n var kvAny : KvAny = new KvAny();\r\n var modChats : Chat[] = [];\r\n var tChatArr : Chat[] = [];\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n this.spinnerModel.message = 'Getting chat messages...';\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n if (sitUserId > 0) {\r\n // get the conversationIds then get the conversation-messages in segments/sliced:\r\n // ------------------------------------------------------------------------------\r\n this.getConversationIdsObservable(sitUserId).subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0) {\r\n // NOTE: ChatHistoryId dictionary is saved in DexieDb in ChatService.ts \r\n this.conversationIds = data\r\n // debugger; \r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.conversationIds) && this.conversationIds.length > 0) {\r\n // debugger;\r\n commIdsModKvArr = this.getZaggedArrayOfCommIdModArray(this.conversationIds);\r\n // Get the chats:\r\n // --------------\r\n // debugger;\r\n c = 0; // Note: needs to be outside thef or loop. important!\r\n for (; c < commIdsModKvArr.length; c++) {\r\n // this method holds the incoming data into a dictionary:\r\n // ------------------------------------------------------\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commIdsModKvArr)\r\n && commIdsModKvArr.length > 0 && c > -1 && c < commIdsModKvArr.length) {\r\n\r\n kvAny = commIdsModKvArr[ c ] as KvAny;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAny)) {\r\n commIdArr = kvAny.value as number[];\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commIdArr) && commIdArr.length > 0) {\r\n // this.chatService = this.communicationServiceService?.getChatService();\r\n // debugger;\r\n\r\n this.fetchSlicedConversationObservable(sitUserId, commIdArr).subscribe((sChatArr) => {\r\n // debugger;\r\n // -----------------------------------------------\r\n // we want the chats in descending order in order\r\n // to get the latest chat messages sooner.\r\n // \r\n // And at the PagerServiceChatHistory, the pagedChats\r\n // are reversed because we want to display the latest\r\n // message close to the chat-message-typing-UI.\r\n // -----------------------------------------------\r\n // debugger;\r\n this.chats = this.chatDictionary.size > 0 ? this.chatDictionary.values() : [];\r\n\r\n // -------------------------------------------------------------------\r\n // Note: runViewTask(a, b?) has an optional currentPageNo parameter.\r\n // if the parameter exists, then it will set to that page, \r\n // otherwise, it will set to the last page.\r\n // -------------------------------------------------------------------\r\n this.pagerChat = this.runViewTask(this.chats);\r\n\r\n // debugger;\r\n // ------------------------------------------------------------------------------------\r\n // save the chats at the following cases:\r\n // 1. if the total chats exceed the total conversationIds (in case of chat duplicate)\r\n // 2. when all chats have arrived equalling total conversationIds.\r\n // 3. at each slice of chats arrival\r\n // ------------------------------------------------------------------------------------\r\n if (this.chats.length === this.conversationIds.length) {\r\n EmitterSubjectService.emitHideSpinner(true);\r\n\r\n // debugger; \r\n // if (DictionaryServiceStatic.chatHistoryDictionary.size() > 0) {\r\n debugger;\r\n this.dbDexieToDictionaryService\r\n .saveChatConversationDictionaryToDbDexie(\r\n this.dictionaryService.chatConversationDictionary, 'chatConversation', this.loginSuccess.signedInUserId);\r\n console.log(new Date().getTime() + ': ChatConversationDictionary is saved in the indexedDb.')\r\n }\r\n // }\r\n subscriber.next(this.chats);\r\n })\r\n }\r\n else {\r\n this.message = 'chatService.setupSlicedChatConversation.getSlicedConversation (commIdArr[ ' + c + ']) is null oir undefined or empty.';\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = 'chatService.setupSlicedChatConversation() is null or undefined.';\r\n console.log(this.message);\r\n }\r\n } // end of for-loop \r\n }\r\n else {\r\n this.message = 'chaService.setupSlicedChatConversation.getSlicedConversation (sitUserId : ' + this.loginSuccess.signedInUserId + ') conversationIds data is null or undefined.';\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = \"setupSlicedChatConversation.getConversationIds() returned null.\";\r\n console.log(this.message);\r\n }\r\n }) \r\n }\r\n \r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n sort( chatArr: Chat[] ): Chat[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatArr) && chatArr.length > 0) {\r\n chatArr.sort ( (a, b) => {\r\n return (a.chatActivityId as number) - (b.chatActivityId as number);\r\n });\r\n }\r\n return chatArr;\r\n }\r\n // ---------------------------------------------------------------\r\n sortByDate (items : any, isAsc : any) : any {\r\n if (isAsc) {\r\n items = [ ...items.sort((a : any, b : any) => Number(b.date) - Number(a.date)) ];\r\n }\r\n else {\r\n items = [ ...items.sort((a : any, b : any) => Number(a.date) - Number(b.date)) ];\r\n }\r\n return items;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n sortById (items : any, isAsc : any) : any {\r\n if (isAsc) {\r\n items = [ ...items.sort((a : any, b : any) => a.id - b.id) ];\r\n }\r\n else {\r\n items = [ ...items.sort((a : any, b : any) => b.id - a.id) ];\r\n }\r\n return items;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n sortByItem (items : any, isAsc : any) : any {\r\n if (isAsc) {\r\n items = [ ...items.sort((a : any, b : any) => a - b) ];\r\n }\r\n else {\r\n items = [ ...items.sort((a : any, b : any) => b - a) ];\r\n }\r\n return items;\r\n }\r\n // ---------------------------------------------------------------\r\n // ref:https:// github.com/angular/components/issues/13854\r\n sortByMsgId (items : any, isAsc : any) : any {\r\n if (isAsc) {\r\n items = [ ...items.sort((a : any, b : any) => b.commMessageId - a.commMessageId) ];\r\n }\r\n else {\r\n items = [ ...items.sort((a : any, b : any) => a.commMessageId - b.commMessageId) ];\r\n }\r\n return items;\r\n }\r\n // --------------------------------------------\r\n sortChatArr (chats : Chat[], isAsc : boolean) : Chat[] {\r\n if (isAsc) {\r\n return chats.sort((a, b) => (a.chatActivityId as number) - (b.chatActivityId as number));\r\n }\r\n else {\r\n return chats.sort((a, b) => (b.chatActivityId as number) - (a.chatActivityId as number));\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n spinnerOff () {\r\n this.spinnerModel.message = '';\r\n EmitterSubjectService.emitHideSpinner(this.spinnerModel);\r\n }\r\n // ---------------------------------------------------------------\r\n uniqueAddChat( chatArr: Chat[], chat: Chat ): Chat[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatArr)) {\r\n const index = this.isChatFound(chatArr, chat);\r\n if (index < 0) {\r\n chatArr.push(chat);\r\n }\r\n else {\r\n // chatArr[index] = CopyServiceStatic.copyChatIfExists(chatArr[index], chat);\r\n chatArr.splice(index, 1, chat);\r\n }\r\n //chatArr = this.sort(chatArr);\r\n //return chatArr;\r\n chatArr = chatArr.sort((a, b) => { return a.chatActivityId - b.chatActivityId });\r\n return chatArr\r\n } else {\r\n return chatArr;\r\n }\r\n }\r\n else {\r\n return chatArr;\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n uniqueAddChatId( chatIdArr: number[], chat: Chat ): number[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatIdArr)) {\r\n const index = this.isChatIdFound(chatIdArr, chat);\r\n if (index < 0) {\r\n chatIdArr.push(chat.chatActivityId);\r\n }\r\n //chatIdArr = chatIdArr.sort((a, b) => a - b);\r\n //return chatIdArr;\r\n // debugger;\r\n return chatIdArr.sort((a, b) => a - b);\r\n }\r\n else {\r\n return chatIdArr;\r\n }\r\n }\r\n else {\r\n return chatIdArr;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n uniqueAddChatActivity (chatActArr : ChatActivity[], chatAct : ChatActivity) : ChatActivity[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatAct)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatActArr)) {\r\n // debugger;\r\n const index = this.isChatActFound(chatActArr, chatAct);\r\n if (index < 0) {\r\n chatActArr.push(chatAct); //debugger;\r\n }\r\n else {\r\n chatActArr.splice(index, 1, chatAct);\r\n }\r\n chatActArr = chatActArr.sort((a, b) => { return a.chatActivityId - b.chatActivityId });\r\n return chatActArr\r\n }\r\n else {\r\n return chatActArr\r\n }\r\n }\r\n else {\r\n return chatActArr\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n uniqueAddChatBoxNonceEntity( chatBneArr: BoxNonceEntity[], chatBne: BoxNonceEntity ): BoxNonceEntity[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatBne)) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatBneArr)) {\r\n const index = this.isBoxNonceEntityFound(chatBneArr, chatBne);\r\n if (index < 0) {\r\n chatBneArr.push(chatBne);\r\n }\r\n else {\r\n chatBneArr[ index ].id = chatBne.id;\r\n chatBneArr[ index ].box = chatBne.box;\r\n chatBneArr[ index ].nonce = chatBne.nonce;\r\n }\r\n this.sortById(chatBneArr, chatBne);\r\n return chatBneArr;\r\n }\r\n else {\r\n return chatBneArr;\r\n }\r\n }\r\n else {\r\n return chatBneArr;\r\n }\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // Note: This method does the following:\r\n // 1. accepts input as string that was sent from the client and then directly sent back to the client by Hub\r\n // 2. it goes through the similar process of extracting the unit8Arr of the box and nonce from the JSON-string.\r\n // 3. then it unsalts the box and nonce into a Chat model\r\n // Note: Hub goes through a similar extracting process since it accepts only string as parameter, and no Cutom-Model-Parameter\r\n // ---------------------------------------------------------------\r\n unwrapData( boxedData: string ): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxedData)) {\r\n const chatBn = JSON.parse(boxedData) as BoxNonceEntity;\r\n // debugger;\r\n //const boxArr: number[] = [];\r\n //const nonceArr: number[] = [];\r\n //const boxArr : Uint8Array;\r\n //const nonceArr : Uint8Array = [];\r\n //const boxObj = Object.entries(chatBn.box);\r\n //const nonceObj = Object.entries(chatBn.nonce);\r\n //// debugger;\r\n\r\n //// extracting values\r\n //nonceObj.map (e => {\r\n // const bi = e as any[];\r\n // nonceArr.push(Number(bi[1]));\r\n //});\r\n\r\n //// debugger;\r\n //boxObj.map (e => {\r\n // const bi = e as any[];\r\n // boxArr.push(Number(bi[1]));\r\n //});\r\n\r\n const boxArrB64Str = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(chatBn.box);\r\n const nonceArrB64Str = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(chatBn.nonce);\r\n // debugger;\r\n const tBn: BoxNonceEntity = new BoxNonceEntity();\r\n tBn.box = boxArrB64Str;\r\n tBn.nonce = nonceArrB64Str;\r\n const chat = SlakezSaltServiceStatic.boxUnsalt(tBn) as Chat;\r\n tBn.id = chat.chatActivityId;\r\n tBn.sitUserId = chat.sitUserId;\r\n // -------------------------------------------------------\r\n // Note: Temporary location for saving to indexedDb\r\n // It should be at a component\r\n // -------------------------------------------------------\r\n this.updateDexieDbChatHistory(tBn, tBn.sitUserId);\r\n // debugger;\r\n return chat;\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n updateDexieDbChatHistory( boxedTile: BoxNonceEntity, sitUserId: number ): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxedTile)) {\r\n boxedTile.key = boxedTile?.id?.toString(); // to be used by indexedDb\r\n boxedTile.sitUserId = sitUserId; // to uniquely identify a user's data\r\n boxedTile.entityName = 'chatHistory';\r\n boxedTile.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n // debugger;\r\n this.boxNonceEntity = boxedTile;\r\n // Note: instead of ChatComponent doing the saving of chats into indexedDb, we do it here:\r\n this.dbDexieService.addModelObservable(this.boxNonceEntity).subscribe(data => {\r\n requestAnimationFrame(() => {\r\n console.log('updateIndexedDbChatHistory() is successful for: ' + data);\r\n });\r\n })\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: parameter value of of type {'0':3}\r\n // Not used. Deprecated.\r\n // ---------------------------------------------------------------\r\n fetchChat (commActid : number) : Observable {\r\n const bnComm : Communication = new Communication();\r\n let chat : Chat = new Chat();\r\n let message = '';\r\n let chatId = 0;\r\n var commActId = commActid;\r\n if (commActId > 0) {\r\n chatId = commActId;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) || this.loginSuccess.signedInUserId === 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n }\r\n // debugger; \r\n return new Observable((subscriber) => {\r\n\r\n bnComm.chatActivityId = commActId;\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n this.boxNonceEntity = this.salt(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/Chat/GetChat', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text').subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n chat = this.processChatResult(chatId, result);\r\n // debugger;\r\n subscriber.next(chat);\r\n // subscriber.complete();\r\n }\r\n else {\r\n message = 'GetChat (commActId : ' + commActId + '); returned a null or undefined result.';\r\n console.log(message);\r\n }\r\n }, (error) => {\r\n console.log(error);\r\n });\r\n }\r\n else {\r\n message = 'GetChat (commActId : ' + commActId + '); box-nonce wasnull or undefined.';\r\n console.log(message);\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use:\r\n // ---------------------------------------------------------------\r\n fetchChatActivity (commActid : number) : Observable {\r\n const bnComm : Communication = new Communication();\r\n let chatAct : ChatActivity = new ChatActivity();\r\n let dbChats: any;\r\n let message = '';\r\n let chatId = 0;\r\n var commActId = commActid;\r\n if (commActId > 0) {\r\n chatId = commActId;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) || this.loginSuccess.signedInUserId === 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n }\r\n // debugger; \r\n return new Observable((subscriber) => {\r\n bnComm.chatActivityId = commActId;\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n this.boxNonceEntity = this.salt(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/Chat/PostChatActivity', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text').subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n dbChats = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result)) as ChatActivity[];\r\n // var chatActs = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result)) as ChatActivity[];\r\n // var chatActs = result as ChatActivity[];\r\n\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dbChats) && dbChats.length > 0) {\r\n chatAct = dbChats[ 0 ] as ChatActivity;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatAct) && chatAct.chatActivityId > 0) {\r\n // debugger;\r\n chatAct = this.determineSenderReceiverOfChatActivity(chatAct);\r\n // debugger;\r\n this.dictionaryService.updateDictionary(chatAct, \"ChatActivity\", chatAct.chatActivityId);\r\n this.chatActivityArr = EmitterSubjectService.getChatHistoryArr();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chatActivityArr)) {\r\n this.chatActivityArr = this.uniqueAddChatActivity(this.chatActivityArr, chatAct);\r\n EmitterSubjectService.setChatHistoryArr(this.chatActivityArr);\r\n // debugger;\r\n subscriber.next(chatAct);\r\n }\r\n }\r\n else {\r\n subscriber.next(new ChatActivity());\r\n }\r\n }\r\n }\r\n else {\r\n message = 'GetChatActivity (commActId : ' + commActId + '); returned a null or undefined result.';\r\n console.log(message);\r\n }\r\n }, (error) => {\r\n console.log(error);\r\n });\r\n }\r\n else {\r\n message = 'GetChatActivity (commActId : ' + commActId + '); box-nonce wasnull or undefined.';\r\n console.log(message);\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // Note: parameter value of of type {'0':3}\r\n // Not used. Deprecated.\r\n // ---------------------------------------------------------------\r\n fetchChatMessage (commActid : number) : Observable {\r\n const bnComm : Communication = new Communication();\r\n let chat : Chat = new Chat();\r\n let message = '';\r\n let chatId = 0;\r\n var commActId = commActid;\r\n if (commActId > 0) {\r\n chatId = commActId;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) || this.loginSuccess.signedInUserId === 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n }\r\n // debugger; \r\n return new Observable((subscriber) => {\r\n\r\n bnComm.chatMessageId = commActId;\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n this.boxNonceEntity = this.salt(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/Chat/PostChatMessage', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text').subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n subscriber.next(result);\r\n // subscriber.complete();\r\n }\r\n else {\r\n message = 'fetchetChatMessage (commActId : ' + commActId + '); returned a null or undefined result.';\r\n console.log(message);\r\n }\r\n }, (error) => {\r\n console.log(error);\r\n });\r\n }\r\n else {\r\n message = 'fetchetChatMessage (commActId : ' + commActId + '); box-nonce wasnull or undefined.';\r\n console.log(message);\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getvalue (e : any) : number {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e) && e.toString().indexOf(':') !== -1) {\r\n const parts = e.toString().split(':');\r\n // debugger;\r\n if (parts.length === 2) {\r\n return Number(parts[ 1 ]);\r\n }\r\n }\r\n return -1; // TODO: check if it is the proper default value\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // NOTE: This method is intended to be deprecated!\r\n // Note: getting the entire conversation takes a while.\r\n // therefore, we first get the conversationIds, and then\r\n // get the individual chat of the respective id, and accumulate into chats\r\n //\r\n // Not in use:\r\n // ---------------------------------------------------------------\r\n getConversation (sitId : number) : Observable {\r\n\r\n var sitUserId = sitId;\r\n return new Observable(subscriber => {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n const bnComm : Communication = new Communication();\r\n bnComm.sitUserId = sitUserId;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = this.salt(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService.postObservable('api/Chat/GetConversation', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text')\r\n .subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const bn = result;\r\n const tChatMessages = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity)) as Chat[];\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tChatMessages) && tChatMessages.length > 0) {\r\n // var tchats = this.attachSentImages(tChatMessages);\r\n // debugger;\r\n this.chats = this.determineSenderReceiverOfChats(tChatMessages);\r\n this.chats = this.setupDateAssayOfChats(this.chats);\r\n this.chats = this.attachSentImages(this.chats);\r\n // this.ngAfterViewInit();\r\n EmitterSubjectService.emitConversation(this.chats);\r\n EmitterSubjectService.emitCurrentFocus('chatMsgFocus');\r\n subscriber.next(this.chats);\r\n subscriber.complete();\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n if (this.yourInfo.profileName?.length > 0) {\r\n this.message = 'Currently there is no message/conversation between you and ' + this.yourInfo.profileName;\r\n this.message += '.
To start a conversation, please send a message via the below
Chat Message Console.';\r\n EmitterSubjectService.emitMyErrorLog(this.message);\r\n }\r\n else {\r\n this.message = 'Currently there is no message/conversation between you and ' + this.yourInfo.profileName;\r\n this.message += '.
To start a conversation, please send a message via the Chat Message Console below.';\r\n this.timer = setTimeout(() => EmitterSubjectService.emitMyErrorLog(this.message), 2000);\r\n clearTimeout(this.timer);\r\n // Note:uniqueAddTimer\r\n if (!DateStringServiceStatic.isTimerFound(this.timerArr, this.timer)) {\r\n this.timerArr.push(this.timer);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.message = 'Error occured in getConversation(sitUserId:\\'' + sitUserId + '\\');\\n
result: ' + result;\r\n EmitterSubjectService.emitMyErrorLog(this.message);\r\n }\r\n }, error => {\r\n // debugger;\r\n // alert ('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n this.message = 'Error occured in getConversation(sitUserId:\\'' + sitUserId + '\\');\\n
Error-message: ' + error.message;\r\n EmitterSubjectService.emitMyErrorLog(this.message);\r\n });\r\n }\r\n }\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n getConversationIdsPromise (sitUserId : number) : Promise {\r\n var tChatIds : any\r\n var unsalted : any;\r\n\r\n if (sitUserId > 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n const bnComm : Communication = new Communication();\r\n bnComm.sitUserId = sitUserId;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = this.salt(bnComm);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n return new Promise((resolve, reject) => {\r\n // debugger;\r\n this.httpService.post('api/Chat/GetConversationIds', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json')\r\n .subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const bn = result as BoxNonceEntity\r\n unsalted = SlakezSaltServiceStatic.boxUnsalt(bn);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n tChatIds = JSON.parse(unsalted) as number[];\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tChatIds) && tChatIds.length > 0) {\r\n // We wanna show the latest messages first,\r\n // so reverse the order of chat - communicationActivityIds and \r\n // setpager to the first page.important!\r\n // -------------------------------------------------------------\r\n this.conversationIds = ArraySupportServiceStatic.reverseArrayOnItself(tChatIds);\r\n\r\n // save the chatIds in indexedDb\r\n bn.id = sitUserId; // to be used by indexedDb\r\n bn.key = bn.id.toString(); // to be used by indexedDb\r\n bn.sitUserId = sitUserId; // to uniquely identify a user's data\r\n bn.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n bn.entityName = 'ChatConversationId';\r\n // debugger;\r\n\r\n // save salted conversationIds in indexedDb\r\n this.dictionaryService.updateDictionary(bn, 'ChatConversationId', this.loginSuccess.signedInUserId);\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.chatConversationIdDictionary, 'chatConversationId', this.loginSuccess.signedInUserId);\r\n\r\n EmitterSubjectService.emitCurrentFocus('chatMsgFocus');\r\n // debugger;\r\n resolve(this.conversationIds);\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n if (this.yourInfo.profileName?.length > 0) {\r\n this.message = 'Currently there is no message/conversation between you and ';\r\n this.message += this.yourInfo.profileName + '.
To start a conversation, please send a message via the below
Chat Message Console.';\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n EmitterSubjectService.emitMessage(this.message);\r\n }\r\n else {\r\n this.message = 'Currently there is no message/conversation between you and ' + this.yourInfo.profileName;\r\n this.message += '.
To start a conversation, please send a message via the Chat Message Console below.';\r\n this.timer = setTimeout(() => {\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n EmitterSubjectService.emitMessage(this.message);\r\n }, 2000);\r\n clearTimeout(this.timer);\r\n // Note:uniqueAddTimer\r\n if (!DateStringServiceStatic.isTimerFound(this.timerArr, this.timer)) {\r\n this.timerArr.push(this.timer);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.message = 'Error occured in getConversation(sitUserId:\\'' + sitUserId + '\\');\\n
result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n EmitterSubjectService.emitMessage(this.message);\r\n }\r\n }, error => {\r\n // debugger;\r\n // alert ('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n this.message = 'Error occured in getConversation(sitUserId:\\'' + sitUserId + '\\');\\n
Error-message: ' + error.message;\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n EmitterSubjectService.emitMessage(this.message);\r\n });\r\n\r\n });\r\n }\r\n else return this.nullPromise();\r\n }\r\n else return this.nullPromise();\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n processChatResult (commActId : number, result : BoxNonceEntity) : any {\r\n let bn : any;\r\n let chat : Chat = new Chat();\r\n let commAct : any;\r\n let comActArr : any[] = [];\r\n let unsalted : any;\r\n if (result) {\r\n bn = result;\r\n // debugger;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n try {\r\n //debugger;\r\n unsalted = SlakezSaltServiceStatic.boxUnsalt(bn);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n commAct = JSON.parse(unsalted) as CommunicationActivity;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct)) {\r\n chat = commAct as Chat;\r\n // debugger;\r\n\r\n\r\n //this.yourInfo = EmitterSubjectService.getCommunicator();\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chat)) {\r\n // chat = this.processChatMessage(chat);\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.yourInfo)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.yourInfo.primaryImage)) {\r\n // // debugger;\r\n // chat = this.setupChatSenderReceiverInfoOfChat(chat, this.yourInfo);\r\n // // debugger;\r\n // }\r\n\r\n // chat = this.setupDateAssayOfChat(chat);\r\n\r\n // chat = this.determineSenderReceiverOfChat(chat);\r\n // // debugger;\r\n // this.chats = this.uniqueAddChat(this.chats, chat);\r\n // EmitterSubjectService.setChats(this.chats);\r\n // this.pagerChat = this.setupChatHistoryPager(this.chats);\r\n // EmitterSubjectService.emitPagerChat(this.pagerChat);\r\n return chat;\r\n //}\r\n //else return null;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n catch (e) {\r\n this.message = StringServiceStatic.stringBuilder(\"error.message: \" + e.message);\r\n console.log(this.message);\r\n // debugger;\r\n return null;\r\n }\r\n }\r\n else return null;\r\n }\r\n else {\r\n EmitterSubjectService.emitMyErrorLog('Error occured in getChat(commActId:\\'' + commActId + '\\');\\n result: ' + result);\r\n return null;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n processUnsaltedSlicedData (unsalted : string) : Chat[] {\r\n var slicedChatArr : Chat[] = [];\r\n var commActStrArr : string[] = [];\r\n var tCommAct : CommunicationActivity = null;\r\n var tChat : Chat = null;\r\n this.unsalted = unsalted\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.unsalted) && this.unsalted.length > 0) {\r\n if (this.unsalted.toLowerCase().indexOf('communicationactivityid') !== -1) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.unsalted)) {\r\n this.chats = JSON.parse(unsalted) as Chat[];\r\n // debugger\r\n for (var i = 0; i < this.chats.length; i++) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats[ i ])) {\r\n this.chats[ i ] = this.attachSentImage(this.chats[ i ]);\r\n // debugger;\r\n\r\n // -----------------------------------------------------------------------------------------------\r\n // Note: instead of having each chat message carry the sender's and receiver's primaryImage, \r\n // we use the service's yourInfo and loginSuccess to render these images and profileNames.\r\n // -----------------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.yourInfo)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.yourInfo.primaryImage)) {\r\n // debugger;\r\n // tChats = this.setupChatSenderReceiverInfoOfChats(tChats, this.yourInfo);\r\n // debugger;\r\n this.chats[ i ] = this.setupChatSenderReceiverInfoOfChat(this.chats[ i ], this.yourInfo);\r\n }\r\n\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats[ i ])) {\r\n this.chats[ i ] = this.setupDateAssayOfChat(this.chats[ i ]);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats[ i ])) {\r\n\r\n this.chats[ i ] = this.determineSenderReceiverOfChat(this.chats[ i ]);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chats[ i ])) {\r\n // debugger; \r\n\r\n EmitterSubjectService.emitCurrentFocus('chatMsgFocus');\r\n this.chatDictionary.set(this.chats[ i ].communicationActivityId, this.chats[ i ]);\r\n\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(\"processUnsaltedSlicedData()-> tChat==null or undefined-1\");\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(\"processUnsaltedSlicedData()-> tChat==null or undefined-2\");\r\n console.log(this.message);\r\n }\r\n }\r\n // debugger;\r\n this.chats = this.chatDictionary.size > 0 ? this.chatDictionary.values(): [];\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // Note: chatDictionary where the incoming data is held is different than the ChatConversationDictionary.\r\n this.dictionaryService.updateDictionary(this.chats, \"ChatConversation\", this.loginSuccess.signedInUserId);\r\n debugger;\r\n console.log(\"ChatConversation.size: \" + this.dictionaryService.chatConversationDictionary.size);\r\n // debugger;\r\n EmitterSubjectService.emitConversation(this.chats);\r\n return this.chats;\r\n }\r\n }\r\n\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(\"processUnsaltedSlicedData unsalted data was null or undefined-3.\");\r\n console.log(this.message);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\n// import { SignalRService } from './signal-r.service';\r\nimport { EmailService } from './emailService';\r\nimport { EnoteService } from './enoteService';\r\nimport { ChatService } from './chatService';\r\nimport { SwBackgroundFetchService } from './swBackgroundFetchService.service';\r\nimport { CommunicatorService } from './communicatorService.service';\r\nimport { SignalRService } from './signalRService';\r\n// import { SignalRNotificationService } from './signal-r-notificationService.service';\r\n// import { SignalRChatService } from './signal-r-chatService.service';\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class CommunicationServiceService {\r\n\r\n constructor(\r\n private chatService : ChatService,\r\n private communicatorService : CommunicatorService,\r\n private emailService: EmailService,\r\n private enoteService : EnoteService,\r\n private swBackgroundFetchService:SwBackgroundFetchService,\r\n private signalRService : SignalRService,\r\n // private signalrChatService : SignalRChatService,\r\n // private signalrNoteService : SignalRNotificationService,\r\n ) { }\r\n // ------------------------------------------------------------------\r\n setChatService(cs: ChatService): void {\r\n this.chatService = cs;\r\n }\r\n getChatService(): ChatService {\r\n return this.chatService;\r\n }\r\n // ------------------------------------------------------------------\r\n setCommunicatorService (cos : CommunicatorService) : void {\r\n this.communicatorService = cos;\r\n }\r\n getCommunicatorService () : CommunicatorService {\r\n return this.communicatorService;\r\n }\r\n // ------------------------------------------------------------------\r\n // setChunkyStreamService(cks: ChunkyStreamService): void {\r\n // this.chunkyStreamService = cks;\r\n // return;\r\n // }\r\n // getChunkyStreamService(): ChunkyStreamService {\r\n // return this.chunkyStreamService;\r\n // }\r\n // ------------------------------------------------------------------\r\n setEmailService(es: EmailService): void {\r\n this.emailService = es;\r\n }\r\n getEmailService(): EmailService {\r\n return this.emailService;\r\n }\r\n // ------------------------------------------------------------------\r\n setEnoteService(ens: EnoteService): void {\r\n this.enoteService = ens;\r\n }\r\n getEnoteService(): EnoteService {\r\n return this.enoteService;\r\n }\r\n // ------------------------------------------------------------------\r\n setSwBackgroundFetchService (swb : SwBackgroundFetchService): void {\r\n this.swBackgroundFetchService = swb;\r\n }\r\n getSwBackgroundFetchService () : SwBackgroundFetchService {\r\n return this.swBackgroundFetchService;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n setSignalRService ( src : SignalRService ) : void\r\n {\r\n this.signalRService = src;\r\n }\r\n getSignalRService () : SignalRService\r\n {\r\n return this.signalRService;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // setSignalRNotificationService ( srn : SignalRNotificationService ) : void\r\n // {\r\n // this.signalrNoteService = srn;\r\n // }\r\n // getSignalRNotificationService () : SignalRNotificationService\r\n // {\r\n // return this.signalrNoteService;\r\n // }\r\n // ------------------------------------------------------------------\r\n}\r\n","'use strict'\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { Communicator } from '../../models/communication/communicator.model';\r\nimport { KV } from '../../models/keyValue/kv.model';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { MemberService } from '../memberServiceService/memberService.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\n// ------------------------------------------------------------------\r\nexport class CommunicatorService {\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public commActivity : CommunicationActivity = new CommunicationActivity();\r\n public distUnit = '';\r\n public isMobilevar = false;\r\n public isOnLine : false;\r\n public kv : KV;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public otherCommunicator : Communicator = new Communicator();\r\n public rootScopeTs : Set;\r\n public signedInCommunicator : Communicator = new Communicator();\r\n constructor (\r\n private httpService : HttpService,\r\n private memberService : MemberService,\r\n // private inMemoryDataService: InMemoryDataService //public quickSort: Quicksort\r\n ) {\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Note: GetChatCommunicator does not get the PrimaryImage and PrimaryImageId\r\n // but the rest of Communicator data\r\n // ---------------------------------------------------------------\r\n public getCommunicatorWithoutImage (sitUserid : any) : Observable | any {\r\n var sitUserId = sitUserid;\r\n return new Observable(subscriber => {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n this.fetchCommunicatorWithGeoLocation(sitUserId, 'api/Communicator/GetCommunicatorWithoutImage').subscribe(data => {\r\n // debugger;\r\n subscriber.next(data);\r\n subscriber.complete();\r\n })\r\n // this.sendCommunicatorWithoutGeoLocation();\r\n }\r\n else {\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: GetEmailEnoteCommunicator will get the complete Communicator data.\r\n // ---------------------------------------------------------------\r\n public getCommunicatorWithImage (commCator : Communicator) : Observable | any {\r\n // debugger;\r\n var communicator = commCator;\r\n return new Observable(subscriber => {\r\n if (communicator.sitUserId > 0 && communicator.communicationActivityId > 0) {\r\n // debugger;\r\n this.fetchCommunicatorWithGeoLocation(communicator, '/api/Communicator/GetCommunicator').subscribe(data => {\r\n // debugger;\r\n subscriber.next(data);\r\n // subscriber.complete();\r\n })\r\n // this.sendCommunicatorWithoutGeoLocation();\r\n }\r\n else {\r\n subscriber.next(null);\r\n // subscriber.complete();\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: communication is always from the prospective of the signedInUser.\r\n // therefore, the receiver in most cases is the signedInUser.\r\n // ---------------------------------------------------------------\r\n public fetchCommunicatorWithGeoLocation (communiCator : Communicator, uRl: any) : Observable {\r\n\r\n var url = uRl;\r\n var tCommCator = communiCator;\r\n var unsalted : any;\r\n var bn : BoxNonceEntity;\r\n\r\n // debugger;\r\n return new Observable(subscriber => {\r\n if (tCommCator.sitUserId > 0) {\r\n \r\n // debugger;\r\n\r\n if (navigator.geolocation)\r\n {\r\n navigator.geolocation.getCurrentPosition((position : any) => {\r\n if (position) {\r\n console.log('Latitude: ' + position.coords.latitude + '; Longitude: ' + position.coords.longitude);\r\n tCommCator.latitude = position.coords.latitude;\r\n tCommCator.longitude = position.coords.longitude;\r\n }\r\n });\r\n\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(tCommCator);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService.postObservable(url, JSON.stringify({\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }), 'json2text')\r\n .subscribe(result => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result))\r\n {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.box) && result.box.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.nonce) && result.nonce.length > 0) {\r\n unsalted = SlakezSaltServiceStatic.boxUnsalt(result) as unknown;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n tCommCator = JSON.parse(unsalted) as Communicator;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tCommCator)) {\r\n // debugger;\r\n subscriber.next(tCommCator);\r\n subscriber.complete();\r\n // debugger;\r\n }\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.message = 'Error occured in GetCommunicator(sitUserId:\"' + tCommCator.sitUserId + '\");\\n result: ' + result;\r\n console.log(this.message);\r\n return this.sendCommunicatorWithoutGeoLocation(tCommCator.sitUserId, url);\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n\r\n }\r\n }, error => {\r\n this.message = 'Error occured in GetCommunicator(sitUserId:\"' + tCommCator.sitUserId + '\");\\n
Error-message: ' + error.message;\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n });\r\n }\r\n else {\r\n // debugger;\r\n return this.sendCommunicatorWithoutGeoLocation(tCommCator.sitUserId, url);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO:Test\r\n public sendCommunicatorWithoutGeoLocation (sitId : any, uRl : any) : Observable | any {\r\n var sitUserId = sitId;\r\n var url = uRl;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n return new Observable(subscriber => {\r\n if (sitUserId > 0) {\r\n let commCator : Communicator = new Communicator();\r\n commCator.sitUserId = sitUserId;\r\n\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(commCator);\r\n\r\n if (this.isOnLine && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable(url, JSON.stringify({\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }), 'json2text')\r\n .subscribe(result => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n debugger;\r\n let bn = result;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n let tCommCator = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Communicator;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commCator)) {\r\n if (tCommCator.sitUserId === this.commActivity.signedInUserId) {\r\n debugger;\r\n this.commActivity.sender = CopyServiceStatic.copyCommunicatorIfExists(this.commActivity.sender, tCommCator);\r\n }\r\n else {\r\n this.commActivity.receiver = CopyServiceStatic.copyCommunicatorIfExists(this.commActivity.receiver, tCommCator);\r\n this.commActivity.receiverSitUserId = this.commActivity.receiver.sitUserId;\r\n debugger;\r\n }\r\n subscriber.next(this.commActivity);\r\n }\r\n }\r\n }\r\n else {\r\n this.message = 'Error occured in GetCommunicator(sitUserId:' + sitUserId + ');\\n
result: ' + result;\r\n console.log(this.message);\r\n EmitterSubjectService.emitMyErrorLog(this.message);\r\n }\r\n }, error => {\r\n this.message = 'Error occured in GetCommunicator(sitUserId:\"' + sitUserId + '\");\\n
Error-message: ' + error.message;\r\n console.log(this.message);\r\n EmitterSubjectService.emitMyErrorLog(this.message);\r\n });\r\n }\r\n }\r\n \r\n })\r\n }\r\n}\r\n","\r\nimport { Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { EmitOffOnResult } from '../../models/common/emitOffOnResult.model';\r\nimport { SpinnerModel } from '../../models/common/spinnerModel.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { Communicator } from '../../models/communication/communicator.model';\r\nimport { MailBox } from '../../models/communication/mailBox.model';\r\nimport { KV } from '../../models/keyValue/kv.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { CommunicationMessage } from '../../models/communication/communicationMessage.model';\r\n\r\n@Injectable({ providedIn: 'any' })\r\n\r\nexport class EmailService implements OnDestroy {\r\n public blackListCredentialKvArr : KV[] = [];\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public commActivityIds : number[] = [];\r\n public email : CommunicationActivity = new CommunicationActivity();\r\n public emailCount = 0;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public getEmailObservable : Observable = null;\r\n public isMobilevar = false;\r\n public isInbox = false;\r\n public isOnLine = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public mailBox: MailBox = new MailBox();\r\n public message = '';\r\n public myCommunicationActivityBns: BoxNonceEntity[] = [];\r\n public myCommunicationActivityIds: number[] = [];\r\n public myEmailDictionary : Dictionary = null; // DictionaryServiceStatic.myEmailDictionary;\r\n public myEmails : CommunicationActivity[] = [];\r\n public myStaticEmails: CommunicationActivity[] = [];\r\n public myEmialsMenuKvArr: KvAny[] = [];\r\n public myInboxEmails: CommunicationActivity[] = [];\r\n public mySavedEmails: CommunicationActivity[] = [];\r\n public mySentEmails: CommunicationActivity[] = [];\r\n public myTrashedEmails: CommunicationActivity[] = [];\r\n public myConversationsBoxNonceArr: BoxNonceEntity[] = [];\r\n public offOnResult: EmitOffOnResult = new EmitOffOnResult();\r\n public profileTile: ProfileTile = new ProfileTile();\r\n public receiverInfo: Communicator = new Communicator();\r\n public renderer!: Renderer2;\r\n public senderInfo: Communicator = new Communicator();\r\n public sitUserId = 0;\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n public tempElem: any;\r\n public timerArray: any[] = [];\r\n public timer: any;\r\n // ---------------------------------\r\n constructor (\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public dictionaryService : DictionaryService,\r\n public httpService : HttpService,\r\n )\r\n {\r\n this.myEmailDictionary = this.dictionaryService.myEmailDictionary;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe(result => {\r\n this.loginSuccess = result as LoginSuccess;\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n });\r\n\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n this.isMobilevar = result as boolean;\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n });\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n public fetchBlackListCredentials () : Observable {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.blackListCredentialKvArr)\r\n || this.blackListCredentialKvArr.length === 0) {\r\n // debugger;\r\n this.blackListCredentialKvArr = [];\r\n return new Observable(observer => {\r\n // this.httpService.get('/Home/GetBlackListCredentialsJson').subscribe(\r\n this.httpService.get('assets/json/blackListCredentials.json').subscribe(\r\n (result) => {\r\n // debugger;\r\n //if (result) {\r\n // // debugger;\r\n // result.map(e => {\r\n // let kv = new KV();\r\n // kv.key = (e as KV).key;\r\n // kv.value = (e as KV).value;\r\n // this.blackListCredentialKvArr.push(kv);\r\n // });\r\n\r\n // observer.next( this.blackListCredentialKvArr);\r\n //}\r\n observer.next(result);\r\n },\r\n (error) => {\r\n EmitterSubjectService.emitMyErrorLog('Error occured in GetBlackListCredentialsJson();\\n Error-message: ' + error.message);\r\n },\r\n );\r\n })\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n public getEmailCount () : number {\r\n return this.emailCount;\r\n }\r\n // ---------------------------------------------------------------\r\n public setEmailCount (c: number) : void{\r\n this.emailCount = c;\r\n }\r\n // ---------------------------------------------------------------\r\n public getBlackListCredentialKvArr () : KV[]{\r\n this.blackListCredentialKvArr = null;\r\n this.fetchBlackListCredentials().subscribe(data => {\r\n this.blackListCredentialKvArr = data;\r\n })\r\n return this.blackListCredentialKvArr;\r\n\t}\r\n // -----------------------------------------------------------\r\n nullPromise () : any\r\n {\r\n this.timer = setTimeout( () =>\r\n {\r\n // debugger;\r\n }, 500);\r\n clearTimeout(this.timer);\r\n if ( this.timer )\r\n {\r\n this.timerArray.push( this.timer );\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n processCommunicatorResult( sitUserId: number, result: any ): Promise\r\n {\r\n let date = new Date();\r\n let commCator : Communicator = new Communicator();\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n if (result) {\r\n // debugger;\r\n const bn = result;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n commCator = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Communicator;\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commCator)) {\r\n EmitterSubjectService.emitCommunicator(commCator);\r\n resolve(commCator);\r\n }\r\n }\r\n }\r\n else {\r\n this.message = date.getTime() + 'the result of processCommunicatorResult (sitUserId:\\'' + sitUserId + '\\') the promise was rejected;\\n
result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n reject(this.message);\r\n }\r\n return this.nullPromise();\r\n }).catch((error) => {\r\n console.log(date.getTime() + 'emailService. processCommunicatorResult (sitUserId: ' + sitUserId + ') retrned a null promise.');\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n getEmailMessage (cActId : number, isinbox : boolean) : Observable {\r\n let date = new Date();\r\n let email : CommunicationActivity = new CommunicationActivity();\r\n var cm : CommunicationMessage = new CommunicationMessage();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n var commActId = cActId;\r\n var isInbox = isinbox;\r\n var count = 0;\r\n var unsalted : any;\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n const bnComm : Communication = new Communication();\r\n bnComm.communicationMessageId = commActId;\r\n bnComm.isInbox = isInbox; // TODO: May need to add isMyEmail property instead\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/EmailNote/GetEmailMessage', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text').subscribe(result => {\r\n const bn = result as BoxNonceEntity\r\n // debugger;\r\n if (SlakezSaltServiceStatic.isBoxUnsalt(bn)) {\r\n unsalted = SlakezSaltServiceStatic.unsalted;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n cm = JSON.parse(unsalted) as CommunicationMessage;\r\n subscriber.next(cm);\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n console.log(date.getTime() + 'getEmail (sitUser.commActId: ' + commActId + ') box or nonce or both were null or undefined.');\r\n }\r\n } else {\r\n console.log(date.getTime() + 'getEmail (sitUser.commActId: ' + commActId + ') was not sent becuse the loginSuccess.signedInUserId === 0.');\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n getEmail (cActId : number, isinbox : boolean) : Observable\r\n {\r\n let date = new Date();\r\n let email : CommunicationActivity = new CommunicationActivity();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n var commActId = cActId;\r\n var isInbox = isinbox;\r\n var count = 0;\r\n\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n const bnComm : Communication = new Communication();\r\n bnComm.communicationActivityId = commActId;\r\n bnComm.isInbox = isInbox; // TODO: May need to add isMyEmail property instead\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/EmailNote/GetEmail', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text').subscribe(result => { \r\n count++;\r\n // email = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result)) as CommunicationActivity;\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n email = this.processEmail(email);\r\n this.dictionaryService.updateDictionary(email, \"myEmail\", email.communicationActivityId);\r\n debugger;\r\n let tMailBox = this.putInMailStorage(email);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tMailBox)) {\r\n debugger;\r\n this.mailBox = tMailBox; // TODO: merge mailboxes \r\n\r\n // EmitterSubjectService.emitMailBox(this.mailBox);\r\n }\r\n this.myEmails = this.dictionaryService.myEmailDictionary.values();\r\n subscriber.next(email);\r\n\r\n if (count == this.emailCount) {\r\n subscriber.complete();\r\n debugger;\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n console.log(date.getTime() + 'getEmail (sitUser.commActId: ' + commActId + ') box or nonce or both were null or undefined.');\r\n\t\t\t\t}\r\n } else {\r\n console.log(date.getTime() + 'getEmail (sitUser.commActId: ' + commActId + ') was not sent becuse the loginSuccess.signedInUserId === 0.');\r\n }\r\n }) \r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This method gets all emails at once\r\n // TODO: write the backend GetEmailConversation method in EnoteNoteController.\r\n // ---------------------------------------------------------------\r\n getEmailConversation (commActIds : number[], isInbox: boolean) : Observable {\r\n let conversation : CommunicationActivity[] = [];\r\n let date = new Date();\r\n let email : CommunicationActivity = new CommunicationActivity();\r\n let partStr = '';\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n this.spinnerModel.message = 'Getting batch email...';\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n\r\n // debugger;\r\n return this.getEmailObservable = new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n let bnComm : Communication = new Communication();\r\n bnComm.communicationActivityIds = commActIds;\r\n bnComm.isInbox = isInbox;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/EmailNote/GetEmailConversation', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text').subscribe(result => {\r\n debugger;\r\n if (result as BoxNonceEntity) {\r\n // SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity);\r\n // debugger;\r\n // let unsalted = SlakezSaltServiceStatic.boxUnsalt(result) as string;\r\n var unsalted = SlakezSaltServiceStatic.boxUnsalt(result);\r\n debugger;\r\n // Note: The unsalted data comes as an array of json communicationActivity string. So we need to \r\n // parse this string in the following way:\r\n // 1. split with the marker 'communicationActivityId' of each communicationActivity json object.\r\n // 2. attach '{communicationActivityId' as prefix to the first part since that was cut off during split.\r\n // 3. rempve the last parts' closing bracket (']')\r\n // 3. now all but the first parts are missing the truncated '{communicationActivityId' property(i.e. key) as prefix,\r\n // so, prefix to each part the same prefix as the first part.\r\n // 4. then create and CommunicationActivity object from the string that is in each part.\r\n // ---------------------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted) ) {\r\n let convParts = unsalted.toString().split(\"%#%\") as string[];\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(convParts) && convParts.length > 0) {\r\n debugger;\r\n for (var i = 0; i < convParts.length-1; i++) {\r\n debugger;\r\n \r\n let eMail = JSON.parse(convParts[ i ]) as CommunicationActivity;\r\n debugger;\r\n this.processEmailObservable(eMail).subscribe(email => {\r\n this.myEmails.push(email);\r\n\r\n subscriber.next(email);\r\n });\r\n }\r\n subscriber.complete();\r\n this.spinnerModel.message = \"\";\r\n EmitterSubjectService.emitHideSpinner(this.spinnerModel.message);\r\n }\r\n }\r\n else {\r\n console.log(date.getTime() + 'getBatchEmail (commActIds:[ ' + commActIds + ']) unsalted result.box or nonce was null or undefined.');\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n console.log(date.getTime() + 'getBatchEmail (commActIds:[ ' + commActIds + ']) box or nonce or both were null or undefined.');\r\n }\r\n } else {\r\n console.log(date.getTime() + 'getEmail (commActId: [' + commActIds + ']) was not sent becuse the loginSuccess.signedInUserId === 0.');\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n getMyEmailIdsObservable (isInbox : any) : Observable | any {\r\n let email : CommunicationActivity = new CommunicationActivity();\r\n // debugger;\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n this.spinnerModel.message = 'Getting emails...';\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n\r\n return new Observable((subscriber) => {\r\n let bnComm : Communication = new Communication();\r\n bnComm.isInbox = isInbox;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n bnComm.sitUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // EmitterSubjectService.emitShowSpinner('Getting your emails...');\r\n // debugger;\r\n this.httpService.postObservable('api/EmailNote/GetMyEmailIds',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text').subscribe(result => {\r\n if (result) {\r\n // debugger;\r\n let bn = result;\r\n bn.entityName = 'myEmailId'\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n this.commActivityIds = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as number[];\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.commActivityIds) && this.commActivityIds.length > 0) {\r\n // debugger;\r\n this.dictionaryService.updateDictionary(this.commActivityIds, 'myEmailId', this.loginSuccess.signedInUserId);\r\n // DictionaryServiceStatic.myEmailIdDictionary.setValue(this.loginSuccess.signedInUserId, this.commActivityIds);\r\n // debugger;\r\n this.dbDexieToDictionaryService.saveDictionaryToDbDexie(this.dictionaryService.myEmailIdDictionary, 'myEmailId', this.loginSuccess.signedInUserId);\r\n }\r\n // debugger;\r\n\r\n this.spinnerModel.message = \"\";\r\n EmitterSubjectService.emitHideSpinner(this.spinnerModel.message);\r\n\r\n subscriber.next(this.commActivityIds);\r\n subscriber.complete();\r\n }\r\n else {\r\n this.message = 'bn.box or bn.nonce was null or undefined in getMyEmailIds(sitUserId:\"' + this.loginSuccess.signedInUserId + '\"); result: ' + result;\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = 'returned result in getMyEmailIds(sitUserId:\"' + this.loginSuccess.signedInUserId + '\"); was null or empty; result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n else {\r\n this.message = ' getMyEmailIds(sitUserId:\"' + this.loginSuccess.signedInUserId + '\") boxNonceEntity was either null or empty. Error-mag: ';\r\n console.log(this.message);\r\n }\r\n });\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n getMyEmailsObservable (commActivityIds : number[], isInBox : boolean) : Observable {\r\n let date = new Date();\r\n this.isInbox = isInBox;\r\n let emailCount = 0;\r\n let email : CommunicationActivity = null;\r\n var counter = 0;\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commActivityIds) && commActivityIds.length > 0) {\r\n \r\n this.commActivityIds = commActivityIds;\r\n // debugger;\r\n for (let i = 0; i < this.commActivityIds.length; i++)\r\n {\r\n // accumulate all unsalted emails for View in the emailTileEmitter\r\n // debugger;\r\n this.getEmail(this.commActivityIds[ i ], this.isInbox).subscribe(em => {\r\n debugger;\r\n email = em as CommunicationActivity;\r\n subscriber.next(email);\r\n if (this.commActivityIds.length === emailCount) {\r\n subscriber.complete();\r\n debugger;\r\n }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email)) {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( email.sender ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( email.sender.primaryImage ) )\r\n // {\r\n // email.sender.primaryImage = JsRegExpServiceStatic.normalizeImageData( email.sender.primaryImage );\r\n // }\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( email.receiver ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( email.receiver.primaryImage ) )\r\n // {\r\n // email.receiver.primaryImage = JsRegExpServiceStatic.normalizeImageData( email.receiver.primaryImage );\r\n // }\r\n\r\n // this.removeEarlierOrDuplicate( enote );\r\n // this.myEmailDictionary.set(email.communicationActivityId, email); // OR\r\n //this.dictionaryService.updateDictionary(email, \"myEmail\", email.communicationActivityId);\r\n //this.dbDexieToDictionaryService.saveDictionaryToDbDexie(this.dictionaryService.myEmailIdDictionary, 'myEmail', this.loginSuccess.signedInUserId);\r\n //// debugger;\r\n //let tMailBox = this.putInMailStorage(email);\r\n //// debugger;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tMailBox)) {\r\n // debugger;\r\n // this.mailBox = tMailBox; // TODO: merge mailboxes\r\n // EmitterSubjectService.emitMailBox(this.mailBox);\r\n // subscriber.next(this.mailBox);\r\n // emailCount++;\r\n // debugger; \r\n //}\r\n // }\r\n })\r\n }\r\n //if (this.commActivityIds.length === emailCount) {\r\n // subscriber.complete();\r\n // debugger;\r\n //}\r\n }\r\n else {\r\n this.message = ' getMyEmail(commActivityIds-count:\"' + this.commActivityIds.length + '\") is null or undefined result.';\r\n // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n processEmail (email : CommunicationActivity) : any {\r\n let date = new Date(); \r\n \r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email))\r\n {\r\n let dateAssay : any;\r\n let senderSitUserId = 0;\r\n if (email.senderSitUserId > 0 && email.senderSitUserId !== this.loginSuccess.signedInUserId) {\r\n senderSitUserId = email.senderSitUserId;\r\n }\r\n else if (email.sender && email.sender.sitUserId > 0 && email.sender.sitUserId !== this.loginSuccess.signedInUserId) {\r\n senderSitUserId = email.sender.sitUserId;\r\n }\r\n if (email.receiverSitUserId > 0 && email.receiverSitUserId !== this.loginSuccess.signedInUserId) {\r\n senderSitUserId = email.receiverSitUserId;\r\n }\r\n else if (email.receiver && email.receiver.sitUserId > 0 && email.receiver.sitUserId !== this.loginSuccess.signedInUserId) {\r\n senderSitUserId = email.receiver.sitUserId;\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email.pElemId)) {\r\n email.pElemId = email.sender.sitUserId.toString();\r\n }\r\n\r\n // Note: on enote.Date, sometimes there is only UNIX epoch time, so we use receiver.date since it's the latest timestamp of the communication\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email.date)) {\r\n dateAssay = DateStringServiceStatic.getDateAssayOfCsTicks(email.date);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dateAssay)) {\r\n email.dateFormatted = dateAssay.dateFormatted;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email.receiverModelString)) {\r\n email.receiver = JSON.parse(email.receiverModelString) as Communicator;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email.senderModelString)) {\r\n email.sender = JSON.parse(email.senderModelString) as Communicator;\r\n }\r\n\r\n // if (email.subject.length > 150) email.subjectShort = email.subject.slice(0, 149) + '...';\r\n\r\n // if (email.messageBody.length > 200) email.messageBodyShort = email.messageBody.slice(0, 199) + '...';\r\n // email.messageBodyShort = email.messageBody;\r\n if (email?.communicationMessage?.subject?.length >= 100) {\r\n email.subjectShort = email?.communicationMessage?.subject?.slice(0, 99) + '...';\r\n email.communicationMessage.subjectShort = email?.communicationMessage?.subject?.slice(0, 99) + '...';\r\n }\r\n else {\r\n email.subjectShort = email.communicationMessage?.subject;\r\n email.communicationMessage.subjectShort = email.communicationMessage?.subject;\r\n }\r\n if (email.communicationMessage?.messageBody?.length >= 150) {\r\n email.messageBodyShort = email.communicationMessage?.messageBody?.slice(0, 149) + '...';\r\n email.communicationMessage.messageBodyShort = email.communicationMessage?.messageBody?.slice(0, 149) + '...';\r\n }\r\n else {\r\n email.messageBodyShort = email.communicationMessage?.messageBody;\r\n email.communicationMessage.messageBodyShort = email.communicationMessage?.messageBody;\r\n }\r\n }\r\n\r\n // debugger;\r\n //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.myEmails)) {\r\n // this.myEmails = [];\r\n //}\r\n //const index = this.isEmailTileFound(this.myEmails, email);\r\n //debugger;\r\n //if (index < 0) {\r\n // this.myEmails.push(email);\r\n // this.sort(this.myEmails);\r\n // debugger;\r\n //}\r\n //else {\r\n // this.myEmails.splice(index, 1, email);\r\n // debugger;\r\n //}\r\n // debugger; \r\n return email;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n processEmailObservable (email : CommunicationActivity) : Observable {\r\n let date = new Date();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.myEmails)) {\r\n this.myEmails = [];\r\n }\r\n return new Observable(subscriber => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email)) {\r\n let dateAssay : any;\r\n let senderSitUserId = 0;\r\n if (email.senderSitUserId > 0 && email.senderSitUserId !== this.loginSuccess.signedInUserId) {\r\n senderSitUserId = email.senderSitUserId;\r\n }\r\n else if (email.sender && email.sender.sitUserId > 0 && email.sender.sitUserId !== this.loginSuccess.signedInUserId) {\r\n senderSitUserId = email.sender.sitUserId;\r\n }\r\n if (email.receiverSitUserId > 0 && email.receiverSitUserId !== this.loginSuccess.signedInUserId) {\r\n senderSitUserId = email.receiverSitUserId;\r\n }\r\n else if (email.receiver && email.receiver.sitUserId > 0 && email.receiver.sitUserId !== this.loginSuccess.signedInUserId) {\r\n senderSitUserId = email.receiver.sitUserId;\r\n }\r\n\r\n\r\n // -------------------------------------------------------------------------\r\n // since the received data has been successfull unsalted into model, it is safe to save it to indexedDb\r\n // emit the tile as boxNonce to be stored in indexedDb by MembersComponent\r\n // this.boxNonceEntity = new BoxNonceEntity();\r\n // this.boxNonceEntity.box = result.box;\r\n // this.boxNonceEntity.nonce = result.nonce;\r\n // this.boxNonceEntity.id = email.commActivityId; // to be used by indexedDb\r\n // this.boxNonceEntity.key = email.commActivityId.toString(); // to be used by indexedDb\r\n // this.boxNonceEntity.sitUserId = senderSitUserId > 0 ? senderSitUserId : -1; // to uniquely identify a user's data\r\n // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // // debugger;\r\n\r\n // this.boxNonceEntity.entityName = 'EmailTile';\r\n // this.triageAllDataForIndexedDbAndDictionaryService.saveEmailTileDictionaryToIndexedDb( this.boxNonceEntity );\r\n\r\n // -------------------------------------------------------------------------\r\n\r\n // this.myCommunicationActivityBns.push( boxedTile );\r\n // EmitterSubjectService.emitCommunicationActivityBoxNonce( boxedTile );\r\n\r\n // -------------------------------------------------------------------------\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email.pElemId)) {\r\n email.pElemId = email.sender.sitUserId.toString();\r\n }\r\n\r\n // Note: on enote.Date, sometimes there is only UNIX epoch time, so we use receiver.date since it's the latest timestamp of the communication\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email.date)) {\r\n dateAssay = DateStringServiceStatic.getDateAssayOfCsTicks(email.date);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dateAssay)) {\r\n email.dateFormatted = dateAssay.dateFormatted;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email.receiverModelString)) {\r\n email.receiver = JSON.parse(email.receiverModelString) as Communicator;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email.senderModelString)) {\r\n email.sender = JSON.parse(email.senderModelString) as Communicator;\r\n }\r\n\r\n // if (email.subject.length > 150) email.subjectShort = email.subject.slice(0, 149) + '...';\r\n\r\n // if (email.messageBody.length > 200) email.messageBodyShort = email.messageBody.slice(0, 199) + '...';\r\n\r\n if (email?.subject?.length >= 100) {\r\n email.subjectShort = email?.subject?.slice(0, 99) + '...';\r\n }\r\n else {\r\n email.subjectShort = email.subject;\r\n }\r\n if (email.messageBody?.length >= 150) {\r\n email.messageBodyShort = email.messageBody?.slice(0, 149) + '...';\r\n }\r\n else {\r\n email.messageBodyShort = email.messageBody;\r\n }\r\n }\r\n \r\n // debugger;\r\n const index = this.isEmailTileFound(this.myEmails, email);\r\n if (index < 0) {\r\n this.myEmails.push(email);\r\n this.sort(this.myEmails);\r\n // debugger;\r\n }\r\n else {\r\n this.myEmails.splice(index, 1, email);\r\n // this.myEmails[ index ] = CopyServiceStatic.copyCommunicationActivityIfExists( this.myEmails[ index ], email );\r\n }\r\n // debugger;\r\n // this.putInMailStorage( email ); //instead myEmails will process it and get a mailBox\r\n // EmitterSubjectService.emitEmailTile( email ); \r\n // debugger;\r\n subscriber.next(email);\r\n subscriber.complete();\r\n }\r\n \r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n processEmailResult (result : BoxNonceEntity) :any {\r\n let date = new Date();\r\n let email : CommunicationActivity;\r\n let tEmail : any;\r\n \r\n if (result) {\r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n email = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as CommunicationActivity;\r\n debugger;\r\n return this.processEmail(email);\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n processEmailResultObservable (result : BoxNonceEntity ): Observable\r\n {\r\n let date = new Date();\r\n let email : CommunicationActivity;\r\n let tEmail : any;\r\n return new Observable(subscriber =>{\r\n if (result) {\r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n try {\r\n tEmail = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as unknown;\r\n\r\n debugger;\r\n email = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as CommunicationActivity;\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email)) {\r\n this.processEmail(email).subscribe(e => {\r\n // debugger;\r\n // this.putInMailStorage( email ); //instead myEmails will process it and get a mailBox\r\n // EmitterSubjectService.emitEmailTile( email ); \r\n subscriber.next(e);\r\n\t\t\t\t\t\t\t}) \r\n }\r\n }\r\n catch (e) {\r\n this.message = date.getTime() + 'failed to unsalt email of (sitUserId:\\'' + this.loginSuccess.signedInUserId + '\\'); error: ' + e;\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n }\r\n finally {\r\n ;// do nothing\r\n subscriber.complete();\r\n\t\t\t\t\t}\r\n }\r\n }\r\n else {\r\n this.message = date.getTime() + 'Error occured in getBoxEmail(sitUserId:\\'' + this.loginSuccess.signedInUserId + '\\'); result: ' + result;\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n getMailBox(): MailBox {\r\n return this.mailBox;\r\n }\r\n // ---------------------------------------------------------------\r\n getMyEmails(): CommunicationActivity[] {\r\n return this.myEmails;\r\n }\r\n // ---------------------------------------------------------------\r\n getMyInboxEmails(): CommunicationActivity[] {\r\n return this.myInboxEmails;\r\n }\r\n // ---------------------------------------------------------------\r\n getMySentEmails(): CommunicationActivity[] {\r\n return this.mySentEmails;\r\n }\r\n // ---------------------------------------------------------------\r\n getMySavedEmails(): CommunicationActivity[] {\r\n return this.mySavedEmails;\r\n }\r\n // ---------------------------------------------------------------\r\n getMyTrashedEmails(): CommunicationActivity[] {\r\n return this.myTrashedEmails;\r\n }\r\n // ---------------------------------------------------------------\r\n setMyEmails(emails: CommunicationActivity[]): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(emails) && emails.length > 0) {\r\n this.myEmails = emails;\r\n this.myEmails.map(e => {\r\n this.putInMailStorage(e);\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------\r\n // ref:https:// www.positronx.io/angular-8-es-6-typescript-promises-examples/\r\n ePromise (data : any): any {\r\n const promise = new Promise( (resolve, reject) => {\r\n let timer = setTimeout(() => {\r\n console.log('promise returning resolve!');\r\n resolve(data);\r\n }, 1000);\r\n clearTimeout(timer);\r\n });\r\n return promise;\r\n }\r\n // ---------------------------------------------------------------\r\n isEmailTaken (email : string) : Observable {\r\n var url = 'api/Account/IsEmailTaken';\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email)) {\r\n return new Observable(observer => {\r\n this.httpService.post(url, email, 'json').subscribe(bn => {\r\n // debugger;\r\n observer.next(SlakezSaltServiceStatic.boxUnsalt(bn).toLowerCase().indexOf('true') !== -1);\r\n observer.complete();\r\n observer.unsubscribe();\r\n })\r\n })\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isEmailTileFound ( eTileArr : CommunicationActivity[], eTile : CommunicationActivity ) : number\r\n {\r\n let index = -1;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTileArr)\r\n && eTileArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.communicationType)\r\n && eTile.communicationType.toLowerCase().indexOf('email') !== -1) {\r\n // debugger;\r\n for (let i = 0; i < eTileArr.length; i++) {\r\n if (eTileArr[ i ].communicationActivityId === eTile.communicationActivityId) {\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Objective of this method is to return C# CommunicationActivity model's property names\r\n // having thier(names') first character turned from an Upper case to a Lower case letter.\r\n // Just add a model-specific conversion in the same way it is done for model.\r\n // ---------------------------------------------------------------\r\n // firstCharToLowerCase(model: any): Communicator {\r\n // var tModel = model as Communicator;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n // //debugger;\r\n // var outModel: Communicator = new Communicator();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n // outModel.id = tModel.id;\r\n // date: model.receiver.Date,\r\n // latitude: model.receiver.Latitude,\r\n // longitude: model.receiver.Longitude,\r\n // cryptUserKey: model.receiver.CryptUserKey,\r\n // email: model.receiver.Email,\r\n // profileId: model.receiver.ProfileId,\r\n // profileName: model.receiver.ProfileName,\r\n // primaryImage: model.receiver.PrimaryImage,\r\n // primaryPhotoBnId: model.receiver.PrimaryPhotoBnId,\r\n // sitUserId: model.receiver.SitUserId,\r\n // sitUserKey: model.receiver.SitUserKey,\r\n // communicatorType: model.receiver.CommunicatorType, // {receiver, sender}\r\n // }\r\n // }\r\n // //debugger;\r\n // return model;\r\n // }\r\n // ---------------------------------------------------------------\r\n isSenderFound ( senders : Communicator[], sender : Communicator ) : number\r\n {\r\n let index = -1;\r\n if (senders.length > 0 && sender) {\r\n for (let i = 0; i < senders.length; i++) {\r\n if (senders[i].sitUserId === sender.sitUserId) {\r\n // debugger;\r\n index = i;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n putInMailsStorage (emails : CommunicationActivity[]) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(emails) && emails.length > 0 ){\r\n emails.map(e => {\r\n this.mailBox = this.putInMailStorage(e);\r\n })\r\n\t\t}\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Tested and works! August 15, 2020.\r\n // Currently in use\r\n // ---------------------------------------------------------------\r\n putInMailStorage(email: CommunicationActivity): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email)) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n\r\n if (DateStringServiceStatic.compareSitUserKeys(this.loginSuccess.signedInUserKey, email.receiverSITUserKey) === 0) {\r\n // debugger;\r\n switch (email?.receiverAction?.toString().toLowerCase()) {\r\n case 'received': case 'read': case 'madeunread':\r\n email.boxName = 'inBox';\r\n this.myInboxEmails = this.sortMailBoxByDate( this.uniqueAddEmailTile( this.myInboxEmails, email ) );\r\n this.mailBox.myInboxEmails = this.myInboxEmails;\r\n // debugger;\r\n break;\r\n case 'saved': case 'readandsaved':\r\n email.boxName = 'savedBox';\r\n this.mySavedEmails = this.sortMailBoxByDate( this.uniqueAddEmailTile( this.mySavedEmails, email ) );\r\n this.mailBox.mySavedEmails = this.mySavedEmails;\r\n debugger;\r\n break;\r\n case 'trashed': case 'readandtrashed':\r\n email.boxName = 'trashedBox';\r\n this.myTrashedEmails = this.sortMailBoxByDate( this.uniqueAddEmailTile( this.myTrashedEmails, email ) );\r\n this.mailBox.myTrashedEmails = this.myTrashedEmails;\r\n debugger;\r\n break;\r\n }\r\n }\r\n else if (DateStringServiceStatic.compareSitUserKeys(this.loginSuccess.signedInUserKey, email.senderSITUserKey) === 0) {\r\n // debugger;\r\n switch (email.senderAction.toString().toLowerCase()) {\r\n case 'sent': case 'replied':\r\n email.boxName = 'sentBox';\r\n this.mySentEmails = this.sortMailBoxByDate( this.uniqueAddEmailTile( this.mySentEmails, email ) );\r\n this.mailBox.mySentEmails = this.mySentEmails;\r\n // debugger;\r\n break;\r\n }\r\n }\r\n // debugger;\r\n return this.mailBox;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n salt (model : any): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt( JSON.stringify( model ) );\r\n return this.boxNonceEntity;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // sendEmailBox(myEmails: CommunicationActivity[]): void {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myEmails) && myEmails.length > 0) {\r\n // this.mailBox = new MailBox();\r\n // this.mailBox.myEmails = myEmails;\r\n // this.mailBox.myInboxEmails = myEmails;\r\n // this.mailBox.mySentEmails = myEmails;\r\n // this.mailBox.mySavedEmails = myEmails;\r\n // this.mailBox.myTrashedEmails = myEmails;\r\n // // debugger;\r\n // EmitterSubjectService.emitMailBox(this.mailBox);\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n sort(mailArr: CommunicationActivity[]): CommunicationActivity[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailArr) && mailArr.length > 0) {\r\n mailArr.sort( (a, b) => {\r\n return a.communicationActivityId - b.communicationActivityId;\r\n });\r\n }\r\n return mailArr;\r\n }\r\n // ---------------------------------------------------------------\r\n sortMailBoxByDate(mailArr: CommunicationActivity[]): CommunicationActivity[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailArr) && mailArr.length > 0) {\r\n mailArr.sort( (a, b) => {\r\n // return a.date.localeCompare(b.date);\r\n return Number(b.date) - Number(a.date);\r\n });\r\n }\r\n return mailArr;\r\n }\r\n // ---------------------------------------------------------------\r\n uniqueAddEmailTile(arr: CommunicationActivity[], eTile: CommunicationActivity): CommunicationActivity[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.communicationType)\r\n && eTile.communicationType.toLowerCase().indexOf('email') !== -1) {\r\n // debugger;\r\n const index = this.isEmailTileFound(arr, eTile);\r\n if (index < 0) {\r\n arr.push(eTile);\r\n }\r\n else {\r\n arr[index] = CopyServiceStatic.copyCommunicationActivityIfExists(arr[index], eTile);\r\n // arr.splice( index, 1, eTile );\r\n }\r\n return arr;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this does not work as desired, but can be used for something else similar\r\n // ---------------------------------------------------------------\r\n createMailStorage(myEmails: CommunicationActivity[]): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myEmails) && myEmails.length > 0) {\r\n myEmails.map(item => {\r\n // debugger;\r\n if (item.receiverSitUserKey.toString().toLowerCase().indexOf(this.loginSuccess.signedInUserKey.toString().toLowerCase()) !== -1) {\r\n switch (item.receiverAction.toString().toLowerCase()) {\r\n case 'received': case 'read': case 'madeunread':\r\n this.myInboxEmails = this.sortMailBoxByDate(this.uniqueAddEmailTile(this.myInboxEmails, item));\r\n // debugger;\r\n break;\r\n case 'saved': case 'readandsaved':\r\n this.mySavedEmails = this.sortMailBoxByDate(this.uniqueAddEmailTile(this.mySavedEmails, item));\r\n // debugger;\r\n break;\r\n case 'trashed': case 'readandtrashed':\r\n this.myTrashedEmails = this.sortMailBoxByDate(this.uniqueAddEmailTile(this.myTrashedEmails, item));\r\n // debugger;\r\n break;\r\n }\r\n }\r\n else if (item.senderSitUserKey.toString().toLowerCase().indexOf(this.loginSuccess.signedInUserKey.toString().toLowerCase()) !== -1) {\r\n switch (item.senderAction.toString().toLowerCase()) {\r\n case 'sent': case 'replied':\r\n this.mySentEmails = this.sortMailBoxByDate(this.uniqueAddEmailTile(this.mySentEmails, item));\r\n // debugger;\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n updateEmailReceiverAction ( eMail : CommunicationActivity ) : Promise\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess ) || this.loginSuccess.signedInUserId === 0 )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n }\r\n // debugger;\r\n return new Promise( ( resolve, reject ) =>\r\n {\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n eMail.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = this.salt( eMail );\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.box )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.nonce ) )\r\n {\r\n this.httpService.postObservable( 'api/EmailNote/UpdateEmailReceiverAction', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n },\r\n 'json2text').subscribe( result =>\r\n {\r\n // debugger;\r\n\r\n // debugger;\r\n let tEmail = this.processEmailResult( result );\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tEmail ) )\r\n {\r\n // debugger;\r\n resolve( tEmail );\r\n }\r\n else {\r\n this.message = 'emailService. updateEmailReceiverAction(eNote: ' + this.loginSuccess.signedInUserId + ') promise returned a null or undefined result;';\r\n reject(this.message);\r\n }\r\n\r\n // return this.processEnoteResult( result );\r\n\r\n })\r\n }\r\n else {\r\n this.message = 'emailService. updateEmailReceiverAction(eNote: ' + this.loginSuccess.signedInUserId + ') promise is rejected;';\r\n reject(this.message);\r\n }\r\n }\r\n } );\r\n }\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { EmitOffOnResult } from '../../models/common/emitOffOnResult.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { Communicator } from '../../models/communication/communicator.model';\r\nimport { EnoteBox } from '../../models/communication/enoteBox.model';\r\nimport { MailBox } from '../../models/communication/mailBox.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\nimport { QuicksortService } from '../searchSortServiceService/quicksort.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { DictionaryServiceStatic } from '../staticServices/dictionaryServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { CommunicatorService } from './communicatorService.service';\r\n\r\n@Injectable({ providedIn: 'any' })\r\n\r\nexport class EnoteService implements OnDestroy {\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public commActivityIds: number[] = [];\r\n public enote: CommunicationActivity = new CommunicationActivity();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public kvGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public mailBox: MailBox = new MailBox();\r\n public message = '';\r\n public myCommunicationActivityBns: BoxNonceEntity[] = [];\r\n public myCommunicationActivityIds: number[] = [];\r\n public myEnotes : CommunicationActivity[] = [];\r\n public myEnoteTilesSubscriber : Observable = null;\r\n public myStaticEnotes: CommunicationActivity[] = [];\r\n public myEnotesMenuKvArr : KvAny[] = [];\r\n public enoteTileDictionary : Dictionary = new Dictionary();\r\n\r\n // ------for notification\r\n public myInboxEnotes: CommunicationActivity[] = [];\r\n public mySavedEnotes: CommunicationActivity[] = [];\r\n public mySentEnotes: CommunicationActivity[] = [];\r\n public myTrashedEnotes : CommunicationActivity[] = [];\r\n\r\n // ------for pushNotification\r\n public myAllEnotes : CommunicationActivity[] = [];\r\n public myAllEnoteDictionary : Dictionary = new Dictionary();\r\n public myBuddyEnotes : CommunicationActivity[] = [];\r\n public myFriendEnotes : CommunicationActivity[] = [];\r\n public myLikeEnotes : CommunicationActivity[] = [];\r\n public myStarEnotes : CommunicationActivity[] = [];\r\n public myTrackEnotes : CommunicationActivity[] = [];\r\n public myUnlockEnotes : CommunicationActivity[] = [];\r\n public myWinkEnotes : CommunicationActivity[] = [];\r\n\r\n public myConversationsBoxNonceArr: BoxNonceEntity[] = [];\r\n public offOnResult: EmitOffOnResult = new EmitOffOnResult();\r\n public profileTile: ProfileTile = new ProfileTile();\r\n public receiverInfo: Communicator = new Communicator();\r\n public renderer!: Renderer2;\r\n public senderInfo: Communicator = new Communicator();\r\n public sitUserId = 0;\r\n public tempElem: any;\r\n public timerArray: any[] = [];\r\n public timer : any;\r\n\r\n // All totalCount-related variables:\r\n public buddyTotal = 0;\r\n public friendTotal = 0;\r\n public likeTotal = 0;\r\n public starTotal = 0;\r\n public total = 0;\r\n public trackTotal = 0;\r\n public unlockTotal = 0;\r\n public winkTotal = 0;\r\n // ---------------------------------\r\n constructor (\r\n public communicatorService : CommunicatorService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public dictionaryService : DictionaryService,\r\n public httpService : HttpService,\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public quickSortService: QuicksortService,\r\n )\r\n {\r\n this.initialize();\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n initialize () {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n this.loginSuccess = result as LoginSuccess;\r\n });\r\n\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n this.isMobilevar = result as boolean;\r\n });\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n }\r\n // -------------------------------------------------------------\r\n createActionGlyphicon (enoteTile : CommunicationActivity) : KvMemberActivityGlyph {\r\n // debugger;\r\n let names : string[] = [];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enoteTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enoteTile.memberActivity)) {\r\n // debugger;\r\n names.push(enoteTile.memberActivity.toLowerCase());\r\n let tKvGlyphs = this.glyphiconMenuService.createGlyphMenu(names, enoteTile.receiverSitUserId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tKvGlyphs) && tKvGlyphs.length > 0) {\r\n // debugger;\r\n this.kvGlyph = tKvGlyphs[ 0 ];\r\n\r\n }\r\n }\r\n return this.kvGlyph;\r\n }\r\n // -----------------------------------------------------------\r\n editNotificationSubject (input: string) : string\r\n {\r\n let output = '';\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(input))\r\n {\r\n let parts = input.split( '!' );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( parts ) && parts.length > 0 )\r\n {\r\n output = parts[ 0 ] + '! Click his profile to view.';\r\n }\r\n }\r\n return output;\r\n }\r\n // ---------------------------------------------------------------\r\n extractMailBox (mailBox : MailBox) : MailBox {\r\n // debugger;\r\n var outMailBox = new MailBox();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailBox)) {\r\n outMailBox.myAllEnotes = mailBox.myAllEnotes;\r\n outMailBox.myBuddyEnotes = mailBox.myBuddyEnotes;\r\n outMailBox.buddyTotal = this.getMemberActivityNotificationTotal(mailBox.myBuddyEnotes, 'buddy');\r\n outMailBox.newBuddyTotal = this.getNewMemberActivityNotificationTotal(mailBox.myBuddyEnotes, 'buddy');\r\n outMailBox.allTotal = outMailBox.allTotal + mailBox.buddyTotal;\r\n outMailBox.allNewTotal = outMailBox.allTotal + mailBox.newBuddyTotal;\r\n\r\n\r\n outMailBox.myFriendEnotes = mailBox.myFriendEnotes;\r\n // debugger;\r\n outMailBox.friendTotal = this.getMemberActivityNotificationTotal(mailBox.myFriendEnotes, 'friend');\r\n outMailBox.newFriendTotal = this.getNewMemberActivityNotificationTotal(mailBox.myFriendEnotes, 'friend');\r\n outMailBox.allTotal = mailBox.allTotal + mailBox.friendTotal;\r\n outMailBox.allNewTotal = outMailBox.allTotal + mailBox.newFriendTotal;\r\n\r\n outMailBox.myLikeEnotes = mailBox.myLikeEnotes;\r\n outMailBox.likeTotal = this.getMemberActivityNotificationTotal(mailBox.myLikeEnotes, 'like');\r\n outMailBox.newLikeTotal = this.getNewMemberActivityNotificationTotal(mailBox.myLikeEnotes, 'like');\r\n outMailBox.allTotal = mailBox.allTotal + mailBox.likeTotal;\r\n outMailBox.allNewTotal = outMailBox.allTotal + mailBox.newLikeTotal;\r\n\r\n outMailBox.myStarEnotes = mailBox.myStarEnotes;\r\n outMailBox.starTotal = this.getMemberActivityNotificationTotal(mailBox.myStarEnotes, 'star');\r\n outMailBox.newStarTotal = this.getNewMemberActivityNotificationTotal(mailBox.myStarEnotes, 'star');\r\n outMailBox.allTotal = mailBox.allTotal + mailBox.starTotal;\r\n outMailBox.allNewTotal = outMailBox.allTotal + mailBox.newStarTotal;\r\n\r\n outMailBox.myTrackEnotes = mailBox.myTrackEnotes;\r\n outMailBox.trackTotal = this.getMemberActivityNotificationTotal(mailBox.myTrackEnotes, 'track');\r\n outMailBox.newTrackTotal = this.getNewMemberActivityNotificationTotal(mailBox.myTrackEnotes, 'track');\r\n outMailBox.allTotal = outMailBox.allTotal + mailBox.trackTotal;\r\n outMailBox.allNewTotal = outMailBox.allTotal + mailBox.newTrackTotal;\r\n\r\n outMailBox.myUnlockEnotes = mailBox.myUnlockEnotes;\r\n outMailBox.unlockTotal = this.getMemberActivityNotificationTotal(mailBox.myUnlockEnotes, 'unlock');\r\n outMailBox.newUnlockTotal = this.getNewMemberActivityNotificationTotal(mailBox.myUnlockEnotes, 'unlock');\r\n outMailBox.allTotal = outMailBox.allTotal + mailBox.unlockTotal;\r\n outMailBox.allNewTotal = outMailBox.allTotal + mailBox.newUnlockTotal;\r\n\r\n outMailBox.myWinkEnotes = mailBox.myWinkEnotes;\r\n outMailBox.winkTotal = this.getMemberActivityNotificationTotal(mailBox.myWinkEnotes, 'wink');\r\n outMailBox.newWinkTotal = this.getNewMemberActivityNotificationTotal(mailBox.myWinkEnotes, 'wink');\r\n outMailBox.allTotal = outMailBox.allTotal + mailBox.winkTotal;\r\n outMailBox.allNewTotal = outMailBox.allTotal + mailBox.newWinkTotal;\r\n // debugger;\r\n \r\n // outMailBox.allTotal = outMailBox.buddyTotal + outMailBox.friendTotal + outMailBox.likeTotal + outMailBox.starTotal + outMailBox.trackTotal + outMailBox.unlockTotal + outMailBox.winkTotal; \r\n // outMailBox.allNewTotal = outMailBox.newBuddyTotal + outMailBox.newFriendTotal + outMailBox.newLikeTotal + outMailBox.newStarTotal + outMailBox.newTrackTotal + outMailBox.newUnlockTotal + outMailBox.newWinkTotal; \r\n return outMailBox;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n extractPremiumEnoteBox (enoteBox : EnoteBox) : EnoteBox {\r\n // debugger;\r\n var outEnoteBox : EnoteBox = new EnoteBox();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enoteBox)) {\r\n outEnoteBox.allPremiumEnoteTotal = 0;\r\n outEnoteBox.inboxPremiumEnoteTotal = 0;\r\n outEnoteBox.savedPremiumEnoteTotal = 0;\r\n outEnoteBox.sentPremiumEnoteTotal = 0;\r\n outEnoteBox.trashedPremiumEnoteTotal = 0;\r\n\r\n // ------for notification\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enoteBox)) {\r\n outEnoteBox.allPremiumEnotes = enoteBox.allPremiumEnotes \r\n outEnoteBox.inboxPremiumEnotes = enoteBox.inboxPremiumEnotes ;\r\n outEnoteBox.inboxPremiumEnoteTotal = this.getNewPremiumNotificationTotal(enoteBox.inboxPremiumEnotes, 'inboxPremium');\r\n\r\n outEnoteBox.savedPremiumEnotes = enoteBox.savedPremiumEnotes ;\r\n // debugger;\r\n outEnoteBox.savedPremiumEnoteTotal = this.getNewPremiumNotificationTotal(enoteBox.savedPremiumEnotes, 'savedPremium');\r\n\r\n outEnoteBox.sentPremiumEnotes = enoteBox.sentPremiumEnotes;\r\n outEnoteBox.sentPremiumEnoteTotal = this.getNewPremiumNotificationTotal(enoteBox.sentPremiumEnotes, 'sentPremium'); \r\n\r\n outEnoteBox.trashedPremiumEnotes = enoteBox.trashedPremiumEnotes;\r\n outEnoteBox.trashedPremiumEnoteTotal = this.getNewPremiumNotificationTotal(enoteBox.trashedPremiumEnotes, 'trashedPremium');\r\n // debugger;\r\n }\r\n this.total = this.getNewTotal(this.myAllEnotes);\r\n\r\n \r\n return outEnoteBox;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getNewPremiumNotificationTotal (memberActivityArr : CommunicationActivity[], action : string) {\r\n // debugger;\r\n let total = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberActivityArr) && memberActivityArr.length > 0) {\r\n memberActivityArr.map(e => {\r\n if (e.communicationSubType.toLocaleLowerCase().indexOf(action.toLocaleLowerCase()) !== -1) {\r\n if (e.receiverAction.toLowerCase().indexOf('received') != -1) {\r\n total++;\r\n // debugger;\r\n }\r\n }\r\n });\r\n }\r\n // debugger;\r\n return total;\r\n }\r\n // ---------------------------------------------------------------\r\n getMemberActivityNotificationTotal (memberActivityArr : CommunicationActivity[], action : string) {\r\n // debugger;\r\n let total = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberActivityArr) && memberActivityArr.length > 0) {\r\n memberActivityArr.map(e => {\r\n if (e.communicationSubType.toLocaleLowerCase().indexOf(action.toLocaleLowerCase()) !== -1) {\r\n if (e.receiverAction.toLowerCase().indexOf('read') != -1\r\n || e.receiverAction.toLowerCase().indexOf('readAndSaved') != -1\r\n || e.receiverAction.toLowerCase().indexOf('readAndTrashed')) {\r\n total++;\r\n // debugger;\r\n }\r\n }\r\n });\r\n }\r\n // debugger;\r\n return total;\r\n }\r\n // ---------------------------------------------------------------\r\n getNewMemberActivityNotificationTotal (memberActivityArr : CommunicationActivity[], action : string) {\r\n // debugger;\r\n let total = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberActivityArr) && memberActivityArr.length > 0) {\r\n memberActivityArr.map(e => {\r\n if (e.communicationSubType.toLocaleLowerCase().indexOf(action.toLocaleLowerCase()) !== -1) {\r\n if (e.receiverAction.toLowerCase().indexOf('received') != -1) {\r\n total++;\r\n // debugger;\r\n }\r\n }\r\n });\r\n }\r\n // debugger;\r\n return total;\r\n }\r\n // ---------------------------------------------------------------\r\n getMailBox () : MailBox {\r\n return this.mailBox;\r\n }\r\n // ---------------------------------------------------------------\r\n getMyAllEnoteDictionary () : Dictionary {\r\n return this.myAllEnoteDictionary;\r\n } \r\n // ---------------------------------------------------------------\r\n // TODO: There should be separate SetCommunicator()\r\n // Note: 1. Currently, the backend saves the Communicator when we try to fetch\r\n // Note: 2. The composeEnoteComponent sends the GeoLocation data that is saved into the serverDb\r\n // Note: 3: This method should also send Geolocation data\r\n // ---------------------------------------------------------------\r\n getCommunicator (sitUserId : number) : Promise {\r\n let date = new Date();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n const commCator : Communicator = new Communicator();\r\n debugger;\r\n return new Promise((resolve, reject) => {\r\n\r\n if (sitUserId > 0) {\r\n const bnComm : Communication = new Communication();\r\n bnComm.sitUserId = sitUserId;\r\n this.boxNonceEntity = this.salt(bnComm);\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService.postObservable('api/Communicator/GetCommunicator', JSON.stringify({\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }), 'json2text')\r\n .subscribe(result => {\r\n if (result) {\r\n debugger;\r\n resolve(this.processCommunicatorResult(sitUserId, result));\r\n }\r\n else {\r\n debugger;\r\n this.message = 'the result of enoteService.getCommunicator (sitUserId:\\'' + sitUserId + '\\') the promise returned a result that was null or undefined';\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n reject(this.message);\r\n }\r\n })\r\n } else {\r\n this.message = 'the result of enoteService.getCommunicator (sitUserId:\\'' + sitUserId + '\\') the promise was rejected because box or nonce value was null or undefined';\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n reject(this.message);\r\n }\r\n }\r\n else {\r\n this.message = 'the result of enoteService.getCommunicator (sitUserId:\\'' + sitUserId + '\\') the promise was rejected';\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n reject(this.message);\r\n }\r\n }).catch((error) => {\r\n console.log(date.getTime() + 'enoteService.getCommunicator (sitUserId: ' + sitUserId + ') retrned a null promise.');\r\n })\r\n }\r\n \r\n \r\n // ---------------------------------------------------------------\r\n getMyNotifications (isinbox : boolean) : Observable {\r\n let date = new Date();\r\n let tEnote : any;\r\n const enote : CommunicationActivity = new CommunicationActivity();\r\n var loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n var isInbox = isinbox\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(loginSuccess) && loginSuccess.signedInUserId > 0) {\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (loginSuccess.signedInUserId > 0) {\r\n const bnComm : Communication = new Communication();\r\n bnComm.isInbox = isInbox;\r\n bnComm.signedInUserId = loginSuccess.signedInUserId;\r\n bnComm.signedInUserKey = loginSuccess.signedInUserKey;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/Enote/GetMyNotifications',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text').subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n this.processMyNotificationResults(result).subscribe(data => { // data typeof CommunicationActivity\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // debugger; \r\n subscriber.next(data);\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'the processMyNotificationResults() of the result of getMyNotifications(sitUserId:\\\"' + this.loginSuccess.signedInUserId + '\\\") was null or undefined.');\r\n console.log(this.message);\r\n\r\n }\r\n });\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'thr promise result in getMyNotifications(sitUserId:\\\"' + this.loginSuccess.signedInUserId + '\\\") was null or undefined;\\n result: ' + result);\r\n console.log(this.message);\r\n\r\n }\r\n })\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'the box or nonce of getMyNotifications(sitUserId:\\\"' + this.loginSuccess.signedInUserId + '\\\") was null or undefined.');\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n console.log(this.message);\r\n\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'the loginSucess.signedInUserId of getMyNotifications(sitUserId:\\\"' + this.loginSuccess.signedInUserId + '\\\") was 0 or null or undefined');\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n console.log(this.message);\r\n\r\n }\r\n })\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + '| enoteService.getMyNotifications (loginSuccess.signedInUserId : ' + this.loginSuccess.signedInUserId + ') is zero(0).');\r\n console.log(this.message);\r\n }\r\n }\r\n \r\n // --------------------------------------------------------------\r\n getNewTotal (tEnoteTiles : CommunicationActivity[]) : number {\r\n this.total = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tEnoteTiles) && tEnoteTiles.length > 0) {\r\n\r\n tEnoteTiles.map(e => {\r\n if (e.receiverAction.toLowerCase().indexOf('received') !== -1) {\r\n this.total++;\r\n }\r\n });\r\n }\r\n return this.total;\r\n } \r\n\r\n // ---------------------------------------------------\r\n // ref:https:// www.positronx.io/angular-8-es-6-typescript-promises-examples/\r\n ePromise (data : any) : any {\r\n const promise = new Promise((resolve, reject) => {\r\n this.timer = setTimeout(() => {\r\n console.log('promise returning resolve!');\r\n resolve(data);\r\n }, 1000);\r\n clearTimeout(this.timer);\r\n });\r\n return promise;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this method selects the latest action of a kind such as like/friend etc.\r\n // where the doer is the same and doee is the signedInUsr.\r\n // ---------------------------------------------------------------\r\n isEnoteTileFound (eTileArr : CommunicationActivity[], eTile : CommunicationActivity) : number {\r\n // debugger;\r\n let index = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTileArr)\r\n && eTileArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.communicationType)\r\n && (eTile.communicationType.toLowerCase().indexOf('notification') !== -1\r\n || eTile.communicationType.toLowerCase().indexOf('note') !== -1)\r\n ) {\r\n // debugger;\r\n let i = 0;\r\n for (const e of eTileArr) {\r\n // debugger;\r\n if (e.communicationActivityId === eTile.communicationActivityId) {\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n i++;\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n isLatestEnoteTileFound (eTileArr : CommunicationActivity[], eTile : CommunicationActivity) : number {\r\n let index = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTileArr)\r\n && eTileArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.communicationType)\r\n && (eTile.communicationType.toLowerCase().indexOf('notification') !== -1)\r\n || (eTile.communicationType.toLowerCase().indexOf('note') !== -1)){\r\n let i = 0;\r\n for (const e of eTileArr) {\r\n if (e.communicationSubType.indexOf(eTile.communicationSubType) !== -1 && DateStringServiceStatic.compareDate(eTile.date, e.date) > 0){\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n i++;\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n isSenderFound (senders : Communicator[], sender : Communicator) : number {\r\n let index = -1;\r\n if (senders.length > 0 && sender) {\r\n let i = 0;\r\n for (const e of senders) {\r\n if (e.sitUserId === sender.sitUserId) {\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n i++;\r\n }\r\n }\r\n return index;\r\n }\r\n // -----------------------------------------------------------\r\n nullPromise () : any {\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n }, 500);\r\n clearTimeout(this.timer);\r\n if (this.timer) {\r\n this.timerArray.push(this.timer);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n populateSubTypeMailBox (mailBox : MailBox, allEnotes : CommunicationActivity[]) : MailBox {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailBox)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(allEnotes)\r\n && allEnotes.length > 0) {\r\n mailBox.myAllEnotes = allEnotes;\r\n\r\n // debugger;\r\n this.mailBox.myAllEnotes.map(e => {\r\n switch (e.communicationSubType.toLowerCase()) {\r\n case 'buddy':\r\n // debugger;\r\n this.mailBox.myBuddyEnotes.push(JSON.parse(JSON.stringify(e)));\r\n this.mailBox.buddyTotal = this.mailBox.myBuddyEnotes.length;\r\n this.mailBox.newBuddyTotal = this.getNewMemberActivityNotificationTotal(mailBox.myBuddyEnotes, 'buddy');\r\n this.mailBox.allTotal = this.mailBox.allTotal + mailBox.buddyTotal;\r\n this.mailBox.allNewTotal = this.mailBox.allNewTotal + mailBox.newBuddyTotal;\r\n break;\r\n case 'friend':\r\n // debugger;\r\n this.mailBox.myFriendEnotes.push(JSON.parse(JSON.stringify(e)));\r\n this.mailBox.friendTotal = this.mailBox.myFriendEnotes.length;\r\n this.mailBox.newBuddyTotal = this.getNewMemberActivityNotificationTotal(mailBox.myFriendEnotes, 'friend');\r\n this.mailBox.allTotal = this.mailBox.allTotal + this.mailBox.friendTotal;\r\n this.mailBox.allNewTotal = this.mailBox.allNewTotal + mailBox.newFriendTotal;\r\n break;\r\n case 'like':\r\n // debugger;\r\n this.mailBox.myLikeEnotes.push(JSON.parse(JSON.stringify(e)));\r\n this.mailBox.likeTotal = this.mailBox.myLikeEnotes.length;\r\n this.mailBox.newBuddyTotal = this.getNewMemberActivityNotificationTotal(mailBox.myLikeEnotes, 'like');\r\n this.mailBox.allTotal = this.mailBox.allTotal + this.mailBox.likeTotal;\r\n this.mailBox.allNewTotal = this.mailBox.allNewTotal + mailBox.newLikeTotal;\r\n break;\r\n case 'star':\r\n // debugger;\r\n this.mailBox.myStarEnotes.push(JSON.parse(JSON.stringify(e)));\r\n this.mailBox.starTotal = this.mailBox.myStarEnotes.length;\r\n this.mailBox.newBuddyTotal = this.getNewMemberActivityNotificationTotal(mailBox.myStarEnotes, 'star');\r\n this.mailBox.allTotal = this.mailBox.allTotal + this.mailBox.starTotal;\r\n this.mailBox.allNewTotal = this.mailBox.allNewTotal + mailBox.newStarTotal;\r\n break;\r\n case 'track':\r\n this.mailBox.myTrackEnotes.push(JSON.parse(JSON.stringify(e)));\r\n this.mailBox.trackTotal = this.mailBox.myTrackEnotes.length;\r\n this.mailBox.newBuddyTotal = this.getNewMemberActivityNotificationTotal(mailBox.myTrackEnotes, 'track');\r\n this.mailBox.allTotal = this.mailBox.allTotal + this.mailBox.trackTotal;\r\n this.mailBox.allNewTotal = this.mailBox.allNewTotal + mailBox.newTrackTotal;\r\n break;\r\n case 'unlock':\r\n this.mailBox.myUnlockEnotes.push(JSON.parse(JSON.stringify(e)));\r\n this.mailBox.unlockTotal = this.mailBox.myUnlockEnotes.length;\r\n this.mailBox.newBuddyTotal = this.getNewMemberActivityNotificationTotal(mailBox.myUnlockEnotes, 'unlock');\r\n this.mailBox.allTotal = this.mailBox.allTotal + this.mailBox.unlockTotal;\r\n this.mailBox.allNewTotal = this.mailBox.allNewTotal + mailBox.newUnlockTotal;\r\n break;\r\n case 'wink':\r\n // debugger;\r\n this.mailBox.myWinkEnotes.push(JSON.parse(JSON.stringify(e)));\r\n this.mailBox.winkTotal = this.mailBox.myWinkEnotes.length;\r\n this.mailBox.newBuddyTotal = this.getNewMemberActivityNotificationTotal(mailBox.myWinkEnotes, 'wink');\r\n this.mailBox.allTotal = this.mailBox.allTotal + this.mailBox.winkTotal;\r\n this.mailBox.allNewTotal = this.mailBox.allNewTotal + mailBox.newWinkTotal;\r\n break;\r\n }\r\n })\r\n\t\t}\r\n return mailBox;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // Currently in use\r\n // ---------------------------------------------------------------\r\n prepareEnoteForView (enote : CommunicationActivity) : Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote)) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.sender)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.sender.primaryImage)) {\r\n enote.sender.primaryImage = JsRegExpServiceStatic.normalizeImageData(enote.sender.primaryImage);\r\n // enote.sender.primaryImage = JsRegExpServiceStatic.setUrlForImageData(enote.sender.primaryImage);\r\n }\r\n else {\r\n enote.sender.primaryImage = 'url(\\'/photos/DefaultImageMale.jpg\\')';\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.memberActivity)) {\r\n // debugger;\r\n this.kvGlyph = this.createActionGlyphicon(enote);\r\n // debugger;\r\n enote.kvGlyph = JSON.parse(JSON.stringify(this.kvGlyph));\r\n }\r\n // debugger;\r\n var tEnoteTile = JSON.parse(JSON.stringify(enote));\r\n this.dictionaryService.updateDictionary(tEnoteTile, 'myNotification', tEnoteTile.notificationActivityId);\r\n // debugger;\r\n var ttEnoteTile = JSON.parse(JSON.stringify(enote));\r\n this.dictionaryService.updateDictionary(ttEnoteTile, 'myAllEnote', ttEnoteTile.notificationActivityId);\r\n // debugger;\r\n resolve(tEnoteTile);\r\n // debugger; \r\n }\r\n else {\r\n reject(null);\r\n }\r\n })\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n processCommunicatorResult (sitUserId : number, result : any) : Promise {\r\n let date = new Date();\r\n let commCator : Communicator = new Communicator();\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n if (result) {\r\n // debugger;\r\n const bn = result;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n commCator = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Communicator;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commCator)) {\r\n EmitterSubjectService.emitCommunicator(commCator);\r\n resolve(commCator);\r\n }\r\n else {\r\n reject('Communicator data is null or empty');\r\n }\r\n }\r\n else {\r\n reject('encrypted Communicator data is null or empty');\r\n }\r\n }\r\n else {\r\n this.message = 'the result of enoteService.processCommunicatorResult (sitUserId:\\'' + sitUserId + '\\') the promise was rejected;\\n
result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n reject(this.message);\r\n }\r\n return this.nullPromise();\r\n }).catch((error) => {\r\n console.log(date.getTime() + 'enoteService.processCommunicatorResult (sitUserId: ' + sitUserId + ') retrned a null promise.');\r\n })\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // Note: this method should accumulate all enotes.\r\n // Therefore, we use class-scoped this.mailBox.\r\n // ---------------------------------------------------------------\r\n // Not in use ?\r\n // ---------------------------------------------------------------\r\n processEnoteResult (result : BoxNonceEntity ): Observable\r\n { \r\n // debugger;\r\n let date = new Date();\r\n let enote : CommunicationActivity = new CommunicationActivity();\r\n let unsalted : any;\r\n let senderSitUserId = 0;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n return new Observable((subscriber) => {\r\n // debugger; \r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n unsalted = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn));\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n let dateAssay : any;\r\n let senderSitUserId = 0;\r\n let receiverSitUserId = 0;\r\n // debugger;\r\n enote = unsalted; \r\n // debugger;\r\n // Note: on enote.Date, sometimes there is only UNIX epoch time, so we use receiver.date since it's the latest timestamp of the communication\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.date)) {\r\n dateAssay = DateStringServiceStatic.getDateAssayOfCsTicks(enote.date);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dateAssay)) {\r\n enote.dateFormatted = dateAssay.dateFormatted;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.subject)) {\r\n enote.subjectShort = this.editNotificationSubject(enote.subject);\r\n }\r\n // ----------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.messageBody)) {\r\n if (enote.messageBody.length >= 150) {\r\n enote.messageBodyShort = enote.messageBody.slice(0, 160) + '...';\r\n }\r\n else {\r\n enote.messageBodyShort = enote.messageBody;\r\n }\r\n }\r\n var tEnoteTile = JSON.parse(JSON.stringify(enote));\r\n this.dictionaryService.updateDictionary(tEnoteTile, 'myNotification', tEnoteTile.notificationActivityId);\r\n var ttEnoteTile = JSON.parse(JSON.stringify(enote));\r\n this.dictionaryService.updateDictionary(ttEnoteTile, 'myAllEnote', ttEnoteTile.notificationActivityId);\r\n subscriber.next(enote);\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n this.message = date.getTime() + 'provided result was null or undefined in enoteService.processEnoteResult(sitUserId:\\'' + this.loginSuccess.signedInUserId + '\\');\\n result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n console.log(this.message);\r\n } \r\n }\r\n // ---------------------------------------------------------------\r\n // Currently in use\r\n // ---------------------------------------------------------------\r\n processMyNotificationResults (result : BoxNonceEntity) : Observable {\r\n // debugger;\r\n let date = new Date();\r\n let enote : CommunicationActivity = new CommunicationActivity();\r\n let enoteArr : CommunicationActivity[] = [];\r\n let unsalted : any;\r\n let senderSitUserId = 0;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n return new Observable((subscriber) => {\r\n // debugger; \r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n unsalted = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn));\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n let dateAssay : any;\r\n let senderSitUserId = 0;\r\n let receiverSitUserId = 0;\r\n // debugger;\r\n enoteArr = unsalted as CommunicationActivity[];\r\n // debugger;\r\n // Note: on enote.Date, sometimes there is only UNIX epoch time, so we use receiver.date since it's the latest timestamp of the communication\r\n for (var e of enoteArr)\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.date)) {\r\n dateAssay = DateStringServiceStatic.getDateAssayOfCsTicks(e.date);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dateAssay)) {\r\n e.dateFormatted = dateAssay.dateFormatted;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.subject)) {\r\n e.subjectShort = this.editNotificationSubject(e.subject);\r\n }\r\n // ----------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.messageBody)) {\r\n if (e.messageBody.length >= 150) {\r\n e.messageBodyShort = e.messageBody.slice(0, 160) + '...';\r\n }\r\n }\r\n\r\n this.prepareEnoteForView(e).then(data => {\r\n e = data;\r\n })\r\n }\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.myNotificationDictionary, 'myNotification', this.loginSuccess.signedInUserId);\r\n\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.myAllEnoteDictionary, 'myAllEnote', this.loginSuccess.signedInUserId);\r\n\r\n // debugger;\r\n subscriber.next(this.dictionaryService.myNotificationDictionary.values());\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n this.message = date.getTime() + 'provided result was null or undefined in enoteService.processEnoteResult(sitUserId:\\'' + this.loginSuccess.signedInUserId + '\\');\\n result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n console.log(this.message);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n processNewNotificationResult (result : BoxNonceEntity) : Observable {\r\n // debugger;\r\n let date = new Date();\r\n let enote : CommunicationActivity = new CommunicationActivity();\r\n let unsalted : any;\r\n let senderSitUserId = 0;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n return new Observable((subscriber) => {\r\n // debugger; \r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n unsalted = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn));\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n let dateAssay : any;\r\n let senderSitUserId = 0;\r\n let receiverSitUserId = 0;\r\n // debugger;\r\n enote = unsalted as CommunicationActivity;\r\n // debugger;\r\n // Note: on enote.Date, sometimes there is only UNIX epoch time, so we use receiver.date since it's the latest timestamp of the communication\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.date)) {\r\n dateAssay = DateStringServiceStatic.getDateAssayOfCsTicks(enote.date);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dateAssay)) {\r\n enote.dateFormatted = dateAssay.dateFormatted;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.subject)) {\r\n enote.subjectShort = this.editNotificationSubject(enote.subject);\r\n }\r\n // ----------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.messageBody)) {\r\n if (enote.messageBody.length >= 150) {\r\n enote.messageBodyShort = enote.messageBody.slice(0, 160) + '...';\r\n }\r\n }\r\n\r\n this.prepareEnoteForView(enote).then(data => {\r\n enote = data;\r\n })\r\n \r\n // debugger;\r\n // Note: saving one enote at a time into indexedDB is too expensive, so don't save it here:\r\n // ----------------------------------------------------------------------------------------\r\n //this.dbDexieToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // this.dictionaryService.myNotificationDictionary, 'myNotification', this.loginSuccess.signedInUserId);\r\n // ----------------------------------------------------------------------------------------\r\n\r\n subscriber.next(enote);\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n this.message = date.getTime() + 'provided result was null or undefined in enoteService.processEnoteResult(sitUserId:\\'' + this.loginSuccess.signedInUserId + '\\');\\n result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n console.log(this.message);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Tested and works! August 15, 2020.\r\n // Currently in use\r\n // Note: this is intended to be deprecated. But varify it's necessity first.\r\n // This feature is for premium members!!!\r\n // ---------------------------------------------------------------\r\n putInPremiumEnoteStorage (enote : CommunicationActivity, mailBox: MailBox) : Observable {\r\n var counter = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailBox)\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailBox.enoteBox)\r\n || mailBox.enoteBox.allPremiumEnotes.length === 0) {\r\n mailBox.enoteBox = new EnoteBox();\r\n counter++;\r\n console.log('in putInPremiumEnoteStorage()->this.mailBox is initialized ' + counter + ' times.');\r\n }\r\n\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote)) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n if (DateStringServiceStatic.compareSitUserKeys(this.loginSuccess.signedInUserKey, enote.receiverSitUserKey) === 0) {\r\n // debugger;\r\n switch (enote.receiverAction.toString().toLowerCase()) {\r\n case 'received': case 'read': case 'madeunread':\r\n enote.boxName = 'myAllEnotesBox';\r\n // mailBox.enoteBox.inboxPremiumEnotes = this.sortEnoteBoxByDate(this.uniqueAddEnoteTile(mailBox.enoteBox.inboxPremiumEnotes, enote, mailBox.enoteBox.allPremiumEnotes));\r\n // OR\r\n // mailBox.enoteBox.inboxPremiumEnotes = this.sortEnoteBoxByDate(this.uniqueAddNotificationTile(mailBox.enoteBox.inboxPremiumEnotes, enote)); //\r\n // mailBox.enoteBox.inboxPremiumEnotes = this.sortEnoteBoxByDate(ArraySupportServiceStatic.uniquelyMergeKeepingLatestInCommunicationActivityArrays(mailBox.enoteBox.inboxPremiumEnotes, [enote]));\r\n // mailBox.enoteBox.allPremiumEnotes = ArraySupportServiceStatic.uniquelyMergeKeepingLatestInCommunicationActivityArrays(mailBox.enoteBox.allPremiumEnotes, mailBox.enoteBox.inboxPremiumEnotes);\r\n // debugger;\r\n mailBox.enoteBox.inboxPremiumEnotes.push(enote);// = this.removeEarlierOrDuplicate(enote, mailBox.enoteBox.inboxPremiumEnotes); // ArraySupportServiceStatic.mergeArraysUniq(mailBox.enoteBox.inboxPremiumEnotes, [ enote ]);\r\n //mailBox.myAllEnotes = this.uniquelyMergeKeepingLatestInCommunicationActivityArrays(mailBox.myAllEnotes, mailBox.enoteBox.inboxPremiumEnotes);\r\n //mailBox.myAllEnotes = this.quickSortService.quick_sort(mailBox.myAllEnotes)\r\n break;\r\n case 'saved': case 'readandsaved':\r\n enote.boxName = 'savedBox';\r\n // debugger;\r\n mailBox.enoteBox.savedPremiumEnotes.push(enote); \r\n break;\r\n case 'trashed': case 'readandtrashed':\r\n enote.boxName = 'trashedBox';\r\n mailBox.enoteBox.trashedPremiumEnotes.push(enote); \r\n break;\r\n }\r\n }\r\n else if (DateStringServiceStatic.compareSitUserKeys(this.loginSuccess.signedInUserKey, enote.senderSitUserKey) === 0) {\r\n // debugger;\r\n switch (enote.senderAction.toString().toLowerCase()) {\r\n case 'sent': case 'replied':\r\n enote.boxName = 'sentBox';\r\n mailBox.enoteBox.sentPremiumEnotes.push(enote);\r\n break;\r\n }\r\n }\r\n\r\n subscriber.next(mailBox.enoteBox);\r\n } \r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // TODO: Test\r\n // Currently in use\r\n // ---------------------------------------------------------------\r\n putInEnoteStorageByCommunicationSubType (enote : CommunicationActivity, mailBox:MailBox) : Observable {\r\n var allNoteArrAndTypeNoteArr : any;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailBox)\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailBox.myAllEnotes)\r\n || mailBox.myAllEnotes.length === 0 ) {\r\n mailBox = new MailBox();\r\n\t\t}\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.communicationSubType)) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n if (DateStringServiceStatic.compareSitUserKeys(this.loginSuccess.signedInUserKey, enote.senderSitUserKey) === 0\r\n || DateStringServiceStatic.compareSitUserKeys(this.loginSuccess.signedInUserKey, enote.receiverSITUserKey) === 0) {\r\n // debugger;\r\n\r\n // we will need to get two models returned (typeEnotes and myAllEnotes), \r\n // hence we use this new model allNoteArrandTypeNoteArr that contians both.\r\n // -----------------------------------------------------------------------\r\n switch (enote.communicationSubType.toString().toLowerCase()) {\r\n case 'buddy':\r\n enote.boxName = 'Buddy';\r\n // allNoteArrAndTypeNoteArr = this.uniqueAddEnoteTile(mailBox.myBuddyEnotes, enote, mailBox.myAllEnotes);\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(allNoteArrAndTypeNoteArr)) {\r\n // mailBox.myBuddyEnotes = allNoteArrAndTypeNoteArr.arr;\r\n // mailBox.myAllEnotes = allNoteArrAndTypeNoteArr.allArr;\r\n //}\r\n // OR\r\n // mailBox.myBuddyEnotes = this.sortEnoteBoxByDate(this.uniqueAddNotificationTile(mailBox.myBuddyEnotes, enote)); //\r\n // mailBox.myAllEnotes = this.uniqueAddNotificationTile(mailBox.myAllEnotes, enote);\r\n // debugger;\r\n // mailBox.myBuddyEnotes = ArraySupportServiceStatic.uniquelyMergeKeepingLatestInCommunicationActivityArrays(mailBox.myBuddyEnotes, [ enote ]);\r\n // mailBox.myAllEnotes = ArraySupportServiceStatic.uniquelyMergeKeepingLatestInCommunicationActivityArrays(mailBox.myAllEnotes, mailBox.myBuddyEnotes);\r\n // \r\n mailBox.myBuddyEnotes.push(enote); // = this.removeEarlierOrDuplicate(enote, mailBox.myBuddyEnotes); // ArraySupportServiceStatic.mergeArraysUniq(mailBox.myBuddyEnotes, [ enote ]);\r\n //mailBox.myAllEnotes = this.uniquelyMergeKeepingLatestInCommunicationActivityArrays(mailBox.myAllEnotes, mailBox.myBuddyEnotes);\r\n //debugger;\r\n //mailBox.myAllEnotes = this.quickSortService.quick_sort(mailBox.myAllEnotes);\r\n debugger;\r\n // debugger;\r\n break;\r\n case 'friend':\r\n enote.boxName = 'Friend';\r\n \r\n mailBox.myFriendEnotes.push(enote);\r\n debugger;\r\n break;\r\n case 'like':\r\n enote.boxName = 'Like';\r\n mailBox.myLikeEnotes.push(enote);\r\n debugger;\r\n break;\r\n case 'star':\r\n enote.boxName = 'Star';\r\n mailBox.myStarEnotes.push(enote); \r\n break;\r\n case 'track':\r\n enote.boxName = 'Track';\r\n mailBox.myTrackEnotes.push(enote);\r\n break;\r\n case 'unlock':\r\n enote.boxName = 'Unlock';\r\n mailBox.myUnlockEnotes.push(enote); \r\n break;\r\n case 'wink':\r\n enote.boxName = 'Wink';\r\n mailBox.myWinkEnotes.push(enote); \r\n // debugger;\r\n break;\r\n }\r\n // debugger;\r\n subscriber.next(mailBox);\r\n } \r\n } \r\n });\r\n }\r\n // -----------------------------------------------------------\r\n removeEarlierOrDuplicate (enote : CommunicationActivity, allArr : CommunicationActivity[]) : CommunicationActivity[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote.communicationSubType)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(allArr) && allArr.length > 0) {\r\n for (let e of allArr) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.communicationSubType)) {\r\n if (e.communicationSubType.toLowerCase().indexOf(enote.communicationSubType.toLowerCase()) !== -1) {\r\n if (enote.receiverSitUserId == e.receiverSitUserId\r\n && enote.senderSitUserId == e.senderSitUserId) {\r\n e = CopyServiceStatic.copyCommunicationActivityIfExists(e, enote);\r\n }\r\n }\r\n else {\r\n allArr.push(enote);\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n allArr.push(enote);\r\n }\r\n return allArr;\r\n }\r\n else return null;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n salt (model : any ): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt( JSON.stringify( model ) );\r\n return this.boxNonceEntity;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n sort( mailArr: CommunicationActivity[] ): CommunicationActivity[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailArr) && mailArr.length > 0) {\r\n mailArr.sort( (a, b) => {\r\n return a.communicationActivityId - b.communicationActivityId;\r\n });\r\n }\r\n return mailArr;\r\n }\r\n // ---------------------------------------------------------------\r\n sortEnoteBoxByDate( mailArr: CommunicationActivity[] ): CommunicationActivity[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mailArr) && mailArr.length > 0) {\r\n mailArr.sort( (a, b) => {\r\n // return a.date.localeCompare(b.date);\r\n return Number(b.date) - Number(a.date);\r\n });\r\n }\r\n return mailArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Tested works, on 202107101600\r\n // ---------------------------------------------------------------\r\n uniqueAddEnoteTileInArrays( arr: CommunicationActivity[], eTile: CommunicationActivity, allArr: CommunicationActivity[] ): any {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arr )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( eTile )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.communicationType)\r\n && ( eTile.communicationType.toLowerCase().indexOf( 'notification' ) !== -1 )\r\n || eTile.communicationType.toLowerCase().indexOf( 'note' ) !== -1\r\n ){\r\n // debugger;\r\n if ( arr.length > 0 )\r\n {\r\n \r\n arr = arr.sort((a, b) => { return b.communicationActivityId - a.communicationActivityId; } );\r\n // debugger;\r\n let j = 0;\r\n for ( const e of arr )\r\n {\r\n if ( e.communicationSubType.toLowerCase().indexOf( eTile.communicationSubType.toLowerCase() ) !== -1 // same subType\r\n && e.senderSitUserId === eTile.senderSitUserId ) // same sender\r\n {\r\n // debugger;\r\n // Note: (this.dateTick, that.dateTick): if that.DateTicks - this.dateTicks >= 0, then we add\r\n // Date cane be in ticks(numbers) or formatted like yyyymmddhhmmssAMPM\r\n // Date: Written on 20210709\r\n // -----------------------------------------------------------------------------------------------------------\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.date)) {\r\n let diff = Number(eTile.date) - Number(e.date);\r\n\r\n if (diff > 0) {\r\n // debugger;\r\n arr.splice(j, 1, eTile);\r\n\r\n // Note: since allArray have a different length, hence index, we recompute just for the allArray here:\r\n // ---------------------------------------------------------------------------------------------------\r\n let aIndex = this.isEnoteTileFound(allArr, eTile);\r\n if (aIndex >= 0) {\r\n allArr.splice(aIndex, 1, eTile);\r\n }\r\n else {\r\n allArr.push(eTile);\r\n }\r\n\r\n break;\r\n }\r\n else {\r\n // do nothing => older/earlier that.dateTicks, so we discard it\r\n }\r\n }\r\n }\r\n else\r\n {\r\n // debugger;\r\n arr.push( eTile ); // add\r\n allArr.push( eTile );\r\n break;\r\n }\r\n j++;\r\n }\r\n }\r\n else // add the first item\r\n {\r\n // debugger;\r\n arr.push( eTile );\r\n allArr.push( eTile );\r\n }\r\n // debugger;\r\n return {\r\n arr: arr,\r\n allArr: allArr,\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n uniqueAddEnoteTile (arr : CommunicationActivity[], eTile : CommunicationActivity) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.communicationType)\r\n && (eTile.communicationType.toLowerCase().indexOf('notification') !== -1)\r\n || eTile.communicationType.toLowerCase().indexOf('note') !== -1\r\n ) {\r\n // debugger;\r\n if (arr.length > 0)\r\n {\r\n\r\n arr = arr.sort((a, b) => { return b.communicationActivityId - a.communicationActivityId; });\r\n // debugger;\r\n let j = 0;\r\n for (const e of arr)\r\n {\r\n if (e.communicationSubType.toLowerCase().indexOf(eTile.communicationSubType.toLowerCase()) !== -1 // same subType\r\n && e.senderSitUserId === eTile.senderSitUserId) // same sender\r\n {\r\n // debugger;\r\n // Note: (this.dateTick, that.dateTick): if that.DateTicks - this.dateTicks >= 0, then we add\r\n // Date cane be in ticks(numbers) or formatted like yyyymmddhhmmssAMPM\r\n // Date: Written on 20210709\r\n // -----------------------------------------------------------------------------------------------------------\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.date)) {\r\n let diff = Number(eTile.date) - Number(e.date);\r\n\r\n if (diff > 0) {\r\n // debugger;\r\n arr.splice(j, 1, eTile);\r\n break;\r\n }\r\n else {\r\n // do nothing => older/earlier that.dateTicks, so we discard it\r\n }\r\n }\r\n else {\r\n // debugger;\r\n arr.push(eTile); // add\r\n break;\r\n } \r\n } \r\n j++;\r\n } \r\n }\r\n else {\r\n // debugger;\r\n arr.push(eTile); // add\r\n } \r\n } \r\n return arr; \r\n }\r\n // ----------------------------------------------------------------------\r\n public updateNotificationDictionaries (data : CommunicationActivity) : void {\r\n if (!StringServiceStatic.isNullOrEmpty(data)) {\r\n this.dictionaryService.updateDictionary(data, 'myNotification', data.notificationActivityId);\r\n this.dictionaryService.updateDictionary(data, 'myAllEnote', data.notificationActivityId);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n public uniquelyMergeKeepingLatestInCommunicationActivityArrays (destArr : CommunicationActivity[], srcArr : CommunicationActivity[]) : CommunicationActivity[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destArr) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(srcArr)) {\r\n // debugger;\r\n if (destArr.length > 1) {\r\n // debugger;\r\n destArr.sort((a, b) => {\r\n var aDate = parseInt(a.date)\r\n var bDate = parseInt(b.date)\r\n return bDate - aDate;\r\n })\r\n }\r\n if (srcArr.length > 0) {\r\n\r\n var index = -1;\r\n srcArr.map(e => {\r\n if (destArr.length > 0) {\r\n index = this.isLatestEnoteTileFound(destArr, e);\r\n }\r\n\r\n // debugger;\r\n if (index === -1) {\r\n destArr.push(e);\r\n // debugger;\r\n }\r\n else {\r\n if (destArr[ index ].communicationSubType == e.communicationSubType && destArr[ index ].date <= e.date) {\r\n // destArr[ index ] = e;\r\n destArr.splice(index, 1, e);\r\n // debugger;\r\n }\r\n }\r\n })\r\n }\r\n }\r\n return destArr;\r\n }\r\n // ---------------------------------------------------------------\r\n uniqueAddNotificationTile( arr: CommunicationActivity[], eTile: CommunicationActivity ): CommunicationActivity[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eTile.communicationType)\r\n && (eTile.communicationType.toLowerCase().indexOf('notification') !== -1)\r\n || (eTile.communicationType.toLowerCase().indexOf('note') !== -1)) {\r\n const index = this.isEnoteTileFound(arr, eTile);\r\n if (index < 0) {\r\n arr.push(eTile);\r\n }\r\n else {\r\n arr[index] = CopyServiceStatic.copyCommunicationActivityIfExists(arr[index], eTile);\r\n }\r\n return arr;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n updateNotificationReceiverAction ( eNote : CommunicationActivity ) : Promise\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess ) || this.loginSuccess.signedInUserId === 0 )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n }\r\n // debugger;\r\n return new Promise( ( resolve, reject ) =>\r\n {\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n eNote.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = this.salt( eNote );\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.box )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.nonce ) )\r\n {\r\n this.httpService.postObservable( 'api/Enote/UpdateNotificationReceiverAction', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n }, 'json2text').subscribe( result =>\r\n {\r\n // debugger;\r\n this.processEnoteResult(result).subscribe(data => {\r\n\r\n let tEnote = data as CommunicationActivity;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tEnote)) {\r\n // debugger;\r\n resolve(tEnote);\r\n }\r\n else {\r\n this.message = 'enoteService. updateNotificationReceiverAction(eNote: ' + this.loginSuccess.signedInUserId + ') promise returned a null or undefined result;';\r\n reject(this.message);\r\n }\r\n });\r\n })\r\n }\r\n else {\r\n this.message = 'emailService. updateNotificationReceiverAction(eNote: ' + this.loginSuccess.signedInUserId + ') promise is rejected;';\r\n reject(this.message);\r\n }\r\n }\r\n } );\r\n }\r\n // =================================================================================================\r\n // ---------------------------------------------------------------\r\n // Currently NOT in use\r\n // ---------------------------------------------------------------\r\n prepareEnotesForView (enotes : CommunicationActivity[]) : Observable {\r\n let communicatorService = this.communicatorService;\r\n var senderCount = 0;\r\n var tEnoteTile : any;\r\n var eNotes : CommunicationActivity[] = enotes;\r\n var tCommCator : Communicator = new Communicator();\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNotes) && eNotes.length > 0) {\r\n // debugger;\r\n for (var e of eNotes) {\r\n // temporary:\r\n // EmitterSubjectService.emitHideSpinner('');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.sender)) {\r\n if (e.sender.sitUserId > 0) {\r\n // debugger;\r\n tCommCator.sitUserId = e.sender.sitUserId;\r\n tCommCator.communicationActivityId = e.notificationActivityId; // important!!\r\n communicatorService.getCommunicatorWithImage(tCommCator).subscribe(data => {\r\n // Note: update all enotes after getting senders' data:\r\n // ----------------------------------------------------\r\n var commcator = data;\r\n for (var s of eNotes) {\r\n // debugger;\r\n if (s.notificationActivityId === commcator.communicationActivityId) {\r\n s.sender = commcator;\r\n senderCount++;\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(s.sender.primaryImage)) {\r\n // debugger;\r\n s.sender.primaryImage = '/photos/DefaultImageMale.jpg';\r\n }\r\n tEnoteTile = JSON.parse(JSON.stringify(s));\r\n tEnoteTile.communicationSubType = s.memberActivity; // backend holds communicationSubType as memberActivity\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tEnoteTile.memberActivity)) {\r\n // debugger;\r\n this.kvGlyph = this.createActionGlyphicon(tEnoteTile);\r\n // debugger;\r\n tEnoteTile.kvGlyph = this.kvGlyph;\r\n }\r\n\r\n // debugger;\r\n // EmitterSubjectService.emitEnoteTile(tEnoteTile); // important!\r\n\r\n // this.myAllEnoteDictionary.set(tEnoteTile.communicationActivityId, tEnoteTile);\r\n // this.dictionaryService.updateDictionary(tEnoteTile, 'MyNotification', tEnoteTile.notificationActivityId);\r\n\r\n var enoteTile = JSON.parse(JSON.stringify(tEnoteTile));\r\n this.dictionaryService.updateDictionary(enoteTile, 'myNotification', tEnoteTile.notificationActivityId);\r\n\r\n var ttEnoteTile = JSON.parse(JSON.stringify(tEnoteTile));\r\n this.dictionaryService.updateDictionary(ttEnoteTile, 'myAllEnote', ttEnoteTile.notificationActivityId);\r\n\r\n // debugger;\r\n subscriber.next(this.dictionaryService.myNotificationDictionary.values());\r\n }\r\n\r\n if (enotes.length === senderCount) {\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.myNotificationDictionary, 'MyNotification', this.loginSuccess.signedInUserId);\r\n\r\n EmitterSubjectService.emitHideSpinner('');\r\n // debugger;\r\n }\r\n }\r\n })\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n getEnote (commActId : number, isInbox : boolean) : Observable {\r\n let date = new Date();\r\n let tEnote : any;\r\n const enote : CommunicationActivity = new CommunicationActivity();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (commActId > 0) {\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n const bnComm : Communication = new Communication();\r\n bnComm.communicationActivityId = commActId;\r\n bnComm.isInbox = isInbox;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/Enote/GetEnote',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce)\r\n }, 'json2text').subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n this.processEnoteResult(result).subscribe(data => { // data typeof CommunicationActivity\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // debugger; \r\n subscriber.next(data);\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'the processEnoteResult() of the result of getEnote(sitUserId:\\\"' + this.loginSuccess.signedInUserId + '\\\") was null or undefined.');\r\n console.log(this.message);\r\n\r\n }\r\n });\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'thr promise result in getEnote(sitUserId:\\\"' + this.loginSuccess.signedInUserId + '\\\") was null or undefined;\\n result: ' + result);\r\n console.log(this.message);\r\n\r\n }\r\n })\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'the box or nonce of getEnote(sitUserId:\\\"' + this.loginSuccess.signedInUserId + '\\\") was null or undefined.');\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n console.log(this.message);\r\n\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'the loginSucess.signedInUserId of getEnote(sitUserId:\\\"' + this.loginSuccess.signedInUserId + '\\\") was 0 or null or undefined');\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n console.log(this.message);\r\n\r\n }\r\n })\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + '| enoteService.getEnote (commActId : ' + commActId + ') is zero(0).');\r\n console.log(this.message);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n getEnoteIds () : Observable {\r\n let date = new Date();\r\n let enote : CommunicationActivity = new CommunicationActivity();\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n\r\n let bnComm : Communication = new Communication();\r\n bnComm.isInbox = true;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n bnComm.sitUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('api/Enote/FetchNotificationIds',\r\n JSON.stringify({\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }), 'json2text').subscribe(result => {\r\n if (result) {\r\n // debugger;\r\n let bn = result;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n this.commActivityIds = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as number[];\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.commActivityIds) && this.commActivityIds.length > 0) {\r\n DictionaryServiceStatic.updateDictionary(this.commActivityIds, 'myNotificationId', this.loginSuccess.signedInUserId);\r\n // debugger; \r\n }\r\n subscriber.next(this.commActivityIds);\r\n }\r\n else {\r\n this.message = date.getTime() + 'Error occured in getMyEnoteIds(sitUserId:\"' + this.loginSuccess.signedInUserId + '\");\\n result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n }\r\n }\r\n else {\r\n this.message = date.getTime() + 'the promise result of getMyEnoteIds(sitUserId:\"' + this.loginSuccess.signedInUserId + '\") was null or undefined; result: ' + result;\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n }\r\n })\r\n }\r\n }\r\n else {\r\n this.message = date.getTime() + 'the promise result of getMyEnoteIds(sitUserId:\"' + this.loginSuccess.signedInUserId + '\") was null or undefined;';\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Deprecated\r\n // ---------------------------------------------------------------\r\n getMyEnoteTiles (ids : number[]) : Observable {\r\n let date = new Date();\r\n let totalEnotes = 0;\r\n let index = -1;\r\n // debugger;\r\n this.myEnoteTilesSubscriber = new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ids) && ids.length > 0) {\r\n this.commActivityIds = ids;\r\n // debugger; \r\n\r\n for (let i = 0; i < this.commActivityIds.length; i++) {\r\n index = i;\r\n // accumulate all unsalted enotes for View in the enoteTileEmitter\r\n debugger;\r\n this.getEnote(this.commActivityIds[ i ], true).subscribe((enote) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enote)) {\r\n // debugger;\r\n subscriber.next(enote);\r\n }\r\n else {\r\n this.message = 'getEnote(commActId: ' + this.commActivityIds[ i ] + ') returned result was null of undefined.';\r\n console.log(this.message);\r\n }\r\n if (i === this.commActivityIds.length) {\r\n // debugger;\r\n }\r\n })\r\n }\r\n }\r\n else {\r\n this.message = ' getMyEnoteTiles(commActIds: ) was null of undefined.';\r\n }\r\n })\r\n return this.myEnoteTilesSubscriber;\r\n }\r\n // ---------------------------------------------------------------\r\n // Deprecated!\r\n // ---------------------------------------------------------------\r\n getMyNotificationsOld (isinbox : boolean) : Observable {\r\n let date = new Date();\r\n let tEnote : any;\r\n var isInbox = isinbox\r\n\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n this.httpService.getObservable('api/Enote/GetMyNotifications', 'json2text').subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n this.processMyNotificationResults(result).subscribe(data => { // data typeof CommunicationActivity\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // debugger;\r\n subscriber.next(data);\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'the processMyNotificationResults() of the result of getMyNotifications() was null or undefined.');\r\n console.log(this.message);\r\n\r\n }\r\n });\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + 'thr promise result in getMyNotifications() was null or undefined;\\n result: ' + result);\r\n console.log(this.message);\r\n\r\n }\r\n })\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\"use strict\";\r\n\r\nimport { Inject, Injectable, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport * as signalR from '@microsoft/signalr';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Chat } from '../../models/chat/chat.model';\r\nimport { ChatMessage } from '../../models/chat/chatMessage.model';\r\nimport { ChatConnectionInfo } from '../../models/communication/chatConnectionInfo.model';\r\nimport { ChatService } from '../communicationServiceService/chatService';\r\nimport { CoreServiceService } from '../coreServiceService/coreServiceService.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { FR } from 'angular-mydatepicker';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class SignalRService implements OnInit, OnDestroy {\r\n public emitterDestroyed$ : Subject = new Subject();\r\n // ----------------------------------------------------------\r\n public cancellationToken : any;\r\n public chatConnectionInfo : ChatConnectionInfo = new ChatConnectionInfo();\r\n public isConnectionEstablished = false;\r\n public chat : Chat = new Chat();\r\n public newMessage : ChatMessage = new ChatMessage();\r\n public chatData : Chat[] = [];\r\n public count = 1;\r\n public delay = 500;\r\n public eventSource : any = null;\r\n public groupChatData : Chat[] = [];\r\n public hubConnection : signalR.HubConnection;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public senderEmail = '';\r\n public timer : any;\r\n public timerArr : any[] = [];\r\n // -----------------------------------------------------\r\n constructor (\r\n private activatedRoute : ActivatedRoute,\r\n private chatService : ChatService,\r\n private coreServiceService : CoreServiceService,\r\n @Inject(Window) window : Window) {\r\n // this.activatedRoute.params.subscribe(params => this.signedInUserId = params.id);\r\n\r\n }\r\n // -----------------------------------------------------------------------\r\n ngOnInit () {\r\n // Note: SignalR is initialized at ChatHistoryComponent. \r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.timerArr.map(e => clearInterval(e));\r\n }\r\n // -------------------------------------------------------------\r\n public connectAndJoin (): any {\r\n this.hubConnection = new signalR.HubConnectionBuilder()\r\n //.withUrl(\"https://slakez.com/chatHub\", {\r\n // withCredentials: false,\r\n // skipNegotiation: true,\r\n // transport: signalR.HttpTransportType.WebSockets }) \r\n .withUrl(\"/chatHub\", {\r\n withCredentials: false,\r\n skipNegotiation: true,\r\n transport: signalR.HttpTransportType.WebSockets })\r\n .configureLogging(signalR.LogLevel.Information)\r\n .build();\r\n \r\n this.hubConnection.start().then(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.hubConnection)) {\r\n this.hubConnection.invoke('Join', this.loginSuccess.signedInUserKey)\r\n .then((data : any) => {\r\n // debugger;\r\n console.log('user joined successfully: ' + data);\r\n // alert('user joined successfully: ' + data);\r\n if (data) {\r\n // debugger;\r\n this.loginSuccess.hasJoinedSignalR = true;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n }\r\n })\r\n .catch((err : any) => console.log(err));\r\n }\r\n }).catch(function (err) {\r\n console.error(err);\r\n this.reconnect; \r\n })\r\n this.messageListeners(this.hubConnection);\r\n return this.hubConnection; \r\n }\r\n // -------------------------------------------------------------\r\n public reconnect () {\r\n console.log('reconnecting...');\r\n setTimeout(this.connectAndJoin(), 2000);\r\n}\r\n // -------------------------------------------------------------\r\n public messageListeners (hubConnection : any) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hubConnection)) {\r\n hubConnection.on('SendMessageToCaller', (function (data : any) {\r\n // debugger;\r\n var result1 : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.box)) {\r\n result1 = data;\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 1 ]) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 1 ].box)) {\r\n result1 = arguments[ 1 ];\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 0 ]) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 0 ].box)) {\r\n result1 = arguments[ 0 ];\r\n // debugger;\r\n }\r\n\r\n // debugger;\r\n\r\n EmitterSubjectService.emitChatMessage(result1);\r\n // console.log('Sent-message data: ' + result);\r\n // alert('Sent-message data: ' + result1);\r\n return true;\r\n }))\r\n\r\n // ----------------------------------------------------------\r\n hubConnection.on('SendMessage', (function (data : any) {\r\n // debugger;\r\n var result2 : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.box)) {\r\n result2 = data;\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 1 ]) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 1 ].box)) {\r\n result2 = arguments[ 1 ];\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 0 ]) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 0 ].box)) {\r\n result2 = arguments[ 0 ];\r\n // debugger;\r\n }\r\n\r\n // debugger;\r\n EmitterSubjectService.emitChatMessage(result2);\r\n // alert('Sent-message data: ' + result2);\r\n return true;\r\n }))\r\n\r\n // -------------------------------------------------------------\r\n hubConnection.on('SendNotification', (function (data : any) {\r\n // debugger;\r\n var result3 : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.box)) {\r\n result3 = data;\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 1 ]) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 1 ].box)) {\r\n result3 = arguments[ 1 ];\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 0 ]) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arguments[ 0 ].box)) {\r\n result3 = arguments[ 0 ];\r\n // debugger;\r\n }\r\n\r\n // debugger;\r\n EmitterSubjectService.emitNotificationActivity(result3);\r\n // alert('Sent-message data: ' + result2);\r\n return true;\r\n }))\r\n }\r\n }\r\n // -------------------------------------------------------------\r\n public sendMessage (messageBne : any) {\r\n\r\n if (StringServiceStatic.isNullOrEmpty(this.hubConnection)\r\n || signalR.HubConnectionState[ 'Connected' ] !== 'Connected') {\r\n this.hubConnection = this.connectAndJoin();\r\n // debugger;\r\n }\r\n\r\n if (!StringServiceStatic.isNullOrEmpty(this.hubConnection)\r\n && signalR.HubConnectionState[ 'Connected' ] === 'Connected') {\r\n // debugger;\r\n // alert('hub @SendMessage(): ');\r\n this.hubConnection.invoke(\"SendMessage\", messageBne).catch(function (err) {\r\n return console.error(err);\r\n });\r\n }\r\n else {\r\n this.sendMessage(messageBne);\r\n }\r\n }\r\n // -------------------------------------------------------------\r\n public sendNotification (messageBne : any) {\r\n\r\n if (StringServiceStatic.isNullOrEmpty(this.hubConnection)\r\n || signalR.HubConnectionState[ 'Connected' ] !== 'Connected') {\r\n this.hubConnection = this.connectAndJoin();\r\n // debugger;\r\n }\r\n\r\n if (!StringServiceStatic.isNullOrEmpty(this.hubConnection)\r\n && signalR.HubConnectionState[ 'Connected' ] === 'Connected') {\r\n // debugger;\r\n // alert('hub @SendMessage(): ');\r\n this.hubConnection.invoke(\"SendNotification\", messageBne).catch(function (err) {\r\n return console.error(err);\r\n });\r\n }\r\n else {\r\n this.sendNotification(messageBne);\r\n }\r\n }\r\n // -------------------------------------------------------------\r\n}","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { RemoteDataModel } from '../../models/data/remoteDataModel.model';\r\nimport { SitUserService } from '../commonServiceService/sitUserService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { ProfileTileService } from '../profileTileServiceService/profileTileService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ChatService } from './chatService';\r\nimport { EmailService } from './emailService';\r\nimport { EnoteService } from './enoteService';\r\n\r\n// --------------------------------------------------------------------------------------------------------------\r\n// Background-Processing-System-for-(Component /& Service)\r\n// There are two types of Background-Processing-Systems:\r\n// A) Background-Processing-System-for-Component\r\n// B) Background-Processing-System-for-Service\r\n//\r\n// There are two parts of each system which are publisher and subscriber. \r\n// In order to use this system any component/service must utilize the \r\n// following two publisher-subscriber-methods in EmitterSubjectService:\r\n// 1. publisher: \r\n// 1.1: emitBackgroundProcessMethodData (for both component & service vai `RemoteDataModel.isForComponent` property boolean flag)\r\n// 1.2: emitRunBackgroundProcessMethod\r\n//\r\n// 2. subscriber:\r\n// 2.1: backgroundProcessMethodDataEmitter-for-Component, -for-Service\r\n// 2.2: runBackgroundProcessMethodEmitter\r\n//\r\n// This service (HttpBackgroundService) will publish via emitBackgroundProcessingMethod.\r\n// and listen to / (subscribe to) runBackgroundProcessMethodEmitter.\r\n// \r\n//\r\n// Any component/service will publish their jobs via the emitRunBackgroundProcessMethod publisher.\r\n// The respective component/service will listen to backgroundProcessMethodEmitter to obtaine the data.\r\n//\r\n// The two systems has a common model for data-flow which is RemoteDataModel. When it is used for Component, \r\n// the `isForModel` property is set to true, which is the default value for the property, and\r\n// for Service the property is set to false. Setting this property is very important! otherwise the processed-data\r\n// will not arrive at the expected destination(s).\r\n//\r\n//\r\n// This service contains the channel to the background processing via it's loadRemoteDataInBackground() method.\r\n// This serivce has it's own HttpService copy injected to it, and it can provide the HttpService to others.\r\n// A possible scenario would be a component that wants to use both HttpService and HttpBackgroundService.\r\n// In this case, the component must obtain it's copy of the HttpService from HttpBackgroundService.\r\n// --------------------------------------------------------------------------------------------------------------\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SwBackgroundFetchService implements OnDestroy {\r\n \r\n // ----------------------------------------\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public rdm : RemoteDataModel = new RemoteDataModel();\r\n \r\n constructor (\r\n public chatService: ChatService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public emailService : EmailService,\r\n public enoteService : EnoteService,\r\n public profileTileService : ProfileTileService,\r\n public sitUserService : SitUserService,\r\n public router: Router,\r\n ) {\r\n // --------------------------------------------------------------\r\n // Backup example copy:\r\n // --------------------------------------------------------------\r\n //EmitterSubjectService.backgroundProcessMethodEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((result : RemoteDataModel) => {\r\n // debugger;\r\n // switch (result.methodName) {\r\n // case 'populateSitUserIdDictionariesFromIndexedDb':\r\n // this.dbDexieToDictionaryService.populateSitUserIdDictionariesFromIndexedDb();\r\n // break;\r\n // case 'getProfileTileIndividuallyFromServer':\r\n // this.profileTileService.getProfileTileIndividuallyFromServer(result.data);\r\n // debugger;\r\n // break;\r\n // default:\r\n // break;\r\n // } \r\n // });\r\n // --------------------------------------------------------------\r\n // EmitterSubjectService.runBackgroundProcessMethodEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((rdm : RemoteDataModel) => {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm)) {\r\n\r\n // // this.loadRemoteDataInBackground(rdm).then(result => {\r\n // this.runBackgroundProcessingMethod(rdm).subscribe(_rdm => {\r\n // // debugger;\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // // if (_rdm. instanceof RemoteDataModel) {\r\n // // debugger;\r\n // // rdm.data = result.data; // input data is replaced with output data with model's other data intact\r\n // // }\r\n // // else {\r\n // // debugger;\r\n // // rdm.data = result;\r\n\t\t//\t\t\t //}\r\n // // }\r\n // // else {\r\n // // // debugger;\r\n // // rdm.message = MessageBuilderServiceStatic.printMessage(rdm.id, ' loadRemoteDataInBackground for method: ' + rdm.methodName + ' returned a null promise. ');\r\n // // }\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(_rdm)) {\r\n // debugger;\r\n // if (_rdm.isForComponent) {\r\n // debugger;\r\n // EmitterSubjectService.emitBackgroundProcessMethodDataForComponent(_rdm);\r\n // }\r\n // else {\r\n // debugger;\r\n // EmitterSubjectService.emitBackgroundProcessMethodDataForService(_rdm);\r\n // }\r\n // }\r\n // })\r\n // } \r\n // });\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n public sendJobToBackgroundSw (rdm : RemoteDataModel): any {\r\n if ('serviceWorker' in navigator) {\r\n\r\n // ensure service worker is ready\r\n navigator.serviceWorker.ready.then(function (reg) {\r\n debugger;\r\n // PING to service worker, later we will use this ping to identifies our client.\r\n navigator.serviceWorker.controller.postMessage(\"jobToSW(#%#\" + JSON.stringify(rdm) + \"#%#)\");\r\n\r\n // listening for messages from service worker\r\n navigator.serviceWorker.addEventListener('jobDataPromiseFromSw', (event: MessageEvent) => {\r\n debugger;\r\n var _rdm: RemoteDataModel = new RemoteDataModel();\r\n _rdm = event.data; // TODO: get the data from the event.\r\n\r\n console.log(\"swBackgroundFetchService->jobDataPromise from SW: \" + JSON.stringify(_rdm));\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(_rdm)) {\r\n debugger;\r\n if (_rdm.isForComponent) {\r\n debugger;\r\n EmitterSubjectService.emitBackgroundProcessMethodDataForComponent(_rdm);\r\n }\r\n else {\r\n debugger;\r\n EmitterSubjectService.emitBackgroundProcessMethodDataForService(_rdm);\r\n }\r\n }\r\n // you can also send a stringified JSON and then do a JSON.parse() here.\r\n });\r\n })\r\n }\r\n\t}\r\n // ------------------------------------------------------------------------------------------------\r\n // Ref: https://www.bennadel.com/blog/4099-brute-force-refreshing-view-data-in-the-background-in-angular-11-0-5.htm\r\n // ------------------------------------------------------------------------------------------------\r\n // I load the remote data quietly in the background without changing the ready-state.\r\n // public loadRemoteDataInBackground (_rdm : RemoteDataModel) : Observable {\r\n // debugger;\r\n // return new Observable((subscriber) => {\r\n // var rdm = _rdm;\r\n // var dataLoadID = ++(EmitterSubjectService.remoteDateLoadID);\r\n // debugger;\r\n // try {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm)\r\n // && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.methodName)\r\n // || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.url))) {\r\n\r\n // switch (rdm.methodName) {\r\n // case 'displayUserDataFromServer':\r\n // // debugger;\r\n // // EmitterSubjectService.emitDisplayUserPicsFromServer(rdm.methodName);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.id) && rdm.id > 0) {\r\n // this.displayProfileService.displayUserDataFromServer(rdm.id).subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // }\r\n // break;\r\n\r\n // case 'displayUserPicsFromServer': // TODO\r\n // // debugger;\r\n // // EmitterSubjectService.emitDisplayUserPicsFromServer(rdm.methodName);\r\n // //this.httpBackgroundService.loadRemoteDataInBackground(this.rdm).then(data => {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.id) && rdm.id > 0) {\r\n // this.displayProfileService.displayUserPicsFromServer(rdm.id).subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // }\r\n // break;\r\n // case 'getProfileTileIndividuallyFromServer':\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.data)) {\r\n // this.profileTileService.getProfileTileIndividuallyFromServer(rdm.data).subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // }\r\n // break;\r\n\r\n // case 'getProfileTile':\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.data)) {\r\n // this.profileTileService.getProfileTile(rdm.data).subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // }\r\n // break;\r\n\r\n // case 'getBatchOfSitUserIdsFromServer':\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.data)) {\r\n // this.sitUserService.getBatchOfSitUserIds(rdm.data).subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // }\r\n // break;\r\n\r\n // case 'getMyConversations':\r\n // this.chatService.getMyConversations().subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // break;\r\n\r\n // case 'populateSitUserIdDictionariesFromIndexedDb':\r\n // this.dbDexieToDictionaryService.populateSitUserIdDictionariesFromIndexedDb().subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // break;\r\n\r\n // case 'setupSlicedChatHistory':\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.id) && rdm.id > 0) {\r\n // this.chatService.setupSlicedChatHistory(rdm.id).subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // }\r\n // break;\r\n\r\n // case 'getMyEmailIdsObservable':\r\n // debugger;\r\n // this.emailService.getMyEmailIdsObservable(rdm.isInbox).subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // break;\r\n\r\n // case 'getMyEmailsObservable':\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.data)) {\r\n // this.emailService.getMyEmailsObservable(rdm.data, rdm.isInbox).subscribe(data => {\r\n // rdm.data = data;\r\n // subscriber.next(rdm);\r\n // });\r\n // }\r\n // break;\r\n\r\n // case 'getMyEnoteIds':\r\n // debugger;\r\n // if (!rdm.isMethodCalled) {\r\n // this.enoteService.getMyEnoteIds(rdm).subscribe(data => {\r\n // rdm = _rdm;\r\n // debugger;\r\n // rdm.data = data;\r\n // rdm.isMethodCalled = true; // to prevent multiple calls to the methodName\r\n // EmitterSubjectService.emitRunBackgroundProcessMethod(rdm);\r\n // })\r\n // }\r\n // else {\r\n\r\n\t//\t\t\t\t\t\t\t}\r\n // subscriber.next(rdm);\r\n // debugger; \r\n // break;\r\n\r\n // case 'getMyEnoteTiles':\r\n // // Note: since getMyEnoteIds sent the \r\n // debugger; \r\n // subscriber.next(rdm); \r\n // break;\r\n\r\n // default:\r\n // // debugger;\r\n // // EmitterSubjectService.emitBackgroundProcessingMethod(rdm);\r\n // // observable.next(_rdm);\r\n // // observable.complete();\r\n // break;\r\n // }\r\n // debugger;\r\n \r\n // // If this request has returned out-of-order, ignore it - defer to the newer\r\n // // request to update the view-model.\r\n // if (dataLoadID !== EmitterSubjectService.remoteDateLoadID) {\r\n // this.message = MessageBuilderServiceStatic.printMessage(0, 'Ignoring request that returned out of order. ' + dataLoadID + ' vs ' + EmitterSubjectService.getRemoteDateLoadID().toString());\r\n // console.warn(this.message);\r\n // // reject(this.message);\r\n\r\n // }\r\n // this.message = MessageBuilderServiceStatic.printMessage(rdm.id, this.message);\r\n // console.log(this.message);\r\n // // reject(this.message);\r\n // }\r\n // else {\r\n // this.message = MessageBuilderServiceStatic.printMessage(rdm.id, 'he rdp.methodName was null or undefined at loadRemoteDataInBackground()');\r\n // console.log(this.message);\r\n // // reject(this.message);\r\n\t//\t\t\t }\r\n // } catch (error) {\r\n // this.message = \"Error loading data in the background.\";\r\n // this.message = MessageBuilderServiceStatic.printMessage(rdm.id, this.message);\r\n // console.warn(this.message);\r\n // console.error(error);\r\n\r\n // }\r\n // finally {\r\n // ; //do nothing\r\n // }\r\n // })\r\n // } \r\n // // ---------------------------------------------------------------\r\n // public runBackgroundProcessingMethod (_rdm : RemoteDataModel) : Observable {\r\n // debugger; \r\n // return new Observable((observable) => {\r\n // var rdm = _rdm;\r\n // debugger;\r\n // this.loadRemoteDataInBackground(_rdm).subscribe(result => {\r\n // debugger;\r\n // observable.next(result);\r\n // })\r\n // // .catch((error) => {\r\n // // this.message = MessageBuilderServiceStatic.printMessage(_rdm.id, ' promise of runBackgroundProcessingMethod(_rdm) has some errors. Error-mag: ' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // })\r\n\t//}\r\n /*\r\n * ---------------------------------------------------------------\r\n * ================================================================================================\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// www.htmlgoodies.com/html5/tutorials/determine-an-images-type-using-the-javascript-filereader.html\r\n */\r\n //public fileChunk (File : any): any {\r\n // if (!File.prototype.slice) {\r\n // const newSlice = File.prototype.mozSlice || File.prototype.webkitSlice;\r\n\r\n // if (newSlice) {\r\n // File.prototype.slice = (() => (startingByte : any, length : any) => newSlice.call(this, startingByte, length + startingByte))();\r\n // } else {\r\n // throw Error('File.slice() not supported.');\r\n // }\r\n // }\r\n //}\r\n \r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { ConnectionService } from 'ng-connection-service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class CheckConnectionService {\r\n public isconnected : boolean = navigator.onLine;\r\n // ------------------------------------------------------------\r\n constructor ( private connectionService : ConnectionService ) { }\r\n // ------------------------------------------------------------\r\n public isOffline(): boolean {\r\n this.connectionService.monitor().subscribe((isConnected : any) => {\r\n this.isconnected = isConnected;\r\n });\r\n return this.isconnected;\r\n }\r\n // ------------------------------------------------------------\r\n public isConnected(): any {\r\n return this.connectionService.monitor().toPromise();\r\n }\r\n // ------------------------------------------------------------\r\n public isOnline(): any {\r\n // debugger;\r\n const promise = this.isConnected().then((c : any) => {\r\n this.isconnected = c;\r\n EmitterSubjectService.setIsOnLine(this.isconnected);\r\n });\r\n\r\n return this.isconnected;\r\n }\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { CheckConnectionService } from './checkConnectionService.service';\r\nimport { HeartbeatService } from './heartbeatService.service';\r\nimport { HttpService } from './httpService.service';\r\nimport { KvArrayService } from './kvArrayService.service';\r\nimport { LiaisonService } from './liaisonService.service';\r\nimport { LogRegService } from './logRegService.service';\r\nimport { OffOnService } from './offOnService';\r\nimport { TimerService } from './timerService.service';\r\n\r\n// import { WhenScrollEndsService } from './whenScrollEndsService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CoreServiceService implements OnDestroy {\r\n public emitterDestroyed$: Subject = new Subject();\r\n constructor (\r\n public checkConnectionService : CheckConnectionService,\r\n public heartbeatService: HeartbeatService,\r\n public httpService : HttpService,\r\n public kvArrayService : KvArrayService,\r\n public liaisonService: LiaisonService,\r\n public logRegService : LogRegService,\r\n public offOnService : OffOnService,\r\n public timerService: TimerService,\r\n ) { }\r\n // --------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ------------------------------------------------------------------\r\n setCheckConnectionService(ccs: CheckConnectionService): void {\r\n this.checkConnectionService = ccs;\r\n }\r\n getCheckConnectionService(): CheckConnectionService {\r\n return this.checkConnectionService;\r\n }\r\n // ------------------------------------------------------------------\r\n setHeartbeatService(hbs: HeartbeatService): void {\r\n this.heartbeatService = hbs;\r\n }\r\n getHeartbeatService(): HeartbeatService {\r\n return this.heartbeatService;\r\n }\r\n // ------------------------------------------------------------------\r\n setHttpService(ms: HttpService): void {\r\n this.httpService = ms;\r\n }\r\n getHttpService(): HttpService {\r\n return this.httpService;\r\n }\r\n // ------------------------------------------------------------------\r\n setKvArrayService(as: KvArrayService): void {\r\n this.kvArrayService = as;\r\n }\r\n // -----------------------------------------------------------------\r\n getKvArrayService(): KvArrayService {\r\n return this.kvArrayService;\r\n }\r\n // ------------------------------------------------------------------\r\n setLiaisonService (lr : LiaisonService) : void {\r\n this.liaisonService = lr;\r\n }\r\n // -----------------------------------------------------------------\r\n getLiaisonService () : LiaisonService {\r\n return this.liaisonService;\r\n }\r\n // ------------------------------------------------------------------\r\n setLogRegService (lr : LogRegService) : void {\r\n this.logRegService = lr;\r\n }\r\n // -----------------------------------------------------------------\r\n getLogRegService () : LogRegService {\r\n return this.logRegService;\r\n }\r\n\r\n // \r\n \r\n // ------------------------------------------------------------------\r\n setTimerService(ts: TimerService): void {\r\n this.timerService = ts;\r\n }\r\n getTimerService(): TimerService {\r\n return this.timerService;\r\n }\r\n // ------------------------------------------------------------------\r\n setOffOnService (os : OffOnService) : void {\r\n this.offOnService = os;\r\n }\r\n getOffOnService () : OffOnService {\r\n return this.offOnService;\r\n }\r\n // ------------------------------------------------------------------\r\n // setWhenScrollEndsService(wss: WhenScrollEndsService): void {\r\n // this.whenScrollEndsService = wss;\r\n // }\r\n // getWhenScrollEndsService(): WhenScrollEndsService {\r\n // return this.whenScrollEndsService;\r\n // }\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Login } from '../../models/account/login.model';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { ClientApiModel } from '../../models/common/clientApiModel.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { Unit } from '../../models/common/unit.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { HttpService } from './httpService.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class HeartbeatService implements OnDestroy {\r\n public boxNonce : BoxNonceEntity = new BoxNonceEntity();\r\n public clientApiModel : ClientApiModel = new ClientApiModel();\r\n public distanceUnit : Unit = new Unit();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public heartbeat: Heartbeat = new Heartbeat();\r\n public isMobilevar = false;\r\n public login: Login = new Login();\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public profileTile: ProfileTile = new ProfileTile();\r\n public sitUser: SitUser = new SitUser();\r\n public timer: any;\r\n public timerMap : Map = new Map();\r\n constructor (\r\n public dictionaryService : DictionaryService,\r\n public httpService : HttpService,\r\n ) {\r\n this.initialize();\r\n }\r\n // ---------------------------------------------------------------\r\n initialize() {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result as LoginSuccess;\r\n });\r\n\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.isMobilevar = result as boolean;\r\n });\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.timerMap.forEach((timer) => clearInterval(timer));\r\n }\r\n // --------------------------------------------------------------------------------- \r\n // This method should be called in @Input() distanceUnit is empty.\r\n //\r\n // This method expects lat and long data either in sitUser or sitUser.heartbeat\r\n // ---------------------------------------------------------------------------------\r\n //public computeSitUserDistance (sitUsr : any) : Observable {\r\n // var sitUser = sitUsr;\r\n // var tDistUnit = new Unit();\r\n // return new Observable(subscriber => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)) {\r\n // /*this.setupSitUserHeartbeat(sitUser).subscribe(data => {*/\r\n // // sitUser = data;\r\n // debugger;\r\n \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)\r\n // && ((sitUser.longitude != 0 && sitUser.latitude != 0)\r\n // || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.heartbeat))) {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // let isKm = true;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.heartbeat)) {\r\n // if (this.loginSuccess.heartbeat.latitude != 0 && this.loginSuccess.heartbeat.longitude != 0) {\r\n // if (sitUser.heartbeat.longitude != 0 && sitUser.heartbeat.latitude != 0) {\r\n // tDistUnit = this.computeDistance(sitUser.heartbeat.latitude, sitUser.heartbeat.longitude, this.loginSuccess.heartbeat.latitude, this.loginSuccess.heartbeat.longitude, isKm);\r\n // debugger;\r\n // }\r\n // else if ((this.sitUser.longitude != 0 && sitUser.latitude != 0)) {\r\n // debugger;\r\n // tDistUnit = this.computeDistance(sitUser.latitude, sitUser.longitude, this.loginSuccess.heartbeat.latitude, this.loginSuccess.heartbeat.longitude, isKm);\r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tDistUnit) && tDistUnit.distance > 0) {\r\n // this.distanceUnit = tDistUnit;\r\n // debugger;\r\n // subscriber.next(tDistUnit);\r\n // subscriber.complete();\r\n // }\r\n // else {\r\n // tDistUnit = this.defaultDistanceUnit();\r\n // debugger;\r\n // subscriber.next(tDistUnit);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // else {\r\n // tDistUnit = this.defaultDistanceUnit();\r\n // debugger;\r\n // subscriber.next(tDistUnit);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // else {\r\n // tDistUnit = this.defaultDistanceUnit();\r\n // debugger;\r\n // subscriber.next(tDistUnit);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // else {\r\n // tDistUnit = this.defaultDistanceUnit();\r\n // debugger;\r\n // subscriber.next(tDistUnit);\r\n // subscriber.complete();\r\n // }\r\n // // })\r\n // }\r\n // else {\r\n // tDistUnit = this.defaultDistanceUnit(); \r\n // debugger;\r\n // subscriber.next(tDistUnit);\r\n // subscriber.complete();\r\n // }\r\n // })\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n copyFromHeartbeatResult(hb: any): Heartbeat {\r\n const hbeat = new Heartbeat();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.City)) {\r\n hbeat.city = hb.City;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.Country)) {\r\n hbeat.country = hb.Country;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.Date)) {\r\n hbeat.date = hb.Date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.Distance)) {\r\n hbeat.distance = hb.Distance;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.Gender)) {\r\n hbeat.gender = hb.Gender;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.HeartbeatTime)) {\r\n hbeat.heartbeatTime = parseInt(hb.HeartbeatTime, 10);\r\n }\r\n // If (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.away)) hbeat.date = hb.isOnline;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.Latitude)) {\r\n hbeat.latitude = hb.Latitude;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.Longitude)) {\r\n hbeat.longitude = hb.Longitude;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.Neighborhood)) {\r\n hbeat.neighborhood = hb.Neighborhood;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.RegionCode)) {\r\n hbeat.regionCode = hb.RegionCode;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.SignOnTime)) {\r\n hbeat.prevHeartbeat = parseInt(hb.SignOnTime, 10);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.SITUserId)) {\r\n hbeat.sitUserId = hb.SITUserId;\r\n }\r\n // debugger;\r\n }\r\n return hbeat;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n computeDistanceAndUnit ( hb : Heartbeat ) : Unit {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let distanceUnit : Unit = new Unit();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && hb.distance >= 0 && hb.sitUserId > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.heartbeat)) {\r\n // debugger;\r\n distanceUnit = this.computeDistance(this.loginSuccess.latitude, this.loginSuccess.longitude, this.heartbeat.latitude, this.heartbeat.longitude, true); // (dest, origin, isKm)\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)) {\r\n distanceUnit.distanceStr = distanceUnit.distance.toFixed( 2 ) + ' ' + distanceUnit.unit;\r\n }\r\n }\r\n }\r\n return distanceUnit;\r\n }\r\n // ---------------------------------------------------------------\r\n defaultDistanceUnit () : Unit {\r\n var tDistUnit = new Unit();\r\n tDistUnit.distance = -999;\r\n tDistUnit.unit = tDistUnit.distance > 0 ? 'km' : 'distance unavailable';\r\n return tDistUnit;\r\n }\r\n // ---------------------------------------------------------------\r\n // API:\r\n // -----------------------------------------------------------\r\n getDistanceFromHeartBeatDictionary (sitId : number) : any { \r\n if (sitId > 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser.sitUserId = sitId;\r\n let hb = this.dictionaryService.heartbeatDictionary.get(sitId) as Heartbeat;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( hb ) )\r\n {\r\n return this.computeDistanceAndUnit( hb );\r\n }\r\n else\r\n {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n getHeartbeat(): Heartbeat {\r\n return this.heartbeat;\r\n }\r\n // ---------------------------------------------------------------\r\n // API:\r\n // -----------------------------------------------------------\r\n //getHeartbeatBySitUserId (sitId: number) : Observable {\r\n // // Fetch a heartbeat of sitUserId:\r\n // // -------------------------------\r\n // var sitUserId = sitId;\r\n // return new Observable(subscriber => {\r\n // if (sitUserId > -1) {\r\n // this.getHeartbeatObservable(sitUserId, 'AppComponent.heartbeat').subscribe(hb => {\r\n // // debugger;\r\n // subscriber.next(hb);\r\n // subscriber.complete();\r\n // });\r\n // } \r\n // })\r\n //}\r\n // -----------------------------------------------------------\r\n // API:\r\n // -----------------------------------------------------------\r\n getHeartbeatFromDictionaryOrServer (sitId : number, cName: string): Observable {\r\n var sitUserId = sitId;\r\n // debugger;\r\n var componentName = 'DistanceComponent';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cName)) {\r\n componentName = cName;\r\n }\r\n return new Observable(subscriber => {\r\n let hb = this.dictionaryService.heartbeatDictionary.get(sitUserId) as Heartbeat;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && hb.heartbeatTime > 0) {\r\n subscriber.next(hb);\r\n subscriber.complete();\r\n }\r\n else {\r\n // debugger;\r\n console.log('getHeartbeatFromDictionaryOrServer.sitUserId = ' + sitUserId);\r\n this.getHeartbeatObservable(sitUserId, componentName).subscribe(data => {\r\n // debugger;\r\n subscriber.next(data);\r\n subscriber.complete();\r\n })\r\n }\r\n })\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Ref:https:// www.positronx.io/angular-promises-example-manage-http-boxrequests/\r\n * Tested, works!\r\n * Note: this method uses a promise as well as an emitter\r\n * to send the data upon receiving, and puts into dictionary\r\n * ---------------------------------------------------------------\r\n */\r\n // ---------------------------------------------------------------\r\n // Note: this XHR api call will trigger top to bottom changeDetection\r\n // ---------------------------------------------------------------\r\n getHeartbeatObservable (situserid : number, callername : string) : Observable {\r\n // debugger;\r\n var sitUserId = situserid;\r\n var callerName = callername;\r\n var hbeat : Heartbeat = new Heartbeat();\r\n\r\n return new Observable((subscriber) => {\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserId) && sitUserId > 0) {\r\n // debugger;\r\n this.heartbeat = new Heartbeat();\r\n this.heartbeat.sitUserId = sitUserId;\r\n this.heartbeat.callerName = callerName;\r\n this.heartbeat.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonce = this.salt(this.heartbeat);\r\n // console.log('getHeartbeatObservable.sitUserId = ' + sitUserId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n '/api/Member/GetHeartbeat',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonce.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonce.nonce),\r\n },\r\n 'json2text',\r\n ).subscribe((result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n try {\r\n // debugger;\r\n hbeat = result as Heartbeat;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hbeat)) {\r\n\r\n this.heartbeat = JSON.parse(JSON.stringify(hbeat)) as Heartbeat; // deepcopy\r\n\r\n // debugger;\r\n\r\n // update heartbeatDictionary:\r\n // --------------------------- \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.heartbeat)\r\n && this.heartbeat.sitUserId > 0) {\r\n\r\n this.dictionaryService.updateDictionary(this.heartbeat, 'heartbeat', this.heartbeat.sitUserId);\r\n // debugger;\r\n // DictionaryServiceStatic.updateDictionary(DictionaryServiceStatic.heartbeatDictionary, \"Heartbeat\", this.loginSuccess.signedInUserId)\r\n this.sitUser = this.dictionaryService.sitUserDictionary.get(this.heartbeat.sitUserId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)) {\r\n this.sitUser.heartbeat = this.heartbeat;\r\n this.dictionaryService.updateDictionary(this.sitUser, 'SitUser', this.sitUser.sitUserId);\r\n EmitterSubjectService.setSitUserModel(this.sitUser);\r\n }\r\n }\r\n\r\n // update loginSuccess if applicable :\r\n // ---------------------------------\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.heartbeat.sitUserId === this.loginSuccess.signedInUserId) {\r\n this.loginSuccess.heartbeat = this.heartbeat;\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n }\r\n\r\n // emit the result:\r\n // ----------------\r\n EmitterSubjectService.emitHeartbeat(this.heartbeat);\r\n // debugger;\r\n\r\n // set the result on promise:\r\n // --------------------------\r\n subscriber.next(this.heartbeat);\r\n subscriber.complete();\r\n }\r\n }\r\n catch {\r\n this.message = StringServiceStatic.stringBuilder(new Date().getTime() + ': boxUnsalt failed! @heartbeatService.getHeartbeatObservable()');\r\n } finally {\r\n\r\n } \r\n }\r\n else {\r\n this.message = 'heartbeatService.getHeartbeatPromise(sitUserId : ' + sitUserId + ') returned a null or undefined result. ';\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n else {\r\n this.message = 'boxNonceEntity\\'s data is null or undefined for sitUserId;: ' + sitUserId + ' in getHeartbeatPromise()';\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = 'sitUserId: ' + sitUserId + ' is 0 or null or undefined in getHeartbeatPromise()';\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this XHR api call will trigger top to bottom changeDetection\r\n // ---------------------------------------------------------------\r\n getBatchOfHeartbeatObservable (sitIds : number[], clrName : string) : Observable {\r\n var sitUserIds = sitIds;\r\n var callerName = clrName;\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let heartBeatMap = new Map();\r\n //debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserIds) && sitUserIds.length > 0) {\r\n // this.heartbeat = new Heartbeat();\r\n this.clientApiModel.sitUserIdArr = sitUserIds;\r\n this.clientApiModel.callerName = callerName;\r\n this.clientApiModel.sitUserId = this.clientApiModel.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n this.boxNonce = this.salt(this.clientApiModel);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n '/api/Member/GetBatchOfHeartbeat',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonce.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonce.nonce),\r\n },\r\n 'json2text',\r\n ).subscribe(\r\n (result) => {\r\n /*\r\n * debugger;\r\n * Success\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n const hbeats = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Heartbeat[];\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hbeats) && hbeats.length > 0) {\r\n hbeats.forEach(e => {\r\n heartBeatMap.set(e.sitUserId, e);\r\n\r\n // update heartbeatDictionary:\r\n // --------------------------- \r\n if (e.sitUserId > 0 && !this.dictionaryService.heartbeatDictionary.has(e.sitUserId)) {\r\n this.dictionaryService.heartbeatDictionary.set(e.sitUserId, e);\r\n // debugger;\r\n }\r\n })\r\n }\r\n // set the result on promise:\r\n // --------------------------\r\n // debugger;\r\n subscriber.next(heartBeatMap);\r\n subscriber.complete();\r\n } else {\r\n console.log('Error getting batchOfheartbeat');\r\n }\r\n }\r\n },\r\n (error) => console.log(error),\r\n );\r\n }\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n getDistanceUnit (sitUsr : SitUser) : Observable {\r\n var sitUser = sitUsr;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0\r\n && this.loginSuccess.signedInUserId !== sitUser.sitUserId) { // computeDistance if non-signedInUser\r\n\r\n var srcLatitude = this.loginSuccess?.latitude != 0 ? this.loginSuccess?.latitude : 0;\r\n var srcLongitude = this.loginSuccess?.longitude != 0 ? this.loginSuccess?.longitude : 0;\r\n var destLatitude = sitUser?.heartbeat?.latitude != 0 ? sitUser?.heartbeat?.latitude : 0;\r\n var destLongitude = sitUser?.heartbeat?.longitude != 0 ? sitUser?.heartbeat?.longitude : 0;\r\n // debugger;\r\n return new Observable(subscriber => {\r\n let distanceUnit = new Unit();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destLatitude) && destLatitude != 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destLongitude) && destLongitude != 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(srcLatitude) && srcLatitude != 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(srcLongitude) && srcLongitude != 0) {\r\n\r\n distanceUnit = this.computeDistance(destLatitude, destLongitude, srcLatitude, srcLongitude, true);\r\n // debugger;\r\n subscriber.next(distanceUnit);\r\n\r\n }\r\n else {\r\n subscriber.next(null);\r\n }\r\n subscriber.complete();\r\n })\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n isDefaultDistanceUnit (dUnit : Unit) : any {\r\n return dUnit?.distance < 0;\r\n }\r\n // ---------------------------------------------------------------\r\n public processDistanceUnit (distanceUnit : Unit) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.distance)\r\n && distanceUnit.distance >= 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.unit)) {\r\n\r\n\r\n if (distanceUnit.unit.indexOf('km') && distanceUnit.distance < 1) {\r\n distanceUnit.distance = distanceUnit.distance * 1000;\r\n distanceUnit.unit = 'm';\r\n }\r\n if ((distanceUnit.unit.toLowerCase().indexOf('meter') || distanceUnit.unit.toLowerCase().indexOf('m')) && distanceUnit.distance > 1000) {\r\n distanceUnit.distance = distanceUnit.distance / 1000;\r\n distanceUnit.unit = 'km';\r\n return distanceUnit;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n returnHeartbeat () : any {\r\n return this.heartbeat;\r\n }\r\n // ---------------------------------------------------------------\r\n resetHeartbeat () : any {\r\n this.timerMap.forEach((e) => clearInterval(e));\r\n this.heartbeat = new Heartbeat();\r\n EmitterSubjectService.setHeartbeat(this.heartbeat);\r\n return this.heartbeat;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n salt (model : any) : any {\r\n if (model) {\r\n return (this.boxNonce = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model)));\r\n }\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n setHeartbeat (hb : Heartbeat) : any {\r\n this.heartbeat = hb;\r\n return true;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Note: we check the following @Input() variables to setup sitUser.heartbeat:\r\n // 1. SitUser\r\n // 2. Heartbeat\r\n // 3. ProfileTile\r\n //\r\n // ---------------------------------------------------------------\r\n setupSitUserHeartbeat (sitUsr : SitUser) : Observable {\r\n this.sitUser = sitUsr;\r\n var sitUser = sitUsr;\r\n return new Observable(subscriber => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0) {\r\n debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.heartbeat)\r\n || this.sitUser?.heartbeat?.sitUserId === 0\r\n || this.sitUser?.heartbeat?.latitude === 0\r\n || this.sitUser?.heartbeat?.longitude === 0) {\r\n // debugger;\r\n this.getHeartbeatFromDictionaryOrServer(sitUser.sitUserId, 'HeartbeatService').subscribe(hb => {\r\n debugger;\r\n // this.heartbeat = hb; // sitUser with latitude & longitude data\r\n sitUser.heartbeat = hb;\r\n subscriber.next(sitUser);\r\n // subscriber.complete();\r\n })\r\n }\r\n //else {\r\n // debugger;\r\n // subscriber.next(null);\r\n // subscriber.complete();\r\n //}\r\n }\r\n //else {\r\n // subscriber.next(null);\r\n // subscriber.complete();\r\n //}\r\n })\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // TODO: Change function name to processDistanceUnit()\r\n // Note: It does not process OffOn indicator.\r\n // TODO : remove before deployment.\r\n // This method is not in use.\r\n // ---------------------------------------------------------------\r\n // processOffOnIndicatorAndDistanceUnit ( pTile : ProfileTile ) : ProfileTile\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTile ) )\r\n // {\r\n // // compute distance and create offOn indicator:\r\n // // --------------------------------------------\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTile.heartbeat ) && pTile.heartbeat.heartbeatTime > -1 )\r\n // {\r\n // // debugger;\r\n // pTile.distanceUnit = this.computeDistanceAndUnit( pTile.heartbeat );\r\n\r\n // // debugger;\r\n // // TODO: check to see if the below is needed:\r\n // // TODO: remove before deployment:\r\n // // -----------------------------------------\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.distance > 0 )\r\n // // {\r\n // // // debugger;\r\n // // let distanceUnit = { distance: this.profileTile.distance, unit: this.profileTile.unit };\r\n\r\n // // distanceUnit = this.processDistanceUnit( distanceUnit );\r\n\r\n // // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( distanceUnit ) )\r\n // // {\r\n // // this.profileTile.distance = distanceUnit.distance; // = result.profileTile;\r\n // // this.profileTile.unit = distanceUnit.unit;\r\n // // this.profileTile.distanceStr = distanceUnit.distance + ' ' + distanceUnit.unit;\r\n // // }\r\n // // }\r\n // }\r\n // }\r\n // return pTile;\r\n // }\r\n \r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: this method should be used to start the heartbeat\r\n * ---------------------------------------------------------------\r\n */\r\n startSendingHeartbeat (sitId : number, clrName : string) : Observable {\r\n let tHeartbeat : any;\r\n var sitUserId = sitId;\r\n var callerName = clrName;\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (sitId > 0) {\r\n // debugger;\r\n this.timer = setTimeout(() => {\r\n this.sendHeartbeat(sitUserId, callerName).subscribe(data => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n tHeartbeat = data;\r\n // debugger;\r\n EmitterSubjectService.emitHeartbeat(tHeartbeat);\r\n subscriber.next(tHeartbeat);\r\n subscriber.next(this.timer);\r\n subscriber.complete();\r\n }\r\n else {\r\n this.message = 'heartbeatService.sendHeartbeat(sitId : ' + sitId + ') returned data null or undefined result; heartbeat: ' + JSON.stringify(tHeartbeat);\r\n console.log(this.message);\r\n }\r\n clearTimeout(this.timer);\r\n })\r\n console.log(new Date().getTime() + '-timestamp-' + new Date().toTimeString())\r\n }, 300000); // 60000 * 5 //every 5 minutes\r\n clearTimeout(this.timer);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.timer) && !this.timerMap.has(sitUserId)) {\r\n this.timerMap.set(sitUserId, this.timer);\r\n }\r\n } \r\n }) \r\n }\r\n \r\n \r\n // ---------------------------------------------------------------\r\n sendHeartbeat(sitId: number, clrName: string): Observable {\r\n // debugger;\r\n var sitUserId = sitId;\r\n var callerName = clrName;\r\n return new Observable(subscriber => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserId) && sitUserId > 0) {\r\n // debugger;\r\n this.sendWithGeoLocation(sitUserId, callerName).subscribe(data => {\r\n subscriber.next(data);\r\n subscriber.complete();\r\n })\r\n }\r\n \r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n sendWithGeoLocation(sitId: number, clrName: string): Observable {\r\n // debugger;\r\n var sitUserId = sitId;\r\n var callerName = clrName;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n return new Observable((subscriber) => {\r\n if (navigator.geolocation && sitUserId > 0) {\r\n navigator.geolocation.getCurrentPosition((position : any) => {\r\n if (position) {\r\n console.log('Latitude: ' + position.coords.latitude + '; Longitude: ' + position.coords.longitude);\r\n this.heartbeat.latitude = position.coords.latitude;\r\n this.heartbeat.longitude = position.coords.longitude;\r\n this.heartbeat.sitUserId = sitUserId;\r\n this.heartbeat.callerName = callerName;\r\n this.heartbeat.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.heartbeat.jsDateForCs = DateStringServiceStatic.getTicks(new Date()).toString();\r\n this.salt(this.heartbeat);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonce.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n '/api/Member/Heartbeat',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonce.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonce.nonce),\r\n },\r\n 'json',\r\n )\r\n .subscribe(\r\n (result) => {\r\n this.loginSuccess.heartbeat = this.processHeartbeatResult(result);\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n // EmitterSubjectService.emitLoginSuccess(this.loginSuccess);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.heartbeat)) {\r\n subscriber.next(this.loginSuccess.heartbeat);\r\n subscriber.complete();\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag: ' + error);\r\n /*EmitterSubjectService.emitMyErrorLog( { feedbackMessage: 'Error occured in Heartbeat();\\n Error-mag: ' + error.message } );*/\r\n // EmitterSubjectService.emitMessage({ feedbackMessage: 'Error occured in Heartbeat();\\n Error-mag: ' + error.message });\r\n });\r\n } \r\n } \r\n });\r\n } \r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n processHeartbeatResult(result: any): any {\r\n // debugger;\r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n const hbeat = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Heartbeat;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hbeat)) {\r\n this.heartbeat = this.copyFromHeartbeatResult(hbeat);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.heartbeat)) {\r\n // debugger;\r\n if (!this.dictionaryService.heartbeatDictionary.has(this.heartbeat.sitUserId)) {\r\n this.dictionaryService.heartbeatDictionary.set(this.heartbeat.sitUserId, this.heartbeat);\r\n }\r\n // EmitterSubjectService.emitHeartbeat(this.heartbeat);\r\n return this.heartbeat;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n toRad(deg: number): number {\r\n return (deg * Math.PI) / 180;\r\n }\r\n // ---------------------------------------------------------------\r\n numToRad(num: number): any {\r\n let numRad : any;\r\n let neg = -1;\r\n\r\n this.toRad = () => {\r\n return (num * Math.PI) / 180;\r\n };\r\n\r\n if (num < 0) {\r\n numRad = this.toRad(Math.abs(num));\r\n numRad = numRad * neg;\r\n } else {\r\n numRad = this.toRad(Math.ceil(num));\r\n }\r\n return numRad;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Ref: http:// www.movable-type.co.uk/scripts/latlong.html\r\n * NOTE: returns the result as either KiloMetres or Miles though it computes both\r\n */\r\n public computeDistance (destinationLatitude : number, destinationLongitude : number, originLatitude : number, originLongitude : number, isKm : boolean) : any {\r\n /*\r\n * alert ('Calculating Distance: \\n originLatitude: ' + originLatitude + '\\n originLongitude: ' + originLongitude +\r\n * '\\n destinationLatitude' + destinationLatitude + '\\n destinationLongitude:' + destinationLongitude);\r\n */\r\n const distanceUnit = new Unit();\r\n distanceUnit.unit = 'km';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationLatitude)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationLongitude)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(originLatitude)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(originLongitude)) {\r\n var destLat = parseFloat(destinationLatitude.toString());\r\n var destLon = parseFloat(destinationLongitude.toString());\r\n var oLat = parseFloat(originLatitude.toString());\r\n var oLon = parseFloat(originLongitude.toString());\r\n\r\n if (oLat !== 0 && oLon !== 0\r\n && destLat !== 0 && destLon !== 0\r\n && oLat !== destLat\r\n && oLon !== destLon) {\r\n const R = 6371; // km; Earth's radius\r\n const M = 0.621371; // miles; 1km = 0.621371 miles\r\n\r\n /*\r\n * ------------------------------------------------\r\n * Number.prototype.toRad = function () { return this * Math.PI / 180; }\r\n * ------------------------------------------------\r\n * var dLon = (destinationLongitude - originLongitude).toRad();\r\n */\r\n const dLat = this.numToRad(destLat - oLat);\r\n const dLon = this.numToRad(destLon - oLon);\r\n /*\r\n * var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n * Math.cos(originLatitude.toRad()) * Math.cos(destinationLatitude.toRad()) *\r\n * Math.sin(dLon / 2) * Math.sin(dLon / 2);\r\n */\r\n const a1a = Math.sin(dLat / 2);\r\n const a1 = a1a * a1a;\r\n\r\n const a2a = Math.cos(this.numToRad(oLat));\r\n const a2b = Math.cos(this.numToRad(destLat));\r\n const a2 = a2a * a2b;\r\n\r\n const a3a = Math.sin(dLon / 2);\r\n const a3 = a3a * a3a;\r\n\r\n const a = a1 + (a2 * a3);\r\n\r\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n const distanceK = R * c;\r\n const distanceM = distanceK * M;\r\n debugger;\r\n if (isKm === true) {\r\n if (distanceK < 1 && distanceK > 0) {\r\n\r\n distanceUnit.distance = distanceK * 1000;\r\n distanceUnit.unit = 'm';\r\n }\r\n else {\r\n\r\n distanceUnit.distance = distanceK;\r\n distanceUnit.unit = 'km';\r\n }\r\n } else {\r\n distanceUnit.distance = distanceM;\r\n distanceUnit.unit = 'mile';\r\n }\r\n distanceUnit.distanceStr = distanceUnit.distance + ' ' + distanceUnit.unit;\r\n }\r\n }\r\n return distanceUnit; \r\n }\r\n // ---------------------------------------------------------------\r\n public computeDistanceFromStringInputs (destinationLatitude : string, destinationLongitude : string, originLatitude : string, originLongitude : string, isKm : boolean) : any {\r\n /*\r\n * alert ('Calculating Distance: \\n originLatitude: ' + originLatitude + '\\n originLongitude: ' + originLongitude +\r\n * '\\n destinationLatitude' + destinationLatitude + '\\n destinationLongitude:' + destinationLongitude);\r\n */\r\n const distanceUnit = new Unit();\r\n distanceUnit.unit = 'km';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationLatitude)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationLongitude)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(originLatitude)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(originLongitude)) {\r\n var destLat = parseFloat(destinationLatitude);\r\n var destLon = parseFloat(destinationLongitude);\r\n var oLat = parseFloat(originLatitude);\r\n var oLon = parseFloat(originLongitude);\r\n\r\n if (oLat !== 0 && oLon !== 0\r\n && destLat !== 0 && destLon !== 0\r\n && oLat !== destLat\r\n && oLon !== destLon) {\r\n const R = 6371; // km; Earth's radius\r\n const M = 0.621371; // miles; 1km = 0.621371 miles\r\n\r\n /*\r\n * ------------------------------------------------\r\n * Number.prototype.toRad = function () { return this * Math.PI / 180; }\r\n * ------------------------------------------------\r\n * var dLon = (destinationLongitude - originLongitude).toRad();\r\n */\r\n const dLat = this.numToRad(destLat - oLat);\r\n const dLon = this.numToRad(destLon - oLon);\r\n /*\r\n * var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n * Math.cos(originLatitude.toRad()) * Math.cos(destinationLatitude.toRad()) *\r\n * Math.sin(dLon / 2) * Math.sin(dLon / 2);\r\n */\r\n const a1a = Math.sin(dLat / 2);\r\n const a1 = a1a * a1a;\r\n\r\n const a2a = Math.cos(this.numToRad(oLat));\r\n const a2b = Math.cos(this.numToRad(destLat));\r\n const a2 = a2a * a2b;\r\n\r\n const a3a = Math.sin(dLon / 2);\r\n const a3 = a3a * a3a;\r\n\r\n const a = a1 + (a2 * a3);\r\n\r\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n const distanceK = R * c;\r\n const distanceM = distanceK * M;\r\n debugger;\r\n if (isKm === true) {\r\n if (distanceK < 1 && distanceK > 0) {\r\n\r\n distanceUnit.distance = distanceK * 1000;\r\n distanceUnit.unit = 'm';\r\n }\r\n else {\r\n\r\n distanceUnit.distance = distanceK;\r\n distanceUnit.unit = 'km';\r\n }\r\n } else {\r\n distanceUnit.distance = distanceM;\r\n distanceUnit.unit = 'mile';\r\n }\r\n distanceUnit.distanceStr = distanceUnit.distance + ' ' + distanceUnit.unit;\r\n }\r\n }\r\n return distanceUnit;\r\n }\r\n /*\r\n * ===============================================================\r\n * Tested calculateDistance(), it works!\r\n * NOTE: distance is calculated in KM/Mile\r\n * ---------------------------------------------------------------\r\n */\r\n public calculateDistance (signInHeartbeat : Heartbeat, heartbeat : Heartbeat, isKm: boolean): any {\r\n let distanceUnit = new Unit();\r\n\r\n if (heartbeat && signInHeartbeat) {\r\n const destinationLatitude = signInHeartbeat.latitude;\r\n const destinationLongitude = signInHeartbeat.longitude;\r\n const originLatitude = heartbeat.latitude;\r\n const originLongitude = heartbeat.longitude;\r\n // ---------------------------------------------------------------------------------------------------------\r\n\r\n distanceUnit = this.computeDistance(destinationLatitude, destinationLongitude, originLatitude, originLongitude, isKm);\r\n return distanceUnit;\r\n }\r\n else return null;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * If 5 minutes or more passed since last heartbeatTime, then offline\r\n * NOTE: The Heartbeat on Winhost database takes Pacific Time for DateTime.Now()\r\n * But at the client's browser, the heartbeatService.js takes a local time for now(),\r\n * for example, here in Ottawa, it takes a local time that is 3 hours ahead of Pacific Time.\r\n * In this cause the isOnline at heartbeatService to be always false for Ottawa client.\r\n * Therefore, use the server-provided isOnline status\r\n * Do Not Delete This!!\r\n * \r\n * Note: this can be circumvented if the heartbeat sent from client to server is client's local time sent,\r\n * and subsiquently that heartbeat compared to the client's local time now.\r\n * ---------------------------------------------------------------\r\n */\r\n // ---------------------------------------------------------------\r\n isOnlineFromHeartbeat ( heartbeatTime : any ) : boolean\r\n {\r\n return DateStringServiceStatic.isOnlineFromDateTimeTicks(heartbeatTime);\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { HttpClient, HttpEvent, HttpHeaders, HttpParams, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { NaclPairClient } from '../../models/crypto/naclPairClient.model';\r\nimport { Salt } from '../../models/crypto/salt.model';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n\r\n/*\r\n * ref:https:// www.techiediaries.com/angular-local-json-files/\r\n * import * as Enums from '../../assets/json/enums';\r\n */\r\n\r\n// define this namespace somewhere\r\n/*\r\n * export namespace ResponseTypeOld {\r\n * export const JSON = 'json' as const;\r\n * export const ArrayBuffer = 'arraybuffer' as const;\r\n * export const Blob = 'blob' as const;\r\n * export const Text = 'text' as const;\r\n * export const Image = 'image' as const;\r\n * export const CSS = 'css' as const;\r\n * }\r\n */\r\n\r\n/*\r\n * export namespace HeaderTypeOld\r\n * {\r\n * export const JSON = { 'Content-Type': 'application/json' };//;'application/json'; //\r\n * export const ArrayBuffer = { 'Content-Type': 'application/octet-stream' };\r\n * export const Blob = { 'Content-Type': 'blob' };\r\n * export const Text = { 'Content-Type': 'application/text' };\r\n * export const CSS = { 'Content-Type': 'text/css' };\r\n * export const Image = { 'Content-Type': 'multipart/form-data' };\r\n * }\r\n */\r\n\r\n/*\r\n * export namespace HeaderType\r\n * {\r\n * export const Http = HttpHeaders;\r\n * export const kvHeader = { header: '' };\r\n * export const StrHeader = '';\r\n * export const arrHeader = [];\r\n * }\r\n */\r\n\r\n// var params = new URLSearchParams()\r\n/*\r\n * export namespace ParamsType\r\n * {\r\n * export const httpParams = HttpParams;\r\n * export const kvParams = { param: '' };\r\n * export const StrParam = '';\r\n * export const arrParam = [];\r\n * }\r\n */\r\n/*\r\n * ------------------------------------------------------------------------------------\r\n * for form:\r\n * var params = new URLSearchParams()\r\n * params.set( 'firstName', 'Ali' )\r\n * let headers = new Headers( { 'Content-Type': 'application/x-www-form-urlencoded' } )\r\n */\r\n\r\n/*\r\n * this.http.post( this.url, params.toString(), { headers: headers } )\r\n * ------------------------------------------------------------------------------------\r\n * ref:https:// docs.w3cub.com/angular~10/guide/http.html\r\n * ref: HTTP header options:\r\n * options: {\r\n * headers ?: HttpHeaders | { [ header: string]: string | string[] },\r\n * observe ?: 'body' | 'events' | 'response',\r\n * params ?: HttpParams | { [ param: string]: string | string[] },\r\n * reportProgress ?: boolean,\r\n * responseType ?: 'arraybuffer' | 'blob' | 'json' | 'text',\r\n * withCredentials ?: boolean,\r\n * }\r\n * ------------------------------------------------------------------------------------\r\n */\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HttpService implements OnDestroy {\r\n // ResponseTypes:\r\n public respJSON = [ 'application/json; charset=utf-8; text/plain;'] as const;\r\n public respArrayBuffer = 'application/octet-stream' as const;\r\n public respBlob = 'blob' as const;\r\n public respText = 'application/text' as const;\r\n public respImage = 'multipart/form-data' as const;\r\n public respCSS = 'text/css' as const;\r\n\r\n // ContentTypes:\r\n public contJSON = { 'Content-Type': [ 'application/json; charset=utf-8' ] }; // [ 'application/json; charset=utf-8; text/plain' ]\r\n public contArrayBuffer = { 'Content-Type': 'application/octet-stream'}; // ;'application/x-www-form-urlencoded'\r\n public contBlob = { 'Content-Type': 'blob'};\r\n public contText = { 'Content-Type': 'text/plain; application/text'};\r\n public contCSS = { 'Content-Type': 'text/css'};\r\n public contImage = { 'Content-Type': 'multipart/form-data'};\r\n\r\n // HeaderType: //may be redundent\r\n public hdrJSON = { 'Content-Type': [ 'application/json; charset=utf-8' ]}; // ;'application/json'; //\r\n public hdrArrayBuffer = { 'Content-Type': 'application/octet-stream'};\r\n public hdrBlob = { 'Content-Type': 'blob'};\r\n public hdrText = { 'Content-Type': 'application/text'};\r\n public hdrCSS = { 'Content-Type': 'text/css'};\r\n public hdrImage = { 'Content-Type': 'multipart/form-data'};\r\n\r\n // HeadersTypes:\r\n public hdrHttpHeaders = HttpHeaders;\r\n public hdrKvHeaders = { header: ''};\r\n public hdrStrHeaders = '';\r\n public hdrArrHeaders = [];\r\n\r\n // ParamsTypes:\r\n public httpParams = HttpParams;\r\n public kvParams = { param: ''};\r\n public strParams = '';\r\n public arrParams = [];\r\n // ----------------------------------------\r\n public boxNonce: BoxNonceEntity = new BoxNonceEntity();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public environment = '';\r\n public enums: any;\r\n public globalVars = [];\r\n public headers = new HttpHeaders();\r\n public isDevelopmentEnvironment = true;\r\n public isMobilevar = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public naclPairClient: NaclPairClient = new NaclPairClient();\r\n public params = new HttpParams();\r\n public reqOpts = {\r\n headers: { 'Content-Type': 'application/octet-stream'},\r\n transformRequest: [],\r\n responseType: 'arraybuffer',\r\n };\r\n public returnUrl = '';\r\n public salt : Salt = new Salt();\r\n public signedInUserId = 0;\r\n public sitUser: SitUser = new SitUser();\r\n public tempElem : any;\r\n \r\n\r\n constructor(\r\n public httpClient: HttpClient,\r\n public router: Router,\r\n ) {\r\n /*\r\n * this.enums = ( Enums as any ).default; //ref:https:// www.techiediaries.com/angular-local-json-files/\r\n * debugger;\r\n */\r\n this.getEnumsFromServer();\r\n this.enums = EmitterSubjectService.getEnums();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.enums)) {\r\n this.salt.publicKey = this.enums.talaChabi.chabi;\r\n this.salt.secretKey = this.enums.talaChabi.chabiGopon;\r\n this.salt.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n EmitterSubjectService.setSalty( this.salt );\r\n // debugger;\r\n // Update the application's default-keys:\r\n EmitterSubjectService.emitResetSaltShaker(this.salt);\r\n }\r\n // debugger\r\n // this.getAccountMessages();\r\n // this.getKeys( 'pair' );\r\n\r\n\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result;\r\n } );\r\n\r\n EmitterSubjectService.returnUrlEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.returnUrl = result;\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n } );\r\n\r\n\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result; // JSON.parse(JSON.stringify(result));\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n } );\r\n /*\r\n * ---------------------------------------------------\r\n * Note: only SlakezSaltService will emit this value,\r\n * and there are no other listerens for this.\r\n * It's objective is to get the Nacl-Key-Pairs\r\n * and set it to emitterService so that\r\n * the respective caller can retrieve it from\r\n * emitterService.\r\n * ---------------------------------------------------\r\n */\r\n EmitterSubjectService.getKeysEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( ktype ) =>\r\n {\r\n // SlakezSaltServiceStatic.getSaltyPair( ktype ); // JSON.parse(JSON.stringify(result));\r\n EmitterSubjectService.getSaltyPair();\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n } );\r\n // this.globalVars = this.getCssRootVariables();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * BEGIN of ResponseType getters:\r\n */\r\n public getResponseTypeJson(): any {\r\n return this.respJSON;\r\n }\r\n public getResponseTypeArrayBuffer(): any {\r\n return this.respArrayBuffer;\r\n }\r\n public getResponseTypeBlob(): any {\r\n return this.respBlob;\r\n }\r\n public getResponseTypeText(): any {\r\n return this.respText;\r\n }\r\n public getResponseTypeCSS(): any {\r\n return this.respCSS;\r\n }\r\n public getResponseTypeImage(): any {\r\n return this.respImage;\r\n }\r\n /*\r\n * END of ResponseType getters:\r\n * ---------------------------------------------------------------\r\n * BEGIN of ContentType getters:\r\n */\r\n public getContentTypeJson(): any {\r\n return this.contJSON;\r\n }\r\n public getContentTypeArrayBuffer(): any {\r\n return this.contArrayBuffer;\r\n }\r\n public getContentTypeBlob(): any {\r\n return this.contBlob;\r\n }\r\n public getContentTypeText(): any {\r\n return this.contText;\r\n }\r\n public getContentTypeCSS(): any {\r\n return this.contCSS;\r\n }\r\n public getContentTypeImage(): any {\r\n return this.contImage;\r\n }\r\n /*\r\n * END of ContentType getters:\r\n * ---------------------------------------------------------------\r\n * BEGIN of HeaderType getters:\r\n */\r\n public getHeadersTypeHttp(): any {\r\n return this.hdrHttpHeaders;\r\n }\r\n public getHeadersTypeKvHeader(): any {\r\n return this.hdrKvHeaders;\r\n }\r\n public getHeadersTypeString(): any {\r\n return this.hdrStrHeaders;\r\n }\r\n public getHeadersTypeArray(): any {\r\n return this.hdrArrHeaders;\r\n }\r\n /*\r\n * END of ResponseType getters:\r\n * ---------------------------------------------------------------\r\n * BEGIN of ParamsType getters:\r\n */\r\n public getParamsTypeHttp(): any {\r\n return this.httpParams;\r\n }\r\n public getParamsTypeKvHeader(): any {\r\n return this.kvParams;\r\n }\r\n public getParamsTypeString(): any {\r\n return this.strParams;\r\n }\r\n public getParamsTypeArray(): any {\r\n return this.arrParams;\r\n }\r\n /*\r\n * END of ResponseType getters:\r\n * ---------------------------------------------------------------\r\n */\r\n setSaltShaker(salt: Salt): any {\r\n this.naclPairClient.publicKey = salt.publicKey; // naclUtil.decodeBase64(this.salt.pk);\r\n this.naclPairClient.secretKey = salt.secretKey; // naclUtil.decodeBase64(this.salt.sk);\r\n const localSaltyPair = new NaclPairClient();\r\n\r\n localSaltyPair.publicKey = this.naclPairClient.publicKey;\r\n localSaltyPair.secretKey = this.naclPairClient.secretKey;\r\n localSaltyPair.id = this.signedInUserId;\r\n localSaltyPair.modelName = 'saltyPair'; // key\r\n localSaltyPair.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n\r\n const message = 'the size of SaltyPair data is: ' + localSaltyPair.toString().length;\r\n\r\n EmitterSubjectService.setSaltyPair(localSaltyPair); // set it on emitterService\r\n // this.localStorageService.setSaltyPair(localSaltyPair); // save to localStorage\r\n\r\n return localSaltyPair;\r\n }\r\n // ---------------------------------------------------------------\r\n public setHeaderType(hType: string) {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hType)) {\r\n switch (hType.toLowerCase()) {\r\n case 'json':\r\n this.reqOpts.headers = this.getContentTypeJson();\r\n this.reqOpts.responseType = this.getResponseTypeJson();\r\n break;\r\n case 'json2text':\r\n this.reqOpts.headers = this.getContentTypeJson();\r\n this.reqOpts.responseType = this.getResponseTypeJson(); // this.getResponseTypeJson(); \r\n break;\r\n case 'blob':\r\n this.reqOpts.headers = this.getContentTypeBlob();\r\n this.reqOpts.responseType = this.getResponseTypeBlob();\r\n break;\r\n case 'text':\r\n this.reqOpts.headers = this.getContentTypeText();\r\n this.reqOpts.responseType = this.getContentTypeText();\r\n break;\r\n case 'arraybuffer':\r\n this.reqOpts.headers = this.getContentTypeArrayBuffer();\r\n this.reqOpts.responseType = this.getResponseTypeArrayBuffer();\r\n break;\r\n case 'image':\r\n this.reqOpts.headers = this.getContentTypeImage();\r\n this.reqOpts.responseType = this.getResponseTypeImage();\r\n break;\r\n case 'css':\r\n this.reqOpts.headers = this.getContentTypeCSS();\r\n this.reqOpts.responseType = this.getResponseTypeCSS();\r\n break;\r\n default:\r\n this.reqOpts.headers = this.getContentTypeJson();\r\n this.reqOpts.responseType = this.getResponseTypeJson();\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getContentType(cType: string): any {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cType)) {\r\n switch (cType.toLowerCase()) {\r\n case 'json':\r\n return this.getContentTypeJson();\r\n case 'blob':\r\n return this.getContentTypeBlob();\r\n case 'text':\r\n return this.getContentTypeText();\r\n case 'arraybuffer':\r\n return this.getContentTypeArrayBuffer();\r\n case 'image':\r\n return this.getContentTypeImage();\r\n case 'css':\r\n return this.getContentTypeCSS();\r\n default:\r\n return this.getContentTypeJson();\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getResponseType(cType: string): any {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cType)) {\r\n switch (cType.toLowerCase()) {\r\n case 'json':\r\n return this.getResponseTypeJson();\r\n case 'blob':\r\n return this.getResponseTypeBlob();\r\n case 'text':\r\n return this.getResponseTypeText();\r\n case 'arraybuffer':\r\n return this.getResponseTypeArrayBuffer();\r\n case 'image':\r\n return this.getResponseTypeImage();\r\n case 'css':\r\n return this.getResponseTypeCSS();\r\n default:\r\n return this.getResponseTypeJson();\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getParamsType(cType: string): any {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cType)) {\r\n switch (cType.toLowerCase()) {\r\n case 'http':\r\n return this.getParamsTypeHttp();\r\n case 'kv':\r\n return this.getParamsTypeKvHeader();\r\n case 'str':\r\n return this.getParamsTypeString();\r\n case 'array':\r\n return this.getParamsTypeArray();\r\n default:\r\n return this.getParamsTypeHttp();\r\n }\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n createHeaders(cType: string, rType: string, cryptUserKey: string, parms: []): any {\r\n const contentType = this.getContentType(cType);\r\n const resType = this.getResponseType(rType);\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n contentType,\r\n responseType: resType,\r\n observe: 'response',\r\n reportProgress: 'false',\r\n withCredentials: 'false',\r\n params: parms,\r\n Authorization: cryptUserKey,\r\n }),\r\n };\r\n\r\n return httpOptions;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getPromise (url : any, hType : any): Promise {\r\n this.setHeaderType(hType);\r\n const value = this.httpClient\r\n .get( url, { headers: this.reqOpts.headers})\r\n .toPromise();\r\n\r\n return value;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * Note: This is not used, but do not delete it\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n normalizeApiUrl(url: string): string {\r\n const oldUrl = url;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n // alert ('prefixing: slakez to api');\r\n if (url.toLowerCase().indexOf('slakez') === -1) {\r\n if (url.toLowerCase().indexOf('/api/') !== -1) {\r\n url = '/slakez' + url;\r\n } else if (url.toLowerCase().indexOf('api/') !== -1) {\r\n url = '/slakez/' + url;\r\n } else if (url.toLowerCase().indexOf('/api') !== -1) {\r\n url = '/slakez' + url;\r\n } else if (url.toLowerCase().indexOf('api') === -1) {\r\n url = '/slakez/api/' + url;\r\n }\r\n }\r\n }\r\n alert('original-url: ' + oldUrl + '\\n modified url:' + url);\r\n // debugger;\r\n return url;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n normalizeApi(url: string, isAbsolute: boolean): string {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url) && url.indexOf('api') !== -1) {\r\n if (isAbsolute) {\r\n if (url.indexOf('/api') !== -1) {\r\n url = url.replace('/api', 'api');\r\n }\r\n } else {\r\n if (url[0] !== '/') {\r\n url = '/' + url;\r\n }\r\n }\r\n }\r\n return url;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n prefixUrlWithApi (url : any) {\r\n var out : string = '';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n if (url.indexOf('api') !== -1) {\r\n out = url;\r\n }\r\n else {\r\n out = \"/api/\" + url;\r\n }\r\n out = out.replace(\"//\", \"/\");\r\n // debugger;\r\n }\r\n return out;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n stripSlakez(url: string): string {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n url = url.replace(/slakez\\//, '');\r\n }\r\n return url;\r\n }\r\n\r\n // ------------------------------------------------------------------------------------------------\r\n isJsonFile (url : string) : boolean {\r\n var isJson = false;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n if (url.indexOf('.json') !== -1) {\r\n isJson = true;\r\n }\r\n }\r\n return isJson;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n trimFileExtensionFromUrl(url: string): string | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n let lastIndex = url.lastIndexOf('.');\r\n let ext = url.slice(lastIndex, url.length - 1);\r\n let urlWithoutFileExt = url.slice(0, lastIndex);\r\n return urlWithoutFileExt;\r\n }\r\n else return null;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n https2http(url: string): string {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n url = url.replace('https:// ', 'http:// ');\r\n // url = this.stripSlakez(url);\r\n }\r\n return url;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n http2https(url: string): string {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n url = url.replace('http:// ', 'https:// ');\r\n // url = this.stripSlakez(url);\r\n }\r\n return url;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n get (url : any): Observable {\r\n /*\r\n * a special case:!!!\r\n * ------------------\r\n */\r\n if (url.toLowerCase().indexOf('memberscroll') !== -1) {\r\n if (url.toLowerCase().indexOf('api') === -1) {\r\n url.replace('memberscroll', '/api/memberscroll');\r\n }\r\n } else if (url.toLowerCase().indexOf('myphotos') !== -1) {\r\n if (url.toLowerCase().indexOf('api') === -1) {\r\n url.replace('myPhotos', '/api/myPhotos');\r\n }\r\n }\r\n\r\n // url = this.normalizeApiUrl( url );\r\n\r\n const conType = this.getContentType('json'); // current-version\r\n const resType = this.getResponseType('json');\r\n const options = {\r\n headers: new HttpHeaders({\r\n contentType: 'application/json; charset=utf-8;', // conType,\r\n responseType: [ 'application/json; charset=utf-8;' ], // resType,\r\n Accept: '*/*',\r\n observe: 'response', // {'event' | 'body'}\r\n }),\r\n };\r\n /*\r\n * debugger;\r\n * url = this.https2http( url );\r\n */\r\n\r\n // url = this.stripOut(url);\r\n url = this.http2https(url);\r\n // alert('get==>' + url);\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n // debugger;\r\n return this.httpClient.get( url, options );\r\n\r\n //if ( window.navigator.onLine )\r\n //{\r\n // return this.httpClient.get( url, options );\r\n //}\r\n // var value = this.commonHttp.get( url ) //previous-version\r\n\r\n // return null;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getObservable (url : any, hType : any): Observable {\r\n this.setHeaderType(hType);\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n // debugger;\r\n const value = this.httpClient.get(url, { headers: this.reqOpts.headers});\r\n // debugger;\r\n return value;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n async getPromiseAsync (url : string, hType? : string) : Promise {\r\n // debugger;\r\n const options = {\r\n headers: new HttpHeaders({\r\n contentType: 'application/json; charset=utf-8;', // conType,\r\n responseType: [ 'application/json; charset=utf-8;' ], // resType,\r\n Accept: 'application/json; charset=utf-8;', // https://denisjakus.com/dotnet-core-415-unsupported-media-type-error-easy-fix/\r\n observe: [ 'response', 'event', 'body' ], // 'response', //\r\n }),\r\n };\r\n url = this.http2https(url);\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n let response = await this.httpClient.get(url, options)?.toPromise();\r\n // debugger;\r\n return response;\r\n }\r\n // ================================================================================================\r\n // ------------------------------------------------------------------------------------------------\r\n // const reqHeader = new HttpHeaders( { 'Content-Type': 'application/json', 'No-Auth': 'True' } );\r\n // ------------------------------------------------------------------------------------------------\r\n post(url: string, data: any, hType: string): Observable {\r\n /*\r\n * var value = this.commonHttp.post(url, data, { 'headers': this.reqOpts.headers }); //previous-version\r\n */\r\n // debugger;\r\n // const conType = this.getContentType(hType); // current-version\r\n // const resType = this.getResponseType(hType);\r\n const options = {\r\n headers: new HttpHeaders({\r\n contentType: 'application/json; charset=utf-8; application/octet-stream;', // conType,\r\n responseType: [ 'text/plain; charset=utf-8; arraybuffer; application/json; ' ], // resType,\r\n Accept: 'application/json; charset=utf-8; arraybuffer; text/plain;', // https://denisjakus.com/dotnet-core-415-unsupported-media-type-error-easy-fix/\r\n observe: [ 'response', 'body', 'event' ], // 'response', //\r\n }),\r\n };\r\n\r\n /*\r\n * url = this.normalizeApiUrl( url )\r\n * url = this.normalizeApi( url, false );\r\n * url = this.https2http( url );\r\n */\r\n // url = this.stripOut(url);\r\n url = this.http2https(url);\r\n // alert( 'post==>' + url );\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n // debugger;\r\n\r\n let subscriber = this.httpClient.post(url, data, options);\r\n return subscriber;\r\n\r\n //if ( window.navigator.onLine )\r\n //{\r\n // return this.httpClient.post( url, data, options );\r\n //}\r\n //else\r\n //{\r\n // this.startSpinner();\r\n // let timer = setTimeout( () =>\r\n // {\r\n // EmitterSubjectService.emitStopSpinner( true );\r\n // clearTimeout( timer );\r\n // }, 5000 );\r\n // return null;\r\n // }\r\n // debugger; \r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n // Does not work! Difficult to implement on the calling method that actually works. Date: 20230115\r\n // ------------------------------------------------------------------------------------------------\r\n async postAsync (url : string, data : any, hType : string) : Promise {\r\n const options = {\r\n headers: new HttpHeaders({\r\n contentType: 'application/json; charset=utf-8; application/octet-stream;', // conType,\r\n responseType: [ 'application/json; charset=utf-8; arraybuffer; text/plain;' ], // resType,\r\n Accept: 'application/json; charset=utf-8; arraybuffer; text/plain;', // https://denisjakus.com/dotnet-core-415-unsupported-media-type-error-easy-fix/\r\n observe: [ 'response', 'body', 'event' ], // 'response', //\r\n }),\r\n };\r\n let subscriber : any;\r\n url = this.http2https(url);\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n // debugger;\r\n \r\n try {\r\n await this.httpClient.post(url, data, options).subscribe(data => {\r\n return new Promise((resolve, reject) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n resolve(data);\r\n }\r\n else {\r\n reject(null);\r\n }\r\n }).catch((error) => {\r\n this.message = StringServiceStatic.stringBuilder(\"httpService.postAsync promise's error-message: \" + error.message);\r\n console.log(this.message);\r\n return null;\r\n });\r\n })\r\n }\r\n catch (error) {\r\n this.message = StringServiceStatic.stringBuilder(\"httpService.postAsync try error-message: \" + error.message);\r\n console.log(this.message);\r\n return null;\r\n\t\t} \r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n async postAsync1 (url : string, data : any, hType : string) : Promise {\r\n /*\r\n * var value = this.commonHttp.post(url, data, { 'headers': this.reqOpts.headers }); //previous-version\r\n */\r\n // debugger;\r\n // const conType = this.getContentType(hType); // current-version\r\n // const resType = this.getResponseType(hType);\r\n const options = {\r\n headers: new HttpHeaders({\r\n contentType: 'application/json; charset=utf-8; application/octet-stream;', // conType,\r\n responseType: [ 'application/json; charset=utf-8; arraybuffer; text/plain;' ], // resType,\r\n Accept: 'application/json; charset=utf-8; arraybuffer; text/plain;', // https://denisjakus.com/dotnet-core-415-unsupported-media-type-error-easy-fix/\r\n observe: [ 'response', 'body', 'event' ], // 'response', //\r\n CacheControl: 'must-revalidate',\r\n }),\r\n };\r\n\r\n /*\r\n * url = this.normalizeApiUrl( url )\r\n * url = this.normalizeApi( url, false );\r\n * url = this.https2http( url );\r\n */\r\n // url = this.stripOut(url);\r\n url = this.http2https(url);\r\n // alert( 'post==>' + url );\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n // debugger;\r\n\r\n let subscriber = await this.httpClient.post(url, data, options);\r\n return subscriber.toPromise().catch((error) => {\r\n this.message = StringServiceStatic.stringBuilder(\"httpService.postAsync error-message: \" + error.message);\r\n console.log(this.message);\r\n });\r\n\r\n //if ( window.navigator.onLine )\r\n //{\r\n // return this.httpClient.post( url, data, options );\r\n //}\r\n //else\r\n //{\r\n // this.startSpinner();\r\n // let timer = setTimeout( () =>\r\n // {\r\n // EmitterSubjectService.emitStopSpinner( true );\r\n // clearTimeout( timer );\r\n // }, 5000 );\r\n // return null;\r\n // }\r\n // debugger; \r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n // Note: async operation is not compatible with Observers, because since observers are used for\r\n // streaming data, the operation cannot be halted while sending data, hence, going against\r\n // the principal of async operation.\r\n // ------------------------------------------------------------------------------------------------\r\n postObservable (url : string, data : any, hType : string) : Observable {\r\n // debugger;\r\n this.setHeaderType(hType);\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n // debugger;\r\n const subscriber = this.httpClient.post(url, data, { headers: this.reqOpts.headers });\r\n // debugger;\r\n return subscriber;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n // Note: This method uses a HttpRequest as follows:\r\n // const req = new HttpRequest('POST', `/api/FileUpload/ImageUpload`, formData, {\r\n // reportProgress: true,\r\n // responseType: 'json'\r\n // });\r\n // ------------------------------------------------------------------------------------------------\r\n postReqObservable (req : any) : Observable {\r\n // debugger;\r\n const subscriber = this.httpClient.request(req);\r\n // debugger;\r\n return subscriber;\r\n }\r\n // ================================================================================================\r\n // ------------------------------------------------------------------------------------------------\r\n async postAsync2 (url : string, data : any, hType : string) : Promise {\r\n // debugger;\r\n const options = {\r\n headers: new HttpHeaders({\r\n contentType: 'application/json; charset=utf-8;', // conType,\r\n responseType: [ 'application/json; charset=utf-8;' ], // resType,\r\n Accept: 'application/json; charset=utf-8;', // https://denisjakus.com/dotnet-core-415-unsupported-media-type-error-easy-fix/\r\n observe: [ 'response', 'event', 'body' ], // 'response', //\r\n }),\r\n };\r\n url = this.http2https(url);\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n let promise = await this.httpClient.post(url, data, options).toPromise();\r\n // debugger;\r\n return promise;\r\n\r\n //.catch((e) => {\r\n // console.log('error occured while returning promise from observavle-data in postAsync(). Error-message: ' + e);\r\n // });\r\n\r\n // debugger;\r\n // let returnResult : any;\r\n // response.toPromise().finally();\r\n // return new Promise((resolve, reject) => {\r\n // response?.subscribe(result => {\r\n // returnResult = result;\r\n // if (returnResult) {\r\n // debugger;\r\n // resolve(returnResult);\r\n // }\r\n // else {\r\n // debugger;\r\n // reject('postAsyn() returned a null result');\r\n // }\r\n // }).unsubscribe()\r\n // }).catch((e) => {\r\n // console.log('error occured while returning promise from observavle-data in postAsync(). Error-message: ' + e);\r\n // });\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n postPromise (url : string, data : any, hType : string) : Promise {\r\n // debugger;\r\n this.setHeaderType(hType);\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n const value = this.httpClient\r\n .post(url, data, { headers: this.reqOpts.headers })\r\n .toPromise();\r\n // .catch ((e) => {\r\n // console.log('error occured while returning promise from observavle-data in postPromise(). Error-message: ' + e);\r\n // });\r\n\r\n return value;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n async postPromiseAsync(url: string, data: any, hType: string): Promise {\r\n debugger;\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n this.setHeaderType(hType);\r\n let message = '';\r\n return new Promise((resolve, reject) => {\r\n const value = this.httpClient\r\n .post(url, data, { headers: this.reqOpts.headers })\r\n .subscribe(result => {\r\n resolve(result);\r\n message = 'postPromiseAsync->subscribe(result) failed: ' + result;\r\n });\r\n\r\n reject(message);\r\n });\r\n }\r\n \r\n // -------------------------------------------------------------------------\r\n sendFile ( url : string, formData : FormData ) : Observable>\r\n {\r\n if (!this.isJsonFile(url)) {\r\n url = this.prefixUrlWithApi(url);\r\n }\r\n const req = new HttpRequest( 'POST', `${ url }`, formData, {\r\n reportProgress: true,\r\n responseType: 'json',\r\n } );\r\n\r\n return this.httpClient.request( req );\r\n }\r\n // -------------------------------------------------------------------------\r\n \r\n \r\n // ------------------------------------------------------------------------------------------------\r\n // startSpinner() : void\r\n // {\r\n // // let isBusy = new IsBusy();\r\n // // isBusy.message = 'Offline...';\r\n // // isBusy.isSpinner = isBusy.isBusy = true; // == isOpen\r\n // // isBusy.callerName = 'HttpService';\r\n // // EmitterSubjectService.emitShowSpinner(isBusy);\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n // getAuthorization(): any {\r\n // // debugger\r\n // let url = '/api/Home/GetAuthorizationJson';\r\n\r\n // url = '/api/Home/GetAuthorizationJson';\r\n // /*\r\n // * url = 'http:// slakez.com/slakez/api/home/getAauthorizationJson'\r\n // * url = 'http:// slakez.com/slakez/out/api/home/getAauthorizationJson';\r\n // * url = 'http:// slakez.com/slakez/out/api/SlakezSalt/GetSaltyPair';\r\n // * url = 'http:// slakez.com/slakez/api/SlakezSalt/GetSaltyPair'; // ERR_CONNECTION_RESET\r\n // * url = 'http:// slakez.com/api/SlakezSalt/GetSaltyPair' // 404 (Not Found)\r\n // * url = 'http:// slakez.com/wwwroot/api/SlakezSalt/GetSaltyPair';\r\n // */\r\n\r\n // // alert ( 'Sending-->/home/getAuthorizationJson' );\r\n\r\n // // debugger;\r\n // this.get(url).subscribe((data: any) => {\r\n // /*\r\n // * alert( 'getAuthorization()=>data: \\n' + data );\r\n // * debugger;\r\n // */\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // /*\r\n // * this.salt = data as Salt //Note: server-send variables are all lower-case\r\n // * debugger;\r\n // */\r\n // return data;\r\n // }\r\n // });\r\n // return true;\r\n // }\r\n // -------------------------------------------------------------------------\r\n // getAccountMessages(): any {\r\n // // debugger\r\n // let url = '/api/home/getAccountMessagesJson';\r\n\r\n // url = '/api/Home/GetAccountMessagesJson';\r\n // /*\r\n // * url = 'http:// slakez.com/slakez/api/home/getAccountMessagesJson'\r\n // * url = 'http:// slakez.com/slakez/out/api/home/getAccountMessagesJson';\r\n // * url = 'http:// slakez.com/slakez/out/api/SlakezSalt/GetSaltyPair';\r\n // * url = 'http:// slakez.com/slakez/api/SlakezSalt/GetSaltyPair'; // ERR_CONNECTION_RESET\r\n // * url = 'http:// slakez.com/api/SlakezSalt/GetSaltyPair' // 404 (Not Found)\r\n // * url = 'http:// slakez.com/wwwroot/api/SlakezSalt/GetSaltyPair';\r\n // */\r\n\r\n // // alert ( 'Sending-->/home/getAccountMessagesJson' );\r\n\r\n // // debugger;\r\n // this.get(url).subscribe((data: any) => {\r\n // /*\r\n // * alert( '(getAccountMessagesJson())=>data: \\n' + data );\r\n // * debugger;\r\n // */\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // /*\r\n // * this.salt = data as Salt //Note: server-send variables are all lower-case\r\n // * debugger;\r\n // */\r\n // return data;\r\n // }\r\n // });\r\n // // return this.getAuthorization();\r\n // }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Tested, works! 2020/12/26\r\n * ---------------------------------------------------------------\r\n */\r\n public getEnumsFromServer () : any\r\n {\r\n // debugger;\r\n this.get( 'assets/json/enums.json' ).subscribe(\r\n ( result ) =>\r\n {\r\n // debugger;\r\n if ( result )\r\n {\r\n /*\r\n * debugger;\r\n * this.enumsCallCounter = 0;\r\n */\r\n this.enums = result;\r\n EmitterSubjectService.setEnums( this.enums );\r\n let salt = new Salt();\r\n salt.publicKey = this.enums.talaChabi.chabi;\r\n salt.secretKey = this.enums.talaChabi.chabiGopon;\r\n EmitterSubjectService.emitResetSaltShaker( salt );\r\n EmitterSubjectService.setEnums( this.enums );\r\n return this.enums;\r\n // var unsalted = ( this.slakezSaltService as SlakezSaltService ).boxUnsalt(result);\r\n // //debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // var tEnums = JSON.parse(unsalted);\r\n // tEnums = JSON.stringify(tEnums, null, '\\n');\r\n // ref:https:// www.digitalocean.com/community/tutorials/js-json-parse-stringify\r\n // //debugger;\r\n\r\n // tEnums = JSON.parse(tEnums);\r\n // //debugger;\r\n // EmitterSubjectService.setEnums(tEnums);\r\n // this.enumsCallCounter = 0;\r\n // return this.enums = tEnums;\r\n // }\r\n }\r\n },\r\n ( error ) =>\r\n {\r\n // debugger;\r\n EmitterSubjectService.emitMyErrorLog( 'Error occured in GetEnums();\\n Error-message: ' + error.message );\r\n },\r\n );\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n getSandBoxFromServer () : Observable {\r\n // debugger;\r\n let url = 'Home/GetSandBoxJson';\r\n //this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(photoBn);\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n //}\r\n return this.getObservable(url, 'json');\r\n }\r\n // -------------------------------------------------------------------------\r\n getSaltyPair(ktype: string): any {\r\n // debugger;\r\n let value : any;\r\n // this.enums = ( Enums as any ).default; //ref:https:// www.techiediaries.com/angular-local-json-files/\r\n\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.enums)) {\r\n this.enums = EmitterSubjectService.getEnums();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ktype)) {\r\n this.salt.ktype = ktype;\r\n let url = 'SlakezSalt/GetSaltyPair';\r\n\r\n url = 'api/SlakezSalt/GetSaltyPair';\r\n /*\r\n * url = this.enums.environmentVariables.currentDirectory + '/Controllers/SlakezSalt/GetKeys';\r\n * url = './api/SalezSalt/' + this.enums.environmentVariables.currentDirectory + '/GetKeys';\r\n * url = 'http:// slakez.com/slakez/out/api/SlakezSalt/GetSaltyPair';\r\n * url = 'http:// slakez.com/slakez/api/SlakezSalt/GetSaltyPair'; // ERR_CONNECTION_RESET\r\n * url = 'http:// slakez.com/api/SlakezSalt/GetSaltyPair' // 404 (Not Found)\r\n * url = 'http:// slakez.com/wwwroot/api/SlakezSalt/GetSaltyPair';\r\n */\r\n\r\n // debugger;\r\n this.post(url, this.salt, 'json').subscribe((data: any) => {\r\n // debugger;\r\n\r\n // alert( '(getSaltyPair())===>data: \\n' + data );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n this.salt = data as Salt; // Note: server-send variables are all lower-case\r\n // alert ('GetSaltyPair=>data:' + this.salt.ktype + '; sk:' + this.salt.sk + '; pk:' + this.salt.pk);\r\n if (this.salt.ktype.indexOf('pair') !== -1) {\r\n value = this.setSaltShaker(this.salt);\r\n // debugger;\r\n } else if (this.salt.ktype.indexOf('sign') !== -1) {\r\n /* TODO:capture sign-saltys*/ value = this.setSaltShaker(this.salt);\r\n } else if (this.salt.ktype.indexOf('shared') !== -1) {\r\n /* TODO:capture shared-saltys*/ value = this.setSaltShaker(this.salt);\r\n }\r\n return value;\r\n }\r\n });\r\n } else {\r\n return null as any;\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ================================================================================================\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// www.htmlgoodies.com/html5/tutorials/determine-an-images-type-using-the-javascript-filereader.html\r\n */\r\n fileChunk (File : any): any {\r\n if (!File.prototype.slice) {\r\n const newSlice = File.prototype.mozSlice || File.prototype.webkitSlice;\r\n\r\n if (newSlice) {\r\n File.prototype.slice = (() => (startingByte : any, length : any) => newSlice.call(this, startingByte, length + startingByte))();\r\n } else {\r\n throw Error('File.slice() not supported.');\r\n }\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// github.com/mdn/js-examples/blob/master/promises-test/index.html\r\n */\r\n httpPromise (url : any, method: string): any {\r\n /*\r\n * Note:method={GET, POST, PUT, ...}\r\n * Create new promise with the Promise() constructor;\r\n * This has as its argument a function\r\n * with two parameters, resolve and reject\r\n */\r\n return new Promise((resolve, reject) => {\r\n // Standard XHR to load an image\r\n const request = new XMLHttpRequest();\r\n\r\n request.open(method, url);\r\n request.responseType = 'blob';\r\n // When the request loads, check whether it was successful\r\n request.onload = () => {\r\n if (request.status === 200) {\r\n // If successful, resolve the promise by passing back the request response\r\n resolve(request.response);\r\n } else {\r\n // If it fails, reject the promise with a error message\r\n reject(Error('Image didn\\'t load successfully; error code:' + request.statusText));\r\n }\r\n };\r\n request.onerror = () => {\r\n /*\r\n * Also deal with the case when the entire request fails to begin with\r\n * This is probably a network error, so reject the promise with an appropriate message\r\n */\r\n reject(Error('There was a network error.'));\r\n };\r\n /*\r\n * Send the request\r\n * this.isBusy.isBusy = true;\r\n * this.isBusy.message = 'fetching from: ' + url;\r\n * EmitterSubjectService.emitIsBusy(this.isBusy);\r\n */\r\n\r\n const value = request.send();\r\n\r\n /*\r\n * this.isBusy.isBusy = false;\r\n * this.isBusy.message = '';\r\n * EmitterSubjectService.emitIsBusy(this.isBusy);\r\n */\r\n\r\n return value;\r\n });\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * This method will read all the vairables in the :root element of a css stylesheet\r\n * ref:https:// stackoverflow.com/questions/48760274/get-all-css-root-variables-in-array-using-javascript-and-change-the-values\r\n * ref:https:// github.com/Microsoft/TypeScript/issues/15319\r\n * ---------------------------------------------------------------\r\n */\r\n getCssVariables(): void {\r\n /*\r\n * const sheet = sheet.cssRules[0];\r\n */\r\n const sheet = document.styleSheets[0];\r\n const declaration = sheet.cssRules[0];\r\n const allVar = declaration.cssText.split(';');\r\n\r\n const result: any = { };\r\n\r\n allVar.map((e) => {\r\n const a = e.split(':');\r\n\r\n if (a[0] !== '') {\r\n result[a[0].trim()] = a[1].trim();\r\n }\r\n });\r\n\r\n console.log(result);\r\n const keys = Object.keys(result);\r\n\r\n console.log(keys);\r\n\r\n /*\r\n * Usage examples:\r\n * we change the first variable\r\n * document.documentElement.style.setProperty(keys[0], 'green');\r\n */\r\n\r\n /*\r\n * we change the variable --secondary-color\r\n * document.documentElement.style.setProperty(keys[keys.indexOf('--secondary-color')], 'red');\r\n */\r\n }\r\n // ---------------------------------------------------------------\r\n getCssRootVariables(url = './styles.css'): any {\r\n // an associative array that will hold our values\r\n const cssVars: any = { };\r\n\r\n /*\r\n * var request = new XMLHttpRequest();\r\n * request.open('GET', url, true);\r\n */\r\n\r\n /*\r\n * request.onload = function () {\r\n * if (request.status >= 200 && request.status < 400) {\r\n * Get all CSS Variables in the document\r\n * var matches = request.responseText.match(/(--)\\w.+;/gi);\r\n */\r\n\r\n return this.get(url).subscribe(\r\n (result: any) => {\r\n // Get all CSS Variables in the document\r\n const matches = result.match(/(--)\\w.+;/gi);\r\n\r\n /*\r\n * var matches = styles.match(/(--)\\w.+;/gi);\r\n * Get all CSS Variables in the document\r\n */\r\n\r\n matches.map((e : any) => {\r\n const property = e;\r\n // split the Variable name from its value\r\n const splitprop = property.split(':');\r\n\r\n // turn the value into a string\r\n const value = splitprop[1].toString();\r\n\r\n cssVars[splitprop[0]] = value.slice(0, -1); // remove ;\r\n });\r\n\r\n return cssVars;\r\n\r\n /*\r\n * Usage examples:\r\n * console.log(cssVars);\r\n * > Object {--primaryColor: 'aliceblue', --secondaryColor: 'blue', --errorColor: '#cc2511'}\r\n */\r\n\r\n /*\r\n * console.log(Object.keys(cssVars));\r\n * > ['--primaryColor', '--secondaryColor', '--errorColor' ]\r\n */\r\n\r\n // this.setTheme(cssVars)\r\n },\r\n (onerror = () => {\r\n console.log('There was a connection error');\r\n })\r\n );\r\n }\r\n // ---------------------------------------------------------------\r\n setTheme (theme : any): void {\r\n const keys = Object.keys(theme);\r\n\r\n keys.map((e) => {\r\n const prop = e;\r\n const color = theme[e];\r\n\r\n console.log(prop, color);\r\n // --primaryColor aliceblue etc...;\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n getGlobalVars(): any {\r\n return this.globalVars;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * resetPasswordPreAuthentication(returnUrl: string) {\r\n * debugger;\r\n * if (returnUrl) {\r\n * this.post('/api/Account/ResetPasswordPreAuthentication', JSON.stringify(returnUrl), 'json').subscribe(result => {\r\n * debugger;\r\n * if (!(StringServiceStatic as StringService).isNullOrEmpty(result)) {\r\n * var loginResult = JSON.parse((this.slakezSaltService as SlakezSaltService).boxUnsalt(result as BoxNonce)) as LoginSuccess;\r\n * debugger;\r\n * this.loginSuccess = loginResult as LoginSuccess;\r\n * this.router.navigate(['/resetPassword']);\r\n * }\r\n * else {\r\n * if (loginResult) {\r\n * this.emitterService\r\n * .emitMyErrorLog({ feedbackMessage: 'Error occured in password recovery process;\\n Error-mag: ' + loginResult.message });\r\n * }\r\n * else {\r\n * this.emitterService\r\n * .emitMyErrorLog({ feedbackMessage: 'Error occured in password recovery process;\\n Error-mag: ' });\r\n * }\r\n * }\r\n * },\r\n * error => {\r\n * //alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag: ' + error);\r\n * this.emitterService\r\n * .emitMyErrorLog({ feedbackMessage: 'Error occured in password recovery process;\\n Error-mag: ' + error.message });\r\n * });\r\n * }\r\n * }\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n navigateTo(path: string): void {\r\n if (path && path.length > 0) {\r\n // this.router.navigate([path]); //TODO: send to redirectionService.fire....\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * TODO: Test\r\n */\r\n whenScrollEnds(): boolean {\r\n const threshold = 100;\r\n\r\n this.tempElem = document.getElementById('whenScrollEndsId') as HTMLElement;\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem) && this.tempElem[0] && this.tempElem[0].scrollHeight - (this.tempElem[0].scrollTop + this.tempElem[0].clientHeight) <= threshold) {\r\n /*\r\n * debugger;\r\n * Scroll is almost at the bottom. Loading more rows\r\n */\r\n this.tempElem.remove();\r\n EmitterSubjectService.emitWhenScrollEnds(true);\r\n return true;\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, Renderer2 } from '@angular/core';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Content } from '../../models/common/content.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { KV } from '../../models/keyValue/kv.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { KvAnyArr } from '../../models/keyValue/kvAnyArr.model';\r\nimport { KVKV } from '../../models/keyValue/kvKv.model';\r\nimport { KvKvAnyArr } from '../../models/keyValue/kvKvAnyArr.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n\r\n@Injectable({ providedIn: 'any'})\r\nexport class KvArrayService {\r\n public jsTypes = ['Boolean', 'BigInt', 'Function', 'NaN', 'Null', 'Number', 'Object', 'object', 'String', 'Symbol', 'Undefined'];\r\n public profilePics: string[] = [];\r\n public sitUserKey: any;\r\n public index = -1;\r\n public renderer!: Renderer2;\r\n public constructor(public rendererService: RendererService) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.rendererService)) {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n arrayToCsvString(inArr: any[]): any {\r\n if (inArr.length > 0) {\r\n let csvStr = '';\r\n\r\n for (let i = 0; i < inArr.length - 1; i++) {\r\n csvStr += csvStr + inArr[i].toString() + ', ';\r\n }\r\n csvStr += csvStr + inArr[inArr.length - 1].toString();\r\n return csvStr;\r\n }\r\n return '';\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n getArrayFromCommaSeparatedData (data : any): any {\r\n let tArray = [];\r\n\r\n if (data) {\r\n tArray = data.split(',');\r\n if (tArray.length > 0) {\r\n // truncate the last empty index due to the last ',' in the data-string\r\n tArray.splice(tArray.length - 1, 1);\r\n }\r\n }\r\n return tArray;\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * Tested, works!\r\n */\r\n createArrayFromMap(inmap: Map): any[] {\r\n const arr : any = [];\r\n\r\n if (inmap && inmap.size > 0) {\r\n inmap.forEach(function callback(value, key, map) {\r\n arr.push(value);\r\n });\r\n }\r\n return arr;\r\n }\r\n // --------------------------------------------------------------\r\n createMapFromArray(arr: any[]): Map {\r\n const map = new Map();\r\n\r\n if (arr && arr.length > 0) {\r\n arr.forEach(function callback(value, key, mp) {\r\n map.set(key, value);\r\n });\r\n }\r\n return map;\r\n }\r\n // --------------------------------------------------------------\r\n getIndexOfItemInArr(arr: any[], item: any): number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item)) {\r\n let isFound = false;\r\n\r\n for (let i = 0; i < arr.length; i++) {\r\n if (arr[i].toLowerCase().indexOf(item.toLowerCase()) !== -1) {\r\n isFound = true;\r\n if (isFound) {\r\n return i;\r\n }\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n // -------------------------------------------------------------\r\n profilePicsToKvArr(profilePics: ProfilePics): any {\r\n // Note: To distinguosh Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n const kvAny: KvAny = new KvAny();\r\n const images : any[] = [];\r\n\r\n if (profilePics && profilePics.profileImageArr && profilePics.profileImageArr.length > 0) {\r\n // debugger;\r\n if (profilePics.profileImageArr && profilePics.profileImageArr.length > 0) {\r\n kvAny.key = profilePics.sitUserId.toString();\r\n profilePics.profileImageArr.map((e) => {\r\n images.push(e.image);\r\n });\r\n kvAny.value = images;\r\n }\r\n }\r\n return kvAny;\r\n }\r\n // -------------------------------------------------------------\r\n // TODO: change the name to contentToKvPhotoArr:\r\n //\r\n getContentToKvArr(content: Content): any {\r\n const kvArr: KV[] = [];\r\n\r\n if (content) {\r\n /*\r\n * debugger;\r\n * Note: KV.v=string; to distinguish it from Kv.v=any, we chose to Capitalize 'V' in variable naming for KV\r\n */\r\n let kV: KV = new KV();\r\n\r\n if (content.heading && content.heading.length > 0) {\r\n kV = new KV();\r\n kV.key = 'Prfile name';\r\n kV.value = content.heading;\r\n kvArr.push(kV);\r\n }\r\n\r\n if (content.aBstract && content.aBstract.length > 0) {\r\n kV = new KV();\r\n kV.key = 'Highlight';\r\n kV.value = content.aBstract;\r\n kvArr.push(kV);\r\n }\r\n if (content.contents && content.contents.length > 0) {\r\n kV = new KV();\r\n kV.key = 'Description';\r\n kV.value = content.contents;\r\n kvArr.push(kV);\r\n }\r\n }\r\n return kvArr;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: Order of the entries reflects as is on the view\r\n * -------------------------------------------------------------\r\n */\r\n // TODO: change the name to profileContentToKvPhotoArr:\r\n //\r\n getProfileContentToKvArrArr(profileContent: Content): any {\r\n const arrKvAny: KvAny[] = [];\r\n\r\n if (profileContent) {\r\n /*\r\n * debugger;\r\n * Note: To distinguosh Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n */\r\n let kvAny: KvAny = new KvAny();\r\n\r\n if (profileContent.heading && profileContent.heading.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'ProfileName';\r\n kvAny.value = [profileContent.heading];\r\n arrKvAny.push(kvAny);\r\n }\r\n if (profileContent.aBstract && profileContent.aBstract.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'Highlight';\r\n kvAny.value = [profileContent.aBstract];\r\n arrKvAny.push(kvAny);\r\n }\r\n if (profileContent.contents && profileContent.contents.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'Description';\r\n kvAny.value = [profileContent.contents];\r\n arrKvAny.push(kvAny);\r\n }\r\n }\r\n // debugger;\r\n return arrKvAny;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: Order of the entries reflects as is on the view\r\n * -------------------------------------------------------------\r\n */\r\n // TODO: change the name to preferenceToKvPhotoArr:\r\n //\r\n getPeferenceToArrKvAny(preference: Preference): any[] {\r\n const arrKvAny: KvAny[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference)) {\r\n /*\r\n * debugger;\r\n * Note: To distinguosh Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n */\r\n let kvAny: KvAny = new KvAny();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.relationshipPreferences) && preference.relationshipPreferences.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'My relationship preference';\r\n kvAny.value = this.getArrayFromCommaSeparatedData(preference.relationshipPreferences);\r\n arrKvAny.push(kvAny);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.intos) && preference.intos.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'I am into';\r\n kvAny.value = this.getArrayFromCommaSeparatedData(preference.intos);\r\n arrKvAny.push(kvAny);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.lookingFors) && preference.lookingFors.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'I am looking for';\r\n kvAny.value = this.getArrayFromCommaSeparatedData(preference.lookingFors);\r\n arrKvAny.push(kvAny);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.meetingLocations) && preference.meetingLocations.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'Meeting place';\r\n kvAny.value = this.getArrayFromCommaSeparatedData(preference.meetingLocations);\r\n arrKvAny.push(kvAny);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.hobbies) && preference.hobbies.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'My hobbies';\r\n kvAny.value = this.getArrayFromCommaSeparatedData(preference.hobbies);\r\n arrKvAny.push(kvAny);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.pets) && preference.pets.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'What about pet';\r\n kvAny.value = this.getArrayFromCommaSeparatedData(preference.pets);\r\n arrKvAny.push(kvAny);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.petPeeves) && preference.petPeeves.length > 0) {\r\n kvAny = new KvAny();\r\n kvAny.key = 'My pet peeves';\r\n kvAny.value = this.getArrayFromCommaSeparatedData(preference.petPeeves);\r\n arrKvAny.push(kvAny);\r\n }\r\n }\r\n // debugger;\r\n return arrKvAny;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/45411208/how-to-convert-key-value-pair-object-into-an-array-of-values-in-es6\r\n * array = Array.from(Object.keys(object), k => object[k]);\r\n * -------------------------------------------------------------\r\n */\r\n // TODO: change the name to setObjectModelToKv:\r\n //\r\n getObjectModelToKv(model: any): any {\r\n // Note: KV.v=string; to distinguish it from Kv.v=any, we chose to Capitalize 'V' in variable naming for KV\r\n let kV: KV = new KV();\r\n\r\n kV = JSON.parse(JSON.stringify(model)) as KV;\r\n // debugger;\r\n return kV;\r\n }\r\n // -------------------------------------------------------------\r\n objectModelToArrKv(model: any): any {\r\n // Note: KV.v=string; to distinguish it from Kv.v=any, we chose to Capitalize 'V' in variable naming for KV\r\n const arrKv: KV[] = JSON.parse(JSON.stringify(model)) as KV[];\r\n // debugger;\r\n\r\n return arrKv;\r\n }\r\n // -------------------------------------------------------------\r\n objectModelToArrKvAny(model: any): any {\r\n // Note: KV.v=string; to distinguish it from Kv.v=any, we chose to Capitalize 'V' in variable naming for KV\r\n const arrKvAny: KvAny[] = JSON.parse(JSON.stringify(model)) as KvAny[];\r\n // debugger;\r\n\r\n return arrKvAny;\r\n }\r\n // -------------------------------------------------------------\r\n // TODO: change the name to setObjectModelToKvKv:\r\n //\r\n getObjectModelToKvKv(model: any): any {\r\n /*\r\n * debugger;\r\n * Note: KV.v=string; to distinguish it from Kv.v=any, we chose to Capitalize 'V' in variable naming for KV\r\n */\r\n let kVkV: KVKV = new KVKV();\r\n /*\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n * var arrayKeys = Array.from(Object.keys(model), k => {\r\n * kv.key = k; // key\r\n * });\r\n * var arrayValues = Array.from(Object.values(model), v => {\r\n * kv.value = v;\r\n * });\r\n * }\r\n */\r\n\r\n kVkV = JSON.parse(JSON.stringify(model)) as KVKV;\r\n // debugger;\r\n return kVkV;\r\n }\r\n // -------------------------------------------------------------\r\n // TODO: change the name to setObjectModelToArrKvKv:\r\n //\r\n getObjectModelToArrKvKv(model: any): any[] {\r\n /*\r\n * debugger;\r\n * Note: KV.v=string; to distinguish it from Kv.v=any, we chose to Capitalize 'V' in variable naming for KV\r\n */\r\n const arrkVkV: KVKV[] = JSON.parse(JSON.stringify(model)) as KVKV[];\r\n /*\r\n * var kvKv: KvKv = new KvKv;\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n * var arrayKeys = Array.from(Object.keys(model));\r\n */\r\n\r\n /*\r\n * if (arrayKeys && arrayKeys.length > 0) {\r\n * for (var i = 0; i < arrayKeys.length; i++) {\r\n * kvKv = new KvKv;\r\n * kvKv.key = arrayKeys[i];\r\n * arrKvKv.push(kvKv);\r\n * }\r\n * }\r\n */\r\n\r\n /*\r\n * var arrayValues = Array.from(Object.values(model));\r\n * if (arrayValues && arrKvKv.length === arrayValues.length) {\r\n * for (var i = 0; i < arrKvKv.length; i++) {\r\n * if (arrayValues[i].vlaue && arrayValues[i].vlaue.length)\r\n * arrKvKv[i].value = this.getObjectModelToKv(arrayValues[i]);\r\n * }\r\n * }\r\n * }\r\n * debugger;\r\n */\r\n return arrkVkV;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * TODO:Test,\r\n * -------------------------------------------------------------\r\n */\r\n getObjectModelToArrKv(model: any): any[] {\r\n /*\r\n * debugger;\r\n * Note: KV.v=string; to distinguish it from Kv.v=any, we chose to Capitalize 'V' in variable naming for KV\r\n */\r\n const arrkV: KV[] = [];\r\n let kV: KV = new KV();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const arrayKeys = Array.from(Object.keys(model));\r\n\r\n if (arrayKeys && arrayKeys.length > 0) {\r\n arrayKeys.map((e) => {\r\n kV = new KV();\r\n kV.key = e;\r\n arrkV.push(kV);\r\n });\r\n }\r\n\r\n const arrayValues = Array.from(Object.values(model));\r\n\r\n if (arrayValues && arrkV.length === arrayValues.length) {\r\n let i = 0;\r\n\r\n arrkV.map((e) => {\r\n e.value = arrayValues[i] as string;\r\n i++;\r\n });\r\n }\r\n }\r\n // debugger;\r\n return arrkV;\r\n }\r\n // -------------------------------------------------------------\r\n // TODO: change the name to setProfileImageToArrKvAny:\r\n //\r\n getProfileImageToArrKvAny(model: any): KvAny[] {\r\n /*\r\n * debugger;\r\n * Note: KV.v=string; to distinguish it from Kv.v=any, we chose to Capitalize 'V' in variable naming for KV\r\n */\r\n const arrKvAny: KvAny[] = [];\r\n let kvAny: KvAny = new KvAny();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const arrayKeys = Array.from(Object.keys(model));\r\n\r\n if (arrayKeys && arrayKeys.length > 0) {\r\n arrayKeys.map((e) => {\r\n kvAny = new KvAny();\r\n kvAny.key = e;\r\n arrKvAny.push(kvAny);\r\n });\r\n }\r\n\r\n const arrayValues = Array.from(Object.values(model));\r\n\r\n if (arrayValues && arrKvAny.length === arrayValues.length) {\r\n let i = 0;\r\n\r\n arrKvAny.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value.image) && e.value.image.length > 0) {\r\n // recursive-condition\r\n e.value = this.getObjectModelToArrKvAny(e.value); // use KV[]\r\n // debugger;\r\n } else {\r\n /*\r\n * if (arrayValues[i].toString().indexOf('data:image/png/svg;base64,') !== -1) {\r\n * debugger;\r\n * var image = 'url('' + arrayValues[i].toString() + '')';\r\n * arrKvAny[i].value = image;\r\n * }\r\n * else\r\n */\r\n e.value = arrayValues[i];\r\n }\r\n i++;\r\n });\r\n }\r\n }\r\n // debugger;\r\n return arrKvAny;\r\n }\r\n // -------------------------------------------------------------\r\n // -------------------------------------------------------------\r\n // TODO: change the name to setObjectModelToKvAny:\r\n //\r\n getObjectModelToKvAny(model: any): any {\r\n /*\r\n * debugger;\r\n * Note: To distinguosh Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n */\r\n const kvAny: KvAny = new KvAny();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const arrKeys = Array.from(Object.keys(model), (k) => {\r\n kvAny.key = k;\r\n });\r\n const arrValues = Array.from(Object.values(model), (v) => {\r\n kvAny.value = v;\r\n });\r\n // debugger;\r\n\r\n return kvAny;\r\n }\r\n return null;\r\n }\r\n // -------------------------------------------------------------\r\n // TODO: change the name to setObjectModelToKvKvAnyArr:\r\n //\r\n getObjectModelToKvKvAnyArr(model: any): any {\r\n /*\r\n * debugger;\r\n * Note: To distinguosh Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n */\r\n const kvKvAnyArr: KvKvAnyArr = new KvKvAnyArr();\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const arrayKeys = Array.from(Object.keys(model), (k) => {\r\n kvKvAnyArr.key = k;\r\n });\r\n\r\n // later\r\n let i = 0;\r\n\r\n Array.from(Object.values(model), (v) => {\r\n kvKvAnyArr.value = this.getObjectModelToKvAnyArr(v);\r\n i++;\r\n });\r\n }\r\n return kvKvAnyArr;\r\n }\r\n // -------------------------------------------------------------\r\n // TODO: change the name to setObjectModelToArrKvKvAnyArr:\r\n //\r\n getObjectModelToArrKvKvAnyArr(model: any): any {\r\n /*\r\n * debugger;\r\n * Note: To distinguosh Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n */\r\n const arrKvKvAnyArr: KvKvAnyArr[] = [];\r\n let kvKvAnyArr: KvKvAnyArr = new KvKvAnyArr();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const arrKeys = Array.from(Object.keys(model), (k) => {\r\n kvKvAnyArr = new KvKvAnyArr();\r\n kvKvAnyArr.key = k;\r\n arrKvKvAnyArr.push(kvKvAnyArr);\r\n });\r\n // debugger;\r\n let i = 0;\r\n const arrValues = Array.from(Object.values(model), (v) => {\r\n arrKvKvAnyArr[i].value = this.getObjectModelToKvAnyArr(v);\r\n i++;\r\n });\r\n }\r\n // debugger;\r\n return arrKvKvAnyArr;\r\n }\r\n // ---------------------------------------------------------------\r\n isImageData (data : any): boolean {\r\n /*\r\n * debugger;\r\n * var dataUriPattern = '/^data\\:(?image\\/(png|tiff|jpg|gif));base64,(?[A-Z0-9\\+\\/\\=]+)$/g';\r\n */\r\n const dataUriPattern = '/data:(?image/(png|tiff|jpg|gif));base64,(?[A-Z0-9+/=]+)$/ig';\r\n\r\n if (data.match(dataUriPattern).length > 0) {\r\n // debugger;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: kvAnyArr => kv.v=[v]\r\n * -------------------------------------------------------------\r\n */\r\n // TODO: change the name to setObjectModelToKvAnyArr:\r\n //\r\n getObjectModelToKvAnyArr(model: any): any {\r\n // debugger;\r\n const kvAnyArr = new KvAnyArr();\r\n const tKeys :any[] = [];\r\n const tValues :any[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const modelType = StringServiceStatic.typeCheck(model);\r\n // Note: To distinguosh Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n\r\n const arrKeys = Array.from(Object.keys(model), (k) => {\r\n kvAnyArr.key = k; // key\r\n tKeys.push(k);\r\n });\r\n // debugger;\r\n\r\n if (modelType.toLowerCase().indexOf('array') !== -1) {\r\n // recursive-condition\r\n\r\n const arValues = Array.from(Object.values(model), (v) => {\r\n tValues.push(this.getObjectModelToKvAnyArr(v)); // recursive-call\r\n // debugger;\r\n });\r\n } else {\r\n // Base-condition\r\n const arValues = Array.from(Object.values(model), (v) => {\r\n tValues.push([v]);\r\n // debugger;\r\n });\r\n }\r\n // debugger;\r\n kvAnyArr.value = tValues;\r\n }\r\n // debugger;\r\n return kvAnyArr;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note:Tested, works. May 03, 2020\r\n * Note: kvAny => kv.v=kvAny\r\n * -------------------------------------------------------------\r\n */\r\n // TODO: change the name to setObjectModelToArrKvAny:\r\n //\r\n getObjectModelToArrKvAny(model: any): any {\r\n /*\r\n * debugger;\r\n * Note: To distinguish Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n */\r\n const arrKvAny: KvAny[] = [];\r\n let kvAny: KvAny = new KvAny();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n let i = 0;\r\n const arrayKeys = Array.from(Object.keys(model));\r\n\r\n arrayKeys.map((e) => {\r\n kvAny = new KvAny();\r\n kvAny.key = e; // key\r\n arrKvAny.push(kvAny);\r\n if (e.indexOf('SITUserKey') !== -1) {\r\n this.index = i;\r\n }\r\n i++;\r\n });\r\n // debugger;\r\n\r\n i = 0;\r\n const arrayValues = Array.from(Object.values(model), (v) => {\r\n if (arrayKeys[this.index] && arrayKeys[this.index].indexOf('SITUserKey') !== -1) {\r\n this.sitUserKey = v;\r\n }\r\n\r\n const modelType = StringServiceStatic.typeCheck(v);\r\n\r\n if (modelType && modelType.toLowerCase().indexOf('array') !== -1) {\r\n // debugger;\r\n arrKvAny[i] = this.getObjectModelToArrKvAny(v);\r\n arrKvAny[i].value = arrKvAny[i].key;\r\n } else {\r\n /*\r\n * Note: added on July 19,2020; TODO:Test\r\n * else if (modelType.toLowerCase().indexOf('object') !== -1) {\r\n * arrKvAny[i] = this.getObjectModelToKvAny(v);\r\n * arrKvAny[i].value = arrKvAny[i].key;\r\n * }\r\n */\r\n arrKvAny[i].value = v;\r\n }\r\n i++;\r\n });\r\n }\r\n // debugger;\r\n return arrKvAny;\r\n }\r\n\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: kvAny => kv.v=kvAny\r\n * -------------------------------------------------------------\r\n */\r\n // TODO: change the name to setObjectModelToArrKvAnyRecursively:\r\n //\r\n getObjectModelToArrKvAnyRecursively(model: any, parentId: any): any {\r\n /*\r\n * model=[KvAny], a single-valued-array\r\n * debugger;\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const arrKvAny: KvAny[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const modelType = StringServiceStatic.typeCheck(model);\r\n // Note: To distinguish Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n let kvAny = new KvAny();\r\n /*\r\n * var tKeys = [];\r\n * var tValues = []\r\n */\r\n let i = 0;\r\n const arrKeys = Array.from(Object.keys(model), (k) => {\r\n kvAny = new KvAny();\r\n kvAny.id = parentId + '.' + i;\r\n kvAny.key = k; // key\r\n // tKeys.push(k);\r\n arrKvAny.push(kvAny);\r\n i++;\r\n });\r\n // debugger;\r\n\r\n i = 0;\r\n if (this.isModelTypeArray(modelType)) {\r\n // recursive-condition\r\n const arValues = Array.from(Object.values(model), (v) => {\r\n arrKvAny[i].value = this.getObjectModelToArrKvAnyRecursively(v, arrKvAny[i].id);\r\n // tValues.push(this.getObjectModelToArrKvAnyRecursively(v)); //recursive-call\r\n i++;\r\n // debugger;\r\n });\r\n } else {\r\n // Base-condition\r\n const arValues = Array.from(Object.values(model), (v) => {\r\n arrKvAny[i].value = v;\r\n // tValues.push([v]);\r\n i++;\r\n // debugger;\r\n });\r\n }\r\n }\r\n // debugger;\r\n return arrKvAny;\r\n }\r\n return null;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * Testing!!\r\n * -------------------------------------------------------------\r\n */\r\n // TODO: change the name to setProfilePicsToArrKvAny:\r\n //\r\n getProfilePicsToArrKvAny(model: any): any {\r\n // model = KvAny[]\r\n const profilePicArrKvAny: KvAny[] = [];\r\n // Note: To distinguish Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n let kvAny = new KvAny();\r\n // var kvAnyArr = new KvAnyArr();\r\n const tKeys :any[] = [];\r\n const tValues :any[] = [];\r\n let i = 0;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const arrayKeys = Array.from(Object.keys(model), (k) => {\r\n kvAny = new KvAny();\r\n kvAny.id = i;\r\n kvAny.key = k;\r\n tKeys.push(k);\r\n profilePicArrKvAny.push(kvAny);\r\n i++;\r\n /*\r\n * TODO: test to see if it produces the same result as the later\r\n * kvKvArr.value = this.getObjectModelToKvArr(Array.from(Object.values(model)));\r\n */\r\n });\r\n\r\n // later\r\n i = 0;\r\n const arrayValues = Array.from(Object.values(model), (v) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(v)) {\r\n const vType = StringServiceStatic.typeCheck(v);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(vType)) {\r\n if (vType.toString().toLowerCase().indexOf('array') === -1 && vType.toString().toLowerCase().indexOf('function') === -1) {\r\n // debugger;\r\n profilePicArrKvAny[i].value = v;\r\n } else if (vType.toLowerCase().indexOf('array') !== -1) {\r\n /*\r\n * Note: added on July 19,2020; TODO:Test\r\n * else if (vType.toString().toLowerCase().indexOf('object') !== -1) {\r\n * profilePicArrKvAny[i] = this.getObjectModelToKvAny(v);\r\n * profilePicArrKvAny[i].value = profilePicArrKvAny[i].key;\r\n * }\r\n */\r\n /*\r\n * debugger;\r\n * Note: on the value of kvAny, attach kvAnyArr\r\n */\r\n profilePicArrKvAny[i].value = this.getObjectModelToArrKvAnyRecursively(v, profilePicArrKvAny[i].id);\r\n }\r\n i++;\r\n }\r\n }\r\n });\r\n }\r\n // debugger;\r\n return profilePicArrKvAny;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: Order of the entries reflects as is on the view\r\n * -------------------------------------------------------------\r\n */\r\n // TODO: change the name to setProfileInfoToKvArrArr:\r\n //\r\n getProfileInfoToKvArrArr(profileInfo: ProfileInfo): any {\r\n const arrKvAnyArr: KvAnyArr[] = [];\r\n\r\n if (profileInfo) {\r\n /*\r\n * debugger;\r\n * Note: To distinguish Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n */\r\n let kvAnyArr: KvAnyArr = new KvAnyArr();\r\n\r\n if (profileInfo.gender && profileInfo.gender.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Gender';\r\n kvAnyArr.value = [profileInfo.gender];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.age > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Age';\r\n kvAnyArr.value = [profileInfo.age];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.sexuality && profileInfo.sexuality.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Sexuality';\r\n kvAnyArr.value = [profileInfo.sexuality];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.position && profileInfo.position.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Position';\r\n kvAnyArr.value = [profileInfo.position];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.dickSize && profileInfo.dickSize.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Dick Size';\r\n kvAnyArr.value = [profileInfo.dickSize];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.cutUncut && profileInfo.cutUncut.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Cut/Uncut';\r\n kvAnyArr.value = [profileInfo.cutUncut];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.highestEducation && profileInfo.highestEducation.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'My highest education level';\r\n kvAnyArr.value = [profileInfo.highestEducation];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.relationshipStatus && profileInfo.relationshipStatus.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'My relationship status';\r\n kvAnyArr.value = [profileInfo.relationshipStatus];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.religion && profileInfo.religion.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'My religious standing';\r\n kvAnyArr.value = [profileInfo.religion];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.smokingStatus && profileInfo.smokingStatus.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Smoking/Vaping status';\r\n kvAnyArr.value = [profileInfo.smokingStatus];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.away && profileInfo.away.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Away';\r\n kvAnyArr.value = [profileInfo.away];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.distance && profileInfo.distance.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Distance';\r\n kvAnyArr.value = [profileInfo.distance];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n\r\n if (profileInfo.neighborhood && profileInfo.neighborhood.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Neighborhood';\r\n kvAnyArr.value = [profileInfo.neighborhood];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n if (profileInfo.city && profileInfo.city.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'City';\r\n kvAnyArr.value = [profileInfo.city];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n if (profileInfo.regionCode && profileInfo.regionCode.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'State/Profince/Territory';\r\n kvAnyArr.value = [profileInfo.regionCode];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n if (profileInfo.countryCode && profileInfo.countryCode.length > 0) {\r\n kvAnyArr = new KvAnyArr();\r\n kvAnyArr.key = 'Country';\r\n kvAnyArr.value = [profileInfo.countryCode];\r\n arrKvAnyArr.push(kvAnyArr);\r\n }\r\n }\r\n return arrKvAnyArr;\r\n }\r\n // ---------------------------------------------------------------\r\n isModelArray(model: any): boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n const modelType = StringServiceStatic.typeCheck(model);\r\n\r\n if (modelType.toLowerCase().indexOf('array') !== -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n isArray(model: any): boolean {\r\n return this.isModelArray(model);\r\n }\r\n // ---------------------------------------------------------------\r\n isModelTypeArray(modelType: any): boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelType)) {\r\n if (modelType.toLowerCase().indexOf('array') !== -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n isImage(model: KvAny): boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.key)) {\r\n if (model.key.toLowerCase().indexOf('image') !== -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n setPhotoToKvModel (photo : Photo) : KvAny {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.photoId > 0)) {\r\n let kvAny = new KvAny();\r\n kvAny.sitUserId = photo.sitUserId;\r\n kvAny.key = photo.photoId.toString();\r\n kvAny.modelName = 'Photo';\r\n kvAny.cryptUserKey = photo.cryptUserKey;\r\n kvAny.value = photo;\r\n\r\n return kvAny;\r\n }\r\n return new KvAny();\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: Order of the entries reflects as is on the view\r\n * -------------------------------------------------------------\r\n */\r\n sortArrKvAnyForView(inArrKvAny: KvAny[]): KvAny[] {\r\n const outArrKvAny: KvAny[] = [];\r\n\r\n if (inArrKvAny) {\r\n /*\r\n * debugger;\r\n * Note: To distinguish Kv.v=any from KV.v=string, we chose to capitalize 'K' for variable naming\r\n */\r\n let kvAny: KvAny = new KvAny();\r\n\r\n inArrKvAny.map((e) => {\r\n if (e && e.key && e.key.length > 0 && e.value && e.value.toString().length > 0) {\r\n switch (e.key.toLowerCase()) {\r\n case 'gender':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Gender';\r\n kvAny.value = e.value;\r\n kvAny.index = 0;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'age':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Age';\r\n kvAny.value = e.value;\r\n kvAny.index = 1;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'sexuality':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Sexuality';\r\n kvAny.value = e.value;\r\n kvAny.index = 2;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'position':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Position';\r\n kvAny.value = e.value;\r\n kvAny.index = 3;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'dicksize':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Dick Size';\r\n kvAny.value = e.value;\r\n kvAny.index = 4;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'cutuncut':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Cut/Uncut';\r\n kvAny.value = e.value;\r\n kvAny.index = 5;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'highesteducation':\r\n kvAny = new KvAny();\r\n kvAny.key = 'My highest education level';\r\n kvAny.value = e.value;\r\n kvAny.index = 6;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'relationshipstatus':\r\n kvAny = new KvAny();\r\n kvAny.key = 'My relationship status';\r\n kvAny.value = e.value;\r\n kvAny.index = 7;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'religion':\r\n kvAny = new KvAny();\r\n kvAny.key = 'My religious standing';\r\n kvAny.value = e.value;\r\n kvAny.index = 8;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'smokingstatus':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Smoking/Vaping status';\r\n kvAny.value = e.value;\r\n kvAny.index = 9;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'away':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Online/Offline';\r\n kvAny.value = e.value;\r\n kvAny.index = 10;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'distance':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Distance';\r\n kvAny.value = e.value;\r\n kvAny.index = 11;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'unit':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Unit';\r\n kvAny.value = e.value;\r\n kvAny.index = 12;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'neighborhood':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Neighborhood';\r\n kvAny.value = e.value;\r\n kvAny.index = 13;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'city':\r\n kvAny = new KvAny();\r\n kvAny.key = 'City';\r\n kvAny.value = e.value;\r\n kvAny.index = 14;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'regioncode':\r\n kvAny = new KvAny();\r\n kvAny.key = 'State/Profince/Territory';\r\n kvAny.value = e.value;\r\n kvAny.index = 15;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n case 'countrycode':\r\n kvAny = new KvAny();\r\n kvAny.key = 'Country';\r\n kvAny.value = e.value;\r\n kvAny.index = 16;\r\n outArrKvAny.push(kvAny);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n outArrKvAny.sort((a, b) => a.index - b.index);\r\n return outArrKvAny;\r\n }\r\n // --------------------------------------------------------------\r\n setBackgroundImage(placeId: string, imageData: string): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(placeId) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n // debugger;\r\n const tempElem = document.getElementById(placeId);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n /*\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n * var image = 'url('' + imageData + '')';\r\n * debugger;\r\n */\r\n this.renderer?.setStyle(tempElem, 'background-image', imageData);\r\n tempElem.remove();\r\n return true;\r\n /*\r\n * }\r\n * else this.renderer?.setStyle(this.tempElem, 'background-image', this.getPageImage(this.pbgCurrentPage));\r\n */\r\n }\r\n }\r\n return false;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { Unit } from '../../models/common/unit.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { MemberViewMgmtModel } from '../../models/member/memberViewMgmtModel.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { MemberService } from '../memberServiceService/memberService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HeartbeatService } from './heartbeatService.service';\r\nimport { KvArrayService } from './kvArrayService.service';\r\n\r\n// =====================================================================\r\n// Use Case:\r\n// ----------\r\n// In a Component:\r\n// import { Subject } from 'rxjs;\r\n// import { takeUntil } from 'rxjs/operators';\r\n// ...\r\n// private onDestroy$: Subject = new Subject();\r\n// ...\r\n// this.RandomNumberGeneratorObservableServiceStatic.getRandomNumber()\r\n// .pipe( takeUntil( this.onDestroy$ ) )\r\n// .subscribe( ( luckyNumber : number ) =>\r\n// {\r\n// this.number1 = luckyNumber;\r\n// ...\r\n// public ngOnDestroy(): void {\r\n// this.onDestroy$.next();\r\n// }\r\n// =====================================================================\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport abstract class LiaisonService\r\n{\r\n public distUnit = '';\r\n public isMobilevar = false;\r\n public height : any;\r\n public width : any;\r\n public heightUnit : any;\r\n public kvAnyArr : KvAny[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public memberViewMgmtModel : MemberViewMgmtModel = new MemberViewMgmtModel();\r\n public preference : Preference = new Preference();\r\n public preferenceKvAnyArr : KvAny[] = [];\r\n public profileInfo : ProfileInfo = new ProfileInfo();\r\n public profileInfoView : ProfileInfo = new ProfileInfo();\r\n public weightUnit : any;\r\n\r\n // ------------------------------------------------------------------------------------\r\n // the laisonOf the services should be injected. For example,\r\n // here profileTileService's methods will be consumed by profileInfoService,\r\n // hence, profileTile's liaison-methods with profileInfoService are implemented here\r\n // there is a provider-service, and a consumer-service in a laision relationship.\r\n // here the provider-service: ProfileTileService, and\r\n // consumer-service: ProfileInfoService.\r\n // Note: no method of the consumer-service should appear in the liaisonService.\r\n // ------------------------------------------------------------------------------------\r\n\r\n constructor (\r\n private heartbeatService : HeartbeatService,\r\n private kvArrayService : KvArrayService,\r\n private memberService : MemberService,\r\n ) {\r\n }\r\n // ------------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // create KVAny[] for the child component ProfileInfokeyValueArrComponent,\r\n // and emit it as well.\r\n // ---------------------------------------------------------------\r\n\r\n public createKVModelArrFromProfileInfoView (pInfoView : ProfileInfo) : any {\r\n let tArrKvAny : any;\r\n let unit : any;\r\n let index = -1;\r\n let i = 0;\r\n let distanceUnit = {\r\n distance: 0,\r\n dUnit: 'meter',\r\n };\r\n let model : any;\r\n\r\n // BEGIN of #2 !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfoView)) {\r\n this.profileInfoView = pInfoView;\r\n // debugger;\r\n tArrKvAny = this.kvArrayService.getObjectModelToArrKvAny(this.profileInfoView);\r\n // debugger;\r\n this.kvAnyArr = this.kvArrayService.sortArrKvAnyForView(tArrKvAny);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvAnyArr)) {\r\n for (let e of this.kvAnyArr) {\r\n /*this.arrKvAny.map(e => {*/\r\n if (e.key.toLowerCase().toString().indexOf('distance') !== -1) {\r\n index = i;\r\n distanceUnit.distance = e.value;\r\n }\r\n // debugger;\r\n if (e.key.toLowerCase().toString().indexOf('unit') !== -1) {\r\n distanceUnit.dUnit = e.value;\r\n switch (e.value.toLowerCase().toString()) {\r\n case 'Meters': case 'Meter': case 'M':\r\n unit = 'meters';\r\n break;\r\n case 'Mile': case 'Miles':\r\n unit = 'miles';\r\n break;\r\n case 'KM': case 'KiloMeters': case 'KiloMeter':\r\n unit = 'km';\r\n break;\r\n case 'Foot':\r\n unit = 'foot';\r\n break;\r\n case 'Feet':\r\n unit = 'feet';\r\n break;\r\n }\r\n }\r\n i++;\r\n }\r\n // debugger;\r\n if (this.kvAnyArr.length > index && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvAnyArr[ index ])) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unit)) {\r\n // debugger;\r\n this.kvAnyArr[ index ].value = this.kvAnyArr[ index ].value.toString() + ' ' + unit;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit) && (distanceUnit.distance >= 0 || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.dUnit))) {\r\n // debugger;\r\n this.kvAnyArr[ index ].value = distanceUnit.distance.toString() + ' ' + distanceUnit.dUnit.toLowerCase();\r\n }\r\n }\r\n }\r\n\r\n // if the data came from the back-end server, then check if the profile is complete and show message\r\n if (this.profileInfo.isServer) {\r\n // TODO: use emitter to do this:\r\n // this.displayProfileIncompleteMessage(this.profileInfo);\r\n }\r\n // END of #2 !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n\r\n model = {\r\n model: this.profileInfo,\r\n name: 'profileInfo',\r\n kvAnyArr: this.kvAnyArr,\r\n };\r\n EmitterSubjectService.emitModel(model);\r\n this.memberViewMgmtModel.populateModelData(this.kvAnyArr);\r\n // EmitterSubjectService.setMemberViewMgmtModel(this);\r\n return this.kvAnyArr;\r\n }\r\n }\r\n // ------------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // Note: Keep the following three methods as a group:\r\n // 1. getDictionaryMemberProfile()\r\n // 2. getServerDbMemberProfile()\r\n // ---------------------------------------------------------------\r\n // Note: treat dictionary-data as all-good-or-nothing. important!!!\r\n // ---------------------------------------------------------------\r\n //public getDictionaryMemberProfile (sitUserId : number) : any {\r\n // if (sitUserId > 0) {\r\n // let tpPics : any;\r\n // let tProfileInfo : any;\r\n // let tProfilePics : any;\r\n // let tPreference : any;\r\n // let tUserPhotoIds : any;\r\n // let emitterUserPhotoIds : any;\r\n // let isDictionaryPrefDataGood = false;\r\n // let isDictionaryProfInfoDataGood = false;\r\n // let isDictionaryProfPicsDataGood = false;\r\n\r\n // // debugger;\r\n\r\n // tProfileInfo = DictionaryServiceStatic.profileInfoDictionary.getValue(sitUserId);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tProfileInfo)) {\r\n // // debugger;\r\n // this.profileInfo = tProfileInfo;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // this.executeAllNonProfileTileTasks(this.profileInfo).then(data => {\r\n // // debugger;\r\n // this.memberViewMgmtModel = data;\r\n\r\n // // if all tasks including preference were completed:\r\n // // -------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.preferenceKvAnyArr)\r\n // && this.memberViewMgmtModel.preferenceKvAnyArr.length > 0) {\r\n // // debugger;\r\n // isDictionaryProfInfoDataGood = true;\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.profileInfo = data;\r\n // isDictionaryProfInfoDataGood = false;\r\n // }\r\n // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // });\r\n // }\r\n // }\r\n // // debugger;\r\n\r\n // // TODO: check to see if memberActivcityDictionary need to be created or not:\r\n // // --------------------------------------------------------------------------\r\n // // if (!this.activityService.isDictionaryMemberActivityEmptyForSitUser(sitUserId)) {\r\n // // }\r\n // // debugger;\r\n // // this.spinnerModalService.stopSpinner();\r\n // }\r\n // return sitUserId;\r\n //}\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // ------------------------------------------------------------------\r\n // ===============================================================\r\n // Begin of All ProfileTile/ProfileInfo methods related to:\r\n // 1) memberViewMgmtComponent\r\n // 2)myProfileViewMgmtComponent\r\n // ===============================================================\r\n // ----------------------------------------------------------------------------------------------\r\n // Note: this method will capture all UserData ( not pics) via the\r\n // promise of executeProfileInfoTasks():\r\n // ----------------------------------------------------------------------------------------------\r\n // Note: This does NOT violate SOLID principal in a sense that preference is obtained from the dictionary in\r\n // executeAllNonProfileTileTasks() instead of getting it from the backend-server.\r\n // However, if the user's preference data is not in the dictionary, it fails at this task.\r\n //\r\n // It is noteworthy that both server-based data as well as dictionary-based data use executeAllNonProfileTileTasks().\r\n // Since server-data upon arrival is saved into the respective dictionary, it successfully executes all tasks\r\n // for the server-data, as well as dictionary-data when present.\r\n //\r\n // When executeAllNonProfileTileTasks() succesfully executes all tasks, \r\n // it retuns a ProfileInfoView, otherwise it returns ProfileInfo.\r\n //\r\n // we check if the preference was successfully processed to determine what was the return value:\r\n // if preferenceKvAnyArr was created, then it returned profileInfoView, else profileInfo:\r\n // ----------------------------------------------------------------------------------------------\r\n // ProfileTileTasks are stand-alone and should be called only for ProfileTile-data.\r\n // This method should NOT call/use executeProfileTileTasks(), which renders user's pics only\r\n // via VerticalMenues.\r\n //\r\n // In this method the following tasks are executed:\r\n // profileInfoTasks, profileContentTasks and preferencesTasks.\r\n //\r\n // executeProfileTileTasks() and exexuteasAllNonProfileTileTasks() are\r\n // mutually exclusive/complementary.\r\n // ---------------------------------------------------------------\r\n // public executeAllNonProfileTileTasks (pInfo : ProfileInfo) : Promise {\r\n // return new Promise((resolve, reject) => {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n // this.profileInfo = pInfo;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n // // debugger;\r\n // this.profileTileService.executeProfileInfoTasks(this.profileInfo).then(data => {\r\n // this.memberViewMgmtModel = data;\r\n // // debugger;\r\n\r\n // // try to get the preference data from the dictionary only, NOT from the server:\r\n // // -----------------------------------------------------------------------------\r\n // this.preference = DictionaryServiceStatic.preferenceDictionary.getValue(this.profileInfo.sitUserId) as Preference;\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference) && this.preference.sitUserId > 0) {\r\n // // debugger;\r\n // this.memberService.setPreference(this.preference);\r\n // this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n // // debugger;\r\n // this.memberViewMgmtModel.populateModelData(this.preference, this.preferenceKvAnyArr);\r\n // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // }\r\n // // debugger;\r\n\r\n // resolve(this.memberViewMgmtModel);\r\n // });\r\n // }\r\n // }\r\n // })\r\n // }\r\n // ----------------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n public processProfileInfoForHeartbeat (hb : Heartbeat) : ProfileInfo {\r\n let distanceUnit = new Unit();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if Heartbeat's distance is not already calculated:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distance)) {\r\n if (hb.distance === 0) {\r\n // compute distance and unit:\r\n distanceUnit = this.heartbeatService.calculateDistance(hb, this.loginSuccess.heartbeat, true); // (dest, origin, isKm)\r\n // debugger;\r\n\r\n let tProfileInfoView = this.processDistanceUnitForProfileInfoView(distanceUnit) as ProfileInfo;\r\n this.profileInfoView.copyIfExists(tProfileInfoView);\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n this.profileInfoView.distance = hb.distance.toFixed(2);\r\n this.profileInfoView.unit = hb.unit.length > 0 ? hb.unit : 'meter';\r\n // debugger;\r\n }\r\n // EmitterSubjectService.emitProfileInfoView(this.profileInfoView);\r\n return this.profileInfoView;\r\n }\r\n // ---------------------------------------------------------------\r\n public processDistanceUnitForProfileInfoView (distanceUnit : Unit) : ProfileInfo {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.distance)\r\n && distanceUnit.distance >= 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.unit)) {\r\n let result = this.heartbeatService.processDistanceUnit(distanceUnit);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)) {\r\n this.profileInfoView.distance = distanceUnit.distance.toFixed(2);\r\n this.profileInfoView.unit = distanceUnit.unit;\r\n }\r\n }\r\n // debugger;\r\n }\r\n return this.profileInfoView;\r\n }\r\n // ----------------------------------------------------------------------\r\n \r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\nimport { ElementRef, Inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n// import { Dictionary } from 'dictionaryjs';\r\nimport { Login } from '../../models/account/login.model';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { LogRegModel } from '../../models/account/logReg.model';\r\nimport { Register } from '../../models/account/register.model';\r\nimport { ModuleComponentLoader } from '../../models/common/moduleComponentLoader.model';\r\nimport { KV } from '../../models/keyValue/kv.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { EmailService } from '../communicationServiceService/emailService';\r\nimport { BackgroundImageAnimationService } from '../rendererServiceService/backgroundImageAnimationService.service';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { DomUtilsServiceStatic } from '../staticServices/domUtilsServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class LogRegService {\r\n // public emailService : EmailService;\r\n public age = 0;\r\n public accountMessages : any;\r\n public blackListCredentialKvArr: KV[] = [];\r\n private container : any;\r\n public counter = 0;\r\n public emailPattern = /(([^<>()[\\]\\\\.,;:\\s@\"\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"\"]+)*)|(\"\".+\"\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\r\n public emojis = [ 0x1F600, 0x1F604, 0x1F34A, 0x1F344, 0x1F37F, 0x1F363, 0x1F370, 0x1F355,\r\n 0x1F354, 0x1F35F, 0x1F6C0, 0x1F48E, 0x1F5FA, 0x23F0, 0x1F579, 0x1F4DA,\r\n 0x1F431, 0x1F42A, 0x1F439, 0x1F424 ];\r\n public emojiMap : Map = new Map();\r\n public idleState : any = 'Not started.';\r\n public isAllowed = false;\r\n public isDobErr = false;\r\n public isEmailValid$ : Observable;\r\n public isFormValid$ : Observable;\r\n public isEmailValid = false;\r\n public isFormValid = false;\r\n public initEmail = '';\r\n public initPassword = '';\r\n public isPasswordsMatch = false;\r\n public isPasswordValid$ : Observable;\r\n public isBlkPasswordValid$ : Observable;\r\n public isPasswordValid = false;\r\n public isBlkPasswordValid = false;\r\n public timedOut = false;\r\n public lastPing! : Date;\r\n public login : Login = new Login();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public logRegModel : LogRegModel = new LogRegModel();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public passwordPattern = /^(?=.*[0-9])(?=.*[- ?!@#$%^&*\\/\\\\])(?=.*[A-Z])(?=.*[a-z])[a-zA-Z0-9- ?!@#$%^&*\\/\\\\]{8,30}$/g;\r\n public message = '';\r\n //public regExpFailedPasswordDictionary = new Dictionary();\r\n //public regExpPassedPasswordDictionary = new Dictionary();\r\n public register : Register = new Register();\r\n public scrollY = new BehaviorSubject( 0 );\r\n public scrollY$ = this.scrollY.asObservable();\r\n public signedInUserId = 0;\r\n\r\n constructor (public bias: BackgroundImageAnimationService,\r\n @Inject(Window) window : Window,\r\n @Inject(Document) document : Document,\r\n public emailService : EmailService, ) {\r\n this.emojis.map(e => {\r\n this.emojiMap.set(this.counter++, String.fromCodePoint(e));\r\n });\r\n this.counter = 0;\r\n // this.emailService = communicationServiceService.getEmailService();\r\n // debugger;\r\n this.blackListCredentialKvArr = this.emailService.getBlackListCredentialKvArr();\r\n }\r\n \r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : dob is sent in yyyy/mm/dd format\r\n */\r\n calculateAge (dob : any) : any {\r\n let age = 0;\r\n\r\n if (dob) {\r\n const now = new Date();\r\n const nowYear = now.getFullYear();\r\n const nowMonth = now.getMonth() + 1;\r\n const nowDay = now.getDate();\r\n var dobParts = dob.split('/');\r\n // debugger;\r\n if (dobParts.length === 1) {\r\n dobParts = dob.split('-');\r\n }\r\n\r\n if (dobParts.length > 2) {\r\n age = nowYear - dobParts[ 0 ];\r\n if (nowMonth < dobParts[ 1 ] && age > 0) {\r\n age--;\r\n }\r\n if (nowMonth === dobParts[ 1 ] && nowDay < dobParts[ 2 ] && age > 0) {\r\n age--;\r\n }\r\n }\r\n }\r\n return age;\r\n }\r\n // ---------------------------------------------------------\r\n _checkValidity (model : Login | Register) : any {\r\n // debugger;\r\n let tModel : any;\r\n this.logRegModel = new LogRegModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.email)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.password)) {\r\n tModel = model as (Login | Register);\r\n //this.isAllowedBlackListCredential(model as Login).subscribe(data => {\r\n\r\n // tModel.isAllowed = model.isAllowed = this.isAllowed = data;\r\n // this.logRegModel.isAllowed = this.isAllowed;\r\n //});\r\n tModel = this._isEmailValid(tModel);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n this.isEmailValid = tModel.isEmailValid;\r\n this.logRegModel.isEmailValid = this.isEmailValid;\r\n this.logRegModel.login = tModel;\r\n // debugger;\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n tModel = this._isPasswordValid(tModel);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n this.isPasswordValid = tModel.isPasswordValid;\r\n this.logRegModel.isPasswordValid = this.isPasswordValid;\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n tModel.isFormValid = tModel.isEmailValid && tModel.isPasswordValid;\r\n this.logRegModel.isFormValid = tModel.isFormValid;\r\n this.isFormValid = tModel.isFormValid;\r\n // debugger;\r\n } \r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n this.logRegModel.login = tModel;\r\n EmitterSubjectService.emitLogRegModel(this.logRegModel);\r\n // debugger;\r\n return tModel;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Tested on 20220324 and it works!\r\n // ---------------------------------------------------------------\r\n countCharInString (charRegExp : RegExp, strToSearch : string) : number {\r\n // debugger;\r\n return ((strToSearch || '').match(charRegExp) || []).length;\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n createRegExpFromString (input : string) : any {\r\n if (typeof input !== 'string') {\r\n return 0;\r\n }\r\n input = (input) === '.' ? ('\\\\' + input) : input;\r\n // debugger;\r\n const regexp = new RegExp(input, 'g');\r\n return regexp;\r\n }\r\n // ---------------------------------------------------------------\r\n public executeLogoutSuccessTasks () : void {\r\n\r\n // this.bias.setPrimaryImage('primaryPhotoBnId', false);\r\n this.signedInUserId = 0;\r\n }\r\n // ---------------------------------------------------------------\r\n getUrl () {\r\n return 'url(\\'assets/photos/glyph-members-transparent.png\\')';\r\n }\r\n // --------------------------------------------------------------\r\n isAllowedBlackListCredential (login : Login) : Observable {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.blackListCredentialKvArr)\r\n || this.blackListCredentialKvArr.length === 0) {\r\n this.blackListCredentialKvArr = this.emailService.getBlackListCredentialKvArr();\r\n this.blackListCredentialKvArr = ArraySupportServiceStatic.makeArrayOfUniqElements(this.blackListCredentialKvArr);\r\n // debugger;\r\n }\r\n this.isAllowed = false;\r\n var allowedPassword = '';\r\n return new Observable((subscriber) => {\r\n this.blackListCredentialKvArr.map(e => {\r\n if (e.key.indexOf('testCredential-' + login.email) !== -1) {\r\n var parts = e.value.split('%#%');\r\n if (parts.length === 2) {\r\n allowedPassword = parts[ 1 ];\r\n // debugger;\r\n }\r\n if (allowedPassword.indexOf(login.password)) {\r\n this.isAllowed = true;\r\n // debugger; \r\n }\r\n }\r\n });\r\n subscriber.next(this.isAllowed);\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Note: This method should only varify backupPassword: SOLID principal\r\n // ---------------------------------------------------------------\r\n _isBackupPasswordValid (model : Login | Register) : boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.backupPassword)\r\n && model.backupPassword.length >= 8) {\r\n // console.log('searchPasswordRegExpResult: ' + searchPasswordRegExpResult); \r\n this.isPasswordValid = model.isPasswordValid = true;\r\n // debugger;\r\n return this.isPasswordValid;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n _isEmailValid (model : Login | Register) : any {\r\n // debugger;\r\n let tModel = null;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.email)) {\r\n // debugger; \r\n tModel = model\r\n tModel = this.testEmailByRegExp(tModel);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel.email)) {\r\n tModel.isEmailValid = true;\r\n // debugger;\r\n this.isEmailValid = tModel.isEmailValid;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n this.isEmailValid = tModel.isEmailValid;\r\n this.logRegModel.isEmailValid = this.isEmailValid;\r\n this.logRegModel.login = tModel;\r\n EmitterSubjectService.emitLogRegModel(this.logRegModel);\r\n // debugger;\r\n this.logRegModel.login = tModel;\r\n // debugger;\r\n }\r\n return tModel;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // Note: This method is not used but keep it\r\n // ---------------------------------------------------------------\r\n _isLoginFormValid (login : Login) : any {\r\n this.logRegModel = new LogRegModel();\r\n let tModel = null;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(login)) {\r\n let modelL = this._isEmailValid(login);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelL)) {\r\n this.isEmailValid = login.isEmailValid = modelL.isEmailValid;\r\n this.logRegModel.isEmailValid = login.isEmailValid;\r\n }\r\n\r\n let modelP = this._isPasswordValid(login);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelP)) {\r\n this.isPasswordValid = login.isPasswordValid = modelP.isPasswordValid;\r\n this.logRegModel.isPasswordValid = login.isPasswordValid;\r\n }\r\n\r\n this.isFormValid = login.isFormValid = login.isEmailValid && login.isPasswordValid;\r\n this.logRegModel.isFormValid = login.isFormValid;\r\n\r\n this.logRegModel.login = login;\r\n EmitterSubjectService.emitLogRegModel(this.logRegModel);\r\n\r\n return login;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n _isPasswordValid (model : Login | Register) : any {\r\n // debugger;\r\n // we are checking a list of Credentials that are in a List, \r\n // TODO: explain about a list such as a black list of emails addresses.\r\n //\r\n //--------------------------------------------------------------\r\n let tModel : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.password)\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.backupPassword)\r\n && model.password.indexOf('***') === -1) {\r\n // debugger;\r\n model.backupPassword = FrequentlyUsedFunctionsServiceStatic.deepClone(model.password);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.password)) {\r\n tModel = model;\r\n //this.isAllowedBlackListCredential(model).subscribe(data => {\r\n // tModel.isAllowed = model.isAllowed = data;\r\n //}) \r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n tModel.backupPassword = FrequentlyUsedFunctionsServiceStatic.deepClone(model.password);\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel.backupPassword) && tModel.backupPassword.indexOf('***') === -1) {\r\n // debugger;\r\n tModel.isPasswordValid = this._isBackupPasswordValid(tModel);\r\n\r\n // NOTE: masking of password should happen only before salting the model. important!\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel.password) && tModel.password.indexOf('***') === -1) {\r\n // debugger;\r\n tModel.password = this.maskPassword(tModel);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tModel)) {\r\n this.isPasswordValid = tModel.isPasswordValid;\r\n this.logRegModel.isPasswordValid = this.isPasswordValid;\r\n this.logRegModel.login = tModel;\r\n EmitterSubjectService.emitLogRegModel(this.logRegModel);\r\n // debugger;\r\n }\r\n return tModel;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // This method will not only mask the passord but also save the \r\n // original password in backupPassword field.\r\n // ---------------------------------------------------------------\r\n // Note: we are keeping a copy of the password in a \r\n // local (scoped to function) vairable just in case\r\n // in the future we need to caputre the original password,\r\n // we can add code to capture it.\r\n // ---------------------------------------------------------------\r\n maskPassword (model : any) : string {\r\n let mask = '';\r\n let tMask = '';\r\n for (const item of (model.password)) {\r\n if (item !== '*') {\r\n // debugger;\r\n tMask = tMask + item;\r\n }\r\n else {\r\n if (model.password[ 7 ] === item) {\r\n tMask += item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n mask = mask + '*';\r\n }\r\n model.password = mask;\r\n tMask += '*'\r\n return model.password;\r\n }\r\n // ---------------------------------------------------------------\r\n readElementRef (model : Login, emailElem : ElementRef, passwordElem : ElementRef) : any {\r\n // !!!Important Note: the initvalues and method need to be here as well as ngAfterViewInit()\r\n // in order to have propar-validation during the following scenarios:\r\n // 1) very first time a user logs in.\r\n // 2) a user logs out and returns and logs in with browser kept credentials to work with password mask\r\n // 3) a user clears the cash and the either (1) or (2) of the above scenarios take place\r\n // -------------------------------------------------------------------------------\r\n model.email = emailElem.nativeElement.value;\r\n\r\n // debugger;\r\n model.backupPassword = model.password = passwordElem.nativeElement.value;\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.email)\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.password)) {\r\n model = this.readElementOutsideAngular(model);\r\n }\r\n // debugger;\r\n return model;\r\n }\r\n // ---------------------------------------------------------------\r\n // After logout(), the login model is reset, and if the user saved\r\n // the credentials, the browser loads it and populates in the UI,\r\n // but the angular does not read it until user interacts with the UI.\r\n // Therefore, we force read any input from the browser and test them.\r\n // ---------------------------------------------------------------\r\n // Note: this initial-read() method is to be deployed at ngAfterViewInit\r\n // in order to check the browser-saved credential without any event-trigger.\r\n // ---------------------------------------------------------------\r\n readElementOutsideAngular (login: Login) : any {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(login) ) {\r\n login = new Login();\r\n // debugger;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(login)) {\r\n if(FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(login.email)){\r\n this.initEmail = DomUtilsServiceStatic.getElementOutsideAngular('emailId').value;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.initEmail)) {\r\n login.email = this.initEmail;\r\n // debugger;\r\n }\r\n // debugger;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(login.password)) {\r\n this.initPassword = DomUtilsServiceStatic.getElementOutsideAngular('passwordId').value;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.initPassword)) {\r\n login.backupPassword = login.password = this.initPassword;\r\n // debugger;\r\n }\r\n } \r\n return login;\r\n }\r\n else return null;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n onDateChanged (register : Login) : any {\r\n register = this.determineAge(register);\r\n return register\r\n }\r\n // ---------------------------------------------------------------\r\n testEmailByRegExp (model : Login | Register) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.email)\r\n && model.email.length > 0) {\r\n let testEmailRegExpResult = this.emailPattern.test(model.email);\r\n // console.log('searchEmailRegExpResult: ' + searchEmailRegExpResult);\r\n // debugger;\r\n if (testEmailRegExpResult) {\r\n // debugger;\r\n this.isEmailValid = model.isEmailValid = true;\r\n \r\n }\r\n \r\n }\r\n return model;\r\n }\r\n // ---------------------------------------------------------------\r\n testPasswordByRegExp (model : Login | Register) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.email)\r\n && model.email.length > 0) {\r\n let testPasswordRegExpResult = this.passwordPattern.test(model.email);\r\n // console.log('searchEmailRegExpResult: ' + searchEmailRegExpResult);\r\n // debugger;\r\n if (testPasswordRegExpResult) {\r\n // debugger;\r\n this.isPasswordValid = model.isPasswordValid = true;\r\n\r\n }\r\n\r\n }\r\n return model;\r\n }\r\n // ---------------------------------------------------------------\r\n \r\n /*\r\n * ---------------------------------------------------------------\r\n * ref : https:// stackoverflow.com/questions/22982647/how-to-set-an-input-field-to-ng-invalid-in-angularjs\r\n */\r\n determineAge (login : Login) : any {\r\n debugger;\r\n var inDob = login.dob;\r\n if (login.dob) {\r\n \r\n // const ymd = login.dob.replace(/-/g, '/'); // tranaform the dob from yyyy-mm-dd to yyyy/mm/dd form\r\n var ymd = login.dob;\r\n if (ymd) {\r\n debugger;\r\n this.age = this.calculateAge(ymd); // profileFactory.calculateAge() expects input in yyyy/mm/dd format\r\n debugger;\r\n login.age = this.age;\r\n if (this.age >= 18) {\r\n login.dob = ymd;\r\n login.dobTicks = DateStringServiceStatic.getTicks(new Date(ymd));\r\n // = DateStringServiceStatic.getJsDateMinusJsOffsetToNetTicks(new Date(login.dob));\r\n // debugger;\r\n } else {\r\n if (login.dob.length > 5) {\r\n login.isDobErr = this.isDobErr = true;\r\n login.message = this.getDisclaimerAgeAccountMessage(this.age);\r\n }\r\n }\r\n return login;\r\n } else if (login?.dob?.length > 5) {\r\n login.isDobErr = this.isDobErr = true;\r\n }\r\n } else if (login?.dob?.length > 5) {\r\n login.isDobErr = this.isDobErr = true;\r\n }\r\n return login; // todo: add property: isDobErr\r\n }\r\n // ---------------------------------------------------------------\r\n getDisclaimerAgeAccountMessage (age : number): any {\r\n let yourAgeMsg = '';\r\n let disaclaimerMsg = '';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.accountMessages) && this.accountMessages.length > 0) {\r\n for (let e of this.accountMessages) {\r\n if (e.Key.toLowercase().indexOf('yourAge') !== -1) {\r\n yourAgeMsg = e.Value;\r\n }\r\n if (e.Key.toLowercase().indexOf('disclaimerAge') !== -1) {\r\n disaclaimerMsg = e.Value;\r\n }\r\n }\r\n }\r\n this.message = ' ' + yourAgeMsg + age + '. ' + disaclaimerMsg;\r\n return this.message;\r\n }\r\n // ---------------------------------------------------------------\r\n \r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { ElementRef, Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { DateAssay } from '../../models/common/dateAssay.model';\r\nimport { EmitOffOnResult } from '../../models/common/emitOffOnResult.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { MessageModel } from '../../models/common/messageModel.model';\r\nimport { OffOn } from '../../models/offOn/offOn.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { CoreServiceService } from '../coreServiceService/coreServiceService.service';\r\nimport { HeartbeatService } from '../coreServiceService/heartbeatService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { DomUtilsServiceStatic } from '../staticServices/domUtilsServiceStatic.service';\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class OffOnService implements OnDestroy {\r\n //public heartbeatService : HeartbeatService;\r\n //public dictionaryService : DictionaryService;\r\n // public document : any;\r\n public counter = 0;\r\n public emitterDestroyed$: Subject = new Subject();\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public messageModel: MessageModel = new MessageModel();\r\n public offOn : any;\r\n public offOnMap : Map = new Map();\r\n public offOnDistance = 'm'; // should contain the distance value and will be set\r\n public renderer: Renderer2;\r\n public sitUser : SitUser = new SitUser();\r\n public spanAwayElement : ElementRef;\r\n public spanRadioElement : ElementRef;\r\n public heartbeatMap : Map = new Map();\r\n public hbDateAssay : DateAssay = new DateAssay();\r\n public timer : any;\r\n public timerMap : Map = new Map();\r\n // ---------------------------------\r\n constructor (\r\n /*@Inject(Document) document,*/\r\n public heartbeatService : HeartbeatService,\r\n public dictionaryService : DictionaryService,\r\n private rendererService : RendererService,\r\n ) {\r\n // this.document = Document;\r\n if (rendererService) {\r\n this.renderer = rendererService.getRenderer();\r\n }\r\n \r\n this.initialize();\r\n }\r\n // ---------------------------------------------------------------\r\n public initialize () : void {\r\n // this.document = Document;\r\n // this.offOnComponent = EmitterSubjectService.getOffOnComponent();\r\n //this.dictionaryService = _dictionaryService;\r\n //this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n //this.sitUser = EmitterSubjectService.getSitUserModel();\r\n //this.heartbeatService = coreServiceService.getHeartbeatService();\r\n // ----------------------------------------------------\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.loginSuccess = result;\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n // this.emitterDestroyed$.unsubscribe();\r\n });\r\n // ----------------------------------------------------\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n this.isMobilevar = result;\r\n });\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n // ----------------------------------------------------\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n // this.emitterDestroyed$.unsubscribe();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.clearTimerMap();\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Observable for OffOnIndicator :\r\n * --------------------------------------------------------------\r\n */\r\n // setupOffOnStatusColorObserver ( pTile : ProfileTile ) : any\r\n // {\r\n // return ( this.setupOffOnStatusColorObservable$ = new Observable( ( observer ) =>\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTile ) )\r\n // {\r\n // pTile.offOnStatusEnum = this.getAwayStatusEnum( pTile );\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTile.offOnStatusEnum ) )\r\n // {\r\n // pTile = this.getTimeAwayStatusValueAndColor( pTile );\r\n // // debugger;\r\n // }\r\n // const tpTile = this.setOffOnStatus( pTile );\r\n\r\n // CopyServiceStatic.copyProfileTileIfExists( pTile, tpTile );\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTile.unit ) )\r\n // {\r\n // pTile.unit = 'Meter';\r\n // }\r\n // observer.next( [ pTile ] );\r\n // }\r\n\r\n // // When the consumer unsubscribes, clean up data ready for next subscription.\r\n // return {\r\n // unsubscribe ()\r\n // {\r\n // // nothing to do here\r\n // },\r\n // };\r\n // } ) );\r\n // }\r\n // =================================================================================\r\n public clearTimerMap (): void {\r\n this.timerMap.forEach(timer => clearInterval(timer));\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public copyFromOffOnStatusResult(pTile: ProfileTile, offOnResult: EmitOffOnResult): ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOnResult))\r\n {\r\n debugger; // TODO investigate\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOnResult.offOnStatusEnum)) {\r\n pTile.offOn.offOnStatusEnum = offOnResult.offOnStatusEnum;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOnResult.offOnStatusColor)) {\r\n this.offOn.offOnStatusColor = pTile.offOn.offOnStatusColor = offOnResult.offOnStatusColor;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOnResult.away)) {\r\n this.offOn.away = pTile.offOn.away = offOnResult.away;\r\n }\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOnResult.offOnDistance)) {\r\n // this.offOn.distanceStr = pTile.offOn.distanceStr = offOnResult.offOnDistance;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOnResult.unit)) {\r\n // this.offOn.unit = pTile.offOn.unit = offOnResult.unit;\r\n //}\r\n // debugger;\r\n }\r\n return pTile;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // 'Time-away-status-mgmt'\r\n // ---------------------------------------------------------------\r\n // Note : this is where off-on-time-away indicator is controlled at\r\n // ---------------------------------------------------------------\r\n // Note : The following four funtions constitutes the detemination of\r\n // Time-away-status for users\r\n // ---------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------------------------\r\n // This method is to find the online status of all including signedInUser.\r\n // Note: This method does not check for spanAwayElem or spanRadioElem.\r\n // The caller of this method should set these ElementRefs.\r\n //\r\n // This method does NOT make an XHR api call\r\n //\r\n // Therefore, the offOn data values must be provided for it to work.\r\n // ---------------------------------------------------------------------------------\r\n public checkOffOnStatusWithoutApi (offOn : OffOn) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.heartbeat)\r\n && offOn.sitUserId > 0) {\r\n\r\n // (backend computes this using Newtonsoft lib )\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.heartbeat)) {\r\n offOn.isOnline = this.isUserOnLine(offOn?.heartbeat); // client-side isOnline\r\n // debugger;\r\n offOn.isOnline = this.isUserOnLine(offOn?.heartbeat); // client-side isOnline\r\n // debugger;\r\n // Note: this will calculate the diff-minutes = (now - heartbeatTime) \r\n offOn.awayTime = this.getMinutesSinceHeartbeat(this.offOn?.heartbeat);\r\n\r\n EmitterSubjectService.setIsOnLine(offOn.heartbeat.isOnline);\r\n // debugger;\r\n offOn = this.setOffOnStatusColor(offOn);\r\n }\r\n }\r\n // debugger;\r\n return offOn;\r\n }\r\n // --------------------------------------------------------------\r\n // Note: Not in user, but do not delete this\r\n // --------------------------------------------------------------\r\n public checkOffOnStatusDiaApi (offOn : OffOn) : any {\r\n // debugger;\r\n\r\n // before xhr call to make sure it is the right caller\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId > 0 ) {\r\n // debugger;\r\n // first get the heartbeat, then check the offOnStatus:\r\n // this.getHeartbeatForOnlineStatus(offOn).subscribe(data => {\r\n // this.heartbeatService.getHeartbeatFromDictionaryOrServer(offOn.sitUserId, 'OffOnService').subscribe(data => {\r\n this.heartbeatService.getHeartbeatObservable(offOn.sitUserId, 'offOnService').subscribe(data => {\r\n // debugger;\r\n // after data returns, make sure it is the right recipient\r\n if (data.sitUserId == offOn.sitUserId) {\r\n // debugger;\r\n offOn.heartbeat = data;\r\n // debugger; \r\n offOn = this.setOffOnStatusColor(offOn);\r\n return offOn;\r\n }\r\n });\r\n }\r\n // debugger;\r\n // else return offOn;\r\n\r\n }\r\n // ----------------------------------------------------------------------------------\r\n // JS time will be of 13 digits: 17xxxxxxxxxxx => 13-digits.\r\n // CS time will be of 18 digits: 6xxxxxxxxxxxxxxxxx.\r\n // ----------------------------------------------------------------------------------\r\n isTimeInCsTicks (heartbeatTime : number) : boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(heartbeatTime) && heartbeatTime > 0) {\r\n let now : number = new Date().getTime(); //now-in-js-ticks\r\n const unixEpochTicks = 621355968000000000; // CS unix-epoch-time in ticks\r\n if (now - heartbeatTime > 0) {\r\n return false;\r\n }\r\n else if (heartbeatTime - unixEpochTicks > 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n // JS time will be of 13 digits: 17xxxxxxxxxxx => 13-digits.\r\n // CS time will be of 18 digits: 6xxxxxxxxxxxxxxxxx.\r\n // ----------------------------------------------------------------------------------\r\n public convertCsTimeToJsTicks (heartbeatTime : number) : number {\r\n var hbTimeInJsTicks = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(heartbeatTime) && heartbeatTime > 0) {\r\n hbTimeInJsTicks = DateStringServiceStatic.convertNetTicsToJsDateTicks(heartbeatTime.toString());\r\n }\r\n return hbTimeInJsTicks;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public getHeartBeatTimeDifferenceInMinutes (hbdiff : number) : number {\r\n var hbDiffMinutes = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hbdiff) && hbdiff > 0) {\r\n var hbDiffSeconds = Math.ceil(hbdiff / 1000); // millsecs to sec\r\n // debugger;\r\n if (hbDiffSeconds > 0) {\r\n hbDiffMinutes = hbDiffSeconds / 60;\r\n }\r\n }\r\n return hbDiffMinutes;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public getOffOnStatusEnumOfMinutes (minutes : number) : number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(minutes) && minutes > 0) {\r\n if (minutes <= 5) {\r\n return 0;\r\n }\r\n else if (minutes > 5 && minutes < 10) {\r\n return 1;\r\n }\r\n else return 2;\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------\r\n // Note: 1. The backend-heartbeat-time may be in JS or CS\r\n // 2. In case of CS time, it may contain unix-epoch time in ticks, or the actual heartbeat-time in CS-ticks\r\n // 3. If the backend-heartbeat-time is greater than unix-epoch, then we convert the CS-ticks to js-ticks\r\n // 4. Then we take the difference of now-in-js-ticks and js-ticks\r\n // 5. Then we convert the diffence into diffMinutes and \r\n // 6. the diffMinutes is used to determine the `offOnStatusEnum`\r\n // ---------------------------------------------------------------------------------\r\n public computeAwayTimeFromHeartbeat (offOn : OffOn) : any {\r\n let hbDiff : number = -1;\r\n let hbDiffSeconds : number = -3;\r\n let hbDiffMinutes : number = -3; \r\n\r\n let hbTimeInJsTicks = 0;\r\n\r\n let now : number = new Date().getTime(); //now-in-js-ticks\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.heartbeat)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.heartbeat.heartbeatTime)\r\n && offOn.heartbeat.heartbeatTime > 0) {\r\n if (this.isTimeInCsTicks(offOn.heartbeat.heartbeatTime))\r\n {\r\n \r\n hbTimeInJsTicks = this.convertCsTimeToJsTicks(offOn.heartbeat.heartbeatTime);\r\n if (hbTimeInJsTicks > 0) {\r\n hbDiff = Math.floor(now - hbTimeInJsTicks);\r\n debugger;\r\n }\r\n // hbTimeInJsTicks===0 =>unix-epoch-time, so we need to treat user as offline's minimum munites of 11\r\n else {\r\n hbDiff == 11 * 60 * 1000; // 11 minutes in miliseconds, offline base ticks in js (minutes * secconds * milliseconds)\r\n debugger;\r\n }\r\n }\r\n // heartbeatTime in Js-ticks\r\n else {\r\n hbDiff = Math.floor(now - offOn.heartbeat.heartbeatTime);\r\n /*hbDiff = Math.floor(now - offOn.heartbeat.prevHeartbeat );*/\r\n // debugger;\r\n }\r\n }\r\n else {\r\n hbDiff = -1; \r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n // -------------------------------------------------------------------\r\n // Note: var nanValue = NaN;\r\n // if ( nanValue !== nanValue) // Returns true!\r\n // therefore, if(!nanValue === !nanValue) ==> if not NanValue\r\n // -------------------------------------------------------------------\r\n if ((!hbDiff === !hbDiff)) // if hbDiff !== nan\r\n {\r\n offOn.offOnStatusEnum = this.getOffOnStatusEnum(hbDiff);\r\n offOn.awayTime = hbDiff;\r\n offOn = this.getAwayStatusValueAndColor(offOn);\r\n }\r\n // debugger;\r\n return offOn;\r\n }\r\n // --------------------------------------------------------------\r\n public drawOffOnRadioColor (offOn :OffOn) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn)) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnStatusColor)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnRadioElem)) {\r\n // debugger;\r\n if (offOn.offOnRadioElem instanceof ElementRef) {\r\n // this.renderer.setStyle(offOn.offOnRadioElem, 'background', offOn.offOnStatusColor);\r\n offOn.offOnRadioElem.nativeElement.style.backgroundColor = offOn.offOnStatusColor;\r\n // this.renderer.setStyle(offOn.offOnRadioElem, 'color', offOn.offOnStatusColor);\r\n offOn.offOnRadioElem.nativeElement.style.color = offOn.offOnStatusColor;\r\n if (offOn.offOnStatusColor.toLowerCase().indexOf('gold') !== -1) {\r\n // this.renderer.setStyle(offOn.offOnRadioElem, 'border', '0.08rem solid deepskyblue');\r\n offOn.offOnRadioElem.nativeElement.style.border = '0.08rem solid deepskyblue';\r\n } else {\r\n // this.renderer.setStyle(offOn.offOnRadioElem, 'border', '0.08rem solid gold');\r\n offOn.offOnRadioElem.nativeElement.style.border = '0.08rem solid gold';\r\n }\r\n }\r\n else if (offOn.offOnRadioElem instanceof HTMLElement) {\r\n // debugger;\r\n // this.renderer.setStyle(offOn.offOnRadioElem, 'background', offOn.offOnStatusColor);\r\n offOn.offOnRadioElem.style.backgroundColor = offOn.offOnStatusColor;\r\n // this.renderer.setStyle(offOn.offOnRadioElem, 'color', offOn.offOnStatusColor);\r\n offOn.offOnRadioElem.style.color = offOn.offOnStatusColor;\r\n if (offOn.offOnStatusColor.toLowerCase().indexOf('gold') !== -1) {\r\n // this.renderer.setStyle(offOn.offOnRadioElem, 'border', '0.08rem solid deepskyblue');\r\n offOn.offOnRadioElem.style.border = '0.08rem solid deepskyblue';\r\n } else {\r\n // this.renderer.setStyle(offOn.offOnRadioElem, 'border', '0.08rem solid gold');\r\n offOn.offOnRadioElem.style.border = '0.08rem solid gold';\r\n }\r\n }\r\n }\r\n }\r\n // debugger;\r\n }\r\n return offOn;\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Note : this is where off-on-time-away indicator is controlled at\r\n * --------------------------------------------------------------\r\n */\r\n public drawOffOnAwayColor (offOn : OffOn ) : any\r\n {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn))\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnStatusColor ) )\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnAwayElem ) )\r\n {\r\n if (offOn.offOnAwayElem instanceof ElementRef) {\r\n // this.renderer.setStyle(offOn.offOnAwayElem, 'color', offOn.offOnStatusColor );\r\n offOn.offOnAwayElem.nativeElement.style.color = offOn.offOnStatusColor;\r\n // debugger;\r\n if (offOn.offOnStatusColor.toLowerCase().indexOf('orange') !== -1) {\r\n // this.renderer.setStyle(offOn.offOnAwayElem, 'text-shadow', '0 -.1em .1em deepskyblue' );\r\n offOn.offOnAwayElem.nativeElement.style.textShadow = '0 -.1em .1em black'; // deepskyblue\r\n } else {\r\n // this.renderer.setStyle(offOn.offOnAwayElem, 'text-shadow', '0 -.1em .1em yellow' );\r\n offOn.offOnAwayElem.nativeElement.style.textShadow = '0 -.1em .1em yellow';\r\n }\r\n }\r\n else if (offOn.offOnAwayElem instanceof HTMLElement) {\r\n // this.renderer.setStyle(offOn.offOnAwayElem, 'color', offOn.offOnStatusColor );\r\n offOn.offOnAwayElem.style.color = offOn.offOnStatusColor;\r\n // debugger;\r\n if (offOn.offOnStatusColor.toLowerCase().indexOf('orange') !== -1) {\r\n // this.renderer.setStyle(offOn.offOnAwayElem, 'text-shadow', '0 -.1em .1eme deepskyblue' );\r\n offOn.offOnAwayElem.style.textShadow = '0 -.1em .1em black'; // deepskyblu\r\n } else {\r\n // this.renderer.setStyle(offOn.offOnAwayElem, 'text-shadow', '0 -.1em .1em yellow' );\r\n offOn.offOnAwayElem.style.textShadow = '0 -.1em .1em yellow';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return offOn;\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Note : this is where off-on-time-away indicator is controlled at\r\n * --------------------------------------------------------------\r\n */\r\n public drawOffOnRadioAwayColor (offOn : OffOn ) : OffOn\r\n {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnStatusColor))\r\n {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnRadioElem)) {\r\n offOn.offOnRadioElem = EmitterSubjectService.getOffOnElement(\"spanRadio\");\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnAwayElem)) {\r\n offOn.offOnAwayElem = EmitterSubjectService.getOffOnElement(\"spanAway\");\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnRadioElem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnAwayElem))\r\n {\r\n // debugger;\r\n if (offOn.offOnRadioElem instanceof ElementRef) {\r\n // debugger;\r\n offOn.offOnRadioElem.nativeElement.style.backgroundColor = offOn.offOnStatusColor;\r\n if (offOn.offOnStatusColor.toLowerCase().indexOf('gold') !== -1) {\r\n offOn.offOnRadioElem.nativeElement.style.border = '0.08rem solid deepskyblue';\r\n } else {\r\n offOn.offOnRadioElem.nativeElement.style.border = '0.08rem solid gold';\r\n }\r\n }\r\n else if (offOn.offOnRadioElem instanceof HTMLElement) {\r\n offOn.offOnRadioElem.style.backgroundColor = offOn.offOnStatusColor;\r\n if (offOn.offOnStatusColor.toLowerCase().indexOf('gold') !== -1) {\r\n offOn.offOnRadioElem.style.border = '0.08rem solid deepskyblue';\r\n } else {\r\n offOn.offOnRadioElem.style.border = '0.08rem solid gold';\r\n }\r\n }\r\n debugger;\r\n if (offOn.offOnAwayElem instanceof ElementRef) {\r\n offOn.offOnAwayElem.nativeElement.style.color = offOn.offOnStatusColor;\r\n // debugger;\r\n if (offOn.offOnStatusColor.toLowerCase().indexOf('gold') !== -1) {\r\n offOn.offOnAwayElem.nativeElement.style.textShadow = '0 -.1em .1em black'; // deepskyblue\r\n } else {\r\n offOn.offOnAwayElem.nativeElement.style.textShadow = '0 -.1em .1em yellow';\r\n }\r\n }\r\n else if (offOn.offOnAwayElem instanceof HTMLElement) {\r\n offOn.offOnAwayElem.style.color = offOn.offOnStatusColor;\r\n // debugger;\r\n if (offOn.offOnStatusColor.toLowerCase().indexOf('gold') !== -1) {\r\n offOn.offOnAwayElem.style.textShadow = '0 -.1em .1em black'; // deepskyblue\r\n } else {\r\n offOn.offOnAwayElem.style.textShadow = '0 -.1em .1em yellow';\r\n }\r\n }\r\n }\r\n // debugger;\r\n }\r\n return offOn;\r\n } \r\n // ---------------------------------------------------------------\r\n public getAwayStatusValueAndColor (offOn : OffOn) : OffOn {\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn)) {\r\n offOn.awayMap = this.setOffOnAwayMap(offOn.away);\r\n }\r\n switch (offOn.offOnStatusEnum) {\r\n case 0:\r\n offOn.offOnStatusColor = 'forestgreen'; // on-line -- 'checked'\r\n offOn.away = 'online';\r\n // debugger; \r\n break;\r\n\r\n case 1:\r\n offOn.offOnStatusColor = 'orange'; // 10-min-away --'disabled'\r\n offOn.away = 'away'; // 'away:10 mins'; \r\n // debugger;\r\n break;\r\n case 2:\r\n offOn.offOnStatusColor = 'darkred'; // off-line\r\n // offOn.away = offOn.awayMap.get('offline'); //'off-line'; //\r\n offOn.away = 'offline';\r\n // debugger;\r\n break; \r\n\r\n default:\r\n debugger;\r\n offOn.offOnStatusColor = 'darkred';\r\n offOn.away = 'offline';\r\n // debugger;\r\n offOn.offOnStatusEnum = 2; // if value were -1, now it should be 1\r\n break;\r\n }\r\n // debugger;\r\n return offOn;\r\n }\r\n // ---------------------------------------------------------------\r\n public getOffOnStatusEnum (milliSecs : number) : number {\r\n \r\n var offlineTimeBeginsAt = 6600000; // 11min = 11*60*1000ms;\r\n var awayTimeBeginsAt = 3000000; // 5m = 5*60*1000ms\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(milliSecs) && milliSecs > 0) {\r\n if (milliSecs > offlineTimeBeginsAt) {\r\n return 2; // offline\r\n }\r\n else if (milliSecs < offlineTimeBeginsAt && milliSecs > awayTimeBeginsAt ) {\r\n return 1; // 'disabled', '10 mins away =>deepskyblue'\r\n }\r\n else if (milliSecs < awayTimeBeginsAt && milliSecs > 0 ) {\r\n return 0; // 'checked', on-line => forestgreen'\r\n }\r\n else {\r\n return 2;\r\n }\r\n }\r\n else {\r\n return 2;\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public isHeartbeatStale (hb : Heartbeat) : boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && hb.heartbeatTime > 0) {\r\n let now = new Date().getTime();\r\n let diffTicks = now - hb.heartbeatTime;\r\n this.hbDateAssay = DateStringServiceStatic.dateInYYYYMMDDhhmmss(diffTicks);\r\n\r\n let diffInMinutes = this.hbDateAssay.mm;\r\n\r\n return diffInMinutes > 5 ? true : false;\r\n }\r\n else return false;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getMinutesSinceHeartbeat (hb : Heartbeat) : number {\r\n let diffInMinutes = -1;\r\n let now = new Date().getTime();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && hb.heartbeatTime > 0) {\r\n let diffTicks = now - hb.heartbeatTime;\r\n this.hbDateAssay = DateStringServiceStatic.dateInYYYYMMDDhhmmss(diffTicks);\r\n\r\n diffInMinutes = this.hbDateAssay.mm;\r\n }\r\n return diffInMinutes;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // This method is to find the online status of all including signedInUser.\r\n // Note: This method does not check for spanAwayElem or spanRadioElem.\r\n // The caller of this method should set these ElementRefs.\r\n //\r\n // Angular causes to change detect on XHR api call, event and async operations.\r\n // But we must have the latest heartbeat, so this method will trigger a\r\n // top to bottom change detection. But there is no work-around to this,\r\n // so this method is used.\r\n //\r\n // This method makes an XHR call to the backend\r\n // ---------------------------------------------------------------------------------\r\n public getHeartbeatForOnlineStatus (offon : OffOn) : Observable {\r\n // debugger;\r\n var offOn = offon;\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId > 0/* && !offOn.isStatusUpdated*/) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.heartbeatService)) {\r\n // debugger;\r\n this.heartbeatService.getHeartbeatFromDictionaryOrServer(offOn.sitUserId, 'OffOnService').subscribe(hb => {\r\n // debugger;\r\n // (backend computes this using Newtonsoft lib )\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n // debugger;\r\n // uniquely save/update the heartbeatMap\r\n if (!this.heartbeatMap.has(hb.sitUserId)) {\r\n this.heartbeatMap.set(hb.sitUserId, hb);\r\n }\r\n else { // replace the old with the new\r\n let tHeartbeat = this.heartbeatMap.get(hb.sitUerId);\r\n this.heartbeatMap.delete(hb.sitUserId);\r\n tHeartbeat = CopyServiceStatic.copyHeartbeatIfExists(tHeartbeat, hb);\r\n\r\n this.heartbeatMap.set(tHeartbeat, hb.sitUserId);\r\n }\r\n // debugger;\r\n subscriber.next(hb); \r\n subscriber.complete();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n \r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n public getHeartbeatMap (): any {\r\n return this.heartbeatMap;\r\n }\r\n // ---------------------------------------------------------------\r\n public setHeartbeatMap (hbMap: Map): void {\r\n this.heartbeatMap = hbMap;\r\n }\r\n // ---------------------------------------------------------------\r\n public getOffOnMap () : any {\r\n return this.offOnMap;\r\n }\r\n // ---------------------------------------------------------------\r\n public setOffOnMap (offOnMap : Map) : void {\r\n this.offOnMap = offOnMap;\r\n }\r\n \r\n \r\n // ---------------------------------------------------------------\r\n public isUserOnLine (hb: Heartbeat): boolean {\r\n let isOnline = this.heartbeatService?.isOnlineFromHeartbeat(hb.heartbeatTime);\r\n // debugger;\r\n return isOnline;\r\n }\r\n \r\n \r\n // --------------------------------------------------------------\r\n public setOffOnIds (offOn : OffOn) : OffOn {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.sitUserId)\r\n && offOn.sitUserId > 0) {\r\n offOn.awayId = 'spanAway-' + offOn.sitUserId;\r\n offOn.awayRadioId = 'spanRadio-' + offOn.sitUserId;\r\n\r\n //offOn.awayId = 'spanAway-' + ( offOn.sitUserId > 0 ? offOn.sitUserId : 1);\r\n //offOn.awayRadioId = 'spanRadio-' + (offOn.sitUserId > 0 ? offOn.sitUserId : 1);\r\n // debugger;\r\n }\r\n return offOn;\r\n }\r\n // ----------------------------------------------------------------\r\n // Note: This method is in use\r\n // ----------------------------------------------------------------\r\n public setOffOnStatusColor ( offOn: OffOn ): OffOn\r\n {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId > 0) {\r\n \r\n offOn = this.computeAwayTimeFromHeartbeat(offOn);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnRadioElem)) {\r\n // debugger;\r\n offOn = this.drawOffOnRadioColor(offOn);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnAwayElem)) {\r\n // debugger;\r\n offOn = this.drawOffOnAwayColor(offOn);\r\n }\r\n // OR\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnAwayElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn.offOnRadioElem)) {\r\n // offOn = this.drawOffOnRadioAwayColor(offOn);\r\n //}\r\n\r\n offOn.lastUpdatedOn = new Date().getTime();\r\n\r\n // Note: this map is the one that membersIndivisuallyComponent will use to update selectively\r\n this.updateOffOnMap(offOn);\r\n }\r\n // debugger;\r\n \r\n return offOn;\r\n }\r\n \r\n // ---------------------------------------------------------------------------------\r\n public updateOffOnMap (offOn : OffOn) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId > 0) {\r\n if (!this.offOnMap.has(offOn.away)) {\r\n this.setOffOnAwayMap(offOn.away);\r\n }\r\n }\r\n return this.offOnMap;\r\n }\r\n // ---------------------------------------------------------------\r\n public setOffOnAwayMap (offOnAway : string) : Map {\r\n let awayMap = new Map();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOnAway)) {\r\n switch (offOnAway.toLowerCase()) {\r\n\r\n case \"online\": case \"on-line\":\r\n awayMap.set(\"online\", \"online\");\r\n break;\r\n case \"offline\": case \"off-line\":\r\n awayMap.set(\"offline\", \"offline\");\r\n break;\r\n case \"10mins\": case \"10 mins\": case \"away\":\r\n awayMap.set(\"10mins\", \"away\");\r\n break;\r\n //case \"15mins\": case \"15 mins\": case \"away-15mins\":\r\n // awayMap.set(\"15mins\", \"away-15mins\");\r\n // break;\r\n //case \"20mins\": case \"20 mins\": case \"away-20mins\":\r\n // awayMap.set(\"20mins\", \"away-20mins\");\r\n // break;\r\n default:\r\n awayMap.set(\"offline\", \"offline\");\r\n break;\r\n }\r\n }\r\n //else {\r\n // awayMap.set('offline', 'offline');\r\n //}\r\n return awayMap;\r\n }\r\n // ---------------------------------------------------------------\r\n // ===============================================================\r\n // Begin of Unused Methods\r\n // ===============================================================\r\n // ---------------------------------------------------------------\r\n // Not in use\r\n // ---------------------------------------------------------------\r\n public setOffOnStatusEnumAndAwayAndStatusColor (offOn : OffOn) : any {\r\n // debugger;\r\n let minutes : number = -9;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn)) {\r\n // offOn.awayMap = this.setOffOnAwayMap(\"\");\r\n // }\r\n // else {\r\n // offOn = new OffOn();\r\n //}\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.awayTime >= 0) {\r\n /*\r\n * minutes = parseInt(minutes);\r\n * debugger;\r\n */\r\n minutes = offOn.awayTime;\r\n\r\n offOn.awayMap = this.setOffOnAwayMap(\"\");\r\n if (minutes > 10) {\r\n offOn.offOnStatusEnum = 2;\r\n offOn.offOnStatusColor = 'darkred'; // off-line\r\n offOn.away = 'offline';\r\n offOn.awayMap = this.setOffOnAwayMap('offline');\r\n // debugger;\r\n }\r\n else if (minutes <= 10 && minutes > 5) {\r\n offOn.offOnStatusEnum = 1; // 'disabled', '10 mins away => deepskyblue'\r\n offOn.offOnStatusColor = 'orange'; // 10-min-away --'disabled'\r\n offOn.away = 'away'; // 'away:10 mins'; //\r\n offOn.awayMap = this.setOffOnAwayMap('10mins');\r\n // debugger;\r\n }\r\n else if (minutes <= 5 && minutes >= 0) {\r\n offOn.offOnStatusEnum = 0; // 'checked', on-line => forestgreen'\r\n offOn.offOnStatusColor = 'forestgreen'; // on-line -- 'checked'\r\n offOn.away = 'online';\r\n offOn.awayMap = this.setOffOnAwayMap('online');\r\n // debugger;\r\n }\r\n else {\r\n offOn.offOnStatusEnum = 2;\r\n offOn.offOnStatusColor = 'darkred'; // off-line\r\n offOn.away = 'offline';\r\n offOn.awayMap = this.setOffOnAwayMap('offline');\r\n }\r\n }\r\n else {\r\n offOn.offOnStatusEnum = 2;\r\n offOn.offOnStatusColor = 'darkred'; // off-line\r\n offOn.away = 'offline';\r\n offOn.awayMap = this.setOffOnAwayMap('offline');\r\n }\r\n return offOn;\r\n }\r\n\r\n\r\n // ---------------------------------------------------------------\r\n // Note: This will be called by the calling-component and service\r\n // but the setupOffOnElements() must be called by the calling-component.\r\n // ---------------------------------------------------------------\r\n public setupOffOnElement (offOn : OffOn, childElem ?: ElementRef | HTMLElement) : OffOn {\r\n // debugger;\r\n let id = '';\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(childElem) || childElem instanceof HTMLElement) {\r\n let tElem = DomUtilsServiceStatic.getHtmlElementByClass(\"spanA\");\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n // debugger;\r\n offOn.offOnAwayElem = tElem as HTMLElement;\r\n EmitterSubjectService.setOffOnElement(tElem as HTMLElement, 'spanAway');\r\n }\r\n\r\n tElem = DomUtilsServiceStatic.getHtmlElementByClass(\"spanR\");\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n // debugger;\r\n offOn.offOnRadioElem = tElem as HTMLElement;\r\n EmitterSubjectService.setOffOnElement(tElem as HTMLElement, 'spanRadio');\r\n }\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(childElem)\r\n && childElem instanceof ElementRef\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(childElem?.nativeElement)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(childElem?.nativeElement.id)) {\r\n id = childElem?.nativeElement.id;\r\n let sitUserid = parseInt(id.split('-')[ 1 ]);\r\n // debugger;\r\n if (id.indexOf('spanAway-') !== -1 && sitUserid > 0 && sitUserid === offOn.sitUserId && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(childElem)) {\r\n offOn.offOnAwayElem = childElem as ElementRef;\r\n EmitterSubjectService.setOffOnElement(childElem as ElementRef, 'spanAway');\r\n // debugger;\r\n }\r\n else if (id.indexOf('spanRadio-') !== -1 && sitUserid > 0 && sitUserid === offOn.sitUserId && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(childElem)) {\r\n offOn.offOnRadioElem = childElem as ElementRef;\r\n EmitterSubjectService.setOffOnElement(childElem as ElementRef, 'spanRadio');\r\n // debugger;\r\n }\r\n }\r\n return offOn;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This will be called by the calling-component\r\n // since service does not have access to ElementRef\r\n // ---------------------------------------------------------------\r\n public setupOffOnElements (offOn : OffOn, awayElem : ElementRef, radioElem : ElementRef) : OffOn {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(awayElem)) {\r\n // debugger;\r\n offOn = this.setupOffOnElement(offOn, awayElem as ElementRef);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(radioElem)) {\r\n // debugger;\r\n offOn = this.setupOffOnElement(offOn, radioElem as ElementRef);\r\n }\r\n }\r\n return offOn;\r\n }\r\n // ---------------------------------------------------------------\r\n public setupOffOnElementFromEmitterService (offOn : OffOn, childelem ?: ElementRef) : OffOn {\r\n // debugger;\r\n offOn.offOnAwayElem = EmitterSubjectService.getOffOnElement('spanAway');\r\n offOn.offOnRadioElem = EmitterSubjectService.getOffOnElement('spanRadio');\r\n return offOn;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // Note: Thsi is not used at the moment\r\n\r\n // ---------------------------------------------------------------\r\n // NOTE: THE FOLLOWING METHODS ARE NOT IN USE\r\n // ---------------------------------------------------------------\r\n // Note: This method does not check for spanAwayElem or spanRadioElem.\r\n // The caller of this method should set these ElementRefs.\r\n //\r\n // Note2: Since async, event and XHR calll to api causes angular to\r\n // do changedetection from root to bottom,\r\n // we do not use this method. otherwise all the offOn\r\n // indicator will also do change detection on any\r\n // parent page.\r\n // Therefore, this is deprecated/NOT used.\r\n // --------------------------------------------------------------\r\n //public checkOffOnStatusOfMembers (offOn : OffOn) : Promise {\r\n // // ------------------------------------------------------------\r\n // // Note: Self Contained OnLine Watcher:\r\n // // ------------------------------------------------------------\r\n // // debugger;\r\n // return new Promise((resolve, reject) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) && offOn.sitUserId > 0) {\r\n // // debugger;\r\n // let returnUrl = window.location.pathname + window.location.search;\r\n // if (returnUrl.toLowerCase().indexOf('members') !== -1 || returnUrl.toLowerCase().indexOf('membersindividually') !== -1) {\r\n // // debugger;\r\n // // async operation!!\r\n // // ------------------\r\n // this.timer = setTimeout(() => {\r\n // // debugger;\r\n // clearTimeout(this.timer);\r\n // this.getHeartbeatForOnlineStatus(offOn).subscribe(data => {\r\n // offOn.heartbeat = data;\r\n // resolve(offOn);\r\n // })\r\n // }, 240000); // every 4 minutes\r\n // clearTimeout(this.timer);\r\n // offOn.timer = this.timer;\r\n // if (!this.timerMap.has(this.timer)) {\r\n // this.timerMap.set(this.timer, this.timer);\r\n // }\r\n // }\r\n // else {\r\n // this.clearTimerMap();\r\n // reject(null);\r\n // }\r\n // }\r\n // else {\r\n // reject(null);\r\n // }\r\n // })\r\n //}\r\n // ---------------------------------------------------------------\r\n}\r\n","'use strict'\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ModalServiceService } from '../modalServiceService/modalServiceService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TimerService implements OnDestroy\r\n{\r\n constructor (private modalServiceService : ModalServiceService) {\r\n }\r\n public index = -1;\r\n public messageTimer : any;\r\n public timer : any;\r\n public timerMap : Map = new Map();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n \r\n // ---------------------------------------------------------------------------------\r\n public getIndexInArr (timer : any, timerArray : any) : number\r\n {\r\n this.index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(timerArray) && timerArray.length > 0)\r\n {\r\n let i = 0;\r\n for ( let t in timerArray )\r\n {\r\n if ( t === timer )\r\n {\r\n this.index = i;\r\n break;\r\n }\r\n i++;\r\n }\r\n }\r\n return this.index;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getIndexInTimerMap (timer : any) : number {\r\n this.index = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.timerMap) && this.timerMap.size > 0) {\r\n let i = 0;\r\n this.timerMap.forEach(t => {\r\n if (t.key === timer) {\r\n this.index = i;\r\n }\r\n i++;\r\n });\r\n }\r\n return this.index;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n\r\n public resetMessageTimer (interval : number) : any\r\n {\r\n // debugger; // in TimerService\r\n interval = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(interval) && interval > 0 ? interval : 10000;\r\n this.messageTimer = setTimeout( () =>\r\n {\r\n // debugger;\r\n clearTimeout(this.timerMap.get(this.messageTimer));\r\n this.timerMap.delete(this.messageTimer)\r\n EmitterSubjectService.emitClearMessage(true);\r\n }, interval);\r\n\r\n clearTimeout(this.messageTimer);\r\n //if (!this.timerMap.has(this.messageTimer)) {\r\n // this.timerMap.set(this.messageTimer, this.messageTimer);\r\n //}\r\n return true;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n ngOnDestroy (): void\r\n {\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.timerMap.forEach(t => clearTimeout(t));\r\n this.timerMap.clear();\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public clearTimerService () {\r\n this.timerMap.forEach((timer) => clearInterval(timer));\r\n this.timerMap.clear();\r\n }\r\n // ---------------------------------------------------------------------------------\r\n}\r\n\r\n// export class NgZone\r\n// {\r\n// readonly hasPendingMicrotasks : boolean = false;\r\n// readonly hasPendingMacrotasks : boolean = false;\r\n\r\n// /**\r\n// * Whether there are no outstanding microtasks or macrotasks.\r\n// */\r\n// readonly isStable : boolean = true;\r\n\r\n// /**\r\n// * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\r\n// */\r\n// readonly onUnstable : Subject = new Subject( );\r\n\r\n// /**\r\n// * Notifies when there is no more microtasks enqueued in the current VM Turn.\r\n// * This is a hint for Angular to do change detection, which may enqueue more microtasks.\r\n// * For this reason this event can fire multiple times per VM Turn.\r\n// */\r\n// readonly onMicrotaskEmpty : Subject = new Subject( );\r\n\r\n// /**\r\n// * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which\r\n// * implies we are about to relinquish VM turn.\r\n// * This event gets called just once.\r\n// */\r\n// readonly onStable : Subject = new Subject( );\r\n\r\n// /**\r\n// * Notifies that an error has been delivered.\r\n// */\r\n// readonly onError : Subject = new Subject( );\r\n\r\n// constructor ( { enableLongStackTrace = false } )\r\n// {\r\n// if ( typeof Zone == 'undefined' )\r\n// {\r\n// throw new Error( 'Angular requires Zone.js prolyfill.' );\r\n// }\r\n\r\n// Zone.assertZonePatched();\r\n// const self = this as any as NgZonePrivate;\r\n// self._nesting = 0;\r\n\r\n// self._outer = self._inner = Zone.current;\r\n\r\n// if ( ( Zone as any )[ 'wtfZoneSpec' ] )\r\n// {\r\n// self._inner = self._inner.fork( ( Zone as any )[ 'wtfZoneSpec' ] );\r\n// }\r\n\r\n// if ( enableLongStackTrace && ( Zone as any )[ 'longStackTraceZoneSpec' ] )\r\n// {\r\n// self._inner = self._inner.fork( ( Zone as any )[ 'longStackTraceZoneSpec' ] );\r\n// }\r\n\r\n// forkInnerZoneWithAngularBehavior( self );\r\n// }\r\n\r\n// static isInAngularZone () : boolean { return Zone.current.get( 'isAngularZone' ) === true; }\r\n\r\n// static assertInAngularZone () : void\r\n// {\r\n// if ( !NgZone.isInAngularZone() )\r\n// {\r\n// throw new Error( 'Expected to be in Angular Zone, but it is not!' );\r\n// }\r\n// }\r\n\r\n// static assertNotInAngularZone () : void\r\n// {\r\n// if ( NgZone.isInAngularZone() )\r\n// {\r\n// throw new Error( 'Expected to not be in Angular Zone, but it is!' );\r\n// }\r\n// }\r\n\r\n// /**\r\n// * Executes the `fn` function synchronously within the Angular zone and returns value returned by\r\n// * the function.\r\n// *\r\n// * Running functions via `run` allows you to reenter Angular zone from a task that was executed\r\n// * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\r\n// *\r\n// * Any future tasks or microtasks scheduled from within this function will continue executing from\r\n// * within the Angular zone.\r\n// *\r\n// * If a synchronous error happens it will be rethrown and not reported via `onError`.\r\n// */\r\n// run ( fn : ( ...args : any[] ) => T, applyThis ?: any, applyArgs ?: any[] ) : T\r\n// {\r\n// return ( this as any as NgZonePrivate )._inner.run( fn, applyThis, applyArgs ) as T;\r\n// }\r\n\r\n// /**\r\n// * Executes the `fn` function synchronously within the Angular zone as a task and returns value\r\n// * returned by the function.\r\n// *\r\n// * Running functions via `run` allows you to reenter Angular zone from a task that was executed\r\n// * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\r\n// *\r\n// * Any future tasks or microtasks scheduled from within this function will continue executing from\r\n// * within the Angular zone.\r\n// *\r\n// * If a synchronous error happens it will be rethrown and not reported via `onError`.\r\n// */\r\n// runTask ( fn : ( ...args : any[] ) => T, applyThis ?: any, applyArgs ?: any[], name ?: string ) : T\r\n// {\r\n// const zone = ( this as any as NgZonePrivate )._inner;\r\n// const task = zone.scheduleEventTask( 'NgZoneEvent: ' + name, fn, EMPTY_PAYLOAD, noop, noop );\r\n// try\r\n// {\r\n// return zone.runTask( task, applyThis, applyArgs ) as T;\r\n// } finally\r\n// {\r\n// zone.cancelTask( task );\r\n// }\r\n// }\r\n\r\n// /**\r\n// * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\r\n// * rethrown.\r\n// */\r\n// runGuarded ( fn : ( ...args : any[] ) => T, applyThis ?: any, applyArgs ?: any[] ) : T\r\n// {\r\n// return ( this as any as NgZonePrivate )._inner.runGuarded( fn, applyThis, applyArgs ) as T;\r\n// }\r\n\r\n// /**\r\n// * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\r\n// * the function.\r\n// *\r\n// * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do\r\n// * work that\r\n// * doesn't trigger Angular change-detection or is subject to Angular's error handling.\r\n// *\r\n// * Any future tasks or microtasks scheduled from within this function will continue executing from\r\n// * outside of the Angular zone.\r\n// *\r\n// * Use {@link #run} to reenter the Angular zone and do work that updates the application model.\r\n// */\r\n// runOutsideAngular ( fn : ( ...args : any[] ) => T ) : T\r\n// {\r\n// return ( this as any as NgZonePrivate )._outer.run( fn ) as T;\r\n// }\r\n// }\r\n\r\n// function noop () { }\r\n// const EMPTY_PAYLOAD = {};\r\n\r\n\r\n// interface NgZonePrivate extends NgZone\r\n// {\r\n// _outer : Zone;\r\n// _inner : Zone;\r\n// _nesting : number;\r\n\r\n// hasPendingMicrotasks : boolean;\r\n// hasPendingMacrotasks : boolean;\r\n// isStable : boolean;\r\n// }\r\n\r\n// function checkStable ( zone : NgZonePrivate )\r\n// {\r\n// if ( zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable )\r\n// {\r\n// try\r\n// {\r\n// zone._nesting++;\r\n// zone.onMicrotaskEmpty.next( null );\r\n// } finally\r\n// {\r\n// zone._nesting--;\r\n// if ( !zone.hasPendingMicrotasks )\r\n// {\r\n// try\r\n// {\r\n// zone.runOutsideAngular( () => zone.onStable.next( null ) );\r\n// } finally\r\n// {\r\n// zone.isStable = true;\r\n// }\r\n// }\r\n// }\r\n// }\r\n// }\r\n\r\n// function forkInnerZoneWithAngularBehavior ( zone : NgZonePrivate )\r\n// {\r\n// zone._inner = zone._inner.fork( {\r\n// name: 'angular',\r\n// properties: { 'isAngularZone': true },\r\n// onInvokeTask: ( delegate : ZoneDelegate, current : Zone, target : Zone, task : Task, applyThis : any,\r\n// applyArgs : any ) : any =>\r\n// {\r\n// try\r\n// {\r\n// onEnter( zone );\r\n// return delegate.invokeTask( target, task, applyThis, applyArgs );\r\n// } finally\r\n// {\r\n// onLeave( zone );\r\n// }\r\n// },\r\n\r\n\r\n// onInvoke: ( delegate : ZoneDelegate, current : Zone, target : Zone, callback : Function,\r\n// applyThis : any, applyArgs : any[], source : string ) : any =>\r\n// {\r\n// try\r\n// {\r\n// onEnter( zone );\r\n// return delegate.invoke( target, callback, applyThis, applyArgs, source );\r\n// } finally\r\n// {\r\n// onLeave( zone );\r\n// }\r\n// },\r\n\r\n// onHasTask:\r\n// ( delegate : ZoneDelegate, current : Zone, target : Zone, hasTaskState : HasTaskState ) =>\r\n// {\r\n// delegate.hasTask( target, hasTaskState );\r\n// if ( current === target )\r\n// {\r\n// // We are only interested in hasTask events which originate from our zone\r\n// // (A child hasTask event is not interesting to us)\r\n// if ( hasTaskState.change == 'microTask' )\r\n// {\r\n// zone.hasPendingMicrotasks = hasTaskState.microTask;\r\n// checkStable( zone );\r\n// } else if ( hasTaskState.change == 'macroTask' )\r\n// {\r\n// zone.hasPendingMacrotasks = hasTaskState.macroTask;\r\n// }\r\n// }\r\n// },\r\n\r\n// onHandleError: ( delegate : ZoneDelegate, current : Zone, target : Zone, error : any ) : boolean =>\r\n// {\r\n// delegate.handleError( target, error );\r\n// zone.runOutsideAngular( () => zone.onError.next( error ) );\r\n// return false;\r\n// }\r\n// } );\r\n// }\r\n\r\n// function onEnter ( zone : NgZonePrivate )\r\n// {\r\n// zone._nesting++;\r\n// if ( zone.isStable )\r\n// {\r\n// zone.isStable = false;\r\n// zone.onUnstable.next( null );\r\n// }\r\n// }\r\n\r\n// function onLeave ( zone : NgZonePrivate )\r\n// {\r\n// zone._nesting--;\r\n// checkStable( zone );\r\n// }\r\n\r\n/// **\r\n// * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls\r\n// * to framework to perform rendering.\r\n// *\r\n// * @internal\r\n// */\r\n// export class NoopNgZone implements NgZone\r\n// {\r\n// readonly hasPendingMicrotasks : boolean = false;\r\n// readonly hasPendingMacrotasks : boolean = false;\r\n// readonly isStable : boolean = true;\r\n// readonly onUnstable : Subject = new Subject();\r\n// readonly onMicrotaskEmpty : Subject = new Subject();\r\n// readonly onStable : Subject = new Subject();\r\n// readonly onError : Subject = new Subject();\r\n\r\n// run ( fn : () => any ) : any { return fn(); }\r\n\r\n// runGuarded ( fn : () => any ) : any { return fn(); }\r\n\r\n// runOutsideAngular ( fn : () => any ) : any { return fn(); }\r\n\r\n// runTask ( fn : () => any ) : any { return fn(); }\r\n// }\r\n","\r\nimport { Injectable, OnDestroy, OnInit } from \"@angular/core\";\r\nimport Dexie, { Table } from 'dexie';\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { db } from \"../../db\";\r\nimport { BinarySearchService } from \"../searchSortServiceService/binarySearchService.service\";\r\nimport { FrequentlyUsedFunctionsServiceStatic } from \"../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service\";\r\n\r\n/*************************************************************************/\r\n/** Note: the declaration of the ObjectStores is in db,ts that HAS to be**/\r\n/** in the src folder i.e. where package.json is declared. **/\r\n/*************************************************************************/\r\n\r\n\r\n/***\r\n * ref: https://www.npmjs.com/package/dexie\r\n * Supported operations:\r\n * ---------------------\r\n above(key): Collection;\r\naboveOrEqual(key): Collection;\r\nadd(item, key?): Promise;\r\nand(filter: (x) => boolean): Collection;\r\nanyOf(keys[]): Collection;\r\nanyOfIgnoreCase(keys: string[]): Collection;\r\nbelow(key): Collection;\r\nbelowOrEqual(key): Collection;\r\nbetween(lower, upper, includeLower?, includeUpper?): Collection;\r\nbulkAdd(items: Array): Promise;\r\nbulkDelete(keys: Array): Promise;\r\nbulkPut(items: Array): Promise;\r\nclear(): Promise;\r\ncount(): Promise;\r\ndelete(key): Promise;\r\ndistinct(): Collection;\r\neach(callback: (obj) => any): Promise;\r\neachKey(callback: (key) => any): Promise;\r\neachPrimaryKey(callback: (key) => any): Promise;\r\neachUniqueKey(callback: (key) => any): Promise;\r\nequals(key): Collection;\r\nequalsIgnoreCase(key): Collection;\r\nfilter(fn: (obj) => boolean): Collection;\r\nfirst(): Promise;\r\nget(key): Promise;\r\ninAnyRange(ranges): Collection;\r\nkeys(): Promise;\r\nlast(): Promise;\r\nlimit(n: number): Collection;\r\nmodify(changeCallback: (obj: T, ctx:{value: T}) => void): Promise;\r\nmodify(changes: { [keyPath: string]: any } ): Promise;\r\nnoneOf(keys: Array): Collection;\r\nnotEqual(key): Collection;\r\noffset(n: number): Collection;\r\nor(indexOrPrimayKey: string): WhereClause;\r\norderBy(index: string): Collection;\r\nprimaryKeys(): Promise;\r\nput(item: T, key?: Key): Promise;\r\nreverse(): Collection;\r\nsortBy(keyPath: string): Promise;\r\nstartsWith(key: string): Collection;\r\nstartsWithAnyOf(prefixes: string[]): Collection;\r\nstartsWithAnyOfIgnoreCase(prefixes: string[]): Collection;\r\nstartsWithIgnoreCase(key: string): Collection;\r\ntoArray(): Promise;\r\ntoCollection(): Collection;\r\nuniqueKeys(): Promise;\r\nuntil(filter: (value) => boolean, includeStopEntry?: boolean): Collection;\r\nupdate(key: Key, changes: { [keyPath: string]: any }): Promise;\r\n***/\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class DbDexieService implements OnInit, OnDestroy {\r\n // our Database constructor sets up an IndexedDB database with a\r\n // sticky notes object store, titled \"notes\".\r\n\r\n public _db : any;\r\n public oldVersion : number = 0;\r\n public dexieTableObjectStore : any; // Note: the objectStores has a post-fix of 'I' because they are derived from respective interfaces\r\n public dTable! : Table;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n\r\n public objectStores : any;\r\n public objectStoreNameArr : string[] = [];\r\n public message = '';\r\n // ------------------------------------\r\n // begin of dbDexie-code:\r\n // ------------------------------------\r\n //public buddyObjectStore! : Table;\r\n //public chatHistoryObjectStore! : Table;\r\n //public chatHistoryIdObjectStore! : Table;\r\n //public emailTileObjectStore! : Table;\r\n //public emailTileIdObjectStore! : Table;\r\n //public enoteTileObjectStore! : Table;\r\n //public enoteTileIdObjectStore! : Table;\r\n //public errorLogObjectStore! : Table;\r\n //public kvPhotoObjectStore! : Table;\r\n //public loginSuccessObjectStore! : Table;\r\n //public myBlockObjectStore! : Table;\r\n //public myChatObjectStore! : Table;\r\n //public myChatIdObjectStore! : Table;\r\n //public myEmailObjectStore! : Table;\r\n //public myEmailIdObjectStore! : Table;\r\n //public myFriendObjectStore! : Table;\r\n //public myLikeObjectStore! : Table;\r\n //public myMemberActivityObjectStore! : Table;\r\n //public myMemberLockingActivityObjectStore! : Table;\r\n //public myMemberStarTrackWinkActivityObjectStore! : Table;\r\n //public myStarObjectStore! : Table;\r\n //public myTrackObjectStore! : Table;\r\n //public myWinkObjectStore! : Table;\r\n //public myUnlockObjectStore! : Table;\r\n //public myNotificationObjectStore! : Table;\r\n //public myNotificationIdObjectStore! : Table;\r\n //public photoObjectStore! : Table;\r\n //public photoBnIdObjectStore! : Table;\r\n //// public photoBnObjectStore! : Table;\r\n //public preferenceObjectStore! : Table;\r\n //public profileTileObjectStore! : Table;\r\n //public profileInfoObjectStore! : Table;\r\n //// public profilePicsObjectStore! : Table;\r\n //public sitUserObjectStore! : Table;\r\n //public sitUserIdObjectStore! : Table;\r\n //public yourBlockObjectStore! : Table;\r\n //public yourFriendObjectStore! : Table;\r\n //public yourLikeObjectStore! : Table;\r\n //public yourMemberActivityObjectStore! : Table;\r\n //public yourMemberLockingActivityObjectStore! : Table;\r\n //public yourMemberStarTrackWinkActivityObjectStore! : Table;\r\n //public yourStarObjectStore! : Table;\r\n //public yourTrackObjectStore! : Table;\r\n //public yourWinkObjectStore! : Table;\r\n //public yourUnlockObjectStore! : Table;\r\n // end of dbDexie-code\r\n // ----------------------------------\r\n public versionCounter = 1;\r\n constructor ( \r\n private binarySearchService : BinarySearchService,) {\r\n this._db = db;\r\n\r\n // this = new Dexie(ConstantServiceStatic.dbName);\r\n\r\n //this.setupDictionaries(ConstantServiceStatic.version);\r\n // debugger;\r\n ////this.on('error', function (e) {\r\n //// switch (e.name) {\r\n //// // errnames.Constraint ===\"ConstraintError\"\r\n //// case Dexie.errnames.Constraint:\r\n //// console.error(\"Constraint error\");\r\n //// break;\r\n //// default:\r\n //// console.error(\"error: \" + e);\r\n //// }\r\n ////});\r\n //debugger;\r\n }\r\n\r\n ngOnInit () {\r\n debugger;\r\n\r\n // -----------------------------------------------------\r\n // DictionaryServiceStatic.populateAllDictionaries();\r\n // debugger;\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n // debugger;\r\n }\r\n \r\n // -------------------------------------------------------------------\r\n // NOte: this method assumes that the particular ObjectStore exists.\r\n // -------------------------------------------------------------------\r\n public countObjectStoreItems (entityName : string) : Observable | any {\r\n // debugger;\r\n\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)) {\r\n debugger;\r\n var count = this.getTableByEntityName(entityName).count();\r\n debugger;\r\n subscriber.next(count);\r\n }\r\n })\r\n }\r\n // -------------------------------------------------------------------\r\n // Note: this method will also check if a particular ObjectStore\r\n // exists or not and if exists, return a promise with the count of the ObjectStore\r\n // -------------------------------------------------------------------\r\n public doesStoreHaveData (entityName : string) : Observable | any {\r\n // debugger; \r\n return new Observable((subscriber) => {\r\n let key : string = '';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)) {\r\n // debugger;\r\n //let table : Dexie.Table;\r\n //table = this.getTable(entityName + 'ObjectStore');\r\n debugger;\r\n \r\n //this.countObjectStoreItems(entityName).subscribe(count => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(db)) {\r\n debugger;\r\n db.table(entityName + 'ObjectStore').toArray().then(data => {\r\n debugger;\r\n if (data.length > 0) {\r\n debugger;\r\n subscriber.next(true);\r\n }\r\n else {\r\n debugger;\r\n subscriber.next(false);\r\n }\r\n subscriber.complete();\r\n })\r\n }\r\n }\r\n })\r\n }\r\n\r\n // -------------------------------------------------------\r\n public getTableByEntityName (entityName : string) : any {\r\n debugger;\r\n let entityTable : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)) {\r\n for (var i = 0; i < this._db.tables.length; i++) {\r\n if (this._db.tables[ i ].name.indexOf(entityName + 'ObjectStore') !== -1) {\r\n debugger;\r\n entityTable = this._db.tables[ i ];\r\n break;\r\n }\r\n }\r\n return entityTable;\r\n }\r\n } // ---------------------------------------------------------------\r\n public isFoundInStore (namedObjectStore, key) : boolean {\r\n var comparator = ((a, b) => {\r\n return a - b;\r\n });\r\n\r\n var num = this.binarySearchService.isFound(namedObjectStore.keys, key, comparator);\r\n\r\n return num === 0 ? true : false;\r\n }\r\n // ---------------------------------------------------------------\r\n public isObjectStoreNameFoundInArr (name : string) : boolean {\r\n var isFound = false;\r\n this.objectStoreNameArr.map(e => {\r\n if (e.indexOf(name) !== -1) {\r\n isFound = true;\r\n }\r\n })\r\n return isFound;\r\n }\r\n // ---------------------------------------------------------------\r\n public isObjectStoreNameFoundInTables (name : string) : boolean {\r\n var isFound = false;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this._db) && this._db.tables.length > 0)\r\n for (var i = 0; i < this._db.tables.length; i++) {\r\n if (this._db.tables[ i ].name.indexOf(name) !== -1) {\r\n isFound = true;\r\n // debugger;\r\n break;\r\n }\r\n }\r\n return isFound;\r\n }\r\n // ---------------------------------------------------------------\r\n // ref: https://dzone.com/articles/dexis-js-holistic-guide\r\n // ---------------------------------------------------------------\r\n public getTable (schema : string) : Table {\r\n return db.table(schema + 'ObjectStore');\r\n }\r\n // ---------------------------------------------------------------\r\n // ref: https://dzone.com/articles/dexis-js-holistic-guide\r\n // ---------------------------------------------------------------\r\n public updateObjectStoreData (model : any) : Observable| any {\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n return new Observable(subscriber => {\r\n let result : any;\r\n // debugger;\r\n let table : Dexie.Table; \r\n table = this.getTable(model.entityName);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(table)) {\r\n if (model.id > 0) {\r\n table.put(model, model.id).then(keys => {\r\n // debugger;\r\n return subscriber.next(table.get(model.key));\r\n })\r\n }\r\n }\r\n else {\r\n console.log('dbDexieService->table not found: ' + model.entityName);\r\n }\r\n });\r\n } \r\n }\r\n // ---------------------------------------------------------------\r\n public addModelObservable (model : any) : Observable {\r\n return this.updateObjectStoreData(model);\r\n }\r\n // ---------------------------------------------------------------\r\n // ref: https://dzone.com/articles/dexis-js-holistic-guide\r\n // ---------------------------------------------------------------\r\n public getStoreData (entityName : any, key: string) : Observable {\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n let tableName = entityName; // oModel == observablesModel\r\n let tkey = key;\r\n this.message = 'store-data have been successfully fetched.';\r\n let result : any;\r\n let date = new Date();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tableName)) {\r\n // debugger;\r\n let table : Dexie.Table = this.getTable(tableName);\r\n // debugger;\r\n console.log('timestamp: ' + new Date().getTime() + '->in getStoreData(). tableName: ' + tableName + ' key: ' + tkey);\r\n\r\n table.get({ key: tkey }).then(data => {\r\n // debugger;\r\n console.log('timestamp: ' + new Date().getTime() + '->in getStoreData(). tableName: ' + tableName + ' key: ' + key + ' is successfull. Data: ' + data.toString());\r\n subscriber.next(data);\r\n }) \r\n }\r\n else {\r\n this.message = date.getTime() + ' getStoreData.doesStoreHaveData() returned a count that was 0 or null or undefined result.';\r\n console.log(this.message);\r\n }\r\n });\r\n }\r\n}\r\n // ==========================================================\r\n //switch (model?.entityName?.toLowerCase()) {\r\n // case 'chathistoryid':\r\n // //objectStores.chatHistoryIdObjectStore?.count().then(async (c : any) => {\r\n // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.chatHistoryIdObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.chatHistoryIdObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.chatHistoryIdObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // // }\r\n // // result = await this.chatHistoryIdObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'chathistory':\r\n // /*objectStores.chatHistoryObjectStore?.count().then(async (c : any) => {*/\r\n // // debugger;\r\n // /* if (c > 0) {*/\r\n // // debugger;\r\n // this._db.chatHistoryObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.chatHistoryObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // /* }*/\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.chatHistoryObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // //result = await this.chatHistoryObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'emailtile':\r\n // //objectStores.eMailTileObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.eMailTileObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.eMailTileObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.eMailTileObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // break;\r\n\r\n // case 'emailtileid':\r\n // //objectStores.eMailTileIdObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.eMailTileIdObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.eMailTileIdObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.eMailTileIdObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // break;\r\n\r\n // //case 'enotetileid':\r\n // // objectStores.eNoteTileObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.eNoteTileObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.eNoteTile.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.eNoteTile.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.enoteTileIdObjectStore?.get(model.id);\r\n // // break;\r\n\r\n // //case 'enotetile':\r\n // // objectStores.eNoteTileIdObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.eNoteTileIdObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.eNoteTileIdObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.eNoteTileIdObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.enoteTileObjectStore?.get(model.id);\r\n // // break;\r\n\r\n // //case 'errorlog':\r\n // // objectStores.errorLogObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.errorLogObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.errorLogObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.errorLogObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.errorLogObjectStore?.get(model.id);\r\n // // break;\r\n\r\n // case 'kvphoto':\r\n // //objectStores.kvPhotodObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.kvPhotodObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.kvPhotodObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.kvPhotodObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // // result = await this.kvPhotodObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'loginsuccess':\r\n // //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccessObjectStore)) {\r\n // // this.stores({\r\n // // loginSuccessObjectStore: 'id, bneStr, key',\r\n // // });\r\n\r\n // //}\r\n // debugger;\r\n // this.updateObjectStoreData(model).subscribe(\r\n // val => { console.log(val) }, //next callback\r\n // error => { console.log(\"error\") }, //error callback\r\n // () => { console.log(\"Completed\") } //complete callback\r\n // );\r\n // debugger;\r\n // //else {\r\n // // this.loginSuccessObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await this.loginSuccessObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.loginSuccessObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.loginSuccessObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // //}\r\n // // result = await this.loginSuccessObjectStore?.get(model.id);\r\n // break;\r\n \r\n // //case 'myblock':\r\n // // objectStores.myBlockObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myBlockObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myBlockObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myBlockObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myBlockObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // //case 'mychatid':\r\n // // objectStores.myChatIdObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myChatIdObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myChatIdObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myChatIdObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myChatIdObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // //case 'mychat':\r\n // // objectStores.myChatObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myChatObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myChatObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myChatObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myChatObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // //case 'myemailid':\r\n // // objectStores.myEmailIdObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myEmailIdObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myWmailIdObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myEmailIdObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myEmailIdObjectStore?.get(model.key);\r\n // // //.where(model.id).between(1, this.myEmailTable.count(), true, true)\r\n // // //.toArray();\r\n // // break;\r\n\r\n // //case 'myemail':\r\n // // objectStores.myEmailObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myEmailObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myEmailObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myEmailObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // //result = await this.myEmailObjectStore?.get(model.id);\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // break;\r\n\r\n // //case 'myfriend':\r\n // // objectStores.myFriendObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myFriendObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myFriendObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myFriendObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myFriendObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // //case 'mylike':\r\n // // objectStores.myLikeObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myLikeObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myLikeObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myLikeObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myLikeObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // //case 'mymemberactivity':\r\n // // objectStores.myMemberActivityObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myMemberActivityObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myMemberActivityObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myMemberActivityObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myMemberActivityObjectStore?.get(model.id);\r\n // // break;\r\n\r\n // //case 'mymemberlockingactivity':\r\n // // objectStores.myMemberLockingActivityObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myMemberLockingActivityObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myMemberLockingActivityObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myMemberLockingActivityObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myMemberLockingActivityObjectStore?.get(model.id);\r\n // // break;\r\n\r\n // //case 'mymemberstartrackwinkactivity':\r\n // // objectStores.myMemberStarTrackWinkActivityObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myMemberStarTrackWinkActivityObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myMemberStarTrackWinkActivityObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myMemberStarTrackWinkActivityObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myMemberStarTrackWinkActivityObjectStore?.get(model.id);\r\n // // break;\r\n\r\n // //case 'mynotificationId':\r\n // // objectStores.myNotificationIdObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myNotificationIdObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db..myNotificationIdObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db..myNotificationIdObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myNotificationIdObjectStore?.get(model.id);\r\n // // break;\r\n\r\n // //case 'mynotification':\r\n // // objectStores.myNotificationObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myNotificationObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db..myNotificationObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db..myNotificationObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // //result = await this.myNotificationObjectStore?.get(model.id);\r\n // // break;\r\n\r\n // //case 'mystar':\r\n // // objectStores.myStarObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myStarObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myStarObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myStarObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myStarObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // //case 'mytrack':\r\n // // objectStores.myTrackObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myTrackObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myTrackObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myTrackObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myTrackObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // //case 'myunlock':\r\n // // objectStores.myUnlockObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myUnlockObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myUnlockObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myUnlockObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myUnlockObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // //case 'mywink':\r\n // // objectStores.myWinkObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await objectStores.myWinkObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myWinkObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.myWinkObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // // // result = await this.myWinkObjectStore?.get(model.key);\r\n // // break;\r\n\r\n // case 'photo':\r\n // //objectStores.photoObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.photoObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.photoObjectStore.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.photoObjectStore.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // // result = await this.photoObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'photobn':\r\n // //objectStores.photoBnObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.photoBnObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.photoBnObjectStore.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.photoBnObjectStore.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // break;\r\n\r\n // case 'photobnid':\r\n // //objectStores.photoBnIdObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.photoBnIdObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.photoBnIdObjectStore.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.photoBnIdObjectStore.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // break;\r\n\r\n // case 'preference':\r\n // //objectStores.preferenceObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.preferenceObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.preferenceObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.preferenceObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // // result = await this.preferenceObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'profileInfo':\r\n // //objectStores.profileInfoObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.profileInfoObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.profileInfoObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.profileInfoObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // // result = await this.profileInfoObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'profilePics':\r\n // //objectStores.profilePicsObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // debugger;\r\n // this._db.profilePicsDObjectStore?.get(model.id).then((data : any) => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch((error : any) => {\r\n // this.message = date.getTime() + ' dbDexieService.db.profilePicsDObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // console.log(this.message);\r\n // // debugger;\r\n // });\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.profilePicsDObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // // result = await this.profilePicsObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'profileTile':\r\n // //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTileObjectStore)) {\r\n // // this.stores({\r\n // // profileTileObjectStore: 'id, bneStr, key',\r\n // // });\r\n\r\n // //}\r\n // debugger;\r\n // this.updateObjectStoreData(model.id).subscribe(\r\n // val => { console.log(val) }, //next callback\r\n // error => { console.log(\"error\") }, //error callback\r\n // () => { console.log(\"Completed\") } //complete callback\r\n // );\r\n\r\n // debugger;\r\n // // this.profileTileObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await this.profileTileObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.profileTileObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.profileTileObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n\r\n // break;\r\n\r\n // case 'situserid':\r\n // debugger;\r\n // //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUserIdObjectStore)) {\r\n\r\n // // this.stores({\r\n // // sitUserIdObjectStore: 'id, bneStr, key',\r\n // // });\r\n // //}\r\n // debugger;\r\n // result = this.updateObjectStoreData(model).subscribe(\r\n // val => { console.log(val) }, //next callback\r\n // error => { console.log(\"error\") }, //error callback\r\n // () => { console.log(\"Completed\") } //complete callback\r\n // );\r\n // debugger;\r\n // //this.profileTileObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await this.profileTileObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.profileTileObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.profileTileObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // //}\r\n // //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUserIdObjectStore)) {\r\n // // this.sitUserIdObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await this.sitUserIdObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.sitUserIdObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.sitUserIdObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // });\r\n // //}\r\n // // result = await this.sitUserIdObjectStore?.get(model.id);\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // break;\r\n\r\n // case 'situser':\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this._db.sitUserObjectStore)) {\r\n // debugger;\r\n // result = this.updateObjectStoreData(model).subscribe(\r\n // val => { console.log(val) }, //next callback\r\n // error => { console.log(\"error\") }, //error callback\r\n // () => { console.log(\"Completed\") } //complete callback\r\n // );\r\n // debugger;\r\n // //this.sitUserObjectStore?.count().then(async (c : any) => {\r\n // // // debugger;\r\n // // if (c > 0) {\r\n // // // debugger;\r\n // // await this.sitUserObjectStore?.get(model.id).then((data : any) => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.sitUserObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // // // debugger;\r\n // // });\r\n // // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // // //.toArray();\r\n // // }\r\n // //}).catch((error : any) => {\r\n // // this.message = date.getTime() + ' dbDexieService.db.sitUserObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // // // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n // // console.log(this.message);\r\n // //});\r\n // }\r\n // // result = await this.sitUserObjectStore?.get(model.id);\r\n // //.where(model.id).between(1, this.emailTileTable.count(), true, true)\r\n // //.toArray();\r\n // break;\r\n\r\n // case 'yourblock':\r\n // result = this._db.yourBlockObjectStore?.get(model.key);\r\n // break;\r\n\r\n // case 'yourfriend':\r\n // result = this._db.yourFriendObjectStore?.get(model.key);\r\n // break;\r\n // case 'yourlike':\r\n // result = this._db.yourLikeObjectStore?.get(model.key);\r\n // break;\r\n\r\n // case 'yourmemberactivity':\r\n // result = this._db.yourMemberActivityObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'yourmemberlockingactivity':\r\n // result = this._db.yourMemberLockingActivityObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'yourmemberstartrackwinkactivity':\r\n // result = this._db.yourMemberStarTrackWinkActivityObjectStore?.get(model.id);\r\n // break;\r\n\r\n // case 'yourstar':\r\n // result = this._db.yourStarObjectStore?.get(model.key);\r\n // break;\r\n\r\n // case 'yourtrack':\r\n // result = this._db.yourTrackObjectStore?.get(model.key);\r\n // break;\r\n\r\n // case 'yourunlock':\r\n // result = this._db.yourUnlockObjectStore?.get(model.key);\r\n // break;\r\n\r\n // case 'yourwink':\r\n // result = this._db.yourWinkObjectStore?.get(model.key);\r\n // break;\r\n //}\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // resolve(result);\r\n //}\r\n //else {\r\n // reject('an error occured while getting data to table : ' + model.entityName)\r\n //}\r\n\r\n // subscriber.next(result);\r\n\r\n\r\n // -----------------------------------------------------\r\n //setupDictionaries (version ?: number) : any {\r\n // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(version) || version < 0) {\r\n // version = 1;\r\n\r\n // }\r\n // // TODO: add logic for deleting the old stores:\r\n // // --------------------------------------------\r\n // //if (this.oldVersion > version) {\r\n // // this.message = 'dexie.db oldVersion= ' + this.oldVersion + 'cannot be >= version= ' + version;\r\n // // console.log(this.message);\r\n // // // this.resetDatabase();\r\n // // return this.message;\r\n // //}\r\n // //this.version(version).stores({\r\n // // // todoLists: '++id',\r\n // // // todoItems: '++id, todoListId',\r\n // // buddyObjectStore: 'id, bneStr, key',\r\n // // chatHistoryObjectStore: 'id, bneStr, key',\r\n // // chatHistoryIdObjectStore: 'id, bneStr, key',\r\n\r\n // // emailTileObjectStore: 'id, bneStr, key',\r\n // // emailTileIdObjectStore: 'id, bneStr, key',\r\n\r\n // // enoteTileObjectStore: 'id, bneStr, key',\r\n // // enoteTileIdObjectStore: 'id, bneStr, key',\r\n\r\n // // errorLogObjectStore: 'id, bneStr, key',\r\n // // kvPhotoObjectStore: 'id, bneStr, key',\r\n // // loginSuccessObjectStore: 'id, bneStr, key',\r\n\r\n // // myBlockObjectStore: 'id, bneStr, key',\r\n // // myChatObjectStore: 'id, bneStr, key',\r\n // // myChatIdObjectStore: 'id, bneStr, key',\r\n // // myEmailObjectStore: 'id, bneStr, key',\r\n // // myEmailIdObjectStore: 'id, bneStr, key',\r\n // // myFriendObjectStore: 'id, bneStr, key',\r\n // // myLikeObjectStore: 'id, bneStr, key',\r\n // // myMemberActivityObjectStore: 'id, bneStr, key',\r\n // // myMemberLockingActivityObjectStore: 'id, bneStr, key',\r\n // // myMemberStarTrackWinkActivityObjectStore: 'id, bneStr, key',\r\n // // myStarObjectStore: 'id, bneStr, key',\r\n // // myTrackObjectStore: 'id, bneStr, key',\r\n // // myWinkObjectStore: 'id, bneStr, key',\r\n // // myUnlockObjectStore: 'id, bneStr, key',\r\n\r\n // // myNotificationObjectStore: 'id, bneStr, key',\r\n // // myNotificationIdObjectStore: 'id, bneStr, key',\r\n\r\n // // // photoObjectStore: 'id, bneStr, key',\r\n // // photoBnIdObjectStore: 'id, bneStr, key',\r\n // // // photoBnObjectStore: 'id, bneStr, key',\r\n\r\n // // preferenceObjectStore: 'id, bneStr, key',\r\n // // profileTileObjectStore: 'id, bneStr, key',\r\n // // profileInfoObjectStore: 'id, bneStr, key',\r\n // // // profilePicsObjectStore: 'id, bneStr, key',\r\n\r\n // // sitUserObjectStore: 'id, bneStr, key',\r\n // // sitUserIdObjectStore: 'id, bneStr, key',\r\n\r\n // // yourBlockObjectStore: 'id, bneStr, key',\r\n // // yourFriendObjectStore: 'id, bneStr, key',\r\n // // yourLikeObjectStore: 'id, bneStr, key',\r\n // // yourMemberActivityObjectStore: 'id, bneStr, key',\r\n // // yourMemberLockingActivityObjectStore: 'id, bneStr, key',\r\n // // yourMemberStarTrackWinkActivityObjectStore: 'id, bneStr, key',\r\n // // yourStarObjectStore: 'id, bneStr, key',\r\n // // yourTrackObjectStore: 'id, bneStr, key',\r\n // // yourWinkObjectStore: 'id, bneStr, key',\r\n // // yourUnlockObjectStore: 'id, bneStr, key',\r\n // //});\r\n // //return this.version(version).stores;\r\n //}\r\n // ---------------------------------------------------------------\r\n //async resetDatabase () : Promise {\r\n // await this.transaction('rw', 'todoItems', 'todoLists', () => {\r\n // // this.todoItems.clear();\r\n // // this.todoLists.clear();\r\n // // this.populate();\r\n // this.buddyObjectStore.clear();\r\n // this.chatHistoryObjectStore.clear();\r\n // this.chatHistoryIdObjectStore.clear();\r\n\r\n // this.emailTileObjectStore.clear();\r\n // this.emailTileIdObjectStore.clear();\r\n\r\n // this.enoteTileObjectStore.clear();\r\n // this.enoteTileIdObjectStore.clear();\r\n\r\n // this.errorLogObjectStore.clear();\r\n // this.kvPhotoObjectStore.clear();\r\n // this.loginSuccessObjectStore.clear();\r\n\r\n // this.myBlockObjectStore.clear();\r\n // this.myChatObjectStore.clear();\r\n // this.myChatIdObjectStore.clear();\r\n // this.myEmailObjectStore.clear();\r\n // this.myEmailIdObjectStore.clear();\r\n // this.myFriendObjectStore.clear();\r\n // this.myLikeObjectStore.clear();\r\n // this.myMemberActivityObjectStore.clear();\r\n // this.myMemberLockingActivityObjectStore.clear();\r\n // this.myMemberStarTrackWinkActivityObjectStore.clear();\r\n // this.myStarObjectStore.clear();\r\n // this.myTrackObjectStore.clear();\r\n // this.myWinkObjectStore.clear();\r\n // this.myUnlockObjectStore.clear();\r\n\r\n // this.myNotificationObjectStore.clear();\r\n // this.myNotificationIdObjectStore.clear();\r\n\r\n // // this.photoObjectStore.clear();\r\n // this.photoBnIdObjectStore.clear();\r\n // //this.photoBnObjectStore.clear();\r\n\r\n // this.preferenceObjectStore.clear();\r\n // this.profileTileObjectStore.clear();\r\n // this.profileInfoObjectStore.clear();\r\n // // this.profilePicsObjectStore.clear();\r\n\r\n // this.sitUserObjectStore.clear();\r\n // this.sitUserIdObjectStore.clear();\r\n\r\n // this.yourBlockObjectStore.clear();\r\n // this.yourFriendObjectStore.clear();\r\n // this.yourLikeObjectStore.clear();\r\n // this.yourMemberActivityObjectStore.clear();\r\n // this.yourMemberLockingActivityObjectStore.clear();\r\n // this.yourMemberStarTrackWinkActivityObjectStore.clear();\r\n // this.yourStarObjectStore.clear();\r\n // this.yourTrackObjectStore.clear();\r\n // this.yourWinkObjectStore.clear();\r\n // this.yourUnlockObjectStore.clear();\r\n // });\r\n // return true;\r\n //}\r\n // ---------------------------------------------------------------\r\n // addStickyNote makes a sticky note object from the text passed\r\n // in and stores it in the database. Returns a promise that\r\n // resolves on success.\r\n // public addModelObservable (model : any) : Observable {\r\n // // debugger;\r\n // return new Observable((subscriber) => {\r\n // this.message = 'sitUser has been successfully added.';\r\n // let result : any = new Object;\r\n\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.bneStr)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.entityName)\r\n // && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model.key) || model.id > 0)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this)) {\r\n // debugger;\r\n // // let model.bneStr = JSON.stringify(model);\r\n\r\n // var lowerCasedEntityName = model.entityName.toLowerCase();\r\n // var objectStore : any;\r\n // this.getObjectStore(model.entityName).subscribe(store => {\r\n // objectStore = store;\r\n\r\n // debugger;\r\n // this.updateObjectStoreData(objectStore, model).subscribe(data => {\r\n // result = data;\r\n // debugger;\r\n // subscriber.next(result);\r\n // let timer = setTimeout(() => {\r\n\r\n // subscriber.complete();\r\n // clearTimeout(timer);\r\n // debugger;\r\n // }, 1000)\r\n // });\r\n // debugger;\r\n // });\r\n // // debugger;\r\n // if (this.isObjectStoreNameFoundInTables(model.entityName + 'ObjectStore')) {\r\n // // debugger;\r\n // console.log(new Date().getTime() + '(Timestamp) : found object store name is: ' + model.entityName + 'ObjectStore');\r\n\r\n // // debugger;\r\n // switch (lowerCasedEntityName) {\r\n\r\n // // TODO:\r\n // // -----\r\n // // transofrm all add() method to the following according to the respective dictionary.\r\n // // For example:\r\n // // if ((await this.sitUserObjectStore.where({ id: model.id }).count()) === 0) {\r\n // // result = await this.sitUser.add(model.id, model.bneStr, model.key);\r\n // // }\r\n // // -----------------------------------------\r\n // //const todoListId = await db.todoLists.add({\r\n // // title: 'To Do Today',\r\n // //});\r\n // // -----------------------------------------\r\n\r\n // case 'chathistory':\r\n \r\n // debugger;\r\n // this.updateObjectStoreData(db.chatHistoryObjectStore, model).subscribe(data => {\r\n // result = data;\r\n // debugger;\r\n // });\r\n // debugger;\r\n // //this.chatHistoryObjectStore.get(model.id).then(data => {\r\n // // result = data;\r\n\r\n // // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // // debugger;\r\n // // this.chatHistoryObjectStore?.add({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // // debugger;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // // else {\r\n // // // debugger;\r\n // // this.chatHistoryObjectStore?.put({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // // debugger;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // //})\r\n \r\n\r\n // break;\r\n // case 'chathistoryid':\r\n // debugger;\r\n // this.updateObjectStoreData(this.chatHistoryIdObjectStore, model).subscribe(data => {\r\n // result = data;\r\n // debugger;\r\n // });\r\n // debugger;\r\n \r\n // // debugger;\r\n // //this.chatHistoryIdObjectStore.get(model.id).then(data => {\r\n // // result = data;\r\n\r\n // // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // // debugger;\r\n // // this.chatHistoryIdObjectStore?.add({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // // else {\r\n // // // debugger;\r\n // // this.chatHistoryIdObjectStore?.put({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // });\r\n // // }\r\n // //})\r\n \r\n\r\n // break;\r\n\r\n // case 'emailtile':\r\n // // debugger;\r\n // this.emailTileObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.emailTileObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.emailTileObjectStore?.add(\r\n // model\r\n // ).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.emailTileObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.emailTileObjectStore?.put(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n\r\n // break;\r\n // case 'emailtileid':\r\n // // debugger;\r\n // this.emailTileIdObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.emailTileIdObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.emailTileIdObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.emailTileIdObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.emailTileIdObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // /*}*/\r\n\r\n // break;\r\n\r\n // case 'enotetile':\r\n \r\n // // debugger;\r\n // this.enotTileObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.enotTileObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.enotTileObjectStore?.add({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.enotTileObjectStore?.put({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.enotTileObjectStore?.put({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'enotetileId':\r\n \r\n // // debugger;\r\n // this.enotTileIdObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.enotTileIdObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.enotTileIdObjectStore?.add({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.enotTileIdObjectStore?.put({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.enotTileIdObjectStore?.put({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n // case 'errorlog': \r\n // // debugger;\r\n // this.errorLogObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.errorLogObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.errorLogObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.errorLogObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.errorLogObjectStore?.put(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'kvphoto':\r\n \r\n // // debugger;\r\n // this.kvPhotoObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.kvPhotoObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.kvPhotoObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.kvPhotoObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.kvPhotoObjectStore?.put(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n // /*}*/\r\n // break;\r\n // case 'loginsuccess':\r\n // // debugger;\r\n // debugger;\r\n // this.updateObjectStoreData(this.loginSuccessObjectStore, model).subscribe(data => {\r\n // result = data;\r\n // debugger;\r\n // });\r\n // debugger;\r\n \r\n // // debugger;\r\n // //this.loginSuccessObjectStore.count().then(c => {\r\n // // if (c > 0) {\r\n // // this.loginSuccessObjectStore.get(model.id).then(data => {\r\n // // result = data;\r\n\r\n // // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // // debugger;\r\n // // this.loginSuccessObjectStore.add({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // // else {\r\n // // // debugger;\r\n // // this.loginSuccessObjectStore.put({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // // })\r\n // // }\r\n // // else {\r\n // // // debugger;\r\n // // this.loginSuccessObjectStore.put({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // // debugger;\r\n // // result = data;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // //})\r\n \r\n // break;\r\n // case 'myblock':\r\n \r\n // // debugger;\r\n // this.myBlockObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myBlockObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myBlockObjectStore.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myBlockObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myBlockObjectStore.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mychat':\r\n \r\n // // debugger;\r\n // this.myChatObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myChatObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myChatObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mychatid':\r\n \r\n // // debugger;\r\n // this.myChatIdObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myChatIdObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myChatIdObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myChatIdObjectStore?.put(model.then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n\r\n // this.myChatIdObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'myemail':\r\n \r\n // // debugger;\r\n // this.myEmailObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myEmailObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myEmailObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'myemailid':\r\n \r\n // // debugger;\r\n // this.myEmailIdObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n // // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myEmailIdObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myEmailIdObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'myfriend':\r\n \r\n // // debugger;\r\n // this.myFriendObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myFriendObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myFriendObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myFriendObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myFriendObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mylike':\r\n \r\n // // debugger;\r\n // this.myLikeObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myLikeObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myLikeObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myLikeObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myLikeObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mymemberactivity':\r\n \r\n // // debugger;\r\n // this.myMemberActivityObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myMemberActivityObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myMemberActivityObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n // case 'mymemberlockingactivity':\r\n // (this.myMemberLockingActivityObjectStore)) {*/\r\n // // debugger;\r\n // this.myMemberLockingActivityObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myMemberLockingActivityObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myMemberLockingActivityObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myMemberLockingActivityObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myMemberLockingActivityObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mymemberstartrackwinkactivity':\r\n // (this.myMemberStarTrackWinkActivityObjectStore)) {*/\r\n // // debugger;\r\n // this.myMemberStarTrackWinkActivityObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myMemberStarTrackWinkActivityObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myMemberStarTrackWinkActivityObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myMemberStarTrackWinkActivityObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myMemberStarTrackWinkActivityObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mynotification':\r\n // // debugger;\r\n \r\n // // debugger;\r\n // this.myNotificationObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n // // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myNotificationObjectStore.add(model).then(data => {\r\n // result = data;\r\n // // debugger;\r\n // });\r\n // // else {\r\n // // debugger;\r\n // this.myNotificationObjectStore.put(model).then(data => {\r\n // result = data;\r\n // // debugger;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mynotificationid':\r\n \r\n // // debugger;\r\n // this.myNotificationIdObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myNotificationIdObjectStore.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myNotificationIdObjectStore.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mystar':\r\n \r\n // // debugger;\r\n // this.myStarObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myStarObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myStarObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myStarObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myStarObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mytrack':\r\n \r\n // // debugger;\r\n // this.myTrackObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myTrackObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myTrackObjectStore?.add(model).then(data => {\r\n // result = data\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myTrackObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myTrackObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'myunlock':\r\n \r\n // // debugger;\r\n // this.myUnlockObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myUnlockObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myUnlockObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myUnlockObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myUnlockObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'mywink':\r\n \r\n // // debugger;\r\n // this.myWinkObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myWinkObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myWinkObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myWinkObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myWinkObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'photo':\r\n \r\n // // debugger;\r\n // this.photoObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.photoObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.photoObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'photobn':\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoBnbjectStore)) {\r\n // // debugger;\r\n // this.photoBnObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.photoBnObjectStore?.add({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // result = data;\r\n // // debugger;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.photoBnObjectStore?.put({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // result = data;\r\n // // debugger;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n // break;\r\n\r\n // case 'photobnid':\r\n \r\n // // debugger;\r\n // this.photoBnIdObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.photoBnIdObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // // debugger;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.photoBnIdObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // // debugger;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'preference': \r\n // // debugger;\r\n // this.preferenceObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.preferenceObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.preferenceObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n // break;\r\n\r\n // case 'profileinfo':\r\n \r\n // // debugger;\r\n // this?.profileInfoObjectStore?.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.profileInfoObjectStore.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.profileInfoObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'profilepics':\r\n \r\n // // debugger;\r\n // this.profilePicsObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.profilePicsObjectStore?.add({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.profilePicsObjectStore?.put({\r\n // id: model.id,\r\n // bneStr: model.bneStr,\r\n // key: model.key\r\n // }).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'profiletile':\r\n \r\n // // debugger;\r\n // this.profileTileObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.profileTileObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.profileTileObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // }).catch('ConstraintError', e => {\r\n // // Failed with ConstraintError\r\n // console.error(\"Constraint error: \" + e.message);\r\n // }).catch(Error, e => {\r\n // // Any other error derived from standard Error\r\n // console.error(\"Error: \" + e.message);\r\n // }).catch(e => {\r\n // // Other error such as a string was thrown\r\n // console.error(e);\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'situser':\r\n \r\n // // debugger;\r\n // debugger;\r\n // this.updateObjectStoreData(this.sitUserObjectStore, model).subscribe(data => {\r\n // result = data;\r\n // });\r\n // debugger;\r\n // //this.sitUserObjectStore.get(model.id).then(data => {\r\n // // result = data;\r\n\r\n // // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // // debugger;\r\n // // this.sitUserObjectStore?.add({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // // else {\r\n // // // debugger;\r\n // // this.sitUserObjectStore?.put({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // //})\r\n \r\n // break;\r\n\r\n // case 'situserid': \r\n // // debugger;\r\n // debugger;\r\n // this.updateObjectStoreData(this.sitUserIdObjectStore, model).subscribe(data => {\r\n // result = data;\r\n // });\r\n // debugger;\r\n // //this.sitUserIdObjectStore.get(model.id).then(data => {\r\n // // result = data;\r\n\r\n // // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // // debugger;\r\n // // this.sitUserIdObjectStore?.add({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // // else {\r\n // // // debugger;\r\n // // this.sitUserIdObjectStore?.put({\r\n // // id: model.id,\r\n // // bneStr: model.bneStr,\r\n // // key: model.key\r\n // // }).then(data => {\r\n // // result = data;\r\n // // }).catch('ConstraintError', e => {\r\n // // // Failed with ConstraintError\r\n // // console.error(\"Constraint error: \" + e.message);\r\n // // }).catch(Error, e => {\r\n // // // Any other error derived from standard Error\r\n // // console.error(\"Error: \" + e.message);\r\n // // }).catch(e => {\r\n // // // Other error such as a string was thrown\r\n // // console.error(e);\r\n // // });\r\n // // }\r\n // //})\r\n \r\n // break;\r\n\r\n // case 'yourblock':\r\n \r\n // // debugger;\r\n // this.yourBlockObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.yourBlockObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.yourBlockObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourBlockObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourBlockObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'yourfriend':\r\n \r\n // // debugger;\r\n // this.myFriendObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myFriendObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myFriendObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myFriendObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myFriendObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'yourlike':\r\n \r\n // // debugger;\r\n // this.myLikeObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.myLikeObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.myLikeObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myLikeObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.myLikeObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // }) \r\n // break;\r\n\r\n // case 'yourmemberactivity':\r\n \r\n // // debugger;\r\n // this.yourMemberActivityObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.yourMemberActivityObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.yourMemberActivityObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourMemberActivityObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourMemberActivityObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'yourmemberlockingactivity':\r\n \r\n // // debugger;\r\n // this.yourMemberLockingActivityObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.yourMemberLockingActivityObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.yourMemberLockingActivityObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourMemberLockingActivityObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourMemberLockingActivityObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'yourmemberstartrackwinkactivity':\r\n \r\n // // debugger;\r\n // this.yourMemberStarTrackWinkActivityObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.yourMemberStarTrackWinkActivityObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.yourMemberStarTrackWinkActivityObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourMemberStarTrackWinkActivityObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourMemberStarTrackWinkActivityObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'yourstar':\r\n \r\n // // debugger;\r\n // this.yourStarObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.yourStarObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.yourStarObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourStarObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourStarObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'yourtrack':\r\n \r\n // // debugger;\r\n // this.yourTrackObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.yourTrackObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.yourTrackObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourTrackObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourTrackObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'yourunlock':\r\n \r\n // // debugger;\r\n // this.yourUnlockObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.yourUnlockObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.yourUnlockObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourUnlockObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourUnlockObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n\r\n // case 'yourwink':\r\n \r\n // // debugger;\r\n // this.yourWinkObjectStore.count().then(c => {\r\n // if (c > 0) {\r\n // this.yourWinkObjectStore.get(model.id).then(data => {\r\n // result = data;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // // debugger;\r\n // this.yourWinkObjectStore?.add(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourWinkObjectStore?.put(model).then(data => {\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.yourWinkObjectStore?.add(model).then(data => {\r\n // // debugger;\r\n // result = data;\r\n // });\r\n // }\r\n // })\r\n \r\n // break;\r\n // }\r\n // // debugger;\r\n // subscriber.next(result);\r\n // subscriber.complete();\r\n // }\r\n // }\r\n // })\r\n //}\r\n // -------------------------------------------------------\r\n \r\n // -------------------------------------------------------------------\r\n // NOte: this method assumes that the particular ObjectStore exists.\r\n // -------------------------------------------------------------------\r\n // public countObjectStoreItems (entityName : string) : Observable | any {\r\n // // debugger;\r\n \r\n // return new Observable((subscriber) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)) {\r\n // debugger;\r\n // var count = this.getTableByEntityName(entityName).count();\r\n // debugger;\r\n // subscriber.next(count);\r\n\r\n // switch (entityName.toLowerCase()) {\r\n // case 'buddy':\r\n // resolve(objectStores.buddyObjectStore?.count());\r\n // this._db.tables.buddyObjectStore stores. .where(index).equalsIgnoreCase(entityName).count()\r\n // break;\r\n\r\n // case 'chathistory':\r\n // resolve(objectStores.chatHistoryObjectStore?.count());\r\n // break;\r\n\r\n // case 'chathistoryid':\r\n // resolve(objectStores.chatHistoryIdObjectStore?.count());\r\n // break;\r\n\r\n // case 'emailtileid':\r\n // resolve(objectStores.emailTileIdObjectStore?.count());\r\n // break;\r\n\r\n // case 'emailtile':\r\n // resolve(objectStores.emailTileObjectStore?.count());\r\n // break;\r\n\r\n // case 'enotetileid':\r\n // resolve(objectStores.enoteTileIdObjectStore?.count());\r\n // break;\r\n\r\n // case 'enotetile':\r\n // resolve(objectStores.enoteTileObjectStore?.count());\r\n // break;\r\n\r\n // case 'errorlog':\r\n // resolve(objectStores.errorLogObjectStore?.count());\r\n // break;\r\n\r\n // case 'kvphoto':\r\n // resolve(objectStores.kvPhotoObjectStore?.count());\r\n // break;\r\n\r\n // case 'loginsuccess':\r\n // resolve(objectStores.loginSuccessObjectStore?.count());\r\n // debugger;\r\n // break;\r\n\r\n // case 'myblock':\r\n // resolve(objectStores.myBlockObjectStore?.count());\r\n // break;\r\n\r\n // case 'mychatid':\r\n // resolve(objectStores.myChatIdObjectStore?.count());\r\n // break;\r\n\r\n // case 'mychat':\r\n // resolve(objectStores.myChatObjectStore?.count());\r\n // break;\r\n\r\n // case 'myemailid':\r\n // resolve(objectStores.myEmailIdObjectStore?.count());\r\n // break;\r\n\r\n // case 'myemail':\r\n // resolve(objectStores.myEmailObjectStore?.count());\r\n // break;\r\n // case 'myfriend':\r\n // resolve(objectStores.myFriendObjectStore?.count());\r\n // break;\r\n // case 'mylike':\r\n // resolve(objectStores.myLikeObjectStore?.count());\r\n // break;\r\n\r\n // case 'mymemberactivity':\r\n // resolve(objectStores.myMemberActivityObjectStore?.count());\r\n // break;\r\n\r\n // case 'mymemberlockingactivity':\r\n // resolve(objectStores.myMemberLockingActivityObjectStore?.count());\r\n // break;\r\n\r\n // case 'mymemberstartrackwinkactivity':\r\n // resolve(objectStores.myMemberStarTrackWinkActivityObjectStore?.count());\r\n // break;\r\n\r\n // case 'mynotificationid':\r\n // resolve(objectStores.myNotificationIdObjectStore?.count());\r\n // break;\r\n\r\n // case 'mynotification':\r\n // resolve(objectStores.myNotificationObjectStore?.count());\r\n // break;\r\n\r\n // case 'mytrack':\r\n // resolve(objectStores.myTrackObjectStore?.count());\r\n // break;\r\n\r\n // case 'myunlock':\r\n // resolve(objectStores.myUnlockObjectStore?.count());\r\n // break;\r\n\r\n // case 'mywink':\r\n // resolve(objectStores.myWinkObjectStore?.count());\r\n // break;\r\n\r\n // case 'photo':\r\n // resolve(objectStores.photoObjectStore?.count());\r\n // break;\r\n\r\n // case 'photobnid':\r\n // resolve(objectStores.photoBnIdObjectStore?.count());\r\n // break;\r\n\r\n // //case 'photobn':\r\n // // resolve(this.photoBnObjectStore?.count());\r\n // // break;\r\n\r\n // case 'preference':\r\n // resolve(objectStores.preferenceObjectStore?.count());\r\n // break;\r\n\r\n // case 'profileinfo':\r\n // resolve(objectStores.profileInfoObjectStore?.count());\r\n // break;\r\n\r\n // //case 'profilepics':\r\n // // resolve(this.profilePicsObjectStore?.count());\r\n // // break;\r\n\r\n // case 'profiletile':\r\n // resolve(objectStores.profileTileObjectStore?.count());\r\n // debugger;\r\n // break;\r\n\r\n // case 'situserid':\r\n // resolve(objectStores.sitUserIdObjectStore?.count());\r\n // debugger;\r\n // break;\r\n\r\n // case 'situser':\r\n // resolve(objectStores.sitUserObjectStore?.count());\r\n // debugger;\r\n // break;\r\n\r\n // case 'yourblock':\r\n // resolve(objectStores.yourBlockObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourfriend':\r\n // resolve(objectStores.yourFriendObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourlike':\r\n // resolve(objectStores.yourLikeObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourmemberactivity':\r\n // resolve(objectStores.yourMemberActivityObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourmemberlockingactivity':\r\n // resolve(objectStores.yourMemberLockingActivityObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourmemberstartrackwinkactivity':\r\n // resolve(objectStores.yourMemberStarTrackWinkActivityObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourstar':\r\n // resolve(objectStores.yourStarObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourtrack':\r\n // resolve(objectStores.yourTrackObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourunlock':\r\n // resolve(objectStores.yourUnlockObjectStore?.count());\r\n // break;\r\n\r\n // case 'yourwink':\r\n // resolve(objectStores.yourWinkObjectStore?.count());\r\n // break;\r\n //}\r\n // } \r\n // })\r\n // }\r\n // -------------------------------------------------------------------\r\n // Note: this method will create a particular ObjectStore if it does not exists\r\n // -------------------------------------------------------------------\r\n //public createObjectStore (db: any, entityName : string) : Observable | any {\r\n // debugger; \r\n // return new Observable((subscriber) => {\r\n // this = db;\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)) {\r\n // if (!this.isObjectStoreNameFoundInTables(entityName)) {\r\n // debugger;\r\n // switch (entityName.toLowerCase()) {\r\n // case 'buddy':\r\n // db.stores({\r\n // buddyObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.buddyObjectStore);\r\n // break;\r\n // case 'chathistory':\r\n // db.stores({\r\n // chatHistoryObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.chatHistoryObjectStore);\r\n // break;\r\n // case 'chathistoryid':\r\n // db.stores({\r\n // chatHistoryIdObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.chatHistoryIdObjectStore);\r\n // break;\r\n\r\n // case 'emailtileid':\r\n // db.stores({\r\n // emailTileIdObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.emailTileIdObjectStore);\r\n // break;\r\n\r\n // case 'emailtile':\r\n // db.stores({\r\n // emailTileObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.emailTileObjectStore);\r\n // break;\r\n\r\n // case 'enotetileid':\r\n // db.stores({\r\n // enoteTileIdObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.enoteTileIdObjectStore);\r\n // break;\r\n\r\n // case 'enotetile':\r\n // db.stores({\r\n // enoteTileObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.enoteTileObjectStore);\r\n // break;\r\n\r\n // case 'errorlog':\r\n // db.stores({\r\n // errorLogObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.errorLogObjectStore);\r\n // break;\r\n\r\n // case 'kvphoto':\r\n // db.stores({\r\n // kvPhotoObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.kvPhotoObjectStore);\r\n // break;\r\n\r\n // case 'loginsuccess':\r\n // db.stores({\r\n // loginSuccessObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.loginSuccessObjectStore);\r\n // debugger;\r\n // break;\r\n\r\n // case 'myblock':\r\n // db.stores({\r\n // myBlockObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myBlockObjectStore);\r\n // break;\r\n\r\n // case 'mychatid':\r\n // db.stores({\r\n // myChatIdObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myChatIdObjectStore);\r\n // break;\r\n\r\n // case 'mychat':\r\n // db.stores({\r\n // myChatObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myChatObjectStore);\r\n // break;\r\n\r\n // case 'myemailid':\r\n // db.stores({\r\n // myEmailIdObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.buddyObjectStore);\r\n // break;\r\n\r\n // case 'myemail':\r\n // db.stores({\r\n // myEmailObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myEmailObjectStore);\r\n // break;\r\n // case 'myfriend':\r\n // db.stores({\r\n // myFriendObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myFriendObjectStore);\r\n // break;\r\n\r\n // case 'mylike':\r\n // db.stores({\r\n // myLikeObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myLikeObjectStore);\r\n // break;\r\n\r\n // case 'mymemberactivity':\r\n // db.stores({\r\n // myMemberActivityObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myMemberActivityOObjectStore);\r\n // break;\r\n\r\n // case 'mymemberlockingactivity':\r\n // db.stores({\r\n // myMemberLockingObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myMemberLockingObjectStore);\r\n // break;\r\n\r\n // case 'mymemberstartrackwinkactivity':\r\n // db.stores({\r\n // myMemberStarTrackWinkObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myMemberStarTrackWinkObjectStore);\r\n // break;\r\n\r\n // case 'mynotificationid':\r\n // db.stores({\r\n // myNotificationIdObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myNotificationIdObjectStore);\r\n // break;\r\n\r\n // case 'mynotification':\r\n // db.stores({\r\n // myNotificationObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myNotificationObjectStore);\r\n // break;\r\n\r\n // case 'mytrack':\r\n // db.stores({\r\n // myTrackObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myTrackObjectStore);\r\n // break;\r\n\r\n // case 'myunlock':\r\n // db.stores({\r\n // myUnlockObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myUnlockObjectStore);\r\n // break;\r\n\r\n // case 'mywink':\r\n // db.stores({\r\n // myWinkObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.myWinkObjectStore);\r\n // break;\r\n\r\n // case 'photo':\r\n // db.stores({\r\n // photoObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.photoObjectStore);\r\n // break;\r\n\r\n // case 'photobnid':\r\n // db.stores({\r\n // photoBnIdObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.photoBnIdObjectStore);\r\n // break;\r\n\r\n // case 'photobn':\r\n // db.stores({\r\n // photoBnObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.photoBnObjectStore);\r\n // break;\r\n\r\n // case 'preference':\r\n // db.stores({\r\n // preferenceObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.preferenceObjectStore);\r\n // break;\r\n\r\n // case 'profileinfo':\r\n // db.stores({\r\n // profileInfoObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.profileInfoObjectStore);\r\n // break;\r\n\r\n // case 'profilepics':\r\n // db.stores({\r\n // profilePicsObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.profilePicsObjectStore);\r\n // break;\r\n\r\n // case 'profiletile':\r\n // db.stores({\r\n // profileTileObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.profileTileObjectStore);\r\n // debugger;\r\n // break;\r\n\r\n // case 'situserid':\r\n // db.stores({\r\n // sitUserIdObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.sitUserIdObjectStore);\r\n // debugger;\r\n // break;\r\n\r\n // case 'situser':\r\n // db.stores({\r\n // sitUserObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.sitUserObjectStore);\r\n // debugger;\r\n // break;\r\n\r\n // case 'yourblock':\r\n // db.stores({\r\n // yourBlockObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourBlockObjectStore);\r\n // break;\r\n\r\n // case 'yourfriend':\r\n // db.stores({\r\n // yourFriendObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourFriendObjectStore);\r\n // break;\r\n\r\n // case 'yourlike':\r\n // db.stores({\r\n // yourLikeObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourLikeObjectStore);\r\n // break;\r\n\r\n // case 'yourmemberactivity':\r\n // db.stores({\r\n // yourMemberActivityObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourMemberActivityObjectStore);\r\n // break;\r\n\r\n\r\n // case 'yourmemberlockingactivity':\r\n // db.stores({\r\n // yourMemberLockingActivityObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourMemberLockingActivityObjectStore);\r\n // break;\r\n\r\n // case 'yourmemberstartrackwinkactivity':\r\n // db.stores({\r\n // yourMemberStarTrackWinkActivityObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourMemberStarTrackWinkActivityObjectStore);\r\n // break;\r\n\r\n // case 'yourstar':\r\n // db.stores({\r\n // yourStarObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourStarObjectStore);\r\n // break;\r\n\r\n // case 'yourtrack':\r\n // db.stores({\r\n // yourTrackObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourTrackObjectStore);\r\n // break;\r\n\r\n // case 'yourunlock':\r\n // db.stores({\r\n // yourUnlockObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourUnlockObjectStore);\r\n // break;\r\n\r\n // case 'yourwink':\r\n // db.stores({\r\n // yourWinkObjectStore: 'id, bneStr, key',\r\n // });\r\n // subscriber.next(this.yourWinkObjectStore);\r\n // break;\r\n // }\r\n // }\r\n // else {\r\n // debugger;\r\n // subscriber.next(this.getObjectStore(entityName));\r\n // }\r\n // }\r\n // else {\r\n // this.message = StringServiceStatic.stringBuilder(new Date().getTime() + ' : could not create ObjectStore for: ' + entityName);\r\n // console.log(this.message);\r\n // debugger;\r\n // }\r\n // });\r\n //}\r\n // -------------------------------------------------------------------\r\n //public getObjectStore (entityName : string) : any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)) {\r\n // debugger;\r\n // this.createObjectStore(this, entityName).then(store => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(store)) {\r\n // return store;\r\n // }\r\n // else return null;\r\n // })\r\n // }\r\n // else return null;\r\n //}\r\n // TODO investigate\r\n \r\n// ==========================================================\r\n // ---------------------------------------\r\n // getNotes retrieves all sticky notes from the IndexedDB\r\n // database, in forward or reverse chronological order. Returns\r\n // a promise that resolves on success, containing our array of\r\n //// sticky notes.\r\n //public getAll (model : any, reverseOrder : boolean) {\r\n\r\n //}\r\n\r\n\r\n// ==========================================================\r\n\r\n // objectStoreNames:\r\n // -----------------\r\n //public chatHistoryTable! : Table; // id is number in this case\r\n //public chatHistoryIdTable! : Table;\r\n //public emailTileTable! : Table;\r\n //public emailTileIdTable! : Table;\r\n //public enoteTilyTable! : Table;\r\n //public enoteTileIdTable! : Table;\r\n //public errorLogTable! : Table;\r\n //public kvPhotoTable! : Table;\r\n //public loginSuccessTable! : Table;\r\n //public myChatTable! : Table;\r\n //public myChatIdTable! : Table;\r\n //public myEmailTable! : Table;\r\n //public myEmailIdTable! : Table;\r\n //public myNotificationTable! : Table;\r\n //public myNotificationIdTable! : Table;\r\n\r\n //public sitUserTable! : Table;\r\n //public sitUserIdTable! : Table;\r\n\r\n //public emailTileTable! : Table;\r\n //public emailTileIdTable! : Table;\r\n\r\n// ----------------------------------------------------------\r\n// Begin of interfaces of Tables in the database/i.e. models\r\n// ----------------------------------------------------------\r\n//interface chatHistoryI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n\r\n//interface chatHistoryIdI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface emailTileI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface emailTileIdI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface enoteTileI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface enoteTileIdI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface errorLogI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface kvPhotoI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface loginSuccessI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface myChatI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface myChatIdI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface myEmailI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface myEmailIdI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface myNotificationI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface myNotificationIdI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface sitUserI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n//interface sitUserIdI {\r\n// id ?: number;\r\n// bneStr ?: BoxNonceEntity;\r\n// key ?: string;\r\n//}\r\n// ----------------------------------------------------------\r\n// Begin of interfaces of Tables in the database/i.e. models\r\n// ----------------------------------------------------------\r\n\r\n // ---------------------------------------------------------\r\n //public createDexieTableDictionaries () {\r\n // // debugger;\r\n // ConstantServiceStatic.storeNames.map(s => {\r\n // switch (s.toLowerCase()) {\r\n // //case 'chathistory':\r\n // // this.chatHistoryTable = this.table(s);\r\n // // this.objectStores.push(this.chatHistoryTable);\r\n // // this.objectStoresDictionary.setValue((s + 'Table'), this.chatHistoryTable);\r\n // // break;\r\n\r\n // //case 'chathistoryid':\r\n // // this.chatHistoryIdTable = this.table(s);\r\n // // this.objectStores.push(this.chatHistoryIdTable);\r\n // // this.objectStoresDictionary.setValue((s + 'Table'), this.chatHistoryIdTable);\r\n // // break;\r\n\r\n // case 'emailtileid':\r\n // // debugger;\r\n // this.emailTileIdTable = this.table(s);\r\n // this.allTables.set([s], this.emailTileIdTable)\r\n // this.objectStores.push(this.emailTileIdTable);\r\n // this.dexieTableObjectStore.setValue((s + 'Table'), this.emailTileIdTable);\r\n // break;\r\n\r\n // case 'emailtile':\r\n // // debugger;\r\n // this.emailTileTable = this.table(s);\r\n // this.objectStores.push(this.emailTileTable);\r\n // this.allTables.set([ s ], this.emailTileTable)\r\n // this.dexieTableObjectStore.setValue((s + 'Table'), this.emailTileTable);\r\n // break;\r\n\r\n\r\n\r\n // //case 'enotetile':\r\n // // this.enoteTilesI = this.table(s);\r\n // // this.objectStores.push(this.enoteTilesI);\r\n // // this.objectStoresDictionary.setValue((s + 'sI'), this.enoteTilesI);\r\n // // break;\r\n\r\n // //case 'enotetileid':\r\n // // this.enoteTileIdsI = this.table(s);\r\n // // this.objectStores.push(this.enoteTileIdsI);\r\n // // this.objectStoresDictionary.setValue((s + 'sI'), this.enoteTileIdsI);\r\n // // break;\r\n\r\n // //case 'errorlog':\r\n // // this.errorLogsI = this.table(s);\r\n // // this.objectStores.push(this.errorLogsI);\r\n // // this.objectStoresDictionary.setValue((s + 'I'), this.errorLogsI);\r\n // // break;\r\n\r\n // //case 'kvphoto':\r\n // // this.kvPhotosI = this.table(s);\r\n // // this.objectStores.push(this.kvPhotosI);\r\n // // this.objectStoresDictionary.setValue((s + 'I'), this.kvPhotosI);\r\n // // break;\r\n\r\n // case 'loginsuccess':\r\n // this.loginSuccessTable = this.table(s);\r\n // this.objectStores.push(this.loginSuccessTable);\r\n // this.allTables.set([ s ], this.emailTileTable)\r\n // this.dexieTableObjectStore.setValue((s + 'Table'), this.loginSuccessTable);\r\n // break;\r\n\r\n // //case 'mychat':\r\n // // this.myChatsI = this.table(s);\r\n // // this.objectStores.push(this.myChatsI);\r\n // // this.objectStoresDictionary.setValue((s + 'sI'), this.myChatsI);\r\n // // break;\r\n\r\n // //case 'mychatid':\r\n // // this.myChatIdsI = this.table(s);\r\n // // this.objectStores.push(this.myChatIdsI);\r\n // // this.objectStoresDictionary.setValue((s + 'sI'), this.myChatIdsI);\r\n // // break;\r\n\r\n\r\n // case 'myemailid':\r\n // this.myEmailIdTable = this.table(s);\r\n // this.objectStores.push(this.myEmailIdTable);\r\n // this.allTables.set([ s ], this.emailTileTable)\r\n // this.dexieTableObjectStore.setValue((s + 'Table'), this.myEmailIdTable);\r\n // break;\r\n\r\n // case 'myemail':\r\n // this.myEmailTable = this.table(s);\r\n // this.objectStores.push(this.myEmailTable);\r\n // this.allTables.set([ s ], this.emailTileTable)\r\n // this.dexieTableObjectStore.setValue((s + 'Table'), this.myEmailTable);\r\n // break;\r\n\r\n\r\n // //case 'mynotification':\r\n // // this.myNotificationsI = this.table(s);\r\n // // this.objectStores.push(this.myNotificationsI);\r\n // // this.objectStoresDictionary.setValue((s + 'sI'), this.myNotificationsI);\r\n // // break;\r\n\r\n // //case 'mynotificationid':\r\n // // this.myNotificationIdsI = this.table(s);\r\n // // this.objectStores.push(this.myNotificationIdsI);\r\n // // this.objectStoresDictionary.setValue((s + 'sI'), this.myNotificationIdsI);\r\n // // break;\r\n\r\n // case 'situserid':\r\n // this.sitUserIdTable = this.table(s);\r\n // this.objectStores.push(this.sitUserIdTable);\r\n // this.dexieTableObjectStore.setValue((s + 'Table'), this.sitUserIdTable);\r\n // break;\r\n\r\n // case 'situser':\r\n // this.sitUserTable = this.table(s);\r\n // this.objectStores.push(this.sitUserTable);\r\n // this.dexieTableObjectStore.setValue((s + 'Table'), this.sitUserTable);\r\n // break;\r\n // }\r\n // // debugger;\r\n // })\r\n //}\r\n // ---------------------------------------\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { BTree } from 'digitree';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { DbDexieToDictionaryServiceInterface } from '../../interfaces/serviceInterfaces/dbServicesInterfaces/dbDexieToDictionaryServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { DexieBne } from '../../models/boxNonce/dexieBne.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { RemoteDataModel } from '../../models/data/remoteDataModel.model';\r\nimport { MemberActivity } from '../../models/member/memberActivity.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { MessageBuilderServiceStatic } from '../staticServices/messgeBuilderServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { DbDexieService } from './dbDexieService.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DbDexieToDictionaryService implements OnDestroy {\r\n \r\n \r\n public date = new Date();\r\n public tables : any;\r\n public dictionarySubscription : any;\r\n\r\n public sitUserIdDictionaryFromDexieDbCounter = 0;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message : any = \"\";\r\n public modelArr : any;\r\n public rdm : RemoteDataModel = new RemoteDataModel()\r\n public sitUser : SitUser = new SitUser();\r\n constructor (public dbDexieService : DbDexieService,\r\n\r\n public dictionaryService : DictionaryService\r\n ) { \r\n \r\n this.tables = this.dbDexieService._db.tables;\r\n // debugger;\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.photoBnEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n debugger;\r\n if (result) {\r\n let pBn = result as any;\r\n if ((result as any).sitUserId > 0) {\r\n // let userPhotoIds = this.dictionaryService.userPhotoIdsDictionary.getValue( result.sitUserId ) as number[];\r\n // this.dictionaryService.updatePhotoBnDictionaryForPhotoBn( result, result.sitUserId );\r\n this.dictionaryService.updateDictionary(result, 'PhotoBn', pBn.photoBnId);\r\n }\r\n }\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n });\r\n // --------------------------------------------------------------\r\n EmitterSubjectService.indexDbSaveSuccessfulEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n\r\n debugger;\r\n console.log(this.date.getTime() + ': saved data for : ' + result);\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n // this.emitterDestroyed$.unsubscribe();\r\n\r\n });\r\n // --------------------------------------------------------------\r\n //EmitterSubjectService.backgroundProcessMethodDataForServiceEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((rdm : RemoteDataModel) => {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rdm.methodName)) {\r\n // switch (rdm.methodName) {\r\n // case 'populateProfileTileDictionaryFromIndexedDb': // TODO: Test\r\n // debugger;\r\n // this.dictionaryService.profileTileDictionary = rdm.data;\r\n // break;\r\n\r\n // case 'getBatchOfSitUserIdsFromServer': \r\n // break;\r\n // case 'getProfileTile': \r\n\r\n // // debugger;\r\n // break;\r\n\r\n // default:\r\n // break;\r\n // }\r\n // // this.ngAfterViewInit();\r\n // }\r\n // });\r\n // --------------------------------------------------------------\r\n // --------------------------------------------------------------\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n // debugger;\r\n }\r\n // ============================================================\r\n public createAllChatDictionariesFromDbDexie () : void {\r\n // this.createChatDictionaryFromDbDexie();\r\n // this.createChatIdDictionaryFromDbDexie();\r\n\r\n // this.createMyChatDictionaryFromDbDexie();\r\n // this.createMyChatIdDictionaryFromDbDexie();\r\n }\r\n // ---------------------------------------------------------------\r\n public createAllDictionariesFromDbDexie () : void {\r\n this.createAllChatDictionariesFromDbDexie();\r\n this.createAllEmailDictionariesFromDbDexie();\r\n this.createAllEnoteDictionariesFromDbDexie();\r\n this.createAllSitUserRelatedDictionariesFromDbDexie();\r\n this.createAllProfileRelatedDictionariesFromDbDexie();\r\n this.createAllMemberActivityDictionariesFromDbDexie();\r\n }\r\n // ============================================================\r\n public createAllEmailDictionariesFromDbDexie () : void {\r\n // this.createEmailTileIdDictionaryFromDbDexie();\r\n this.createEmailTileDictionaryFromDbDexie();\r\n this.createMyEmailIdDictionaryFromDbDexie();\r\n this.createMyEmailDictionaryFromDbDexie();\r\n }\r\n // ============================================================\r\n public createAllEnoteDictionariesFromDbDexie () : void {\r\n this.createEnoteTileDictionaryFromDbDexie();\r\n // this.createEnoteTileIdDictionaryFromDbDexie();\r\n this.createMyNotificationDictionaryFromDbDexie();\r\n this.createMyNotificationIdDictionaryFromDbDexie();\r\n }\r\n // ---------------------------------------------------------------\r\n public createLoginSuccessDictionaryFromIndexedDb () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.getDictionaryFromIndexedDb(\"LoginSuccess\", 1).subscribe(mActDict => {\r\n // this.dictionaryService.loginSuccessDictionary = mActDict;\r\n // });\r\n }\r\n // ---------------------------------------------------------------\r\n public createAllMemberActivityDictionariesFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let sitUserId = this.loginSuccess.signedInUserId;\r\n this.createMemberActivityDictionariesFromDbDexie(sitUserId);\r\n this.createMemberLockingActivityDictionariesFromDbDexie(sitUserId);\r\n this.createMemberStarTrackWinkActivityDictionariesFromDbDexie(sitUserId);\r\n }\r\n // ============================================================\r\n public createAllProfileRelatedDictionariesFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.createPreferenceDictionaryFromDbDexie();\r\n this.createProfileContentDictionaryFromDbDexie();\r\n this.createProfileInfoDictionaryFromDbDexie();\r\n this.createProfileTileDictionaryFromDbDexie();\r\n this.createProfilePicsDictionaryFromDbDexie();\r\n\r\n //this.rdm = new RemoteDataModel();\r\n //this.rdm.url = '';\r\n //this.rdm.data = '';\r\n //this.rdm.headerType = 'json'\r\n //this.rdm.methodName = 'populateProfileTileDictionariesFromIndexedDb';\r\n //this.rdm.id = this.loginSuccess.signedInUserId;\r\n //this.rdm.timestamp = new Date().getTime().toString();\r\n //this.rdm.options = '';\r\n //this.httpBackgroundService.loadRemoteDataInBackground(this.rdm );\r\n \r\n if (this.dictionaryService.kvPhotoDictionary.size > 0) {\r\n // debugger;\r\n this.createKvPhotoDictionaryFromDbDexie();\r\n\t\t}\r\n }\r\n // ============================================================\r\n public createAllSitUserRelatedDictionariesFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.createSitUserDictionaryFromDbDexie();\r\n this.createSitUserIdDictionaryFromDbDexie(); \r\n\r\n debugger;\r\n //this.rdm = new RemoteDataModel();\r\n //this.rdm.url = '';\r\n //this.rdm.data = '';\r\n //this.rdm.headerType = 'json'\r\n //this.rdm.methodName = 'populateSitUserIdDictionariesFromIndexedDb';\r\n //this.rdm.id = this.loginSuccess.signedInUserId;\r\n //this.rdm.timestamp = new Date().getTime().toString();\r\n //this.rdm.options = '';\r\n //this.httpBackgroundService.loadRemoteDataInBackground(this.rdm);\r\n\r\n //this.rdm.methodName = 'populateSitUserDictionariesFromIndexedDb';\r\n //this.httpBackgroundService.loadRemoteDataInBackground(this.rdm);\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n public doesStoreHaveData (entityName : string) : boolean {\r\n return this.dbDexieService.doesStoreHaveData(entityName);\r\n // return true;\r\n }\r\n // ===============================================================\r\n // input: array;\r\n // output: a zagged array of two arrays in an wrapper array consisting\r\n // the left-half of inputArray as leftArray=lArr, and \r\n // the right-half of inputArray as rightArray=rArr\r\n //\r\n // TODO:20230316: write a method that \r\n // 1. automatically equally divides the dictionary.size in half\r\n // if the dictionary.size > max;\r\n // 2. saves the leftDictionary as 1 and the rightDictionary as 2 as a postfix of it's name.\r\n // 3. \r\n // ===============================================================\r\n public equalDivisionAlgorithm (inArr : any[]) : any[] {\r\n var lArr : any[] = [];\r\n var rArr : any[] = [];\r\n\r\n var outArr : any[] = [];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inArr) && inArr.length >= 2) {\r\n let mid = Math.floor(inArr.length % 2);\r\n for (var i = 0; i < inArr.length; i++) {\r\n if (i <= mid) {\r\n lArr.push(inArr[ i ]);\r\n }\r\n else {\r\n rArr.push(inArr[ i ]);\r\n }\r\n }\r\n outArr.push(lArr);\r\n outArr.push(rArr);\r\n }\r\n return outArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this method will be used to create a particular \r\n // dictionary on demand with the entityName and id.\r\n // ---------------------------------------------------------------\r\n public getDictionary (entityName : string, key : string) : Observable> | any {\r\n // debugger;\r\n return new Observable>((subscriber) => {\r\n // debugger\r\n let tkey = key;\r\n let tEntityName = entityName;\r\n // Note: sitUserId can be used to check whether it is signedInUser\r\n let dictionaryData : any;\r\n let dictionary = new Dictionary();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tEntityName) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tkey)) {\r\n\r\n this.dbDexieService.getStoreData(tEntityName, tkey).subscribe(data => { // data is a request promise\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // debugger;\r\n let bne : BoxNonceEntity = data;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bne) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bne.box) && bne.box.length > 0) {\r\n bne.box = FrequentlyUsedFunctionsServiceStatic.angArrBufferToB64(bne.box);\r\n bne.nonce = FrequentlyUsedFunctionsServiceStatic.angArrBufferToB64(bne.nonce);\r\n // debugger;\r\n dictionary = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bne)) as Dictionary;\r\n // debugger;\r\n subscriber.next(dictionary);\r\n }\r\n else {\r\n // debugger;\r\n this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.-3';\r\n MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, this.message);\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n // debugger;\r\n this.message = this.date.getTime() + ': dbDexieService.doesStoreHaveData(entityName: ' + entityName + ') returned count === 0; -6';\r\n MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, this.message);\r\n }\r\n })\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n public isObjectStoreNameFoundInTables (name : string) : boolean {\r\n return this.dbDexieService.isObjectStoreNameFoundInTables(name);\r\n } \r\n\r\n // ---------------------------------------------------------------\r\n public saveChatConversationDictionaryToDbDexie (dictionary : Dictionary, entityName : string, sitUserId : number) : any {\r\n let date = new Date();\r\n let model : any = {};\r\n let chatHistoryDictionary: Dictionary = new Dictionary();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionary)\r\n && sitUserId > 0) {\r\n\r\n let values = dictionary.values();\r\n // debugger;\r\n let keys = dictionary.keys();\r\n\r\n // debugger;\r\n\r\n let boxNonce = SlakezSaltServiceStatic.boxSalt(JSON.stringify(dictionary));\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n // debugger;\r\n\r\n boxNonce.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n boxNonce.id = sitUserId;\r\n boxNonce.key = sitUserId.toString();\r\n boxNonce.entityName = entityName;\r\n boxNonce.sitUserId = sitUserId;\r\n\r\n model = new DexieBne();\r\n model.id = boxNonce.id,\r\n // model.bne = boxNonceEntity,\r\n model.bneStr = FrequentlyUsedFunctionsServiceStatic.strTobase64(JSON.stringify(boxNonce));\r\n model.key = boxNonce.key\r\n model.entityName = entityName;\r\n // debugger;\r\n\r\n try {\r\n // debugger;\r\n this.dbDexieService.updateObjectStoreData(model).subscribe(\r\n val => {\r\n this.message = 'timestamp-' + new Date().getTime() + ': saveDictionaryToIndexedDb() is successful for: ' + entityName; \r\n console.log(this.message);\r\n }, //next callback\r\n error => { console.log('timestamp-' + new Date().getTime() + \" :error occured while updating ObjectStore. error-message:\" + error) }, //error callback\r\n () => { console.log('timestamp-' + new Date().getTime() + \" :updating ObjectStore Completed\") } //complete callback\r\n );\r\n\r\n return true;\r\n }\r\n catch {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : the data is too large for the ' + entityName + 'ObjectStore in saveKvPhotoDictionaryToDbDexie().\\n Applying evenSplitAlgorithm at finally';\r\n console.log(this.message);\r\n }\r\n finally {\r\n let keys = []; // original-dictionary\r\n let values = []; // original-dictionary\r\n if (this.dictionaryService.chatConversationDictionary.size > 0) {\r\n keys = this.dictionaryService.chatConversationDictionary.keys(); // original-dictionary\r\n values = this.dictionaryService.chatConversationDictionary.values(); // original-dictionary\r\n } \r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public saveKvPhotoDictionaryToDbDexie (dictionary : Dictionary, entityName : string, sitUserId : number) : any {\r\n let date = new Date();\r\n let model : any = {};\r\n let kvPhotoDictionary : Dictionary = new Dictionary();\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionary)\r\n && sitUserId > 0) {\r\n \r\n let values = dictionary.values();\r\n // debugger;\r\n let keys = dictionary.keys();\r\n\r\n // debugger;\r\n \r\n let boxNonce = SlakezSaltServiceStatic.boxSalt(JSON.stringify(dictionary));\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n // debugger;\r\n\r\n boxNonce.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n boxNonce.id = sitUserId;\r\n boxNonce.key = sitUserId.toString();\r\n boxNonce.entityName = entityName;\r\n boxNonce.sitUserId = sitUserId;\r\n\r\n model = new DexieBne();\r\n model.id = boxNonce.id,\r\n // model.bne = boxNonceEntity,\r\n model.bneStr = FrequentlyUsedFunctionsServiceStatic.strTobase64(JSON.stringify(boxNonce));\r\n model.key = boxNonce.key\r\n model.entityName = entityName;\r\n // debugger;\r\n // this.dbDexieService.createObjectStore(this.dbDexieService, entityName).subscribe(store => {\r\n\r\n //save the original dictionary if space allows, otherwise split in half and save to 1...6th dictionaries\r\n // -----------------------------------------------------------------------------------------------------\r\n try {\r\n // debugger;\r\n this.dbDexieService.updateObjectStoreData(model).subscribe(\r\n val => {\r\n this.message = 'timestamp-' + new Date().getTime() + ': saveDictionaryToIndexedDb() is successful for: ' + entityName;// + ' with data: ' + JSON.stringify(val);\r\n console.log(this.message);\r\n }, //next callback\r\n error => { console.log('timestamp-' + new Date().getTime() + \" :error occured while updating ObjectStore. error-message:\" + error) }, //error callback\r\n () => { console.log('timestamp-' + new Date().getTime() + \" :updating ObjectStore Completed\") } //complete callback\r\n );\r\n\r\n return true;\r\n }\r\n catch {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : the data is too large for the ' + entityName + 'ObjectStore in saveKvPhotoDictionaryToDbDexie().\\n Applying evenSplitAlgorithm at finally';\r\n console.log(this.message);\r\n }\r\n finally {\r\n // here we divide the original-dictionary in equal-half and create two new dictionaries and save them.\r\n // Note that the orifinal KvPhotoDictionary is empty now.\r\n // ---------------------------------------------------------------------------------------------------\r\n let keys = []; // original-dictionary\r\n let values = []; // original-dictionary\r\n if (this.dictionaryService.kvPhotoDictionary.size > 0) {\r\n keys = this.dictionaryService.kvPhotoDictionary.keys(); // original-dictionary\r\n values = this.dictionaryService.kvPhotoDictionary.values(); // original-dictionary\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public saveProfileTileDictionaryToDbDexie (dictionary : Dictionary, entityName : string, sitUserId : number) : any {\r\n let date = new Date();\r\n let model : any = {};\r\n let profileTileDictionary : Dictionary = new Dictionary();\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionary)\r\n && sitUserId > 0) {\r\n\r\n let values = dictionary.values();\r\n // debugger;\r\n let keys = dictionary.keys();\r\n var dictionaryLength = keys.length;\r\n debugger;\r\n\r\n // debugger;\r\n\r\n let boxNonce = SlakezSaltServiceStatic.boxSalt(JSON.stringify(dictionary));\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n // debugger;\r\n\r\n boxNonce.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n boxNonce.id = sitUserId;\r\n boxNonce.key = sitUserId.toString();\r\n boxNonce.entityName = entityName;\r\n boxNonce.sitUserId = sitUserId;\r\n\r\n model = new DexieBne();\r\n model.id = boxNonce.id,\r\n // model.bne = boxNonceEntity,\r\n model.bneStr = FrequentlyUsedFunctionsServiceStatic.strTobase64(JSON.stringify(boxNonce));\r\n model.key = boxNonce.key\r\n model.entityName = entityName;\r\n // debugger;\r\n // this.dbDexieService.createObjectStore(this.dbDexieService, entityName).subscribe(store => {\r\n\r\n //save the original dictionary if space allows, otherwise split in half and save to 1...6th dictionaries\r\n // -----------------------------------------------------------------------------------------------------\r\n try {\r\n debugger;\r\n this.dbDexieService.updateObjectStoreData(model).subscribe(\r\n val => {\r\n this.message = 'timestamp-' + new Date().getTime() + ': saveDictionaryToIndexedDb() is successful for: ' + entityName;// + ' with data: ' + JSON.stringify(val);\r\n console.log(this.message);\r\n }, //next callback\r\n error => { console.log('timestamp-' + new Date().getTime() + \" :error occured while updating ObjectStore. error-message:\" + error) }, //error callback\r\n () => { console.log('timestamp-' + new Date().getTime() + \" :updating ObjectStore Completed\") } //complete callback\r\n );\r\n\r\n return true;\r\n }\r\n catch {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : the data is too large for the ' + entityName + 'ObjectStore in saveKvPhotoDictionaryToDbDexie().\\n Applying evenSplitAlgorithm at finally';\r\n console.log(this.message);\r\n }\r\n finally {\r\n // here we divide the original-dictionary in equal-half and create two new dictionaries and save them.\r\n // Note that the orifinal KvPhotoDictionary is empty now.\r\n // ---------------------------------------------------------------------------------------------------\r\n let keys = []; let values = [];\r\n if (this.dictionaryService.profileTileDictionary.size > 0) {\r\n keys = this.dictionaryService.profileTileDictionary.keys(); // original-dictionary\r\n values = this.dictionaryService.profileTileDictionary.values(); // original-dictionary\r\n } \r\n \r\n var mod = Math.floor(keys.length / 2) as number;\r\n var leftHalfLength = Math.floor(keys.length / 2) as number;\r\n debugger;\r\n }\r\n }\r\n }\r\n }\r\n \r\n // ============================================================\r\n private createChatConversationIdDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('ChatConversationId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((chatConversationIdDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatConversationIdDictionary)) {\r\n // debugger;\r\n this.dictionaryService.chatConversationIdDictionary = JSON.parse(JSON.stringify(chatConversationIdDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': chatConversationIdDictionary of.size: ', this.dictionaryService.chatConversationIdDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createChatConversationIdDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n })\r\n }\r\n // ------------------------------------------------------------\r\n public createChatConversationDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('ChatConversation', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((chatConversationDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatConversationDictionary)) {\r\n // debugger;\r\n this.dictionaryService.chatConversationDictionary = JSON.parse(JSON.stringify(chatConversationDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': ChatConversationDictionary of.size: ', this.dictionaryService.chatConversationDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createChatConversationDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n })\r\n }\r\n // ------------------------------------------------------------\r\n public createMyChatIdDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('MyChatId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((myChatIdDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myChatIdDictionary)) {\r\n // debugger;\r\n this.dictionaryService.myChatIdDictionary = JSON.parse(JSON.stringify(myChatIdDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': myChatIdDictionary of.size: ', this.dictionaryService.myChatIdDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createMyChatIdDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n })\r\n }\r\n // ------------------------------------------------------------\r\n public createMyChatDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('MyChat', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((myChatDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myChatDictionary)) {\r\n // debugger;\r\n this.dictionaryService.myChatDictionary = JSON.parse(JSON.stringify(myChatDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': myChatDictionary of.size: ', this.dictionaryService.myChatDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createMyChatDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n })\r\n }\r\n \r\n // ============================================================\r\n //public createEmailTileIdDictionaryFromDbDexie () : void {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.getDictionary('EmailTileId', this.loginSuccess.signedInUserId.toString())\r\n // .subscribe((emailTileIdDictionary : any) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(emailTileIdDictionary)) {\r\n // // debugger;\r\n // this.dictionaryService.emailTileIdDictionary = JSON.parse(JSON.stringify(emailTileIdDictionary));\r\n // // debugger;\r\n // console.log(this.date.getTime() + ': emailTileIdDictionary of.size: ', this.dictionaryService.emailTileIdDictionary?.size + 'has been created from indexedDb');\r\n // }\r\n // else {\r\n // console.log(this.date.getTime() + ': result of createEmailTileIdDictionaryFromIndexedDb() was null or undefined.');\r\n // }\r\n // })\r\n //}\r\n // ------------------------------------------------------------\r\n public createEmailTileDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('EmailTile', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((emailTileDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(emailTileDictionary)) {\r\n // debugger;\r\n this.dictionaryService.emailTileDictionary = JSON.parse(JSON.stringify(emailTileDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': emailTileDictionary of.size: ', this.dictionaryService.emailTileDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createEmailTileDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n })\r\n }\r\n // ------------------------------------------------------------\r\n public createMyEmailIdDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('MyEmailId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((myEmailIdDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myEmailIdDictionary)) {\r\n // debugger;\r\n this.dictionaryService.myEmailIdDictionary = JSON.parse(JSON.stringify(myEmailIdDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': myEmailIdDictionary of.size: ', this.dictionaryService.myEmailIdDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createMyEmailIdDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n })\r\n }\r\n // ------------------------------------------------------------\r\n public createMyEmailDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('MyEmail', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((myEmailDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myEmailDictionary)) {\r\n // debugger;\r\n this.dictionaryService.myEmailDictionary = JSON.parse(JSON.stringify(myEmailDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': myEmailDictionary of.size: ', this.dictionaryService.myEmailDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createMyEmailDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n })\r\n }\r\n \r\n // ============================================================\r\n public createEnoteTileDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('enoteTile', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((enoteTileDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enoteTileDictionary)) {\r\n // debugger;\r\n this.dictionaryService.enoteTileDictionary = JSON.parse(JSON.stringify(enoteTileDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': enoteTileDictionary of.size: ', this.dictionaryService.enoteTileDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createEnoteTileDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n })\r\n }\r\n // ------------------------------------------------------------\r\n //public createEnoteTileIdDictionaryFromDbDexie () : void {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.getDictionary('enoteTileId', this.loginSuccess.signedInUserId.toString())\r\n // .subscribe((enoteTileIdDictionary : any) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(enoteTileIdDictionary)) {\r\n // // debugger;\r\n // this.dictionaryService.enoteTileIdDictionary = JSON.parse(JSON.stringify(enoteTileIdDictionary));\r\n // // debugger;\r\n // console.log(this.date.getTime() + ': enoteTileIdDictionary of.size: ', this.dictionaryService.enoteTileIdDictionary?.size + 'has been created from indexedDb');\r\n // }\r\n // else {\r\n // console.log(this.date.getTime() + ': result of createEnoteTileIdDictionaryFromIndexedDb() was null or undefined.');\r\n // }\r\n // });\r\n //}\r\n // ------------------------------------------------------------\r\n public createMyNotificationIdDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('myNotificationId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((myNotificationIdDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myNotificationIdDictionary)) {\r\n // debugger;\r\n this.dictionaryService.myNotificationIdDictionary = JSON.parse(JSON.stringify(myNotificationIdDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': myNotificationIdDictionary of.size: ', this.dictionaryService.myNotificationIdDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createMyNotificationIdDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n // ------------------------------------------------------------\r\n public createMyNotificationDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('myNotification', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((myNotificationDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(myNotificationDictionary)) {\r\n // debugger;\r\n this.dictionaryService.myNotificationDictionary = JSON.parse(JSON.stringify(myNotificationDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': myNotificationDictionary of.size: ', this.dictionaryService.myNotificationDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createMyNotificationDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n public createSitUserDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('sitUser', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((sitUserDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserDictionary)) {\r\n // debugger;\r\n this.dictionaryService.sitUserDictionary = JSON.parse(JSON.stringify(sitUserDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': sitUserDictionary of.size: ', this.dictionaryService.sitUserDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createSitUserDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n // ------------------------------------------------------------\r\n public createSitUserIdDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('sitUserId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((sitUserIdDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserIdDictionary)) {\r\n // debugger;\r\n this.dictionaryService.sitUserIdDictionary = JSON.parse(JSON.stringify(sitUserIdDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': sitUserIdDictionary of.size: ', this.dictionaryService.sitUserIdDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createSitUserIdDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public createKvPhotoDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('kvPhoto', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((kvPhotoDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoDictionary)) {\r\n // debugger;\r\n this.dictionaryService.kvPhotoDictionary = JSON.parse(JSON.stringify(kvPhotoDictionary));\r\n // debugger;\r\n console.log(this.date.getTime() + ': kvPhotoDictionary of.size: ', this.dictionaryService.kvPhotoDictionary?.size + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createKvPhotoDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public createPhotoBnIdDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('PhotoBnId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((photoBnIdDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBnIdDictionary)) {\r\n this.dictionaryService.userPhotoBnIdDictionary = JSON.parse(JSON.stringify(photoBnIdDictionary));\r\n console.log(this.date.getTime() + ': userPhotoBnIdDictionary of.size: ', photoBnIdDictionary.size() + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createPhotoBnIdDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n public createPreferenceDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('Preference', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((preferenceDictionary : any) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preferenceDictionary)) {\r\n // this.dictionaryService.preferenceDictionary = StringServiceStatic.deepCloneJson(preferenceDictionary);\r\n // debugger;\r\n this.dictionaryService.preferenceDictionary = JSON.parse(JSON.stringify(preferenceDictionary));\r\n\r\n // debugger;\r\n console.log(this.date.getTime() + ': preferenceDictionary of.size: ', preferenceDictionary.size() + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createPreferenceDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n public createProfileContentDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('ProfileContent', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((profileContentDictionary : any) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileContentDictionary)) {\r\n // debugger;\r\n this.dictionaryService.profileContentDictionary = JSON.parse(JSON.stringify(profileContentDictionary));\r\n\r\n // debugger;\r\n console.log(this.date.getTime() + ': profileContentDictionary of.size: ', profileContentDictionary.size() + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createProfileContentDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n public createProfileInfoDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('ProfileInfo', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((profileInfoDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfoDictionary)) {\r\n // this.dictionaryService.profileInfoDictionary = StringServiceStatic.deepCloneJson(profileInfoDictionary);\r\n // debugger;\r\n this.dictionaryService.profileInfoDictionary = JSON.parse(JSON.stringify(profileInfoDictionary));\r\n // debugger;\r\n\r\n console.log(this.date.getTime() + ': profileInfoDictionary of.size: ', profileInfoDictionary.size() + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createProfileInfoDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n public createProfilePicsDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('ProfilePics', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((profilePicsDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePicsDictionary)) {\r\n this.dictionaryService.profilePicsDictionary = JSON.parse(JSON.stringify(profilePicsDictionary));\r\n console.log(this.date.getTime() + ': profilePicsDictionary of.size: ', profilePicsDictionary.size() + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createProfilePicsDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n public createProfileTileDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('ProfileTile', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((profileTileDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileTileDictionary)) {\r\n // debugger;\r\n this.dictionaryService.setProfileTileDictionary(profileTileDictionary);\r\n // debugger;\r\n console.log(this.date.getTime() + ': profileTileDictionary of.size: ', profileTileDictionary.size() + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createProfileTileDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n public createProfileTileIdDictionaryFromDbDexie () : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.getDictionary('ProfileTileId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((profileTileIdDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileTileIdDictionary)) {\r\n this.dictionaryService.profileTileIdDictionary = JSON.parse(JSON.stringify(profileTileIdDictionary));\r\n console.log(this.date.getTime() + ': profileTileIdDictionary of.size: ', profileTileIdDictionary.size() + 'has been created from indexedDb');\r\n }\r\n else {\r\n console.log(this.date.getTime() + ': result of createProfileTileIdDictionaryFromIndexedDb() was null or undefined.');\r\n }\r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // public createPhotoDictionaryFromDbDexie () : void {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.getDictionaryFromDbDexieObservable('Photo', this.loginSuccess.signedInUserId.toString())\r\n // .subscribe((photoDictionary : any) =>{\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoDictionary)) {\r\n // this.dictionaryService.photoDictionary = StringServiceStatic.deepCloneJson(photoDictionary);\r\n // console.log(this.date.getTime() + ': photoDictionary.size: ', photoDictionary.size());\r\n // }\r\n // else {\r\n // console.log(this.date.getTime() + ': result of createPhotoDictionaryDictionaryFromIndexedDb() was null or undefined.');\r\n // }\r\n // });\r\n // }\r\n // ---------------------------------------------------------------\r\n //public createPhotoBnDictionaryFromDbDexie () : void {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.getDictionaryFromDbDexieObservable('PhotoBn', this.loginSuccess.signedInUserId.toString())\r\n // .subscribe((photoBnDictionary : any) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBnDictionary)) {\r\n // this.dictionaryService.photoBnDictionary = StringServiceStatic.deepCloneJson(photoBnDictionary);\r\n // console.log(this.date.getTime() + ': photoBnDictionary.size: ', photoBnDictionary.size());\r\n // }\r\n // else {\r\n // console.log(this.date.getTime() + ': result of createPhotoBnDictionaryDictionaryFromIndexedDb() was null or undefined.');\r\n // }\r\n // });\r\n //}\r\n // ===============================================================\r\n \r\n // ---------------------------------------------------------------\r\n // ===============================================================\r\n private createMemberActivityDictionariesFromDbDexie (sitUserId: number): void\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let activitiesDictionary: any;\r\n if ( sitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n // debugger;\r\n this.tables.myMemberActivityObjectStore?.count().then(async (c : any) => {\r\n // debugger;\r\n if (c > 0) {\r\n this.getDictionary(\"myMemberActivity\", this.loginSuccess.signedInUserId.toString())\r\n .subscribe((mActDict : any) => {\r\n activitiesDictionary = mActDict;\r\n });\r\n }\r\n }).catch((error : any) => {\r\n this.message = this.date.getTime() + ' dbDexieService.db.myMemberActivityObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n console.log(this.message);\r\n });\r\n }\r\n else\r\n {\r\n this.tables.yourMemberActivityObjectStore?.count().then(async (c : any) => {\r\n // debugger;\r\n if (c > 0) {\r\n\r\n this.getDictionary(\"YourMemberActivity\", this.loginSuccess.signedInUserId.toString()).subscribe((mActDict : any) => {\r\n activitiesDictionary = mActDict;\r\n })\r\n }\r\n }).catch((error : any) => {\r\n this.message = this.date.getTime() + ' dbDexieService.db.yourMemberActivityObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n console.log(this.message);\r\n });\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(activitiesDictionary) && activitiesDictionary.size() > 0)\r\n {\r\n this.populateMemberActivitiesDictionaries( activitiesDictionary.values() );\r\n } \r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n private createMemberLockingActivityDictionariesFromDbDexie ( sitUserId: number): void\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let activitiesDictionary: any;\r\n if ( sitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.tables.myMemberLockingActivityObjectStore?.count().then(async (c : any) => {\r\n // debugger;\r\n if (c > 0) {\r\n this.getDictionary(\"MyMemberLockingActivity\", this.loginSuccess.signedInUserId.toString())\r\n .subscribe((mActDict : any) => {\r\n activitiesDictionary = mActDict;\r\n })\r\n }\r\n }).catch((error : any) => {\r\n this.message = this.date.getTime() + ' dbDexieService.db.myMemberLockingActivityObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n console.log(this.message);\r\n });\r\n }\r\n else\r\n {\r\n this.tables.yourMemberLockingActivityObjectStore?.count().then(async (c : any) => {\r\n // debugger;\r\n if (c > 0) {\r\n this.getDictionary('yourMemberLockingActivity', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((mActDict : any) =>\r\n {\r\n activitiesDictionary = mActDict;\r\n }).catch((error : any) => {\r\n this.message = this.date.getTime() + ' dbDexieService.db.yourMemberLockingActivityObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n console.log(this.message);\r\n // debugger;\r\n });\r\n }\r\n }).catch((error : any) => {\r\n this.message = this.date.getTime() + ' dbDexieService.db.yourMemberLockingActivityObjectStore?.get() returned a null or undefined result. Error-mag: ' + error;\r\n console.log(this.message);\r\n });\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(activitiesDictionary) && activitiesDictionary.size() > 0)\r\n {\r\n this.populateMemberActivitiesDictionaries( activitiesDictionary.values() );\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n private createMemberStarTrackWinkActivityDictionariesFromDbDexie ( sitUserId: number): void\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let activitiesDictionary: any;\r\n if ( sitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.tables.myMemberStarTrackWinkActivityObjectStore?.count().then(async (c : any) => {\r\n // debugger;\r\n if (c > 0) {\r\n // debugger;\r\n this.getDictionary(\"MyMemberStarTrackWinkActivity\", this.loginSuccess.signedInUserId.toString()).subscribe((mActDict : any) =>{\r\n activitiesDictionary = mActDict;\r\n })\r\n }\r\n }).catch((error : any) => {\r\n this.message = this.date.getTime() + ' dbDexieService.db.myMemberStarTrackWinkActivityObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n console.log(this.message);\r\n });\r\n }\r\n else\r\n {\r\n this.tables.yourMemberStarTrackWinkActivityObjectStore?.count().then(async (c : any) => {\r\n // debugger;\r\n if (c > 0) {\r\n // debugger;\r\n this.getDictionary(\"yourMemberStarTrackWinkActivity\", this.loginSuccess.signedInUserId.toString())\r\n .subscribe((mActDict : any) =>\r\n {\r\n activitiesDictionary = mActDict;\r\n })\r\n }\r\n }).catch((error : any) => {\r\n this.message = this.date.getTime() + ' dbDexieService.db.yourMemberStarTrackWinkActivityObjectStore?.count() returned a null or undefined result. Error-mag: ' + error;\r\n // alert('Error occured in UpdateParagraph();\\n Error-mag:' + error);\r\n console.log(this.message);\r\n });\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(activitiesDictionary) && activitiesDictionary.size() > 0)\r\n {\r\n this.populateMemberActivitiesDictionaries( activitiesDictionary.values() );\r\n }\r\n }\r\n }\r\n // ===============================================================\r\n // ---------------------------------------------------------------\r\n // MemberActivitiesDictionary-System:\r\n // ----------------------------------\r\n // MemberActivitiesDitionary(my or your) is the only dictionary that\r\n // persists in the backend-DB as well as indexedDb.\r\n //\r\n // The Block/UnblockDictionary(my or your), Like/DislikeDictionary.\r\n // Friend/UnfriendDictionary are not persisted in neither backendDB\r\n // or the indexedDb.\r\n //\r\n // These Dictionaries (block/unblock, friend/unfriend, like/dislike)\r\n // are for the View to render these activities related results to the user.\r\n //\r\n // This method will create/populate these dictionaries from MemberActivitesDictionary\r\n //\r\n // Similarly MemberLock/UnlockDictionary is persisted in the backendDB as well as\r\n // indexedDb only for these activities since they consists of expiration date for the action.\r\n //\r\n // This method will create lock/unlock Dictionaries for the View.\r\n //\r\n // Similarly MemberStarTrackWinkDictionary is persisted on both backendDB and indexedDb,\r\n // and is used here to produce the Star/Track/Wink dictionaries for the View.\r\n //\r\n // This method will be used for both flows of dictionary data:\r\n // 1) populate dictionaries: from-indexedDB-to-Dictionaries and\r\n // 2) when data arrives from backendDB: from-backendDB-to-dictionaries-to-indexedDB\r\n // ---------------------------------------------------------------\r\n private populateMemberActivitiesDictionaries ( modelArr: CommunicationActivity[] ): void\r\n {\r\n // MemberActivity Dictionaries:\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel(); \r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( modelArr ) && modelArr.length > 0 )\r\n {\r\n // this.dictionaryService.modelArrayToMemberActivityDictionary(\r\n // modelArr.map( ( e ) => SlakezSaltServiceStatic.boxUnsalt( e ) as MemberActivity ),\r\n // this.dictionaryService.myMemberActivityDictionary,\r\n // );\r\n const dbMyMActs = modelArr;// this.dictionaryService.myMemberActivityDictionary.values();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dbMyMActs ) && dbMyMActs.length > 0 )\r\n {\r\n dbMyMActs.map( ( f ) =>\r\n {\r\n /*\r\n * ----------------------------------------------------------------------------------------------------------\r\n * In myDictionaries (when I do some activity on someone), the doer is non-unique signedInUserId, but doee is unique sitUserId\r\n * Hence, in order to insert MemberActivity into my-dictionaries, the key must be doee==sitUser.sitUserId\r\n * -------------------------------------------------------------------e---------------------------------------\r\n */\r\n if ( f.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n // if I am the doer in this tMAct\r\n if ( f.senderSitUserId === this.sitUser.sitUserId )\r\n {\r\n // if doee is this sitUser\r\n switch ( f.action.toLowerCase() )\r\n {\r\n case 'block':\r\n if (!this.dictionaryService.myBlockDictionary.has(f.senderSitUserId ) )\r\n {\r\n // if this doee cannot be found in myBlockDictionary\r\n this.dictionaryService.myBlockDictionary.set(f.senderSitUserId, f );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'unblock':\r\n if (this.dictionaryService.myBlockDictionary.has(f.senderSitUserId ) )\r\n {\r\n // since doee.sitUerId==key and doee is found in myBlockDictionary\r\n this.dictionaryService.myBlockDictionary.remove(f.senderSitUserId );\r\n } else\r\n {\r\n /*\r\n * cannot unblock/remove a non-existing sitUser in myBlockDictionary\r\n * nothing to do\r\n */\r\n }\r\n break;\r\n case 'friend':\r\n if (!this.dictionaryService.myFriendDictionary.has(f.senderSitUserId ) )\r\n {\r\n this.dictionaryService.myFriendDictionary.set(f.senderSitUserId, f );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'unfriend':\r\n if (this.dictionaryService.myFriendDictionary.has(f.senderSitUserId ) )\r\n {\r\n // since doee.sitUerId==key\r\n this.dictionaryService.myFriendDictionary.remove(f.senderSitUserId );\r\n } else\r\n {\r\n /*\r\n * cannot unFriend/remove a non-existing sitUser in myFriendDic\r\n * nothing to do\r\n */\r\n }\r\n break;\r\n case 'like':\r\n //if ( !this.dictionaryService.myLikeDictionary.has( f.doeeSitUserId ) )\r\n //{\r\n debugger;\r\n this.dictionaryService.myLikeDictionary.set(f.senderSitUserId, f );\r\n //} else\r\n //{\r\n // // nothing to do\r\n //}\r\n break;\r\n case 'dislike':\r\n if (this.dictionaryService.myLikeDictionary.has(f.senderSitUserId ) )\r\n {\r\n // since doee.sitUerId==key\r\n this.dictionaryService.myLikeDictionary.remove(f.senderSitUserId );\r\n } else\r\n {\r\n /*\r\n * cannot dislike/remove a non-existing sitUser in myLikeDic\r\n * nothing to do\r\n */\r\n }\r\n break;\r\n case 'tala': case 'lock':\r\n if (this.dictionaryService.myUnlockDictionary.has(f.senderSitUserId ) )\r\n {\r\n this.dictionaryService.myUnlockDictionary.remove(f.senderSitUserId );\r\n } else\r\n {\r\n /*\r\n * if does not exist in myUnlockDic, there is nothing to lock\r\n * nothing to do\r\n */\r\n }\r\n break;\r\n case 'unlock':\r\n if (!this.dictionaryService.myUnlockDictionary.has(f.senderSitUserId ) )\r\n {\r\n this.dictionaryService.myUnlockDictionary.set(f.senderSitUserId, f );\r\n } else\r\n {\r\n // if this sitUser exists, check the expiry date:\r\n const today = new Date();\r\n\r\n if ( DateStringServiceStatic.compareDate( f.expiryDate, today.toLocaleString() ) < 0 )\r\n {\r\n // if expired\r\n this.dictionaryService.myUnlockDictionary.remove(f.senderSitUserId ); // remove expired entry\r\n this.dictionaryService.myUnlockDictionary.set(f.senderSitUserId, f ); // add new entry\r\n }\r\n }\r\n break;\r\n case 'star':\r\n if (!this.dictionaryService.myStarDictionary.has(f.senderSitUserId ) )\r\n {\r\n this.dictionaryService.myStarDictionary.set(f.senderSitUserId, f );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'track':\r\n if (!this.dictionaryService.myTrackDictionary.has(f.senderSitUserId ) )\r\n {\r\n this.dictionaryService.myTrackDictionary.set(f.senderSitUserId, f );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'wink':\r\n if (!this.dictionaryService.myWinkDictionary.has(f.senderSitUserId ) )\r\n {\r\n this.dictionaryService.myWinkDictionary.set(f.senderSitUserId, f );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n }\r\n } else\r\n {\r\n /*\r\n * if doee is NOT this sitUser\r\n * nothing to do or some other logical action here\r\n */\r\n }\r\n } else\r\n {\r\n /*\r\n * if I am NOT the doer in this tMAct\r\n * nothing to do or some other logical action here\r\n */\r\n }\r\n } );\r\n }\r\n\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( modelArr ) && modelArr.length > 0 )\r\n {\r\n // this.dictionaryService.modelArrayToMemberActivityDictionary(\r\n // modelArr.map( ( e ) => SlakezSaltServiceStatic.boxUnsalt( e ) as MemberActivity ),\r\n // this.dictionaryService.yourMemberActivityDictionary,\r\n // );\r\n\r\n const dbYourMActs = modelArr;// this.dictionaryService.yourMemberActivityDictionary.values();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dbYourMActs ) && dbYourMActs.length > 0 )\r\n {\r\n dbYourMActs.map( ( y ) =>\r\n {\r\n /*\r\n * ----------------------------------------------------------------------------------------------------------\r\n * In yourDictionaries (when others do some activity on my-profile), the doee is non-unique signedInUserId, but doer is unique sitUserId\r\n * Hence, in order to insert MemberActivity into your-dictionaries, the key must be doer==sitUser.sitUserId\r\n * ----------------------------------------------------------------------------------------------------------\r\n */\r\n if (y.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n // if I am the doee in this tMAct\r\n if (y.receiverSitUserId === this.sitUser.sitUserId )\r\n {\r\n // if doer is this sitUser\r\n switch ( y.action.toLowerCase() )\r\n {\r\n case 'block':\r\n if (!this.dictionaryService.yourBlockDictionary.has(y.receiverSitUserId ) )\r\n {\r\n // if this doer cannot be found in yourBlockDic\r\n this.dictionaryService.yourBlockDictionary.set(y.receiverSitUserId, y );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'unblock':\r\n if (this.dictionaryService.yourBlockDictionary.has(y.receiverSitUserId ) )\r\n {\r\n // since doer.sitUerId==key and doer is found in yourBlockDic\r\n this.dictionaryService.yourBlockDictionary.remove(y.receiverSitUserId );\r\n } else\r\n {\r\n /*\r\n * cannot unblock/remove a non-existing sitUser in yourBlockDic\r\n * nothing to do\r\n */\r\n }\r\n break;\r\n case 'friend':\r\n if (!this.dictionaryService.yourFriendDictionary.has(y.receiverSitUserId ) )\r\n {\r\n this.dictionaryService.yourFriendDictionary.set(y.receiverSitUserId, y );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'unfriend':\r\n if (this.dictionaryService.yourFriendDictionary.has(y.receiverSitUserId ) )\r\n {\r\n // since doer.sitUerId==key\r\n this.dictionaryService.yourFriendDictionary.remove(y.receiverSitUserId );\r\n } else\r\n {\r\n /*\r\n * cannot unFriend/remove a non-existing sitUser in yourFriendDic\r\n * nothing to do\r\n */\r\n }\r\n break;\r\n case 'like':\r\n if (!this.dictionaryService.yourLikeDictionary.has(y.receiverSitUserId ) )\r\n {\r\n this.dictionaryService.yourLikeDictionary.set(y.receiverSitUserId, y );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'dislike':\r\n if (this.dictionaryService.yourLikeDictionary.has(y.receiverSitUserId ) )\r\n {\r\n // since doer.sitUerId==key\r\n this.dictionaryService.yourLikeDictionary.remove(y.receiverSitUserId );\r\n } else\r\n {\r\n /*\r\n * cannot dislike/remove a non-existing sitUser in yourLikeDic\r\n * nothing to do\r\n */\r\n }\r\n break;\r\n case 'tala': case 'lock':\r\n if (this.dictionaryService.yourUnlockDictionary.has(y.receiverSitUserId ) )\r\n {\r\n this.dictionaryService.yourUnlockDictionary.remove(y.receiverSitUserId );\r\n } else\r\n {\r\n /*\r\n * if does not exist in myUnlockDic, there is nothing to lock\r\n * nothing to do\r\n */\r\n }\r\n break;\r\n case 'unlock':\r\n if (!this.dictionaryService.yourUnlockDictionary.has(y.receiverSitUserId ) )\r\n {\r\n this.dictionaryService.yourUnlockDictionary.set(y.receiverSitUserId, y );\r\n } else\r\n {\r\n // if this sitUser exists, check the expiry date:\r\n const today = new Date();\r\n\r\n if ( DateStringServiceStatic.compareDate( y.expiryDate, today.toLocaleString() ) < 0 )\r\n {\r\n // if expired\r\n this.dictionaryService.yourUnlockDictionary.remove(y.receiverSitUserId ); // remove expired entry\r\n this.dictionaryService.yourUnlockDictionary.set(y.receiverSitUserId, y ); // add new entry\r\n }\r\n }\r\n break;\r\n case 'star':\r\n if (!this.dictionaryService.yourStarDictionary.has(y.receiverSitUserId ) )\r\n {\r\n this.dictionaryService.yourStarDictionary.set(y.receiverSitUserId, y );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'track':\r\n if (!this.dictionaryService.yourTrackDictionary.has(y.receiverSitUserId ) )\r\n {\r\n this.dictionaryService.yourTrackDictionary.set(y.receiverSitUserId, y );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n case 'wink':\r\n if (!this.dictionaryService.yourWinkDictionary.has(y.receiverSitUserId ) )\r\n {\r\n this.dictionaryService.yourWinkDictionary.set(y.receiverSitUserId, y );\r\n } else\r\n {\r\n // nothing to do\r\n }\r\n break;\r\n }\r\n } else\r\n {\r\n /*\r\n * if doer is NOT this sitUser\r\n * nothing to do or some other logical action here\r\n */\r\n }\r\n } else\r\n {\r\n /*\r\n * if I am NOT the doee in this tMAct\r\n * nothing to do or some other logical action here\r\n */\r\n }\r\n } );\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Deprecated:\r\n // ---------------------------------------------------------------\r\n //this.dbDexieToDictionaryService.getDictionaryFromDbDexieObservable('photoBn', this.loginSuccess.signedInUserId)\r\n // .subscribe((photoBnDictionary: any) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBnDictionary) && photoBnDictionary.values().length > 0) {\r\n // this.dictionaryService.sitUserIdDictionary = StringServiceStatic.deepCloneJson(photoBnDictionary);\r\n // console.log(date.getTime() + ': photoBnDictionary.size: : ', photoBnDictionary.values().length);\r\n // }\r\n // else {\r\n // console.log(date.getTime() + ': getDictionaryFromIndexedDb(); returned an null of undefined result.');\r\n // }\r\n // })\r\n // ---------------------------------------------------------------\r\n // Note: This is the only method that will save a Dictionary's\r\n // values to the indexedDb.\r\n //\r\n // Dictionary's entries are paired. We create\r\n // a 'toSaltString' with the following data of the dictionary:\r\n // toSaltString = keyArr.toString () + '<%&%>' + valueArr.toString()\r\n // where '<%&%>' is a delimiter to separate keyArrString from valueArrString.\r\n // after salting the 'toSaltString' we store the boxNonceEntity to indexedDb.\r\n //\r\n // Upon retrieval of any dictionary, we unsalt first, then we split the string-result\r\n // by the '<%&%>' separator to get the keyArrStr and valueArrStr.\r\n // After getting the arrStrs, we use JSON.parse(keyArrStr) to get keyArr.\r\n // Similarly we create valueArr and put these values into the\r\n // respective dictionary.\r\n // ---------------------------------------------------------------\r\n public saveDictionaryToDbDexie (dictionary : Dictionary, entityName : string, sitUserId : number) : any {\r\n let date = new Date();\r\n let model : any = {};\r\n // debugger;\r\n try {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionary)\r\n && dictionary.length > 0\r\n && sitUserId > 0) {\r\n\r\n let boxNonce = SlakezSaltServiceStatic.boxSalt(JSON.stringify(dictionary, StringServiceStatic.getCircularReplacer()));\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n // debugger;\r\n\r\n boxNonce.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n boxNonce.id = sitUserId;\r\n boxNonce.key = sitUserId.toString();\r\n boxNonce.entityName = entityName;\r\n boxNonce.sitUserId = sitUserId;\r\n\r\n this.dbDexieService.updateObjectStoreData(boxNonce).subscribe(\r\n val => {\r\n this.message = 'timestamp-' + new Date().getTime() + ': saveDictionaryToIndexedDb() is successful for: ' + entityName;// + ' with data: ' + JSON.stringify(val);\r\n console.log(this.message);\r\n // return true;\r\n }, //next callback\r\n error => { console.log('timestamp-' + new Date().getTime() + \" :error occured while updating ObjectStore. error-message:\" + error) }, //error callback\r\n () => { console.log('timestamp-' + new Date().getTime() + \" :updating ObjectStore Completed\") } //complete callback\r\n );\r\n }\r\n else {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : Box/Nonce were null or undefined.';\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : dbDexieToDictionaryService.saveDictionaryToDbDexie()-> Either the inputDictionary or the entityName=' + entityName + ' or the sitUserId=' + sitUserId + ' was null or 0 or undefined ';\r\n console.log(this.message);\r\n }\r\n }\r\n catch (e ){\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : catch-block caught error: ' + e;\r\n console.log(this.message);\r\n }\r\n finally {\r\n return true;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public saveTreeToDbDexie (tree : BTree, entityName : string, sitUserId : number) : any {\r\n let date = new Date();\r\n let model : any = {};\r\n debugger;\r\n try {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tree)\r\n && tree.getCount() > 0\r\n && sitUserId > 0) {\r\n\r\n let boxNonce = SlakezSaltServiceStatic.boxSalt(JSON.stringify(tree, StringServiceStatic.getCircularReplacer()));\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n debugger;\r\n\r\n boxNonce.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n boxNonce.id = sitUserId;\r\n boxNonce.key = sitUserId.toString();\r\n boxNonce.entityName = entityName;\r\n boxNonce.sitUserId = sitUserId;\r\n\r\n this.dbDexieService.updateObjectStoreData(boxNonce).subscribe(\r\n val => {\r\n this.message = 'timestamp-' + new Date().getTime() + ': saveTreeToIndexedDb() is successful for: ' + entityName;// + ' with data: ' + JSON.stringify(val);\r\n console.log(this.message);\r\n // return true;\r\n }, //next callback\r\n error => { console.log('timestamp-' + new Date().getTime() + \" :error occured while updating ObjectStore. error-message:\" + error) }, //error callback\r\n () => { console.log('timestamp-' + new Date().getTime() + \" :updating ObjectStore Completed\") } //complete callback\r\n );\r\n }\r\n else {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : Box/Nonce were null or undefined.';\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : dbDexieToDictionaryService.saveTreeToDbDexie()-> Either the inputTree or the entityName=' + entityName + ' or the sitUserId=' + sitUserId + ' was null or 0 or undefined ';\r\n console.log(this.message);\r\n }\r\n }\r\n catch (e) {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : catch-block caught error: ' + e;\r\n console.log(this.message);\r\n }\r\n finally {\r\n return true;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n private saveDictionaryToDbDexieSchema1 (dictionary : Dictionary, entityName : string, sitUserId : number) : any {\r\n let date = new Date();\r\n let model : any = {};\r\n let max = 133169152;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionary)\r\n && sitUserId > 0) {\r\n // if (entityName.toString().toLowerCase().indexOf('situserid') === -1 && entityName.toString().toLowerCase().indexOf('situser') !== -1) {\r\n // debugger;\r\n // }\r\n\r\n let values = dictionary.values();\r\n // debugger;\r\n let keys = dictionary.keys();\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(values) && values.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(keys) && values.length == keys.length) {\r\n let toSaltStr = JSON.stringify(keys, StringServiceStatic.getCircularReplacer()) + \"<%&%>\" + JSON.stringify(values, StringServiceStatic.getCircularReplacer());\r\n // debugger;\r\n\r\n let boxNonce = SlakezSaltServiceStatic.boxSalt(toSaltStr);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n // debugger;\r\n let boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n boxNonceEntity.box = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(boxNonce.box);\r\n boxNonceEntity.nonce = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(boxNonce.nonce);\r\n boxNonceEntity.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n boxNonceEntity.id = sitUserId;\r\n boxNonceEntity.key = sitUserId.toString();\r\n boxNonceEntity.entityName = entityName;\r\n boxNonceEntity.sitUserId = sitUserId;\r\n // debugger;\r\n\r\n model = new DexieBne();\r\n model.id = boxNonceEntity.id,\r\n model.bne = boxNonceEntity,\r\n model.bneStr = JSON.stringify(boxNonceEntity);\r\n model.key = boxNonceEntity.key\r\n model.entityName = entityName;\r\n debugger;\r\n this.dbDexieService.updateObjectStoreData(model).subscribe(data => {\r\n debugger;\r\n //requestAnimationFrame(() => {\r\n // console.log(this.date.getTime() + ': saveDictionaryToIndexedDb() is successful for: ' + entityName );\r\n //});\r\n this.message = new Date().getTime() + ': saveDictionaryToIndexedDb() is successful for: ' + entityName + ' with data: ' + JSON.stringify(data);\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMessage(this.message);\r\n return true;\r\n })\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n //saveDictionaryToIndexedDbM (dictionary : Collections.Dictionary, entityName : string, sitUserId : number) : void {\r\n // let date = new Date();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionary)\r\n // && sitUserId > 0) {\r\n // // if (entityName.toString().toLowerCase().indexOf('situserid') === -1 && entityName.toString().toLowerCase().indexOf('situser') !== -1) {\r\n // // debugger;\r\n // // }\r\n\r\n // let values = dictionary.values();\r\n // // debugger;\r\n // let keys = dictionary.keys();\r\n\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(values) && values.length > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(keys) && values.length == keys.length) {\r\n // let toSaltStr = JSON.stringify(keys, StringServiceStatic.getCircularReplacer()) + \"<%&%>\" + JSON.stringify(values, StringServiceStatic.getCircularReplacer());\r\n // // debugger;\r\n\r\n // let boxNonce = SlakezSaltServiceStatic.boxSalt(toSaltStr);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n // // debugger;\r\n // let boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n // boxNonceEntity.box = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(boxNonce.box);\r\n // boxNonceEntity.nonce = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(boxNonce.nonce);\r\n // boxNonceEntity.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n // boxNonceEntity.id = sitUserId;\r\n // boxNonceEntity.key = sitUserId.toString();\r\n // boxNonceEntity.entityName = entityName;\r\n // boxNonceEntity.sitUserId = sitUserId;\r\n\r\n // IndexedDbAngularService.saveStore(entityName, boxNonceEntity);\r\n // }\r\n // }\r\n // }\r\n //}\r\n\r\n\r\n // ------------------------------------------------------------\r\n public updateDictionaryToObjectStore (dictionary : Dictionary, entityName : string, sitUserId : number) : any {\r\n let model : any = {};\r\n\r\n let boxNonce = SlakezSaltServiceStatic.boxSalt(JSON.stringify(dictionary));\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n // debugger;\r\n\r\n boxNonce.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n boxNonce.id = sitUserId;\r\n boxNonce.key = sitUserId.toString();\r\n boxNonce.entityName = entityName;\r\n boxNonce.sitUserId = sitUserId;\r\n\r\n model = new DexieBne();\r\n model.id = boxNonce.id,\r\n // model.bne = boxNonceEntity,\r\n model.bneStr = FrequentlyUsedFunctionsServiceStatic.strTobase64(JSON.stringify(boxNonce));\r\n model.key = boxNonce.key\r\n model.entityName = entityName;\r\n // debugger;\r\n // this.dbDexieService.createObjectStore(this.dbDexieService, entityName).subscribe(store => {\r\n try {\r\n // debugger;\r\n this.dbDexieService.updateObjectStoreData(model).subscribe(\r\n val => {\r\n this.message = 'timestamp-' + new Date().getTime() + ': updateDictionaryToObjectStore() is successful for: ' + entityName;// + ' with data: ' + JSON.stringify(val);\r\n console.log(this.message);\r\n }, //next callback\r\n error => { console.log('timestamp-' + new Date().getTime() + \" :error occured while updating ObjectStore. error-message:\" + error) }, //error callback\r\n () => { console.log('timestamp-' + new Date().getTime() + \" :updating ObjectStore Completed\") } //complete callback\r\n );\r\n\r\n return true;\r\n }\r\n catch {\r\n // debugger;\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : the data is too large for ' + entityName + 'ObjectStore in updateDictionaryToObjectStore().\\n Applying evenDivisionAlgorithm at finally';\r\n console.log(this.message);\r\n return false;\r\n }\r\n //finally {\r\n // debugger;\r\n // this.message = 'timestamp: ' + new Date().getTime() + ' : @ finally for ' + entityName + 'ObjectStore in updateDictionaryToObjectStore()';\r\n // console.log(this.message);\r\n //}\r\n }\r\n }\r\n\r\n\r\n // ---------------------------------------------------------------\r\n // Note: This is a test case for creating a dictionary from dbDexie\r\n // ---------------------------------------------------------------\r\n public populateSitUserIdDictionariesFromIndexedDb () : any {\r\n let date = new Date();\r\n this.sitUserIdDictionaryFromDexieDbCounter++;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n this.getDictionary('sitUserId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((data : Dictionary) => {\r\n // debugger;\r\n this.dictionaryService.setSitUserIdDictionary(data);\r\n MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, ': sitUserIdDictionary');\r\n return true;\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public populateProfileTileDictionaryFromIndexedDb () : any {\r\n let date = new Date();\r\n this.sitUserIdDictionaryFromDexieDbCounter++;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n this.getDictionary('profileTile', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((data : Dictionary) => {\r\n // debugger;\r\n\r\n this.dictionaryService.setProfileTileDictionary(data);\r\n // let pTable = this.dbDexieService.getTable('profileTile') as any;\r\n // debugger;\r\n // var dictionarySize = this.dbDexieService._db[ pTable ].count;\r\n // debugger;\r\n // console.log(date.getTime() + ': profileTileDictionary.size');\r\n\r\n // MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, ': profileTileDictionary.size ' + this.dictionaryService.profileTileDictionary.size());\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n private getDictionaryFromDbDexieObservable1 (entityName : string, id : number) : Observable> | any {\r\n\r\n // debugger;\r\n return new Observable>((subscriber) => {\r\n // debugger;\r\n let bne = new BoxNonceEntity();\r\n // debugger\r\n // Note: sitUserId can be used to check whether it is signedInUser\r\n let dicData : any;\r\n let dictionary = new Dictionary();\r\n let dictionaryObserver : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName) && id > 0) {\r\n // debugger;\r\n this.dbDexieService.getStoreData(entityName, id.toString()).subscribe(data => { // data is a request promise\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0 && data.result) {\r\n // debugger;\r\n dicData = data.result;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dicData) && dicData.Length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dicData[ 0 ])) {\r\n // debugger;\r\n\r\n let bne : BoxNonceEntity = new BoxNonceEntity();\r\n bne = JSON.parse(FrequentlyUsedFunctionsServiceStatic.base64ToStr(dicData.bneStr)) as BoxNonceEntity;\r\n // debugger;\r\n let unsalted = SlakezSaltServiceStatic.boxUnsalt(bne);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // debugger;\r\n let parts = unsalted.split(\"<%&%>\");\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length == 2) {\r\n let keys = JSON.parse(parts[ 0 ]) as any[];\r\n // debugger;\r\n let values = JSON.parse(parts[ 0 ]) as any[];\r\n if (keys.length == values.length) {\r\n let i = 0;\r\n keys.map(k => {\r\n dictionary.set(k, values[ i ]);\r\n i++;\r\n });\r\n }\r\n // debugger;\r\n subscriber.next(dictionary);\r\n subscriber.complete();\r\n }\r\n else {\r\n // debugger;\r\n this.message = this.date.getTime() + ': error occured in getDictionaryFromIndexedDb(entityName: ' + entityName + ')-1';\r\n MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, this.message);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.message = this.date.getTime() + ': error occured in getDictionaryFromIndexedDb(entityName: ' + entityName + ') while unsalting. unsalted == null or undefined.-2';\r\n MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, this.message);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.-3';\r\n MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, this.message);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.-4';\r\n MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, this.message);\r\n }\r\n })\r\n }\r\n else {\r\n // debugger;\r\n this.message = this.date.getTime() + ': dbDexieService.doesStoreHaveData(entityName: ' + entityName + ') returned count === 0; -6';\r\n // console.log(this.message);\r\n MessageBuilderServiceStatic.printMessage(this.loginSuccess.signedInUserId, this.message);\r\n }\r\n })\r\n }\r\n // ========================================================================\r\n // ---------------------------------------------------------------\r\n // getDictionaryFromDbDexieObservable2 (entityName : string, key : string) : Promise> | any {\r\n // let bne = new BoxNonceEntity();\r\n\r\n // //bne.id = id;\r\n // // Note: sitUserId can be used to check whether it is signedInUser\r\n // let dicData : any;\r\n // let dictionary = new Collections.Dictionary();\r\n // let dictionaryObserver : any;\r\n // // debugger;\r\n // // if (this.dbDexieService.doesStoreHaveData(entityName)) {\r\n // return new Promise>((resolve, reject) => {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(key)) {\r\n // // debugger;\r\n // bne.entityName = entityName;\r\n // bne.key = key;\r\n\r\n // this.dbDexieService.doesStoreHaveData(entityName)?.then((c:any) => {\r\n // if (c > 0) {\r\n // debugger;\r\n // this.dbDexieService.getStoreData(bne).then(data => { // data is a request promise\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0 && data.result) {\r\n // // debugger;\r\n // dicData = data.result;\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dicData) && dicData.Length > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dicData[ 0 ])) {\r\n // // debugger;\r\n // let bne : BoxNonceEntity = new BoxNonceEntity();\r\n // bne.box = dicData[ 0 ].bne.box;\r\n // bne.nonce = dicData[ 0 ].bne.nonce;\r\n // let unsalted = SlakezSaltServiceStatic.boxUnsalt(bne);\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // // debugger;\r\n // let parts = unsalted.split(\"<%&%>\");\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length == 2) {\r\n // let keys = JSON.parse(parts[ 0 ]) as any[];\r\n // debugger;\r\n // let values = JSON.parse(parts[ 0 ]) as any[];\r\n // if (keys.length == values.length) {\r\n // let i = 0;\r\n // keys.map(k => {\r\n // dictionary.setValue(k, values[ i ]);\r\n // i++;\r\n // });\r\n // }\r\n // debugger;\r\n // resolve(dictionary);\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': error occured in getDictionaryFromIndexedDb(entityName: ' + entityName + ')-1';\r\n // reject(this.message);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': error occured in getDictionaryFromIndexedDb(entityName: ' + entityName + ') while unsalting. unsalted == null or undefined.-2';\r\n // reject(this.message);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.-3';\r\n // reject(this.message);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.-4';\r\n // reject(this.message);\r\n // }\r\n // }).catch((error) => {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': the promise of getStoreData () has some error; error: ' + error + '-5';\r\n // reject(this.message);\r\n // });\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': dbDexieService.doesStoreHaveData(entityName: ' + entityName + ') returned count === 0; -6';\r\n // reject(this.message);\r\n // }\r\n // }).catch((err:any) => {\r\n // this.message = this.date.getTime() + ': dbDexieService.doesStoreHaveData(entityName: ' + entityName + ') returned a null or undefined result; -7';\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': entityName: ' + entityName + ', or key: ' + key + ' were null or undefined result.-8';\r\n // reject(this.message);\r\n // }\r\n // }).catch((error: any) => {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': the promise of getDictionaryFromDbDexieObservable () has some error; error: ' + error + '-9';\r\n // console.log(this.message);\r\n // })\r\n //}\r\n //else {\r\n // this.message = this.date.getTime() + ': creating dictionary from DbDexie failed because getDictionaryFromDbDexieObservable.doesStoreHaveData(entityName: ' + entityName + ') was null or undefined.';\r\n // console.log(this.message);\r\n //}\r\n /// How to retrieve the data from this observer:\r\n // ---------------------------------------------\r\n //// Call subscribe() to start listening for updates.\r\n //const dictionarySubscription = dictionaryObserver.subscribe({\r\n // next (dictionary) {\r\n // console.log('dictionary.size: : ', dictionary.size());\r\n // },\r\n // error (msg) {\r\n // console.log('Error Getting Location: ', msg);\r\n // },\r\n // complete () { console.log('dictionarySubscription is done'); }\r\n //});\r\n\r\n //// Stop listening for location after 10 seconds\r\n //setTimeout(() => {\r\n // dictionarySubscription.unsubscribe();\r\n //}, 10000);\r\n // }\r\n // ---------------------------------------------------------------\r\n // Note: All data model should get their data via this function\r\n // ---------------------------------------------------------------\r\n //getDictionaryFromIndexedDbM (entityName : string, key : string) : Promise> | any {\r\n // // Note: sitUserId can be used to check whether it is signedInUser\r\n\r\n // let bne = new BoxNonceEntity();\r\n // bne.entityName = entityName;\r\n // bne.key = key;\r\n\r\n // let dicData : any;\r\n // let dictionary = new Collections.Dictionary();\r\n // let dictionaryObserver : any;\r\n // // let mdb = IndexedDbAngularService.createDbStoreM(entityName, key);\r\n\r\n // return new Promise>((resolve, reject) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(key)) {\r\n // // debugger;\r\n\r\n // requestAnimationFrame(() => {\r\n // console.log(this.date.getTime() + ': entityName: ' + entityName);\r\n // // debugger;\r\n // });\r\n\r\n // // debugger;\r\n // IndexedDbAngularService.getItem(bne).then(result => {\r\n // dicData = result;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dicData) && dicData.Length > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dicData[ 0 ])) {\r\n // let bne2 : BoxNonceEntity = new BoxNonceEntity();\r\n // bne2.box = dicData[ 0 ].bne.box;\r\n // bne2.nonce = dicData[ 0 ].bne.nonce;\r\n // let unsalted = SlakezSaltServiceStatic.boxUnsalt(bne);\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // let parts = unsalted.split(\"<%&%>\");\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length == 2) {\r\n // let keys = JSON.parse(parts[ 0 ]) as any[];\r\n // debugger;\r\n // let values = JSON.parse(parts[ 0 ]) as any[];\r\n // if (keys.length == values.length) {\r\n // let i = 0;\r\n // keys.map(k => {\r\n // dictionary.setValue(k, values[ i ]);\r\n // i++;\r\n // });\r\n // }\r\n // debugger;\r\n // resolve(dictionary);\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': error occured in getDictionaryFromIndexedDb(entityName: ' + entityName + ')';\r\n // reject(this.message);\r\n // }\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': error occured in getDictionaryFromIndexedDb(entityName: ' + entityName + ') while unsalting. unsalted == null or undefined.';\r\n // reject(this.message);\r\n // }\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.';\r\n // reject(this.message);\r\n // }\r\n // }).catch((error) => {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': the promise of getDictionaryFromIndexedDb (entityName: ' + entityName + ', key: ' + key + ') has some error; error: ' + error;\r\n\r\n // requestAnimationFrame(() => {\r\n // console.log(this.message);\r\n // });\r\n // })\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.';\r\n // reject(this.message);\r\n // }\r\n // }).catch((error) => {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': the promise of getDictionaryFromIndexedDb (entityName: ' + entityName + ', key: ' + key + ') has some error; error: ' + error;\r\n\r\n // requestAnimationFrame(() => {\r\n // console.log(this.message);\r\n // });\r\n // });\r\n //}\r\n // ---------------------------------------------------------------\r\n // Note: All data model should get their data via this function\r\n // ---------------------------------------------------------------\r\n //getDictionaryFromIndexedDb (entityName : string, key : string) : Promise>| any {\r\n // // Note: sitUserId can be used to check whether it is signedInUser\r\n // let bne = new BoxNonceEntity();\r\n // bne.entityName = entityName;\r\n // bne.key = key;\r\n\r\n // let dicData : any;\r\n // let dictionary = new Collections.Dictionary();\r\n // let dictionaryObserver : any;\r\n\r\n // return new Promise>((resolve, reject) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(key)) {\r\n // // debugger;\r\n\r\n // requestAnimationFrame(() => {\r\n // console.log(this.date.getTime() + ': entityName: ' + entityName);\r\n // // debugger;\r\n // });\r\n\r\n // // debugger;\r\n // IndexedDbAngularService.getItem(bne).then(data => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && data.length > 0) {\r\n // debugger;\r\n // dicData = data.result;\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dicData) && dicData.Length > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dicData[ 0 ])) {\r\n // let bne : BoxNonceEntity = new BoxNonceEntity();\r\n // bne.box = dicData[ 0 ].bne.box;\r\n // bne.nonce = dicData[ 0 ].bne.nonce;\r\n // let unsalted = SlakezSaltServiceStatic.boxUnsalt(bne);\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // let parts = unsalted.split(\"<%&%>\");\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length == 2) {\r\n // let keys = JSON.parse(parts[ 0 ]) as any[];\r\n // debugger;\r\n // let values = JSON.parse(parts[ 0 ]) as any[];\r\n // if (keys.length == values.length) {\r\n // let i = 0;\r\n // keys.map(k => {\r\n // dictionary.setValue(k, values[ i ]);\r\n // i++;\r\n // });\r\n // }\r\n // debugger;\r\n // resolve(dictionary);\r\n // //requestAnimationFrame(() => {\r\n // // console.log('error occured in getDictionaryFromIndexedDb(entityName: ' + entityName);\r\n // //});\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': error occured in getDictionaryFromIndexedDb(entityName: ' + entityName + ')';\r\n // reject(this.message);\r\n // }\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': error occured in getDictionaryFromIndexedDb(entityName: ' + entityName + ') while unsalting. unsalted == null or undefined.';\r\n // reject(this.message);\r\n // }\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.';\r\n // reject(this.message);\r\n // }\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': getStoreData(entityName: ' + entityName + ') retured a null or undefined result.';\r\n // reject(this.message);\r\n // }\r\n // }).catch((error) => {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': the promise of getStoreData () has some error; error: ' + error;\r\n\r\n // requestAnimationFrame(() => {\r\n // console.log(this.message);\r\n // });\r\n // });\r\n // }\r\n // else {\r\n // this.message = this.date.getTime() + ': in getDictionaryFromIndexedDb (entityName: ' + entityName + ', key: ' + key + ') either storeName or the key or both were null or undefined.';\r\n // reject(this.message);\r\n // }\r\n // }).catch((error) => {\r\n // // debugger;\r\n // this.message = this.date.getTime() + ': the promise of getDictionaryFromIndexedDb (entityName: ' + entityName + ', key: ' + key + ') has some error; error: ' + error;\r\n\r\n // requestAnimationFrame(() => {\r\n // console.log(this.message);\r\n // });\r\n // });\r\n //}\r\n // ------------------------------------------------------------------------\r\n\r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { DbDexieService } from './dbDexieService.service';\r\nimport { DbDexieToDictionaryService } from './dbDexieToDictionaryService.service';\r\nimport { LocalStorageService } from './localStorageService.service';\r\nimport { TempFileSaverService } from './tempFileSaverService.service';\r\nimport { DictionaryIOService } from '../dictionaryServiceService/dictionaryIOService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DbServiceService {\r\n constructor (public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n private dbDexieService : DbDexieService,\r\n private dictionaryIOService: DictionaryIOService,\r\n private localStorageService: LocalStorageService,\r\n private tempFileSaverService: TempFileSaverService,\r\n )\r\n {\r\n } \r\n // ------------------------------------------------------------------\r\n setLocalStorageService(ls: LocalStorageService): void {\r\n this.localStorageService = ls;\r\n }\r\n // -----------------------------------------------------------------\r\n getLocalStorageService(): LocalStorageService {\r\n return this.localStorageService;\r\n }\r\n // ------------------------------------------------------------------\r\n setTempFileSaverService(tfss: TempFileSaverService): void {\r\n this.tempFileSaverService = tfss;\r\n }\r\n // -----------------------------------------------------------------\r\n getTempFileSaverService(): TempFileSaverService {\r\n return this.tempFileSaverService;\r\n }\r\n // ------------------------------------------------------------------\r\n setDbDexieService (ds : DbDexieService): void {\r\n this.dbDexieService = ds;\r\n return;\r\n }\r\n getDbDexieService () : DbDexieService {\r\n return this.dbDexieService;\r\n }\r\n // ------------------------------------------------------------------\r\n setDictionaryIOService (ds : DictionaryIOService) : void {\r\n this.dictionaryIOService = ds;\r\n return;\r\n }\r\n getDictionaryIOService () : DictionaryIOService {\r\n return this.dictionaryIOService;\r\n }\r\n // ------------------------------------------------------------------\r\n setDbDexieToDictionaryService (indxs : DbDexieToDictionaryService ) : void\r\n {\r\n this.dbDexieToDictionaryService = indxs;\r\n return;\r\n }\r\n getDbDexieToDictionaryService () : DbDexieToDictionaryService\r\n {\r\n return this.dbDexieToDictionaryService;\r\n }\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Login } from '../../models/account/login.model';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { ClientData } from '../../models/common/clientData.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { NaclPairClient } from '../../models/crypto/naclPairClient.model';\r\nimport { NaclPairLocal } from '../../models/crypto/naclPairLocal.model';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n// ===========================================================================\r\n// Note: Tested, works! May 15, 2020\r\n// Note: LocalStorage's max capacity is 5MB. Hence only credentials and user's profile info are stored there for Pwa.\r\n// Note: Data is NOT encrypted/decrypted by this service-component.\r\n// However, most of its methods accepts a 'BoxNonce' or 'NaclPairClient' model,\r\n// and stores the model data after applying JSON.stringify(model),\r\n// and returns data after applying JSON.parse(model),\r\n//\r\n// Note: in===private; out===public\r\n// ===========================================================================\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class LocalStorageService implements OnDestroy {\r\n public boxNonce: BoxNonceEntity = new BoxNonceEntity();\r\n public clientData: ClientData = new ClientData();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public heartbeat: Heartbeat = new Heartbeat();\r\n public isMobilevar = false;\r\n public login: Login = new Login();\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n constructor(\r\n )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.loginSuccessEmitter ) )\r\n {\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n // debugger;\r\n this.loginSuccess = result;\r\n } );\r\n }\r\n // ---------------------------------------------------\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.isMobileEmitter ) )\r\n {\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n this.isMobilevar = result;\r\n } );\r\n }\r\n }\r\n// ------------------------------------------------------------------\r\n initialize () : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.getLoginSuccess ) ) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n\r\n\r\n this.clientData.id = this.loginSuccess.signedInUserId;\r\n this.clientData.key = this.loginSuccess.signedInUserId.toString();\r\n this.clientData.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.getIsMobile ) )\r\n {\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n }\r\n }\r\n// ------------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n// ------------------------------------------------------------------\r\n isLocalStorage(sitUserId: number): any {\r\n if ( localStorage.length > 0 )\r\n {\r\n let tmpVal = localStorage.getItem( sitUserId.toString() );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tmpVal ) )\r\n {\r\n return true;\r\n // let localData = JSON.parse(tmpVal );\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( localData ) )\r\n // {\r\n // return true;\r\n // }\r\n }\r\n\r\n }\r\n }\r\n// ------------------------------------------------------------------\r\n getLocalSaltyPair(): any {\r\n // debugger;\r\n if ( localStorage.length > 0 )\r\n {\r\n let tmpVal = localStorage.getItem( 'saltyPair' );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tmpVal ) )\r\n {\r\n const clientData = JSON.parse( tmpVal as string );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( clientData )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( clientData.in )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( clientData.out ) )\r\n {\r\n return clientData;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n// ------------------------------------------------------------------\r\n // Note: we save loginSuccess separately than ClientData since it's key is different and needs to be loaded before user logs in\r\n setSaltyPair(salty: NaclPairClient): any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(salty)) {\r\n const localSalty = new NaclPairLocal();\r\n if (localStorage.length > 0) {\r\n const removeSalty = localStorage.getItem('saltyPair');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(removeSalty)) {\r\n localStorage.removeItem('saltyPair');\r\n // debugger;\r\n }\r\n }\r\n localSalty.out = salty.publicKey;\r\n localSalty.in = salty.secretKey;\r\n localSalty.date = salty.date;\r\n // debugger;\r\n // Note: on clientData, each model's time is when the model was saved, not the original model time that came from the server.\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(localSalty)) {\r\n // TODO:Test!\r\n localSalty.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n localStorage.setItem('saltyPair', JSON.stringify(localSalty));\r\n // debugger;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n getLoginSuccess(): any {\r\n // debugger;\r\n if (localStorage.length > 0) {\r\n const clientData = JSON.parse(localStorage.getItem('loginSuccess') as string);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData)) {\r\n return clientData;\r\n }\r\n }\r\n return null;\r\n }\r\n// ------------------------------------------------------------------\r\n updateLoginSuccess(inBn: BoxNonceEntity): any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inBn)) {\r\n const localLS = new BoxNonceEntity();\r\n localLS.box = inBn.box;\r\n localLS.nonce = inBn.nonce;\r\n localLS.id = this.loginSuccess.signedInUserId;\r\n localLS.cryptUserKey = this.loginSuccess.cryptUserKey;\r\n localLS.entityName = 'loginSuccess';\r\n // Note: on clientData, each model's time is when the model was saved, not the original model time that came from the server.\r\n localLS.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n // debugger;\r\n localStorage.setItem('loginSuccess', JSON.stringify(localLS));\r\n // debugger;\r\n return true;\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n // Note: we save loginSuccess separately than ClientData since it's key is different and needs to be loaded before user logs in\r\n setLoginSuccess(result: BoxNonceEntity): any {\r\n // debugger;\r\n if (localStorage.length > 0) {\r\n const localLSuccess = localStorage.getItem('loginSuccess');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(localLSuccess)) {\r\n localStorage.removeItem('loginSuccess');\r\n // debugger;\r\n return this.updateLoginSuccess(result);\r\n }\r\n }\r\n else {\r\n return this.updateLoginSuccess(result);\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n getPreference(sitUserId: number): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserId) && sitUserId > 0) {\r\n if (localStorage.length > 0) {\r\n const clientData = JSON.parse(localStorage.getItem(sitUserId.toString()) as string);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.preference)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.preference.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.preference.nonce)) {\r\n return clientData.preference;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n setPreference(preference: BoxNonceEntity): any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference)\r\n && preference.id > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(preference.nonce)) {\r\n this.clientData.preference = preference;\r\n // debugger;\r\n this.clientData.preference.id = preference.id;\r\n // Note: on clientData, each model's time is when the model was saved, not the original model time\r\n // that came from the server.\r\n this.clientData.preference.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n localStorage.setItem(preference.id.toString(), JSON.stringify(this.clientData));\r\n return true;\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n getProfileInfo(sitUserId: number): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserId) && sitUserId > 0) {\r\n if (localStorage.length > 0) {\r\n const clientData = JSON.parse(localStorage.getItem(sitUserId.toString()) as string);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.profileInfo)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.profileInfo.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.profileInfo.nonce)) {\r\n return clientData.profileInfo;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n setProfileInfo(profileInfo: BoxNonceEntity): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfo)\r\n && profileInfo.id > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfo.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfo.nonce)) {\r\n this.clientData.profileInfo = profileInfo;\r\n // debugger;\r\n this.clientData.profileInfo.id = profileInfo.id;\r\n // Note: on clientData, each model's time is when the model was saved, not the original model time\r\n // that came from the server.\r\n this.clientData.profileInfo.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n localStorage.setItem(profileInfo.id.toString(), JSON.stringify(this.clientData));\r\n return true;\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n getProfileTiles(): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.signedInUserId) && this.loginSuccess.signedInUserId > 0) {\r\n if (localStorage.length > 0) {\r\n const clientData = JSON.parse(localStorage.getItem(this.loginSuccess.signedInUserId.toString()) as string);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.profileTiles)\r\n && clientData.profileTiles.length > 0) {\r\n // debugger;\r\n return clientData.profileTiles;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n setProfileTiles(profileTiles: BoxNonceEntity[]): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileTiles) && profileTiles.length > 0 ) {\r\n this.clientData.profileTiles = profileTiles;\r\n // debugger;\r\n // Note: on clientData, each model's time is when the model was saved, not the original model time that came from the server.\r\n // However, for array-entries such as profileTiles, we keep the server-date of each entry and\r\n // assume the date of the array to be that os clientDataModel\r\n localStorage.setItem(this.loginSuccess.signedInUserId.toString(), JSON.stringify(this.clientData));\r\n return true;\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n getProfilePics(sitUserId: number): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserId) && sitUserId > 0) {\r\n if (localStorage.length > 0) {\r\n const clientData = JSON.parse(localStorage.getItem(sitUserId.toString()) as string);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.profilePics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.profilePics.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(clientData.profilePics.nonce)) {\r\n return clientData.profilePics;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n// ------------------------------------------------------------------\r\n setProfilePics(profilePics: BoxNonceEntity): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)\r\n && profilePics.id > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.nonce)) {\r\n this.clientData.profilePics = profilePics;\r\n // debugger;\r\n this.clientData.profilePics.id = profilePics.id;\r\n // Note: on clientData, each model's time is when the model was saved, not the original model time that came from the server.\r\n this.clientData.profilePics.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n localStorage.setItem(profilePics.id.toString(), JSON.stringify(this.clientData.profilePics));\r\n // debugger;\r\n return true;\r\n }\r\n return false;\r\n }\r\n // =================================================================================\r\n}\r\n\r\n","'use strict'\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Login } from '../../models/account/login.model';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { ClientData } from '../../models/common/clientData.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { DbDexieService } from './dbDexieService.service';\r\n\r\n// ===========================================================================\r\n// Note: Tested, works! May 15, 2020\r\n// Note: LocalStorage's max capacity is 5MB. Hence only credentials\r\n// and user's profile info are stored there for Pwa.\r\n// Note: Data is NOT encrypted/decrypted by this service-component.\r\n// However, most of its methods accepts a 'BoxNonce' or 'NaclPairClient' model,\r\n// and stores the model data after applying JSON.stringify(model),\r\n// and returns data after applying JSON.parse(model),\r\n// ===========================================================================\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class TempFileSaverService implements OnDestroy {\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public clientData: ClientData = new ClientData();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public heartbeat: Heartbeat = new Heartbeat();\r\n public isMobilevar = false;\r\n public kvAny: KvAny = new KvAny();\r\n public login: Login = new Login();\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public tempFileSubscription!: Subscription;\r\n public tempFiles: File[] = [];\r\n public tempFileStringArr: string[] = [];\r\n constructor (public dbDexieService: DbDexieService\r\n ) {\r\n this.initialize ();\r\n }\r\n // ---------------------------------------------------------------\r\n initialize () : void\r\n {\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.getLoginSuccess ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.loginSuccessEmitter ) )\r\n {\r\n // debugger;\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n // debugger;\r\n this.loginSuccess = result;\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n } );\r\n }\r\n this.clientData.id = this.loginSuccess.signedInUserId;\r\n this.clientData.key = this.loginSuccess.signedInUserId.toString();\r\n this.clientData.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // ---------------------------------------------------\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.isMobileEmitter ) )\r\n {\r\n EmitterSubjectService.isMobileEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n this.isMobilevar = result;\r\n } );\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.getIsMobile ) )\r\n {\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // getTempFiles(): any {\r\n // // debugger;\r\n // // Note: this subscriber will emit the data upon receiving\r\n // const fileData = this.tempFileSubscriber();\r\n // }\r\n // ---------------------------------------------------------------\r\n // returns an observable\r\n //getSaltedTempFilesPromise(id: number): any {\r\n // if (id > 0) {\r\n // // debugger;\r\n \r\n // try {\r\n // this.indexeddbService.getAll('TempFile').then(output => {\r\n // setTimeout(() => {\r\n // // debugger;\r\n // subscriber.next(output);\r\n // subscriber.complete();\r\n // }, 1500);\r\n // });\r\n // } catch (e) {\r\n // subscriber.error(e);\r\n // }\r\n // }\r\n\r\n // );\r\n\r\n // // -----------------------------------------------------------------\r\n // /* this.tempFilesForServerObservable = Observable.create((observer) => {\r\n // dbService.getAll('TempFile').then(output => {\r\n // setTimeout(() => {\r\n // //debugger;\r\n // observer.next(output);\r\n // }, 1500);\r\n // });\r\n // }, error => {\r\n // //debugger;\r\n // console.log(error);\r\n // return false;\r\n // }); */\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n salt (model : any): BoxNonceEntity {\r\n if (model) {\r\n return this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(JSON.parse(JSON.stringify(model))));\r\n }\r\n return new BoxNonceEntity();\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: salted boxNonce is converted into base64-string\r\n // so to retrive the file, the indexedDb provided data first need to be JSON.parsed,\r\n // and then unsalted.\r\n // ---------------------------------------------------------------\r\n saveTempFile(tFile: string) {\r\n const dbBoxNonxeArr: BoxNonceEntity[] = [];\r\n let dbBoxNonce: BoxNonceEntity = new BoxNonceEntity();\r\n dbBoxNonce = this.salt(tFile);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dbBoxNonce)) {\r\n dbBoxNonce.id = this.loginSuccess.signedInUserId;\r\n dbBoxNonce.key = this.loginSuccess.signedInUserId.toString();\r\n dbBoxNonce.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n dbBoxNonxeArr.push(dbBoxNonce);\r\n dbBoxNonce.entityName = 'tempFile';\r\n\r\n // setup the slave\r\n // var kvAnyArr = new KvAnyArr();\r\n // kvAnyArr.modelName = 'TempFile';\r\n // kvAnyArr.value = dbBoxNonxeArr; // value is the payload of the user (any user)\r\n // and can possibly the signed-in-user) to be viewd\r\n // kvAnyArr.key = this.loginSuccess.signedInUserId.toString();\r\n // key is should be cryptUserId of the user (any user) and can possibly the signed-in-user) to be viewd\r\n // kvAnyArr.id = this.loginSuccess.signedInUserId;; // id is the id of the user (any user)\r\n // and can possibly the signed-in-user) to be viewd\r\n // kvAnyArr.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n\r\n this.dbDexieService.addModelObservable(dbBoxNonce).subscribe(data => {\r\n requestAnimationFrame(() => {\r\n console.log('saveTempFile() is successful for: ' + data);\r\n });\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n saveTempFileBlob(tFileBlob: Blob) {\r\n const dbBoxNonxeArr: BoxNonceEntity[] = [];\r\n let dbBoxNonce: BoxNonceEntity = new BoxNonceEntity();\r\n dbBoxNonce = this.salt(tFileBlob);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dbBoxNonce)) {\r\n dbBoxNonce.id = this.loginSuccess.signedInUserId;\r\n dbBoxNonce.key = this.loginSuccess.signedInUserId.toString();\r\n dbBoxNonce.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n dbBoxNonxeArr.push(dbBoxNonce);\r\n dbBoxNonce.entityName = 'tempFile';\r\n\r\n // var kvAnyArr = new KvAnyArr();\r\n // kvAnyArr.modelName = 'TempFile';\r\n // kvAnyArr.value = dbBoxNonxeArr; // value is the payload of the user (any user)\r\n // and can possibly the signed-in-user) to be viewd\r\n // kvAnyArr.key = this.loginSuccess.signedInUserId.toString();\r\n // key is should be cryptUserId of the user (any user) and can possibly the signed-in-user) to be viewd\r\n // kvAnyArr.id = this.loginSuccess.signedInUserId;; // id is the id of the user (any user)\r\n // and can possibly the signed-in-user) to be viewd\r\n // kvAnyArr.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n\r\n this.dbDexieService.addModelObservable(dbBoxNonce).subscribe(data => {\r\n requestAnimationFrame(() => {\r\n console.log('saveTempFileBlob() is successful for: ' + data);\r\n });\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Emits the data upon receiving.\r\n // tempFileSubscriber(): any {\r\n // let model;\r\n // this.tempFilesSubscription = this.indexedDbService.tempFileObservable$?.pipe(\r\n // map(e => {\r\n // // do something with data\r\n // // debugger;\r\n // model = e as unknown;\r\n // this.tempFiles.push(model as File);\r\n // EmitterSubjectService.emitFile(this.tempFiles[0]);\r\n // return this.tempFiles;\r\n // }\r\n // ))\r\n // .subscribe({\r\n // next(output) {\r\n // //this.profilePics = output;\r\n // // debugger;\r\n // return output;//this.tempFiles;\r\n // }\r\n // });\r\n // }\r\n // =================================================================================\r\n}\r\n\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DbServiceService } from '../dbServiceService/dbServiceService.service';\r\nimport { PhotoPrivacyService } from '../photoServiceService/photoPrivacyService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { DictionaryService } from './dictionaryService.service';\r\n\r\n// =====================================================================\r\n\r\n// =====================================================================\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class DictionaryIOService\r\n{\r\n public randomNumberGenerator$ : Observable;\r\n public randomNumber = 0;\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService;\r\n public loginSuccess : LoginSuccess;\r\n constructor (public photoPrivacyService : PhotoPrivacyService,\r\n public dbServiceService : DbServiceService,\r\n private dictionaryService : DictionaryService,) {\r\n this.dbDexieToDictionaryService = this.dbServiceService.getDbDexieToDictionaryService();\r\n \r\n\t}\r\n\t// ---------------------------------------------------------------\r\n\tpublic createProfilePicsFromKvPhotoDictionary (sitUserId : number) : ProfilePics | any {\r\n\t\t// debugger;\r\n\t\tlet profilePics = new ProfilePics();\r\n\t\tif (sitUserId > 0) {\r\n\t\t\tprofilePics.sitUserId = sitUserId;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dictionaryService.kvPhotoDictionary)\r\n && this.dictionaryService.kvPhotoDictionary.size > 0) {\r\n\t\t\t\t// debugger;\r\n profilePics = this.dictionaryService.getProfilePicsFromKvPhotoDictionary(sitUserId); // KvPhotos are not filtered yet.\r\n\t\t\t\t// debugger;\r\n\t\t\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)\r\n\t\t\t\t\t&& !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.unFilteredKvPhotoArr)\r\n\t\t\t\t\t&& profilePics.unFilteredKvPhotoArr.length > 0) {\r\n\t\t\t\t\t// debugger;\r\n\t\t\t\t\tthis.photoPrivacyService.filterKvPhotoArr(profilePics.unFilteredKvPhotoArr).subscribe(result => {\r\n\t\t\t\t\t\t// debugger;\r\n\t\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\t\tprofilePics.filteredKvPhotoArr = result;\r\n\t\t\t\t\t\t\t// debugger;\r\n\t\t\t\t\t\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.filteredKvPhotoArr) && profilePics.filteredKvPhotoArr.length > 0) {\r\n\t\t\t\t\t\t\t\t// debugger;\r\n\t\t\t\t\t\t\t\tprofilePics.filteredKvPhotoArr.forEach(e => {\r\n\t\t\t\t\t\t\t\t\tif (e) {\r\n\t\t\t\t\t\t\t\t\t\tprofilePics.filteredKvPhotoDictionary.set(e.photoBnId, e);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn profilePics;\r\n\t\t}\r\n\t\telse return null;\r\n\t}\r\n // ------------------------------------------------------------------------------\r\n public getProfilePicsFromDictionary (sitUserId : number) : ProfilePics {\r\n // debugger;\r\n let date = new Date();\r\n\t\tlet pPics : ProfilePics; \r\n \r\n if (sitUserId > 0) {\r\n pPics = this.createProfilePicsFromKvPhotoDictionary(sitUserId);\r\n\t\t\treturn pPics;\r\n }\r\n }\r\n // ------------------------------------------------------------------------------\r\n public populateSitUserIdDictionaryFromIndexedDb () : any {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.dbDexieToDictionaryService.getDictionary('sitUserId', this.loginSuccess.signedInUserId.toString())\r\n .subscribe((sitUserIdDictionary : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserIdDictionary) && sitUserIdDictionary.size() > 0) {\r\n this.dictionaryService.sitUserIdDictionary = StringServiceStatic.deepCloneJson(sitUserIdDictionary);\r\n console.log('sitUserIdDictionary.size: : ', sitUserIdDictionary.size());\r\n }\r\n else {\r\n console.log('getDictionaryFromIndexedDb returned a null or undefined result for sitUserIdDictionary ');\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public createDictionaryFromDbDexieDb (entityName : string) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(entityName)) {\r\n switch (entityName.toLowerCase()) {\r\n case 'all':\r\n this.dbDexieToDictionaryService.createAllDictionariesFromDbDexie();\r\n break;\r\n case 'chatConversation':\r\n case 'chatHistory':\r\n case 'chat':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('ChatConversation') && this.dbDexieToDictionaryService.doesStoreHaveData('ChatConversation')) {\r\n this.dbDexieToDictionaryService.createAllChatDictionariesFromDbDexie();\r\n }\r\n break;\r\n case 'email': case 'emailtile':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('emailTile') && this.dbDexieToDictionaryService.doesStoreHaveData('emailTile')) {\r\n this.dbDexieToDictionaryService.createAllEmailDictionariesFromDbDexie();\r\n }\r\n break;\r\n case 'enote': case 'enotetile': case 'note': case 'notification':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('enoteTile') && this.dbDexieToDictionaryService.doesStoreHaveData('enoteTile')) {\r\n this.dbDexieToDictionaryService.createAllEnoteDictionariesFromDbDexie();\r\n }\r\n break;\r\n case 'kvPhoto':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('kvPhoto') && this.dbDexieToDictionaryService.doesStoreHaveData('kvPhoto')) {\r\n this.dbDexieToDictionaryService.createKvPhotoDictionaryFromDbDexie();\r\n }\r\n break;\r\n case 'preference':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('preference') && this.dbDexieToDictionaryService.doesStoreHaveData('preference')) {\r\n this.dbDexieToDictionaryService.createPreferenceDictionaryFromDbDexie();\r\n }\r\n break;\r\n case 'profilecontent':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('profileContent') && this.dbDexieToDictionaryService.doesStoreHaveData('profileContent')) {\r\n this.dbDexieToDictionaryService.createProfileContentDictionaryFromDbDexie();\r\n }\r\n break;\r\n case 'profileinfo':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('profileInfo') && this.dbDexieToDictionaryService.doesStoreHaveData('profileInfo')) {\r\n this.dbDexieToDictionaryService.createProfileInfoDictionaryFromDbDexie();\r\n }\r\n break;\r\n case 'profiletile':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('profileTile') && this.dbDexieToDictionaryService.doesStoreHaveData('profileTile')) {\r\n this.dbDexieToDictionaryService.createProfileTileDictionaryFromDbDexie();\r\n }\r\n break;\r\n case 'profilepics':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('profilePics') && this.dbDexieToDictionaryService.doesStoreHaveData('profilePics')) {\r\n this.dbDexieToDictionaryService.createProfilePicsDictionaryFromDbDexie();\r\n }\r\n break;\r\n case 'situserid':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('sitUserId') && this.dbDexieToDictionaryService.doesStoreHaveData('sitUserId')) {\r\n this.dbDexieToDictionaryService.createSitUserIdDictionaryFromDbDexie();\r\n }\r\n break;\r\n case 'situser':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('sitUser') && this.dbDexieToDictionaryService.doesStoreHaveData('sitUser')) {\r\n this.dbDexieToDictionaryService.createSitUserDictionaryFromDbDexie();\r\n }\r\n break;\r\n case 'memberactivity':\r\n if (this.dbDexieToDictionaryService.isObjectStoreNameFoundInTables('memberActivity') && this.dbDexieToDictionaryService.doesStoreHaveData('memberActivity')) {\r\n this.dbDexieToDictionaryService.createAllMemberActivityDictionariesFromDbDexie();\r\n }\r\n break;\r\n default:\r\n\r\n break;\r\n }\r\n return true;\r\n }\r\n else return false;\r\n }\r\n // ----------------------------------------------------------------------\r\n\r\n // ----------------------------------------------------------------------\r\n\r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\n// //import { Injectable, OnDestroy, OnInit } from '@angular/core';\r\n// //import { Subject } from 'rxjs';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\n// import { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { Subject } from 'rxjs';\r\n// import * as Collections from 'typescript-collections';\r\nimport { Dictionary } from \"dictionaryjs\"; // ref: https://github.com/phanxgames/dictionaryjs\r\nimport { BTree } from 'digitree';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Chat } from '../../models/chat/chat.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { LogError } from '../../models/common/logError.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { SpinnerModel } from '../../models/common/spinnerModel.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { MemberActivity } from '../../models/member/memberActivity.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\n// import { IndexedDbService } from '../dictionaryServiceService/indexedDbService.service';\r\nimport { ChatActivity } from '../../models/chat/chatActivity.model';\r\nimport { BinarySearchService } from '../searchSortServiceService/binarySearchService.service';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { Content } from '../../models/common/content.model';\r\nimport { Profile } from '../../models/profile/profile.model';\r\nimport { Person } from '../../models/common/person';\r\n//import { ArrayServiceStatic } from './arrayServiceStatic.service';\r\n//import { ArraySupportServiceStatic } from './arraySupportServiceStatic.service';\r\n//import { CopyServiceStatic } from './commonStaticServices/copyServiceStatic.service';\r\n//import { SlakezSaltServiceStatic } from './commonStaticServices/slakezSaltServiceStatic.service';\r\n//import { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n//import { StringServiceStatic } from './stringServiceStatic.service';\r\n\r\n\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n/*\r\n * ref:https:// github.com/basarat/typescript-collections/blob/release/README.md#a-sample-on-dictionary\r\n * TODO: This service should read data from the indexedDB and save it to indexedDb periodically.\r\n */\r\nexport class DictionaryService implements OnDestroy {\r\n public allDictionaries = new Dictionary>();\r\n public allDictionaryDataCount = new Dictionary();\r\n public binarySearchService : BinarySearchService = new BinarySearchService();\r\n\r\n public buddyDictionary = new Dictionary ();\r\n\r\n public chatConversationDictionary = new Dictionary();\r\n public chatConversationIdDictionary = new Dictionary(); // ConversationId == sitUserId\r\n public count : number = 0;\r\n public chatActivityDictionary = new Dictionary(); // to hold all chatActivities; can be used to create a conversation if chatAccivityIds are present\r\n\r\n public dexieTableDictionary : any;\r\n\r\n public emailTileDictionary = new Dictionary(); // DO NOT save Picture in Email\r\n // public emailTileIdDictionary = new Dictionary();\r\n public enoteTileDictionary = new Dictionary();\r\n // public enoteTileIdDictionary = new Dictionary();\r\n public errorLogDictionary = new Dictionary();\r\n public heartbeatDictionary = new Dictionary();\r\n public idbStoreIndexDictionary = new Dictionary();\r\n public idbStoreTransactionDictionary = new Dictionary();\r\n public kvPhotoDictionary = new Dictionary();\r\n public loginSuccessDictionary = new Dictionary();\r\n\r\n\r\n public masterErrorLogMap = new Map(); // key==JsDate.Ticks\r\n // ================================================================================\r\n // MVC (Model-View-Controller) Dictionaries:\r\n // -----------------------------------------\r\n \r\n public componentDictionary = new Dictionary();\r\n public filteredKvPhotoDictionary = new Dictionary();\r\n public serviceDictionary = new Dictionary();\r\n public moduleDictionary = new Dictionary(); \r\n public scssClassDictionary = new Dictionary();\r\n public scssFileDictionary = new Dictionary();\r\n public scssIdDictionary = new Dictionary(); \r\n public modelDictionary = new Dictionary>();\r\n\r\n public unFilteredKvPhotoDictionary = new Dictionary();\r\n public viewDictionary = new Dictionary>();\r\n public controllerDictionary = new Dictionary>();\r\n\r\n\r\n // communication dictionaries:\r\n public myChatIdDictionary = new Dictionary();\r\n public myChatDictionary = new Dictionary();\r\n public myEmailIdDictionary = new Dictionary();\r\n public myEmailDictionary = new Dictionary();\r\n public myNotificationIdDictionary = new Dictionary();\r\n public myNotificationDictionary = new Dictionary();\r\n public myOutboxChatIdDictionary = new Dictionary();\r\n public myOutboxChatDictionary = new Dictionary();\r\n\r\n public myErrorLogMap = new Map(); // key==JsDate.Ticks\r\n\r\n // first group of memberActivities: Block/Friend/Like: //for indexedDb\r\n // public myMemberActivityDictionary = new Dictionary();\r\n // public myBlockDictionary = new Dictionary();\r\n // public myFriendDictionary = new Dictionary();\r\n // public myLikeDictionary = new Dictionary();\r\n\r\n public myMemberActivityDictionary : Dictionary = new Dictionary();\r\n public myMemberTrackingActivityDictionary : Dictionary = new Dictionary();\r\n public myMemberLockingActivityDictionary : Dictionary = new Dictionary();\r\n\r\n public myBlockDictionary : Dictionary = new Dictionary();\r\n public myFriendDictionary : Dictionary = new Dictionary();\r\n public myLikeDictionary : Dictionary = new Dictionary();\r\n public myStarDictionary : Dictionary = new Dictionary();\r\n public myTrackDictionary : Dictionary = new Dictionary();\r\n public myUnlockDictionary : Dictionary = new Dictionary();\r\n public myWinkDictionary : Dictionary = new Dictionary();\r\n \r\n\r\n // second group of memberStarTrackWinkActivities: Star/Track/Wink: //for indexedDb\r\n // public myMemberStarTrackWinkActivityDictionary = new Dictionary();\r\n // public myStarDictionary = new Dictionary();\r\n // public myTrackDictionary = new Dictionary();\r\n // public myWinkDictionary = new Dictionary();\r\n\r\n // third group of memberLockingActivities: Unlock: //for indexedDb\r\n // public myMemberLockingActivityDictionary = new Dictionary();\r\n // public myUnlockDictionary = new Dictionary();\r\n\r\n // Note: These dictionaries has a matching counterparts in MemberActivitiesService where used to populate these dictionaries:\r\n // --------------------------------------------------------------------------------------------------------------------------\r\n public myProfilePicsDictionary = new Dictionary();\r\n\r\n public personDictionary = new Dictionary();\r\n public photoDictionary = new Dictionary();\r\n public preferenceDictionary = new Dictionary();\r\n public profileDictionary = new Dictionary(); \r\n public profileContentDictionary = new Dictionary();\r\n public profileInfoDictionary = new Dictionary();\r\n public profilePicsDictionary = new Dictionary();\r\n public profileTileIdDictionary = new Dictionary();\r\n public profileTileDictionary = new Dictionary();\r\n public sitUserDictionary = new Dictionary();\r\n public sitUserTree = new BTree(e => e.sitUserId);\r\n\r\n // SitUserIds are used to create ProfileTiles at MembersIndividually\r\n public sitUserIdDictionary = new Dictionary();\r\n public storeNameDictionary = new Dictionary();\r\n \r\n // Note: These dictionaries has a matching counterparts in MemberActivitiesService where used to populate these dictionaries:\r\n // --------------------------------------------------------------------------------------------------------------------------\r\n\r\n // first group of memberActivities: Block/Friend/Like: //for indexedDb\r\n public yourMemberActivityDictionary = new Dictionary();\r\n\r\n \r\n public yourBlockDictionary = new Dictionary();\r\n public yourFriendDictionary = new Dictionary();\r\n public yourLikeDictionary = new Dictionary();\r\n\r\n // second group of memberStarTrackWinkActivities: Star/Track/Wink: //for indexedDb\r\n public yourMemberTrackingActivityDictionary = new Dictionary();\r\n public yourStarDictionary = new Dictionary();\r\n public yourTrackDictionary = new Dictionary();\r\n public yourWinkDictionary = new Dictionary();\r\n\r\n\r\n // third group of memberLockingActivities: Unlock: //for indexedDb\r\n public yourMemberLockingActivityDictionary = new Dictionary();\r\n public yourUnlockDictionary = new Dictionary();\r\n\r\n // --------------------------------------------------------------------------------\r\n // Note: Bn dictionaries are used to hold encrypted data that when complete for a certain user, will be saved in indexedDb.\r\n // When indexedDb data is read, it will be unencrypted and stored in respected regular-unencrypted-dictionary (non-Bn-dictionary).\r\n // -------------------------------------------------------------------------------\r\n public preferenceBnDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n public profileInfoBnDictionary = new Dictionary(); // key=sitUserId, value=ProfileInfo\r\n\r\n\r\n public profileTileIdBnDictionary = new Dictionary(); // key=sitUserId, value=ProfileTileId[]\r\n public profileTileBnDictionary = new Dictionary(); // key=sitUserId, value=ProfileTile\r\n\r\n public photoBnDictionary = new Dictionary(); // key=sitUserId, value=BoxNonceEntity[]\r\n public userPhotoBnIdDictionary = new Dictionary(); // key=sitUserId, value=PhotoBnId[]\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public sitUser : SitUser = new SitUser();\r\n\r\n public spinnerTimerDictionary = new Dictionary(); // key=sitUserId, value=PhotoBn\r\n private emitterDestroyed$ : Subject = new Subject();\r\n // --------------------------------------------------------------------------------\r\n \r\n // ================================================================================\r\n // All components' dictonaries:\r\n public myAllEnoteDictionary : Dictionary = new Dictionary();\r\n public yourAllEnoteDictionary : Dictionary = new Dictionary();\r\n // --------------------------------------------------------------------------------\r\n constructor () {\r\n // this.inInitialize();\r\n this.kvPhotoDictionary = new Dictionary();\r\n\r\n // this.allDictionaries = new Dictionary>(); // = new Dictionary>();\r\n // this.allDictionaryDataCount = new Dictionary();\r\n this.storeNameDictionary = new Dictionary();\r\n this.populateStoreNameDictionary();\r\n this.populateAllDictionaries();\r\n }\r\n // --------------------------------------------------------------------------------\r\n\r\n public populateAllDictionaries () : void {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.storeNameDictionary) || this.storeNameDictionary.size === 0) {\r\n this.populateStoreNameDictionary();\r\n // debugger;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.allDictionaries) || this.allDictionaries.size === 0) {\r\n this.allDictionaries = new Dictionary>();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.allDictionaries)) {\r\n this.storeNameDictionary?.values()?.map((k : any) => {\r\n // debugger;\r\n\r\n // TODO: add each dictionary to one of the three dictionaries: i) modelDictionary ii) viewDictionary iii) controllerDictionary\r\n // i.e categorize each doctionary to the appropriate one: i) modelDictionary ii) viewDictionary iii) controllerDictionary\r\n switch (k.toLowerCase()) {\r\n case 'buddy':\r\n // this.buddyDictionary = new Dictionary();\r\n this.allDictionaries.set('buddyDictionary', this.buddyDictionary);\r\n break;\r\n case 'chatactivity':\r\n // this.chatHistoryDictionary = new Dictionary(); // DO NOT save Picture in Chat\r\n this.allDictionaries.set('chatActivityDictionary', this.chatActivityDictionary);\r\n break;\r\n case 'chatconversationid':\r\n // this.chatHistoryIdDictionary = new Dictionary(); // DO NOT save Picture in Chat\r\n this.allDictionaries.set('chatConversationIdDictionary', this.chatConversationIdDictionary);\r\n break;\r\n case 'chatconversation':\r\n // this.chatHistoryDictionary = new Dictionary(); // DO NOT save Picture in Chat\r\n this.allDictionaries.set('chatConversationDictionary', this.chatConversationDictionary);\r\n break;\r\n case 'dexietable':\r\n this.dexieTableDictionary = new Dictionary>(); // key=storeName, value=objecStore === dexieTable // (indexedDb.objectStore)\r\n this.allDictionaries.set('dexieTableDictionary', this.dexieTableDictionary);\r\n break;\r\n //case 'emailtileid':\r\n // // this.eMailTileIdDictionary = new Dictionary();\r\n // this.allDictionaries.set('emailTileIdDictionary', this.emailTileIdDictionary);\r\n // break;\r\n case 'emailtile':\r\n // this.eMailTileDictionary = new Dictionary();\r\n this.allDictionaries.set('emailTileDictionary', this.emailTileDictionary);\r\n break;\r\n //case 'enotetileid':\r\n // // this.eNoteTileIdDictionary = new Dictionary();\r\n // this.allDictionaries.set('enoteTileIdDictionary', this.enoteTileIdDictionary);\r\n // break;\r\n case 'enotetile':\r\n // this.eNoteTileDictionary = new Dictionary(); // DO NOT save Picture in Notification\r\n this.allDictionaries.set('enoteTileDictionary', this.enoteTileDictionary);\r\n break;\r\n case 'errorlog':\r\n // this.errorLogDictionary = new Dictionary();\r\n this.allDictionaries.set('errorLogDictionary', this.errorLogDictionary);\r\n break;\r\n case 'heartbeat':\r\n // this.heartbeatDictionary = new Dictionary();\r\n this.allDictionaries.set('heartbeatDictionary', this.heartbeatDictionary);\r\n break;\r\n case 'idbstoreindex':\r\n // this.idbStoreIndexDictionary = new Dictionary(); // key=storeName, value=objectStore // (indexedDb.objectStore)\r\n this.allDictionaries.set('idbStoreIndexDictionary', this.idbStoreIndexDictionary);\r\n break;\r\n case 'idbstoretransaction':\r\n // this.idbStoreTransactionDictionary = new Dictionary(); // key=storeName, value=objectStoreTransaction\r\n this.allDictionaries.set('idbStoreTransactionDictionary', this.idbStoreTransactionDictionary);\r\n break;\r\n case 'kvphoto':\r\n // this.kvPhotoDictionary = new Dictionary();\r\n this.allDictionaries.set('kvPhotoDictionary', this.kvPhotoDictionary);\r\n break;\r\n case 'loginsuccess':\r\n // this.loginSuccessDictionary = new Dictionary();\r\n this.allDictionaries.set('loginSuccessDictionary', this.loginSuccessDictionary);\r\n break;\r\n case 'myblock':\r\n // this.myBlockDictionary = new Dictionary(); // for view\r\n // this.allDictionaries.set('myBlockDictionary', this.myBlockDictionary);\r\n break;\r\n case 'mychatid':\r\n // this.myChatIdDictionary = new Dictionary();\r\n this.allDictionaries.set('myChatIdDictionary', this.myChatIdDictionary);\r\n break;\r\n case 'mychat':\r\n // this.myChatDictionary = new Dictionary();\r\n this.allDictionaries.set('myChatDictionary', this.myChatDictionary);\r\n break;\r\n case 'myoutboxchatid':\r\n // this.myChatIdDictionary = new Dictionary();\r\n this.allDictionaries.set('myOutboxChatIdDictionary', this.myOutboxChatIdDictionary);\r\n break;\r\n case 'myoutboxchat':\r\n // this.myChatDictionary = new Dictionary();\r\n this.allDictionaries.set('myOutboxChatDictionary', this.myOutboxChatDictionary);\r\n break;\r\n case 'myemailid':\r\n // this.myEmailIdDictionary = new Dictionary();\r\n this.allDictionaries.set('myEmailIdDictionary', this.myEmailIdDictionary);\r\n break;\r\n case 'myemail':\r\n // this.myEmailDictionary = new Dictionary();\r\n this.allDictionaries.set('myEmailDictionary', this.myEmailDictionary);\r\n break;\r\n case 'myfriend':\r\n // this.myFriendDictionary = new Dictionary(); // for view\r\n // this.allDictionaries.set('myFriendDictionary', this.myFriendDictionary);\r\n break;\r\n case 'mylike':\r\n // this.myLikeDictionary = new Dictionary(); // for view\r\n // this.allDictionaries.set('myLikeDictionary', this.myLikeDictionary);\r\n break;\r\n case 'mymemberactivity':\r\n // this.myMemberActivityDictionary = new Dictionary(); // key==(action-name).(member-activity-id) //for indexedDb\r\n // this.allDictionaries.set('myMemberActivityDictionary', this.myMemberActivityDictionary);\r\n break;\r\n case 'mymemberlockingactivity':\r\n // this.myMemberLockingActivityDictionary = new Dictionary();\r\n // this.allDictionaries.set('myMemberLockingActivityDictionary', this.myMemberLockingActivityDictionary);\r\n break;\r\n case 'mymemberstartrackwinkactivity':\r\n // this.myMemberStarTrackWinkActivityDictionary = new Dictionary();\r\n // this.allDictionaries.set('myMemberStarTrackWinkActivityDictionary', this.myMemberStarTrackWinkActivityDictionary);\r\n break;\r\n case 'mynotificationid':\r\n // this.myNotificationIdDictionary = new Dictionary();\r\n this.allDictionaries.set('myNotificationIdDictionary', this.myNotificationIdDictionary);\r\n break;\r\n case 'mynotification':\r\n // this.myNotificationDictionary = new Dictionary();\r\n this.allDictionaries.set('myNotificationDictionary', this.myNotificationDictionary);\r\n break;\r\n case 'mystar':\r\n // this.myStarDictionary = new Dictionary(); // for view\r\n // this.allDictionaries.set('myStarDictionary', this.myStarDictionary);\r\n break;\r\n case 'mytrack':\r\n // this.myTrackDictionary = new Dictionary(); // for view\r\n // this.allDictionaries.set('myTrackDictionary', this.myTrackDictionary);\r\n break;\r\n case 'myunlock':\r\n // this.myUnlockDictionary = new Dictionary(); // for view\r\n // this.allDictionaries.set('myUnlockDictionary', this.myUnlockDictionary);\r\n break;\r\n case 'mywink':\r\n // this.myWinkDictionary = new Dictionary(); // for view\r\n // this.allDictionaries.set('myWinkDictionary', this.myWinkDictionary);\r\n break;\r\n case 'photo':\r\n // this.photoDictionary = new Dictionary(); // key=photoId, value=Photo;\r\n this.allDictionaries.set('photoDictionary', this.photoDictionary);\r\n break;\r\n case 'photobn':\r\n // this.photoBnDictionary = new Dictionary(); // key=photoId, value=Photo;\r\n this.allDictionaries.set('photoBnDictionary', this.photoBnDictionary);\r\n break;\r\n case 'photobnid':\r\n this.userPhotoBnIdDictionary = new Dictionary(); // key=photoId, value=Photo;\r\n this.allDictionaries.set('userPhotoBnIdDictionary', this.userPhotoBnIdDictionary);\r\n break;\r\n case 'preference':\r\n // this.preferenceDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n this.allDictionaries.set('preferenceDictionary', this.preferenceDictionary);\r\n break;\r\n case 'profileinfo':\r\n // this.profileInfoDictionary = new Dictionary(); // key=sitUserId, value=ProfileInfo\r\n this.allDictionaries.set('profileInfoDictionary', this.profileInfoDictionary);\r\n break;\r\n case 'profilecontent':\r\n // this.profileContentDictionary = new Dictionary(); // key=sitUserId, value=Content\r\n this.allDictionaries.set('profileContentDictionary', this.profileContentDictionary);\r\n break;\r\n case 'profilepics':\r\n // this.profilePicsDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n this.allDictionaries.set('profilePicsDictionary', this.profilePicsDictionary);\r\n break;\r\n case 'profiletile':\r\n // this.profileTileDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n this.allDictionaries.set('profileTileDictionary', this.profileTileDictionary);\r\n break;\r\n case 'situserid':\r\n // this.sitUserIdDictionary = new Dictionary(); // key=sitUserId, value=sitUserId\r\n this.allDictionaries.set('sitUserIdDictionary', this.sitUserIdDictionary);\r\n break;\r\n case 'situser':\r\n // this.sitUserDictionary = new Dictionary(); // key=sitUserId, value=sitUserId\r\n this.allDictionaries.set('sitUserDictionary', this.sitUserDictionary);\r\n break;\r\n case 'yourblock':\r\n // this.yourBlockDictionary = new Dictionary();\r\n this.allDictionaries.set('yourBlockDictionary', this.yourBlockDictionary);\r\n break;\r\n case 'yourfriend':\r\n // this.yourFriendDictionary = new Dictionary();\r\n this.allDictionaries.set('yourFriendDictionary', this.yourFriendDictionary);\r\n break;\r\n case 'yourlike':\r\n // this.yourLikeDictionary = new Dictionary();\r\n this.allDictionaries.set('yourLikeDictionary', this.yourLikeDictionary);\r\n break;\r\n case 'yourmemberactivity':\r\n // this.yourMemberActivityDictionary = new Dictionary();\r\n this.allDictionaries.set('yourMemberActivityDictionary', this.yourMemberActivityDictionary);\r\n break;\r\n case 'yourmemberlockingactivity':\r\n // this.yourMemberLockingActivityDictionary = new Dictionary();\r\n this.allDictionaries.set('yourMemberLockingActivityDictionary', this.yourMemberLockingActivityDictionary);\r\n break;\r\n case 'yourmembertrackingactivity':\r\n // this.yourMemberStarTrackWinkActivityDictionary = new Dictionary();\r\n this.allDictionaries.set('yourMemberTrackingActivityDictionary', this.yourMemberTrackingActivityDictionary);\r\n break;\r\n case 'yourstar':\r\n // this.yourStarDictionary = new Dictionary();\r\n this.allDictionaries.set('yourStarDictionary', this.yourStarDictionary);\r\n break;\r\n case 'yourtrack':\r\n // this.yourTrackDictionary = new Dictionary();\r\n this.allDictionaries.set('yourTrackDictionary', this.yourTrackDictionary);\r\n break;\r\n case 'yourunlock':\r\n // this.yourUnlockDictionary = new Dictionary();\r\n this.allDictionaries.set('yourUnlockDictionary', this.yourUnlockDictionary);\r\n break;\r\n case 'yourwink':\r\n // this.yourWinkDictionary = new Dictionary();\r\n this.allDictionaries.set('yourWinkDictionary', this.yourWinkDictionary);\r\n break;\r\n }\r\n // debugger;\r\n })\r\n // debugger;\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public populateStoreNameDictionary () {\r\n // debugger;\r\n let i = 0;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.storeNameDictionary) || this.storeNameDictionary.size === 0) {\r\n this.storeNameDictionary = new Dictionary();\r\n }\r\n this.storeNameDictionary.set(i++, \"buddy\");\r\n this.storeNameDictionary.set(i++, \"chatActivity\");\r\n this.storeNameDictionary.set(i++, \"chatConversation\");\r\n this.storeNameDictionary.set(i++, \"chatConversationId\");\r\n this.storeNameDictionary.set(i++, \"dexieTable\");\r\n this.storeNameDictionary.set(i++, \"emailTile\");\r\n this.storeNameDictionary.set(i++, \"emailTileId\");\r\n this.storeNameDictionary.set(i++, \"enoteTile\");\r\n this.storeNameDictionary.set(i++, \"enoteTileId\");\r\n this.storeNameDictionary.set(i++, \"errorLog\");\r\n this.storeNameDictionary.set(i++, \"heartbeat\");\r\n this.storeNameDictionary.set(i++, \"idbStoreIndex\");\r\n this.storeNameDictionary.set(i++, \"idbStoreTransaction\");\r\n this.storeNameDictionary.set(i++, \"kvPhoto\");\r\n this.storeNameDictionary.set(i++, \"loginSuccess\");\r\n\r\n this.storeNameDictionary.set(i++, \"myBlock\");\r\n this.storeNameDictionary.set(i++, \"myChat\");\r\n this.storeNameDictionary.set(i++, \"myChatId\");\r\n this.storeNameDictionary.set(i++, \"myOutboxChat\");\r\n this.storeNameDictionary.set(i++, \"myOutboxChatId\");\r\n this.storeNameDictionary.set(i++, \"myEmail\");\r\n this.storeNameDictionary.set(i++, \"myEmailId\");\r\n this.storeNameDictionary.set(i++, \"myFriend\");\r\n this.storeNameDictionary.set(i++, \"myLike\");\r\n this.storeNameDictionary.set(i++, \"myMemberActivity\");\r\n this.storeNameDictionary.set(i++, \"myMemberLockingActivity\");\r\n this.storeNameDictionary.set(i++, \"myMemberStarTrackWinkActivity\");\r\n this.storeNameDictionary.set(i++, \"myNotification\");\r\n this.storeNameDictionary.set(i++, \"myNotificationId\");\r\n this.storeNameDictionary.set(i++, \"myStar\");\r\n this.storeNameDictionary.set(i++, \"myTrack\");\r\n this.storeNameDictionary.set(i++, \"myUnlock\");\r\n this.storeNameDictionary.set(i++, \"myWink\");\r\n \r\n this.storeNameDictionary.set(i++, \"photo\");\r\n this.storeNameDictionary.set(i++, \"photoBn\");\r\n this.storeNameDictionary.set(i++, \"preference\");\r\n this.storeNameDictionary.set(i++, \"profileInfo\");\r\n this.storeNameDictionary.set(i++, \"profileContent\");\r\n this.storeNameDictionary.set(i++, \"profilePics\");\r\n this.storeNameDictionary.set(i++, \"profileTile\");\r\n\r\n this.storeNameDictionary.set(i++, \"sitUser\");\r\n this.storeNameDictionary.set(i++, \"sitUserId\");\r\n\r\n this.storeNameDictionary.set(i++, \"yourBlock\");\r\n this.storeNameDictionary.set(i++, \"yourFriend\");\r\n this.storeNameDictionary.set(i++, \"yourLike\");\r\n this.storeNameDictionary.set(i++, \"yourMemberActivity\");\r\n this.storeNameDictionary.set(i++, \"yourMemberLockingActivity\");\r\n this.storeNameDictionary.set(i++, \"yourMemberStarTrackWinkActivity\");\r\n this.storeNameDictionary.set(i++, \"yourStar\");\r\n this.storeNameDictionary.set(i++, \"yourTrack\");\r\n this.storeNameDictionary.set(i++, \"yourUnlock\");\r\n this.storeNameDictionary.set(i++, \"yourWink\");\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this method gets only unFilteredKvPhotoArray of ProfilePics.\r\n // ---------------------------------------------------------------\r\n public getProfilePicsFromKvPhotoDictionary (sitUserId : number) : ProfilePics | any {\r\n let outKvPhotoArr : KvPhoto[] = [];\r\n let profilePics = new ProfilePics();\r\n if (sitUserId > 0) {\r\n profilePics.unFilteredKvPhotoArr = this.getUserKvPhotoArrFromKvPhotoDictionary(sitUserId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.unFilteredKvPhotoArr) && profilePics.unFilteredKvPhotoArr.length > 0) {\r\n // debugger;\r\n profilePics.unFilteredKvPhotoArr.forEach(e => {\r\n if (e) {\r\n profilePics.unFilteredKvPhotoDictionary.set(e.photoBnId, e);\r\n }\r\n });\r\n\r\n // Note: the calling function should filter the KvPhotos:\r\n // ------------------------------------------------------\r\n //this.photoPrivacyService.filterKvPhotoArr(profilePics.unFilteredKvPhotoArr).then(result => {\r\n // profilePics.filteredKvPhotoArr = result;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.filteredKvPhotoArr) && profilePics.filteredKvPhotoArr.length > 0) {\r\n // // debugger;\r\n // profilePics.filteredKvPhotoArr.forEach(e => {\r\n // if (e) {\r\n // profilePics.filteredKvPhotoDictionary.set(e.photoBnId, e);\r\n // }\r\n // })\r\n // }\r\n //});\r\n }\r\n return profilePics;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n public getUserKvPhotoArrFromKvPhotoDictionary (sitUserId : number) : KvPhoto[] | any {\r\n let outKvPhotoArr : KvPhoto[] = [];\r\n if (sitUserId > 0 && this.kvPhotoDictionary.size > 0) {\r\n this.kvPhotoDictionary.values().forEach((e : any) => {\r\n if (e.sitUserId === sitUserId) {\r\n outKvPhotoArr.push(e);\r\n }\r\n })\r\n }\r\n return outKvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this method gets a profileTile from the dictionary by\r\n // a non-key propertiy==sitUserId where the key=profileTileId\r\n //\r\n // This is a quentasential example of how to get a dictionary's\r\n // value by a non-key-property of the model.\r\n // ---------------------------------------------------------------\r\n public getProfileTileBySitUserId (sitUserId : number) : any {\r\n if (sitUserId > 0 && this.profileTileDictionary.size > 0 ) {\r\n let pTileArr = this.profileTileDictionary.values();\r\n pTileArr = pTileArr.sort((a : any, b : any) => a.sitUserId - b.sitUserId);\r\n // debugger;\r\n let index = this.binarySearchService.nonRecursiveBinarySearchProfileTile(pTileArr, sitUserId);\r\n let tpTile = pTileArr[ index ];\r\n // debugger;\r\n return tpTile;\r\n }\r\n else return null;\r\n }\r\n\r\n // --------------------------------------------------------------------------------\r\n public getMasterErrorLogMap () : Map {\r\n // debugger;\r\n return this.masterErrorLogMap;\r\n }\r\n public setMasterErrorLogMap (bDic : Map) : void {\r\n this.masterErrorLogMap = bDic;\r\n }\r\n public resetMasterErrorLogMap () : void {\r\n this.masterErrorLogMap = new Map();\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyErrorLogMap () : Map {\r\n // debugger;\r\n return this.myErrorLogMap;\r\n }\r\n public setMyErrorLogMap (bDic : Map) : void {\r\n this.myErrorLogMap = bDic;\r\n }\r\n public resetMyErrorLogMap () : void {\r\n this.myErrorLogMap = new Map();\r\n }\r\n // -------------------------------------------------------------------------------------\r\n public getDictionaryValues (dictionaryName : string) : any | void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryName)) {\r\n // debugger;\r\n switch (dictionaryName.toLowerCase()) {\r\n\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n case 'buddy':\r\n return this.buddyDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'chatactivity':\r\n // debugger;\r\n return this.chatActivityDictionary.values();\r\n // ------------------------------------------------------------------------- \r\n case 'chatconversationid':\r\n return this.chatConversationIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'chatconversation':\r\n // debugger;\r\n return this.chatConversationDictionary.values();\r\n // -------------------------------------------------------------------------\r\n //case 'emailtileid':\r\n // return this.emailTileIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'emailtile':\r\n return this.emailTileDictionary.values();\r\n \r\n // -------------------------------------------------------------------------\r\n //case 'enotetileid':\r\n // return this.enoteTileIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'enotetile':\r\n return this.enoteTileDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'errorlog':\r\n return this.errorLogDictionary.values();\r\n // ----------------------------------------------\r\n case 'kvphoto':\r\n return this.kvPhotoDictionary.values();\r\n // ----------------------------------------------\r\n case 'loginsuccess':\r\n return this.loginSuccessDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'myblock':\r\n return this.myBlockDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourblock':\r\n return this.yourBlockDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'myfriend':\r\n return this.myFriendDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourfriend':\r\n return this.yourFriendDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mylike':\r\n debugger;\r\n return this.myLikeDictionary?.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourlike':\r\n return this.yourLikeDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mystar':\r\n return this.myStarDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourstar':\r\n return this.yourStarDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mytrack':\r\n return this.myTrackDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourtrack':\r\n return this.yourTrackDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mywink':\r\n return this.myWinkDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourwink':\r\n return this.yourWinkDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'myunlock':\r\n return this.myUnlockDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourunlock':\r\n return this.yourUnlockDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mymemberactivity':\r\n return this.myMemberActivityDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourmemberactivity':\r\n return this.yourMemberActivityDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mymemberlockingactivity':\r\n return this.myMemberLockingActivityDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourmemberlockingactivity':\r\n return this.yourMemberLockingActivityDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mymembertrackingactivity':\r\n return this.myMemberTrackingActivityDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'yourmembertrackingactivity':\r\n return this.yourMemberTrackingActivityDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mychatid':\r\n return this.myChatIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mychat':\r\n return this.myChatDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'myoutboxchatid':\r\n return this.myOutboxChatIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myoutboxchat':\r\n return this.myOutboxChatDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'myemailid':\r\n return this.myEmailIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'myemail':\r\n return this.myEmailDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mynotificationid':\r\n return this.myNotificationIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'mynotification':\r\n return this.myNotificationDictionary.values();\r\n // -------------------------------------------------------------------------\r\n //case 'photobnid':\r\n // return this.photoBnIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'photobn':\r\n return this.photoBnDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'photo':\r\n return this.photoDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'preference':\r\n return this.preferenceDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'profileinfo':\r\n // debugger;\r\n return this.profileInfoDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'profilecontent':\r\n // debugger;\r\n return this.profileContentDictionary.values();\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'profilepics':\r\n return this.profilePicsDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'profiletileid':\r\n return this.profileTileIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'profiletile':\r\n return this.profileTileDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'situserid':\r\n return this.sitUserIdDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'situser':\r\n return this.sitUserDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'spinnertimer':\r\n return this.spinnerTimerDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'filteredkvphoto':\r\n return this.filteredKvPhotoDictionary.values();\r\n // -------------------------------------------------------------------------\r\n case 'unfilteredkvphoto':\r\n return this.unFilteredKvPhotoDictionary.values();\r\n // -------------------------------------------------------------------------\r\n default:\r\n // ;\r\n break;\r\n // -------------------------------------------------------------------------\r\n }\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Begin of Communication Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n // ---------------------------------------------------------------\r\n public getChatActivityDictionary () : Dictionary {\r\n // debugger;\r\n return this.chatActivityDictionary;\r\n }\r\n public setChatActivityDictionary (ccaDic : Dictionary) : void {\r\n this.chatActivityDictionary = ccaDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public getChatConversationDictionary () : Dictionary {\r\n // debugger;\r\n return this.chatConversationDictionary;\r\n }\r\n public setChatConversationDictionary (cconDic : Dictionary) : void {\r\n this.chatConversationDictionary = cconDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public getChatConversationIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.chatConversationIdDictionary;\r\n }\r\n public setChatConversationIdDictionary (chiDic : Dictionary) : void {\r\n this.chatConversationIdDictionary = chiDic;\r\n }\r\n // ---------------------------------------------------------------\r\n //public getEmailTileIdDictionary () : Dictionary {\r\n // // debugger;\r\n // return this.emailTileIdDictionary;\r\n //}\r\n //public setEmailTileIdDictionary (emDic : Dictionary) : void {\r\n // this.emailTileIdDictionary = emDic;\r\n //}\r\n // ---------------------------------------------------------------\r\n //public getEnoteTileIdDictionary () : Dictionary {\r\n // // debugger;\r\n // return this.enoteTileIdDictionary;\r\n //}\r\n //public setEnoteTileIdDictionary (chiDic : Dictionary) : void {\r\n // this.enoteTileIdDictionary = chiDic;\r\n //}\r\n // ---------------------------------------------------------------\r\n public getEmailTileDictionary () : Dictionary {\r\n // debugger;\r\n return this.emailTileDictionary;\r\n }\r\n public setEmailTileDictionary (emDic : Dictionary) : void {\r\n this.emailTileDictionary = emDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getEnoteTileDictionary () : Dictionary {\r\n // debugger;\r\n return this.enoteTileDictionary;\r\n }\r\n public setEnoteTileDictionary (enDic : Dictionary) : void {\r\n this.enoteTileDictionary = enDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyChatDictionary () : Dictionary {\r\n // debugger;\r\n return this.myChatDictionary;\r\n }\r\n public setMyChatDictionary (cDic : Dictionary) : void {\r\n this.myChatDictionary = cDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyOutboxChatDictionary () : Dictionary {\r\n // debugger;\r\n return this.myOutboxChatDictionary;\r\n }\r\n public setMyOutboxChatDictionary (cDic : Dictionary) : void {\r\n this.myOutboxChatDictionary = cDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyEmailTileDictionary () : Dictionary {\r\n // debugger;\r\n return this.myEmailDictionary;\r\n }\r\n public setMyEmailTileDictionary (eDic : Dictionary) : void {\r\n this.myEmailDictionary = eDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyNotificationIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.myNotificationIdDictionary;\r\n }\r\n public setMyNotificationIdDictionary (nIdDic : Dictionary) : void {\r\n this.myNotificationIdDictionary = nIdDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyNotificationDictionary () : Dictionary {\r\n // debugger;\r\n return this.myNotificationDictionary;\r\n }\r\n public setMyNotificationDictionary (nDic : Dictionary) : void {\r\n this.myNotificationDictionary = nDic;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * End of Communication Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n /*\r\n * ---------------------------------------------------------------\r\n * Begin of MemberAcvitiy Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n public getBuddyDictionary () : Dictionary {\r\n // debugger;\r\n return this.buddyDictionary;\r\n }\r\n public setBuddyDictionary (bDic : Dictionary) : void {\r\n this.buddyDictionary = bDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyBlockDictionary () : Dictionary {\r\n // debugger;\r\n return this.myBlockDictionary;\r\n }\r\n public setMyBlockDictionary (bDic : Dictionary) : void {\r\n this.myBlockDictionary = bDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n ////public getMyFriendDictionary () : Dictionary {\r\n //// // debugger;\r\n //// return this.myFriendDictionary;\r\n ////}\r\n ////public setMyFriendDictionary (fDic : Dictionary) : void {\r\n //// this.myFriendDictionary = fDic;\r\n ////}\r\n // ---------------------------------------------------------------\r\n public getHeartbeatDictionary () : Dictionary {\r\n // debugger;\r\n return this.heartbeatDictionary;\r\n }\r\n public setHeartbeatDictionary (hbDic : Dictionary) : void {\r\n this.heartbeatDictionary = hbDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyLikeDictionary () : Dictionary {\r\n // debugger;\r\n return this.myLikeDictionary;\r\n }\r\n public setMyLikeDictionary (lDic : Dictionary) : void {\r\n this.myLikeDictionary = lDic;\r\n }\r\n public getMyLikeDictionaryValues () : CommunicationActivity[] {\r\n debugger;\r\n var myLikeArray = this.myLikeDictionary.values();\r\n debugger;\r\n return myLikeArray;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyUnlockDictionary () : Dictionary {\r\n // debugger;\r\n return this.myUnlockDictionary;\r\n }\r\n public setMyUnlockDictionary (uDic : Dictionary) : void {\r\n this.myUnlockDictionary = uDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public getMyStarDictionary () : Dictionary {\r\n // debugger;\r\n return this.myStarDictionary;\r\n }\r\n public setMyStarDictionary (tDic : Dictionary) : void {\r\n this.myStarDictionary = tDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyTrackDictionary () : Dictionary {\r\n // debugger;\r\n return this.myTrackDictionary;\r\n }\r\n public setMyTrackDictionary (tDic : Dictionary) : void {\r\n this.myTrackDictionary = tDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyWinkDictionary () : Dictionary {\r\n // debugger;\r\n return this.myWinkDictionary;\r\n }\r\n public setMyWinkDictionary (wDic : Dictionary) : void {\r\n this.myWinkDictionary = wDic;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n public getYourBlockDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourBlockDictionary;\r\n }\r\n public setYourBlockDictionary (bDic : Dictionary) : void {\r\n this.yourBlockDictionary = bDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getYourFriendDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourFriendDictionary;\r\n }\r\n public setYourFriendDictionary (fDic : Dictionary) : void {\r\n this.yourFriendDictionary = fDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getMyYourLikeDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourLikeDictionary;\r\n }\r\n public setYourLikeDictionary (lDic : Dictionary) : void {\r\n this.yourLikeDictionary = lDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getYourUnlockDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourUnlockDictionary;\r\n }\r\n public setYourUnlockDictionary (uDic : Dictionary) : void {\r\n this.yourUnlockDictionary = uDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getYourStarDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourStarDictionary;\r\n }\r\n public setYourStarDictionary (tDic : Dictionary) : void {\r\n this.yourStarDictionary = tDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getYourTrackDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourTrackDictionary;\r\n }\r\n public setYourTrackDictionary (tDic : Dictionary) : void {\r\n this.yourTrackDictionary = tDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getYourWinkDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourWinkDictionary;\r\n }\r\n public setYourWinkDictionary (wDic : Dictionary) : void {\r\n this.yourWinkDictionary = wDic;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * End of MemberAcvitiy Dictionaries:\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n /*\r\n * ---------------------------------------------------------------\r\n * Begin of Member(View/Profile) Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n \r\n // ---------------------------------------------------------------\r\n \r\n // ---------------------------------------------------------------\r\n public getMyProfilePicsDictionary () : Dictionary {\r\n // debugger;\r\n return this.myProfilePicsDictionary;\r\n }\r\n public setMyProfilePicsDictionary (profPicDic : Dictionary) : void {\r\n this.myProfilePicsDictionary = profPicDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getKvPhotoDictionary () : Dictionary {\r\n // debugger;\r\n return this.kvPhotoDictionary;\r\n }\r\n public setKvPhotoDictionary (pnumKvpDic : Dictionary) : void {\r\n this.kvPhotoDictionary = pnumKvpDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getPreferenceDictionary () : Dictionary {\r\n // debugger;\r\n return this.preferenceDictionary;\r\n }\r\n public setPreferenceDictionary (prefDic : Dictionary) : void {\r\n this.preferenceDictionary = prefDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getProfilePicsDictionary () : Dictionary {\r\n // debugger;\r\n return this.profilePicsDictionary;\r\n }\r\n public setProfilePicsDictionary (profPicDic : Dictionary) : void {\r\n this.profilePicsDictionary = profPicDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getProfileInfoDictionary () : Dictionary {\r\n // debugger;\r\n return this.profileInfoDictionary;\r\n }\r\n public setProfileInfoDictionary (profInfoDic : Dictionary) : void {\r\n this.profileInfoDictionary = profInfoDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getProfileContentDictionary () : Dictionary {\r\n // debugger;\r\n return this.profileContentDictionary;\r\n }\r\n public setProfileContentDictionary (profContentDic : Dictionary) : void {\r\n this.profileContentDictionary = profContentDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getProfileTileIdsDictionary () : Dictionary {\r\n return this.profileTileIdDictionary;\r\n }\r\n public setProfileTileIdDictionary (pTileIdDic : Dictionary) : void {\r\n this.profileTileIdDictionary = pTileIdDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getProfileTileDictionary () : Dictionary {\r\n return this.profileTileDictionary;\r\n }\r\n public setProfileTileDictionary (pTileDic : Dictionary) : void {\r\n this.profileTileDictionary = pTileDic;\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n public getSitUserDictionary () : Dictionary {\r\n // debugger;\r\n return this.sitUserDictionary;\r\n }\r\n public setSitUserDictionary (sUserDic : Dictionary) : void {\r\n this.sitUserDictionary = sUserDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getSitUserIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.sitUserIdDictionary;\r\n }\r\n public setSitUserIdDictionary (sUserDic : Dictionary) : void {\r\n this.sitUserIdDictionary = sUserDic;\r\n }\r\n // ---------------------------------------------------------------\r\n // public getPhotoIdDictionary () : Dictionary\r\n // {\r\n // // debugger;\r\n // return this.photoIdDictionary;\r\n // }\r\n // public setPhotoIdDictionary ( userPhIdDic : Dictionary ) : void\r\n // {\r\n // this.photoIdDictionary = userPhIdDic;\r\n // }\r\n // ---------------------------------------------------------------\r\n public getPhotoDictionary () : Dictionary {\r\n // debugger;\r\n return this.photoDictionary;\r\n }\r\n public setPhotoDictionary (userPhDic : Dictionary) : void {\r\n this.photoDictionary = userPhDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getUserPhotoBnIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.userPhotoBnIdDictionary;\r\n }\r\n public setUserPhotoBnIdDictionary (userPhBnIdDic : Dictionary) : void {\r\n this.userPhotoBnIdDictionary = userPhBnIdDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n //public getPhotoBnDictionary () : Dictionary {\r\n // // debugger;\r\n // return this.photoBnDictionary;\r\n //}\r\n //public setPhotoBnDictionary (userPhBnDic : Dictionary) : void {\r\n // this.photoBnDictionary = userPhBnDic;\r\n //}\r\n\r\n // ---------------------------------------------------------------\r\n public getSpinnerTimerDictionary () : Dictionary {\r\n // debugger;\r\n return this.spinnerTimerDictionary;\r\n }\r\n public setSpinnerTimerDictionary (spinnerDic : Dictionary) : void {\r\n this.spinnerTimerDictionary = spinnerDic;\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * End of Member(View/Profile) Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n\r\n // ---------------------------------------------------------------\r\n // Note: Utility Methods for Dictionary Service:\r\n // ---------------------------------------------------------------\r\n public populateMasterErrorLogMap (bn : BoxNonceEntity) : any {\r\n // MemberActivity Dictionaries:\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n // debugger;\r\n const mErrorLogs = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Map;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mErrorLogs) && mErrorLogs.size > 0) {\r\n mErrorLogs.forEach((e) => {\r\n this.masterErrorLogMap.set(e.key, e);\r\n });\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n public populateMyErrorLogMapFromIndexedDb (errLogArr : LogError[]) : void {\r\n /*\r\n * MyErrorLog Dictionary:\r\n * debugger;\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(errLogArr) && errLogArr.length > 0) {\r\n errLogArr.map((e) => {\r\n this.myErrorLogMap.set(e.key, e);\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not Used under current scheme:\r\n // ---------------------------------------------------------------\r\n public modelArrayToDictionary (modelArr : any[], modelDic : Dictionary) : void {\r\n if (!!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelArr) && modelArr.length > 0) {\r\n modelArr.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.doerSitUserId)) {\r\n modelDic.set(e.doerSitUserId, e);\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.sitUserId)) {\r\n modelDic.set(e.sitUserId, e);\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not Used under current scheme:\r\n // ---------------------------------------------------------------\r\n public modelActivityArrayToDictionary (modelArr : any[], modelDic : Dictionary) : void {\r\n if (!!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelArr) && modelArr.length > 0) {\r\n modelArr.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.doerSitUserId)) {\r\n modelDic.set(e.doerSitUserId, e);\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.sitUserId)) {\r\n modelDic.set(e.sitUserId, e);\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not Used under current scheme:\r\n // ---------------------------------------------------------------\r\n public modelArrayToMemberActivityDictionary (modelArr : any[], modelDictionary : Dictionary) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelArr) && modelArr.length > 0) {\r\n modelArr.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.key)) {\r\n modelDictionary.set(e.key, e);\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.id)) {\r\n modelDictionary.set(e.id.toString(), e);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // ----------------------------------------------------------------\r\n public populateKvPhotoOfUserInProfilePicsDictionary (data : KvPhoto, pPics : ProfilePics) : any {\r\n let index : number = -99;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && (data.photoId > 0 || data.photoBnId > 0)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.value) || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.image)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoDictionary) && pPics.unFilteredKvPhotoDictionary.size >= 0) {\r\n if (data.photoBnId > 0) {\r\n if (!pPics.unFilteredKvPhotoDictionary.has(data.photoBnId)) {\r\n pPics.unFilteredKvPhotoDictionary.set(data.photoBnId, data);\r\n // debugger;\r\n }\r\n }\r\n }\r\n\r\n if (data.photoId > 0) {\r\n let tPhoto = CopyServiceStatic.copyFromKvPhotoToPhoto(data);\r\n if (!pPics.profilePhotoDictionary.has(data.photoId)) {\r\n pPics.profilePhotoDictionary.set(data.photoId, tPhoto);\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoDictionary) && pPics.filteredKvPhotoDictionary?.values?.length >= 0) {\r\n // debugger;\r\n index = ArrayServiceStatic.getIndexOfKvPhotoInKvPhotoArr(pPics.filteredKvPhotoArr, data);\r\n if (index !== -1) {\r\n pPics.filteredKvPhotoArr = ArrayServiceStatic.mergeArraysUniq(pPics.filteredKvPhotoArr, [ data ]);\r\n }\r\n else {\r\n pPics.filteredKvPhotoArr.push(data);\r\n }\r\n\r\n if (data.photoBnId > 0) {\r\n if (!pPics.filteredKvPhotoDictionary.has(data.photoBnId)) {\r\n pPics.filteredKvPhotoDictionary.set(data.photoBnId, data);\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n return pPics;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * NOTE: This can be used as general template for\r\n * all other dictionaries with case -statement:\r\n * ---------------------------------------------------------------\r\n * TODO: Test,\r\n * ---------------------------------------------------------------\r\n */\r\n public updateDictionary (inModel : any, modelName : string, id? : number) : any | void {\r\n \r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inModel) ) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelName)) {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n // let model = FrequentlyUsedFunctionsServiceStatic.deepCloneJson(inModel) as any; //deepCloneJson, deepCloneJson\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inModel)) {\r\n let model = inModel; // JSON.parse(JSON.stringify(inModel)); // <--deep clone\r\n // let modelNameLowerCased = modelName.toLowerCase();\r\n // debugger;\r\n switch (modelName.toLowerCase()) {\r\n\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n case 'buddy':\r\n this.count = 0;\r\n debugger;\r\n this.buddyDictionary.set(id, model);\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n case 'chatactivity':\r\n this.chatActivityDictionary.set(id, model); \r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: conversationId must appear beore chathistory\r\n // -------------------------------------------------------------------------\r\n case 'chatconversationid':\r\n this.chatConversationIdDictionary.set(id, model);\r\n // debugger;\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n // NOTE: \r\n // if (id !== null | undefined ) { return id; }else {return model.id; } \r\n // the above expression is equal to this expression == id? id : model.id\r\n // -------------------------------------------------------------------------\r\n case 'chatconversation':\r\n case 'chats':\r\n this.chatConversationDictionary.set(id, model);\r\n // debugger;\r\n //if (model instanceof Array) {\r\n // // debugger;\r\n // model.map(e => {\r\n // this.chatHistoryDictionary.set(e.chatActivityId, e);\r\n // })\r\n //}\r\n //else if (typeof (model) === 'object') {\r\n // // debugger;\r\n // this.chatHistoryDictionary.set(model.chatActivityId, model);\r\n // // this.saveDictionaryToDbDexie( this.photoIdDictionary, 'PhotoId', this.loginSuccess.signedInUserId );\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: emailtileId must appear beore emailtile\r\n // -------------------------------------------------------------------------\r\n //case 'emailtileid':\r\n // debugger;\r\n // this.emailTileIdDictionary.set(id, model);\r\n // break;\r\n // -------------------------------------------------------------------------\r\n case 'emailtile':\r\n debugger;\r\n this.emailTileDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: enotetileId must appear beore enotetile\r\n // -------------------------------------------------------------------------\r\n //case 'enotetileid':\r\n // // debugger;\r\n // this.enoteTileIdDictionary.set(id, model);\r\n // break;\r\n // -------------------------------------------------------------------------\r\n case 'enotetile':\r\n // debugger;\r\n this.enoteTileDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'heartbeat':\r\n // debugger;\r\n if (model instanceof Array) {\r\n // debugger;\r\n\r\n model.map(e => {\r\n // debugger;\r\n this.heartbeatDictionary?.set( e.signOnActivityId, e);\r\n });\r\n }\r\n else if (model) { \r\n // debugger;\r\n this.heartbeatDictionary?.set(model.signOnActivityId, model);\r\n \r\n }\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n case 'errorlog':\r\n // debugger;\r\n this.errorLogDictionary.set(id, model);\r\n break;\r\n // ----------------------------------------------\r\n case 'kvphoto':\r\n // debugger;\r\n this.kvPhotoDictionary.set(model.id, model);\r\n break;\r\n // ----------------------------------------------\r\n case 'loginsuccess':\r\n // debugger;\r\n this.loginSuccessDictionary.set(id, model);\r\n break;\r\n case 'myallenote':\r\n case 'yourallenote':\r\n // debugger;\r\n //if (this.myAllEnoteDictionary.has(id)) {\r\n // this..remove(id);\r\n //}\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserKey === model.receiverSITUserKey) { // Note: model.senderSITUserId ===0 sent by the server. TODO: fix it at the server\r\n this.myAllEnoteDictionary.set(model.notificationActivityId, model);\r\n }\r\n else {\r\n this.yourAllEnoteDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myblock':\r\n case 'yourblock':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myBlockDictionary.set(model.notificationActivityId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourBlockDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myfriend':\r\n case 'yourfriend':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myFriendDictionary.set(model.notificationActivityId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourFriendDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mylike':\r\n case 'yourlike':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myLikeDictionary.set(model.notificationActivityId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourLikeDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mystar':\r\n case 'yourstar':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myStarDictionary.set(model.notificationActivityId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourStarDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mytrack':\r\n case 'yourtrack':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myTrackDictionary.set(model.notificationActivityId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourTrackDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mywink':\r\n case 'yourwink':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myTrackDictionary.set(model.notificationActivityId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourTrackDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myunlock':\r\n case 'yourunlock':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myUnlockDictionary.set(model.notificationActivityId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourUnlockDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mymemberactivity':\r\n case 'yourmemberactivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === model.senderSitUserId) {\r\n // todo: check if it is NotificationActivityId or notificationActivityId?\r\n this.myMemberActivityDictionary.set(model.notificationActivityId, model);\r\n }\r\n else if (this.loginSuccess.signedInUserId == model.receiverUserId) {\r\n this.yourMemberActivityDictionary.set(model.notificationActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mymemberlockingactivity':\r\n case 'yourmemberlockingactivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // -----------------------------------------------------------------------\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === model.senderSITUserId || this.loginSuccess.signedInUserId === model.senderSitUserId) {\r\n this.myMemberLockingActivityDictionary.set(model.lockingActivityId, model);\r\n }\r\n else if (this.loginSuccess.signedInUserId === model.receiverSITUserId || this.loginSuccess.signedInUserId === model.receiverSitUserId) {\r\n this.yourMemberLockingActivityDictionary.set(model.lockingActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mymembertrackingactivity':\r\n case 'yourmembertrackingactivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // -----------------------------------------------------------------------\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === model.senderSITUserId || this.loginSuccess.signedInUserId === model.senderSitUserId) {\r\n this.myMemberTrackingActivityDictionary.set(model.trackingActivityId, model);\r\n }\r\n else if (this.loginSuccess.signedInUserId === model.receiverSITUserId || this.loginSuccess.signedInUserId === model.receiverSitUserId) {\r\n this.yourMemberTrackingActivityDictionary.set(model.trackingActivityId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n\r\n // -------------------------------------------------------------------------\r\n // Note: mychatId must appear beore mychat\r\n // -------------------------------------------------------------------------\r\n case 'mychatid':\r\n // debugger;\r\n if (this.myChatIdDictionary.has(id)) {\r\n this.myChatIdDictionary.remove(id);\r\n }\r\n this.myChatIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mychat':\r\n // debugger;\r\n if (this.myChatDictionary.has(id)) {\r\n this.myChatDictionary.remove(id);\r\n }\r\n this.myChatDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: mychatId must appear beore mychat\r\n // -------------------------------------------------------------------------\r\n case 'myoutboxchatid':\r\n // debugger;\r\n this.myOutboxChatIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myoutboxchat':\r\n // debugger;\r\n this.myOutboxChatDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: myEmailId must appear beore myEmail\r\n // -------------------------------------------------------------------------\r\n case 'myemailid':\r\n // debugger;\r\n // this.myEmailIdDictionary.set(id, model);\r\n // debugger;\r\n let eArr : any[] = [];\r\n if (this.myEmailIdDictionary?.size > 0) {\r\n eArr = this.myEmailIdDictionary?.get(this.loginSuccess.signedInUserId) as number[];\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n if (typeof (model) === 'number') {\r\n // debugger;\r\n eArr = ArraySupportServiceStatic.mergeArraysUniq(eArr, [ model ]);\r\n this.myEmailIdDictionary?.set(this.loginSuccess.signedInUserId, eArr);\r\n }\r\n else if (model instanceof Array) {\r\n eArr = ArraySupportServiceStatic.mergeArraysUniq(eArr, model);\r\n this.myEmailIdDictionary?.set(this.loginSuccess.signedInUserId, eArr);\r\n // debugger;\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myemail':\r\n // debugger;\r\n if (this.myEmailDictionary.has(id)) {\r\n this.myEmailDictionary.remove(id);\r\n }\r\n this.myEmailDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: myNotificationId must appear beore myNotificationr\r\n // -------------------------------------------------------------------------\r\n case 'mynotificationid':\r\n // debugger;\r\n this.myNotificationIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mynotification':\r\n // debugger;\r\n //if (this.myNotificationDictionary.has(id)) {\r\n // this.myNotificationDictionary.remove(id);\r\n //}\r\n this.myNotificationDictionary.set(id, model);\r\n break;\r\n // ---------------------------------------------------------------------------------------------------------\r\n case 'person':\r\n // debugger;\r\n this.personDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: photoBnId must appear beore photoBn\r\n // -------------------------------------------------------------------------\r\n case 'photobnid':\r\n // debugger;\r\n if (typeof (model) === 'number') {\r\n // debugger;\r\n this.userPhotoBnIdDictionary.set(id, [ model ]);\r\n }\r\n else if (model instanceof Array) {\r\n // debugger;\r\n this.userPhotoBnIdDictionary.set(id, model);\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'photobn':\r\n // debugger;\r\n // this.photoBnDictionary.set(id, model);\r\n if (model instanceof Array) {\r\n // debugger;\r\n model.map(e => {\r\n this.photoBnDictionary.set(e.photoBnId, e);\r\n })\r\n }\r\n else if (typeof (model) === 'object' || model instanceof BoxNonceEntity) {\r\n // debugger;\r\n this.photoBnDictionary.set(model.photoBnId, model);\r\n }\r\n break;\r\n\r\n // ---------------------------------------------------------------------------------------------------------\r\n case 'photo':\r\n // debugger;\r\n this.photoDictionary.set(model.id, model);\r\n break;\r\n // ---------------------------------------------------------------------------------------------------------\r\n case 'preference':\r\n // debugger;\r\n this.preferenceDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n // ---------------------------------------------------------------------------------------------------------\r\n case 'profile':\r\n // debugger;\r\n this.profileDictionary.set(model.id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'profileinfo':\r\n // debugger;\r\n this.profileInfoDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'profilecontent':\r\n // debugger;\r\n this.profileContentDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'profilepics':\r\n // debugger;\r\n this.profilePicsDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // model == number[]\r\n case 'profiletileid':\r\n // debugger;\r\n this.profileTileIdDictionary.set(id, model);\r\n\r\n // if ( typeof ( model ) === 'number' )\r\n // {\r\n // // debugger;\r\n // this.profileTileIdsDictionary.set( model, model );\r\n // // this.saveDictionaryToDbDexie( this.profileTileIdDictionary, 'ProfileTileId', this.loginSuccess.signedInUserId );\r\n // }\r\n // else if ( model instanceof Array )\r\n // {\r\n // // debugger;\r\n // model.map( e =>\r\n // {\r\n // // debugger;\r\n // this.profileTileIdsDictionary.set( e, e );\r\n // // this.saveDictionaryToDbDexie( this.profileTileIdDictionary, 'ProfileTileId', this.loginSuccess.signedInUserId );\r\n // } );\r\n // }\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n case 'profiletile':\r\n // debugger;\r\n this.profileTileDictionary.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : model.id, model)\r\n\r\n //if (this.profileTileDictionary.size() == 0 || !this.profileTileDictionary.has(model.sitUserId)) {\r\n // this.profileTileDictionary.set(model.sitUserId, model);\r\n //}\r\n //else {\r\n // // debugger;\r\n // let dTile : ProfileTile = this.profileTileDictionary.getValue(model.sitUserId) as ProfileTile;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dTile)) {\r\n // // debugger;\r\n // // CopyServiceStatic.copyProfileTileIfExists(dTile, model);\r\n // dTile.copyIfExists(model);\r\n // this.profileTileDictionary.set(dTile.sitUserId, dTile);\r\n // }\r\n\r\n //}\r\n // debugger;\r\n\r\n // debugger;\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: sitUserId must appear beore sitUser\r\n // teated on 20230801, works!\r\n // -------------------------------------------------------------------------\r\n // NOte: model == number[]\r\n case 'situserid':\r\n this.sitUserIdDictionary?.set(id, id);\r\n //let tArr : any[] = [];\r\n //if (this.sitUserIdDictionary?.values().length > 0) {\r\n // tArr = this.sitUserIdDictionary?.get(this.loginSuccess.signedInUserId) as number[];\r\n //}\r\n\r\n //if (model instanceof Array) {\r\n // tArr = ArraySupportServiceStatic.mergeArraysUniq(tArr, model);\r\n // this.sitUserIdDictionary?.set(this.loginSuccess.signedInUserId, tArr);\r\n // // debugger;\r\n //}\r\n //else if (typeof (model) === 'number') {\r\n // // debugger;\r\n // tArr = ArraySupportServiceStatic.mergeArraysUniq(tArr, [ model ]);\r\n // this.sitUserIdDictionary?.set(this.loginSuccess.signedInUserId, tArr);\r\n //} \r\n \r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'situser':\r\n // debugger;\r\n if (model instanceof Array) {\r\n // debugger;\r\n\r\n model.map(e => {\r\n // debugger;\r\n this.sitUserDictionary?.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : e.id, e);\r\n });\r\n }\r\n else if (model) {\r\n if (id > 0) {\r\n // debugger;\r\n this.sitUserDictionary?.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : model.id, model);\r\n }\r\n else if (model.sitUserId > 0) {\r\n // debugger;\r\n this.sitUserDictionary?.set(model.sitUserId, model);\r\n }\r\n }\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n case 'filteredkvphoto':\r\n // debugger;\r\n this.filteredKvPhotoDictionary.set(model.photoBnId, model);\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'unfilteredkvphoto':\r\n // debugger;\r\n this.unFilteredKvPhotoDictionary.set(model.photoBnId, model);\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'spinnertimer':\r\n // debugger;\r\n this.spinnerTimerDictionary.set(model.startTimer, model);\r\n // this.saveDictionaryToDbDexie( this.spinnerTimerDictionary, 'SpinnerTimer', this.loginSuccess.signedInUserId );\r\n\r\n break;\r\n default:\r\n // ;\r\n break;\r\n // -------------------------------------------------------------------------\r\n }\r\n // debugger;\r\n // Note: TODO: figure out if it is still in use:\r\n // ----------------------------------------------\r\n //this.count = this.allDictionaryDataCount.getValue(modelName);\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.count) && this.count >= 0) {\r\n // this.count++;\r\n //}\r\n //else this.count = 1;\r\n\r\n //this.allDictionaryDataCount.set(modelName, this.count);\r\n }\r\n }\r\n }\r\n }\r\n // -------------------------------------------------------------------------------------\r\n public resetDictionary (modelName : string) : any | void { \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelName)) { \r\n // debugger;\r\n switch (modelName.toLowerCase()) {\r\n\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n case 'buddy':\r\n this.buddyDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'chatactivity':\r\n // debugger;\r\n this.chatActivityDictionary = new Dictionary();\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: chathistoryId must appear beore chathistory\r\n // -------------------------------------------------------------------------\r\n case 'chatconversationid':\r\n this.chatConversationIdDictionary = new Dictionary();\r\n // debugger;\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n // NOTE: \r\n // if (id !== null | undefined ) { return id; }else {return model.id; } \r\n // the above expression is equal to this expression == id? id : model.id\r\n // -------------------------------------------------------------------------\r\n case 'chatconversation':\r\n // this.chatHistoryDictionary.set(id, model);\r\n // debugger;\r\n this.chatConversationDictionary = new Dictionary();\r\n \r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: emailtileId must appear beore emailtile\r\n // -------------------------------------------------------------------------\r\n //case 'emailtileid':\r\n // debugger;\r\n // this.emailTileIdDictionary = new Dictionary();\r\n // break;\r\n // -------------------------------------------------------------------------\r\n case 'emailtile':\r\n debugger;\r\n this.emailTileDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: enotetileId must appear beore enotetile\r\n // -------------------------------------------------------------------------\r\n //case 'enotetileid':\r\n // // debugger;\r\n // this.enoteTileIdDictionary = new Dictionary();\r\n // break;\r\n // -------------------------------------------------------------------------\r\n case 'enotetile':\r\n // debugger;\r\n this.enoteTileDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'errorlog':\r\n // debugger;\r\n this.errorLogDictionary = new Dictionary();\r\n break;\r\n // ----------------------------------------------\r\n case 'kvphoto':\r\n // debugger;\r\n this.kvPhotoDictionary = new Dictionary();\r\n break;\r\n // ----------------------------------------------\r\n case 'loginsuccess':\r\n // debugger;\r\n this.loginSuccessDictionary = new Dictionary();\r\n break;\r\n //// -------------------------------------------------------------------------\r\n //case 'myblock':\r\n // this.myBlockDictionary = new Dictionary();\r\n // break;\r\n //case 'yourblock':\r\n // this.yourBlockDictionary = new Dictionary();\r\n // break;\r\n //// -------------------------------------------------------------------------\r\n //case 'myfriend':\r\n // this.myFriendDictionary = new Dictionary(); \r\n // break;\r\n //case 'yourfriend':\r\n // this.yourFriendDictionary = new Dictionary();\r\n // break;\r\n //// -------------------------------------------------------------------------\r\n //case 'mylike':\r\n // this.myLikeDictionary = new Dictionary();\r\n // break;\r\n //case 'yourlike':\r\n // this.yourLikeDictionary = new Dictionary();\r\n // break;\r\n //// -------------------------------------------------------------------------\r\n //// TODO:\r\n //case 'mystar':\r\n //case 'yourstar':\r\n // // determine myMemberActivity and yourMemberActivity then update:\r\n // // ---------------------------------------------------------------------------------\r\n // //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // // this.myStarDictionary.set(model.receiverUserId, model);\r\n // // }\r\n // // else if (id == model.senderUserId) {\r\n // // this.yourStarDictionary.set(model.senderUserId, model);\r\n // // }\r\n // //}\r\n // break;\r\n //// -------------------------------------------------------------------------\r\n //// TODO:\r\n //case 'mytrack':\r\n //case 'yourtrack':\r\n // // determine myMemberActivity and yourMemberActivity then update:\r\n // // ---------------------------------------------------------------------------------\r\n // //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // // this.myTrackDictionary.set(model.receiverUserId, model);\r\n // // }\r\n // // else if (id == model.senderUserId) {\r\n // // this.yourTrackDictionary.set(model.senderUserId, model);\r\n // // }\r\n // //}\r\n // break;\r\n //// -------------------------------------------------------------------------\r\n //// TODO:\r\n //case 'mywink':\r\n //case 'yourwink':\r\n // // determine myMemberActivity and yourMemberActivity then update:\r\n // // ---------------------------------------------------------------------------------\r\n // //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // // this.myTrackDictionary.set(model.receiverUserId, model);\r\n // // }\r\n // // else if (id == model.senderUserId) {\r\n // // this.yourTrackDictionary.set(model.senderUserId, model);\r\n // // }\r\n // //}\r\n // break;\r\n //// -------------------------------------------------------------------------\r\n //// TODO:\r\n //case 'myunlock':\r\n //case 'yourunlock':\r\n // // determine myMemberActivity and yourMemberActivity then update:\r\n // // ---------------------------------------------------------------------------------\r\n // //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // // this.myUnlockDictionary.set(model.receiverUserId, model);\r\n // // }\r\n // // else if (id == model.senderUserId) {\r\n // // this.yourUnlockDictionary.set(model.senderUserId, model);\r\n // // }\r\n // //}\r\n // break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mymemberactivity':\r\n case 'yourmemberactivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myMemberActivityDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourMemberActivityDictionary.set(model.senderUserId, model);\r\n // }\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mymemberlockingactivity':\r\n case 'yourmemberlockingactivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myMemberLockingActivityDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourMemberLockingActivityDictionary.set(model.senderUserId, model);\r\n // }\r\n // }\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mymembertrackingactivity':\r\n case 'yourmembertrackingactivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // --------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myMemberStarTrackWinkActivityDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourMemberStarTrackWinkActivityDictionary.set(model.senderUserId, model);\r\n // }\r\n //}\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // Note: mychatId must appear beore mychat\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mychatid':\r\n // debugger;\r\n // this.myChatIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mychat':\r\n // debugger;\r\n // this.myChatDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: mychatId must appear beore mychat\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myoutboxchatid':\r\n // debugger;\r\n // this.myOutboxChatIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myoutboxchat':\r\n // debugger;\r\n // this.myOutboxChatDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: myEmailId must appear beore myEmail\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myemailid':\r\n // debugger;\r\n // this.myEmailIdDictionary.set(id, model);\r\n // debugger;\r\n //let eArr : any[] = [];\r\n //if (this.myEmailIdDictionary?.size() > 0) {\r\n // eArr = this.myEmailIdDictionary?.getValue(this.loginSuccess.signedInUserId) as number[];\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n // if (typeof (model) === 'number') {\r\n // // debugger;\r\n // eArr = ArraySupportServiceStatic.mergeArraysUniq(eArr, [ model ]);\r\n // this.myEmailIdDictionary?.set(this.loginSuccess.signedInUserId, eArr);\r\n // }\r\n // else if (model instanceof Array) {\r\n // eArr = ArraySupportServiceStatic.mergeArraysUniq(eArr, model);\r\n // this.myEmailIdDictionary?.set(this.loginSuccess.signedInUserId, eArr);\r\n // // debugger;\r\n // }\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myemail':\r\n // debugger;\r\n // this.myEmailDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: myNotificationId must appear beore myNotificationr\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mynotificationid':\r\n // debugger;\r\n // this.myNotificationIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mynotification':\r\n // debugger;\r\n // this.myNotificationDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: photoBnId must appear beore photoBn\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'photobnid':\r\n // debugger;\r\n //if (typeof (model) === 'number') {\r\n // // debugger;\r\n // this.userPhotoBnIdDictionary.set(id, [ model ]);\r\n //}\r\n //else if (model instanceof Array) {\r\n // // debugger;\r\n // this.userPhotoBnIdDictionary.set(id, model);\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'photobn':\r\n // debugger;\r\n // this.photoBnDictionary.set(id, model);\r\n //if (model instanceof Array) {\r\n // // debugger;\r\n // model.map(e => {\r\n // this.photoBnDictionary.set(e.photoBnId, e);\r\n // })\r\n //}\r\n //else if (typeof (model) === 'object' || model instanceof BoxNonceEntity) {\r\n // // debugger;\r\n // // this.photoBnDictionary.set(model.photoBnId, model);\r\n //}\r\n break;\r\n\r\n // ---------------------------------------------------------------------------------------------------------\r\n // TODO:\r\n case 'photo':\r\n // debugger;\r\n // this.photoDictionary.set(model.id, model);\r\n break;\r\n // ---------------------------------------------------------------------------------------------------------\r\n // TODO:\r\n case 'preference':\r\n // debugger;\r\n // this.preferenceDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n //case 'profileimage':\r\n // // debugger;\r\n // this.profileImageDictionary.set(model.sitUserId, model);\r\n // // this.saveDictionaryToDbDexie( this.profileImageDictionary, 'ProfileImage', this.loginSuccess.signedInUserId );\r\n // break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'profileinfo':\r\n // debugger;\r\n // this.profileInfoDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'profilecontent':\r\n // debugger;\r\n // this.profileContentDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'profilepics':\r\n // debugger;\r\n // this.profilePicsDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n // model == number[]\r\n case 'profiletileid':\r\n // debugger;\r\n // this.profileTileIdDictionary.set(id, model);\r\n\r\n // if ( typeof ( model ) === 'number' )\r\n // {\r\n // // debugger;\r\n // this.profileTileIdsDictionary.set( model, model );\r\n // // this.saveDictionaryToDbDexie( this.profileTileIdDictionary, 'ProfileTileId', this.loginSuccess.signedInUserId );\r\n // }\r\n // else if ( model instanceof Array )\r\n // {\r\n // // debugger;\r\n // model.map( e =>\r\n // {\r\n // // debugger;\r\n // this.profileTileIdsDictionary.set( e, e );\r\n // // this.saveDictionaryToDbDexie( this.profileTileIdDictionary, 'ProfileTileId', this.loginSuccess.signedInUserId );\r\n // } );\r\n // }\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'profiletile':\r\n // debugger;\r\n // this.profileTileDictionary.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : model.id, model)\r\n\r\n //if (this.profileTileDictionary.size() == 0 || !this.profileTileDictionary.has(model.sitUserId)) {\r\n // this.profileTileDictionary.set(model.sitUserId, model);\r\n //}\r\n //else {\r\n // // debugger;\r\n // let dTile : ProfileTile = this.profileTileDictionary.getValue(model.sitUserId) as ProfileTile;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dTile)) {\r\n // // debugger;\r\n // // CopyServiceStatic.copyProfileTileIfExists(dTile, model);\r\n // dTile.copyIfExists(model);\r\n // this.profileTileDictionary.set(dTile.sitUserId, dTile);\r\n // }\r\n\r\n //}\r\n // debugger;\r\n\r\n // debugger;\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: sitUserId must appear beore sitUser\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n // NOte: model == number[]\r\n case 'situserid':\r\n // debugger;\r\n //let tArr : any[] = [];\r\n //if (this.sitUserIdDictionary?.values().length > 0) {\r\n // tArr = this.sitUserIdDictionary?.getValue(this.loginSuccess.signedInUserId) as number[];\r\n //}\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tArr)) {\r\n // if (typeof (model) === 'number') {\r\n // // debugger;\r\n // tArr = ArraySupportServiceStatic.mergeArraysUniq(tArr, [ model ]);\r\n // this.sitUserIdDictionary?.set(id, tArr);\r\n // }\r\n // else if (model instanceof Array) {\r\n // tArr = ArraySupportServiceStatic.mergeArraysUniq(tArr, model);\r\n // this.sitUserIdDictionary?.set(id, tArr);\r\n // // debugger;\r\n // }\r\n //}\r\n //else {\r\n // this.sitUserIdDictionary?.set(id, model);\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'situser':\r\n // debugger;\r\n //if (model instanceof Array) {\r\n // // debugger;\r\n\r\n // model.map(e => {\r\n // // debugger;\r\n // this.sitUserDictionary?.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : e.id, e);\r\n // });\r\n //}\r\n //else if (model) {\r\n // if (id > 0) {\r\n // // debugger;\r\n // this.sitUserDictionary?.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : model.id, model);\r\n // }\r\n // else if (model.sitUserId > 0) {\r\n // // debugger;\r\n // this.sitUserDictionary?.set(model.sitUserId, model);\r\n // }\r\n //}\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'spinnertimer':\r\n // debugger;\r\n // this.spinnerTimerDictionary.set(model.startTimer, model);\r\n // this.saveDictionaryToDbDexie( this.spinnerTimerDictionary, 'SpinnerTimer', this.loginSuccess.signedInUserId );\r\n\r\n break;\r\n case 'filteredkvphoto':\r\n // debugger;\r\n this.filteredKvPhotoDictionary = new Dictionary();\r\n\r\n break;\r\n case 'unfilteredkvphoto':\r\n this.unFilteredKvPhotoDictionary = new Dictionary();\r\n\r\n break;\r\n default:\r\n // ;\r\n break;\r\n // -------------------------------------------------------------------------\r\n }\r\n // debugger;\r\n // Note: TODO: figure out if it is still in use:\r\n // ----------------------------------------------\r\n //this.count = this.allDictionaryDataCount.getValue(modelName);\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.count) && this.count >= 0) {\r\n // this.count++;\r\n //}\r\n //else this.count = 1;\r\n\r\n //this.allDictionaryDataCount.set(modelName, this.count);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO: comment/remove before deployment. Keep until testing.\r\n // ---------------------------------------------------------------\r\n //public updateChatHistoryDictionary ( chatArr: Chat[] ): void\r\n //{\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( chatArr ) && chatArr.length > 0 )\r\n // {\r\n // chatArr.map( e =>\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e )\r\n // && e.receiverSitUserId === this.loginSuccess.signedInUserId // make sure that I am the recipient\r\n // && this.chatHistoryDictionary.has( e.senderSitUserId ) ) // Note: dictionary key==senderSitUserId\r\n // {\r\n // this.chatHistoryDictionary.remove( e.senderSitUserId );\r\n // }\r\n // this.chatHistoryDictionary.set( e.senderSitUserId, e );\r\n // } );\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n // Intend to deprecate.\r\n // ---------------------------------------------------------------\r\n public updateMyChatDictionary ( chatarr : any ): void\r\n {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( chatarr ) && chatarr.length > 0)\r\n {\r\n let chatArr = JSON.parse(chatarr);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatArr) && chatArr.length > 0) {\r\n for (var i = 0; i < chatArr.length; i++) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatArr[ i ])\r\n && chatArr[ i ].receiverSitUserId === this.loginSuccess.signedInUserId // make sure that I am the recipient\r\n && this.myChatDictionary.has(chatArr[ i ].senderSitUserId)) // Note: dictionary key==senderSitUserId\r\n {\r\n this.myChatDictionary.remove(chatArr[ i ].senderSitUserId);\r\n }\r\n this.myChatDictionary.set(chatArr[ i ].senderSitUserId, chatArr[ i ]);\r\n };\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // public updateMyEmailTileDictionary ( commActArr: CommunicationActivity[] ): void\r\n // {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commActArr ) && commActArr.length > 0 )\r\n // {\r\n // // debugger;\r\n // commActArr.map( e =>\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e.communicationType )\r\n // && ( e.communicationType.toLowerCase().indexOf( 'email' ) !== -1) // TODO: check the magic-string\r\n // && ( e.receiverSitUserId === this.loginSuccess.signedInUserId // make sure that I am the recipient\r\n // || e.senderSitUserId === this.loginSuccess.signedInUserId)) // or sender\r\n // {\r\n\r\n // // if ( this.myEmailTileDictionary.has( e.senderSitUserId ) ) // Note: dictionary key==senderSitUserId\r\n // // {\r\n // // // debugger;\r\n // // this.myEmailTileDictionary.remove( e.senderSitUserId );\r\n // // }\r\n // // debugger;\r\n // this.myEmailTileDictionary.set( e.senderSitUserId, e );\r\n // // debugger;\r\n // }\r\n // } );\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n // public updateMyNotificationDictionary ( commActArr: CommunicationActivity[] ): void\r\n // {\r\n // // debugger;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commActArr ) && commActArr.length > 0 )\r\n // {\r\n // commActArr.map( e =>\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e.communicationType )\r\n // && ( e.communicationType.toLowerCase().indexOf( 'note' ) !== -1\r\n // || e.communicationType.toLowerCase().indexOf( 'notification' ) !== -1 ) // TODO: check the magic-string\r\n // && e.receiverSitUserId === this.loginSuccess.signedInUserId )// make sure that I am the recipient\r\n // {\r\n // if (this.myNotificationDictionary.has( e.senderSitUserId ) ) // Note: dictionary key==senderSitUserId\r\n // {\r\n // // debugger;\r\n // let dictEnote = this.myNotificationDictionary.getValue( e.senderSitUserId ) as CommunicationActivity;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dictEnote ) && dictEnote.communicationSubType.toLowerCase().indexOf( e.communicationSubType.toLowerCase() ) !== -1 )\r\n // {\r\n // // debugger;\r\n // this.myNotificationDictionary.remove( e.senderSitUserId );\r\n // }\r\n // }\r\n // // debugger;\r\n // this.myNotificationDictionary.set( e.senderSitUserId, e );\r\n // }\r\n // } );\r\n // }\r\n // }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ===============================================================\r\n * BoxNonceEntity(Bn) Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n public getPreferenceDicBn () : Dictionary\r\n {\r\n return this.preferenceBnDictionary;\r\n }\r\n public setPreferenceDictionaryBn ( prefDic : Dictionary ) : void\r\n {\r\n this.preferenceBnDictionary = prefDic;\r\n }\r\n // ---------------------------------------------------------------\r\n // public getPhotoBnArrDictionarytionary () : Dictionary\r\n // {\r\n // return this.photoBnArrDictionary;\r\n // }\r\n // public setPhotoBnArrDictionarytionary ( profPicDic : Dictionary ) : void\r\n // {\r\n // this.photoBnArrDictionary = profPicDic;\r\n // }\r\n // ---------------------------------------------------------------\r\n public getProfileInfoDictionaryBn () : Dictionary\r\n {\r\n return this.profileInfoBnDictionary;\r\n }\r\n public setProfileInfoDictionaryBn ( profInfoDic : Dictionary ) : void\r\n {\r\n this.profileInfoBnDictionary = profInfoDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getProfileTileIdDictionaryBn () : Dictionary\r\n {\r\n return this.profileTileIdBnDictionary;\r\n }\r\n public setProfileTileIdDictionaryBn ( pTileIdDic : Dictionary ) : void\r\n {\r\n this.profileTileIdBnDictionary = pTileIdDic;\r\n }\r\n // ---------------------------------------------------------------\r\n public getProfileTileDictionaryBn () : Dictionary\r\n {\r\n return this.profileTileBnDictionary;\r\n }\r\n public setProfileTileDictionaryBn ( pTileDic : Dictionary ) : void\r\n {\r\n this.profileTileBnDictionary = pTileDic;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n //public populateBnDictionariesFromIndexedDb (): void\r\n //{\r\n // // debugger;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.indexedDbService.getAllStoreData( 'Preference', this.loginSuccess.signedInUserId.toString()).then( modelArr =>\r\n // {\r\n // this.modelArrayToDictionary( modelArr, this.preferenceDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('ProfileInfo', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.profileInfoDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('ProfilePics', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.profilePicsDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('ProfileTile', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.profileTileDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('ProfileTileId', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.profileTileIdsDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('SitUser', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.sitUserDictionary );\r\n // } );\r\n // // this.indexedDbService.getAllStoreData( 'PhotoId', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // // this.modelArrayToDictionary( modelArr, this.photoIdDictionary );\r\n // // } );\r\n // this.indexedDbService.getAllStoreData('Photo', this.loginSuccess.signedInUserId.toString() ).then( modelArr => {\r\n // this.modelArrayToDictionary( modelArr, this.photoDictionary );\r\n // } );\r\n // // this.indexedDbService.getAllStoreData( 'PhotoBnId', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // // this.modelArrayToDictionary( modelArr, this.photoBnIdDictionary );\r\n // // } );\r\n // this.indexedDbService.getAllStoreData('PhotoBn', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.photoBnDictionary );\r\n // } );\r\n\r\n // // debugger;\r\n //}\r\n // ---------------------------------------------------------------\r\n public modelArrayToBnDictionary ( modelArr : any[], modelDic : Dictionary ) : void\r\n {\r\n if ( !!modelArr && modelArr.length > 0 )\r\n {\r\n modelArr.map( ( e ) =>\r\n {\r\n modelDic.set( e.sitUserId, e );\r\n } );\r\n }\r\n }\r\n // ---------------------------------------------------------------------------\r\n // private inInitialize (): void\r\n // {\r\n // this.httpService = new HttpService(this.httpClient, this.router);\r\n // this.photoPrivacyService = new PhotoPrivacyService(this.httpService);\r\n // }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n /*\r\n * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n * (2) https:// www.concretepage.com/angular-2/angular-4-renderer2-example\r\n * (3) https:// stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n * (4) https:// stackblitz.com/edit/timer-with-pdestroyed\r\n */\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n /*\r\n * this.timerArray.forEach(timer => clearInterval(timer));\r\n * debugger;\r\n */\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n\r\n// =================================================================\r\n\r\n // ---------------------------------------------------------------\r\n // savePhotoIdsInDictionaryAndIndexedDb ( sitUserId: number, result: number[] ) : void\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) && result.length > 0 )\r\n // {\r\n // this.userPhotoIds = result;\r\n // EmitterSubjectService.setUserPhotoIds( this.userPhotoIds );\r\n\r\n // this.updateDictionary( this.userPhotoIds, 'UserPhotoId', sitUserId );\r\n\r\n // this.indexedDbToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // this.photoIdDictionary, 'UserPhotoId', this.loginSuccess.signedInUserId );\r\n\r\n // // since successfully unsalted UserPhotoIds, we can save the BoxNonce of it in indexedDb:\r\n // // --------------------------------------------------------------------------------------\r\n // // this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt( result.toString() );\r\n // // this.boxNonceEntity.box = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box );\r\n // // this.boxNonceEntity.nonce = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce );\r\n // // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // // this.boxNonceEntity.id = sitUserId;\r\n // // this.boxNonceEntity.key = this.boxNonceEntity.id.toString();\r\n // // this.boxNonceEntity.entityName = 'PhotoId';\r\n // // this.boxNonceEntity.sitUserId = sitUserId;\r\n // // debugger;\r\n // // this.triageAllDataForIndexedDbAndDictionaryService.savePhotoIdDictionaryToIndexedDb( this.boxNonceEntity );\r\n\r\n // // debugger; // TODO: check to see the values\r\n // // return this.userPhotoIds;\r\n // // debugger;\r\n // }\r\n // }\r\n\r\n\r\n\r\n","import { DictionaryService } from './dictionaryService.service';\r\nimport { DictionaryIOService } from './dictionaryIOService.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DictionaryServiceService {\r\n constructor (\r\n private dictionaryService : DictionaryService,\r\n private dictionaryIOService : DictionaryIOService,\r\n )\r\n {\r\n } \r\n // ------------------------------------------------------------------\r\n setDictionaryService (ds : DictionaryService): void {\r\n this.dictionaryService = ds;\r\n return;\r\n }\r\n getDictionaryService () : DictionaryService {\r\n return this.dictionaryService;\r\n }\r\n // ------------------------------------------------------------------\r\n setDictionaryIOService (dios : DictionaryIOService) : void {\r\n this.dictionaryIOService = dios;\r\n return;\r\n }\r\n getDictionaryIOService () : DictionaryIOService {\r\n return this.dictionaryIOService;\r\n }\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { PhotoOmniModel } from '../../models/common/photoOmni.model';\r\nimport { KV } from '../../models/keyValue/kv.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { MemberViewMgmtModel } from '../../models/member/memberViewMgmtModel.model';\r\nimport { PagerMemberActivity } from '../../models/pagination/pagerMemberActivity.model';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { SignedInUserService } from '../commonServiceService/signedInUserService.service';\r\nimport { SitUserService } from '../commonServiceService/sitUserService.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { KvArrayService } from '../coreServiceService/kvArrayService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryIOService } from '../dictionaryServiceService/dictionaryIOService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { MemberService } from '../memberServiceService/memberService.service';\r\nimport { AbstractPagerVPhotoNavService } from '../pagerServiceService/abstractPagerVPhotoNavService.service';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\nimport { PagerPhotoMgmtService } from '../pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerServiceService } from '../pagerServiceService/pagerServiceService.service';\r\nimport { PagerSupportService } from '../pagerServiceService/pagerSupportService.service';\r\n// import { PagerVKvPhotoNavService } from '../../app/pagerModule/pagerVPhotoNav/pagerVPhotoNavService.service';\r\nimport { PhotoBnService } from '../photoServiceService/photoBnService.service';\r\nimport { PhotoPrivacyService } from '../photoServiceService/photoPrivacyService.service';\r\nimport { PreferenceService } from '../profileServiceService/preferenceService.service';\r\nimport { ProfileContentService } from '../profileServiceService/profileContentService.service';\r\nimport { ProfileInfoService } from '../profileServiceService/profileInfoService.service';\r\nimport { ProfilePicsService } from '../profileServiceService/profilePicsService.service';\r\nimport { ProfileTileService } from '../profileTileServiceService/profileTileService.service';\r\nimport { BackgroundImageAnimationService } from '../rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererServiceService } from '../rendererServiceService/rendererServiceService.service';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\n\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\n//import { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\n//import { SitUser } from '../../../models/account/sitUser.model';\r\n//import { PhotoOmniModel } from '../../../models/common/photoOmni.model';\r\n//import { KV } from '../../../models/keyValue/kv.model';\r\n//import { KvAny } from '../../../models/keyValue/kvAny.model';\r\n//import { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\n//import { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\n//import { MemberViewMgmtModel } from '../../../models/member/memberViewMgmtModel.model';\r\n//import { PagerMemberActivity } from '../../../models/pagination/pagerMemberActivity.model';\r\n//import { PagerPhotoMgmt } from '../../../models/pagination/pagerPhotoMgmt.model';\r\n//import { Preference } from '../../../models/profile/preference.model';\r\n//import { ProfileInfo } from '../../../models/profile/profileInfo.model';\r\n//import { ProfilePics } from '../../../models/profile/profilePics.model';\r\n//import { ProfileTile } from '../../../models/profile/profileTile.model';\r\n//import { CommonServiceService } from '../../commonServiceService/commonServiceService.service';\r\n//import { SitUserService } from '../../commonServiceService/sitUserService.service';\r\n//import { CoreServiceService } from '../../coreServiceService/coreServiceService.service';\r\n//import { KvArrayService } from '../../coreServiceService/kvArrayService.service';\r\n//import { GlyphiconMenuService } from '../../pagerServiceService/glypgiconMenuService.service';\r\n//import { PagerPhotoMgmtService } from '../../pagerServiceService/pagerPhotoMgmtService.service';\r\n//import { PagerServiceService } from '../../pagerServiceService/pagerServiceService.service';\r\n//import { PagerSupportService } from '../../pagerServiceService/pagerSupportService.service';\r\n//import { PagerVKvPhotoNavService } from '../../pagerServiceService/pagerVKvPhotoNavService.service';\r\n//import { PhotoBnService } from '../../photoServiceService/photoBnService.service';\r\n//import { PhotoPrivacyService } from '../../photoServiceService/photoPrivacyService.service';\r\n//import { PhotoServiceService } from '../../photoServiceService/photoServiceService.service';\r\n//import { PreferenceService } from '../../profileServiceService/preferenceService.service';\r\n//import { ProfileContentService } from '../../profileServiceService/profileContentService.service';\r\n//import { ProfileInfoService } from '../../profileServiceService/profileInfoService.service';\r\n//import { ProfilePicsService } from '../../profileServiceService/profilePicsService.service';\r\n//import { ProfileServiceService } from '../../profileServiceService/profileServiceService.service';\r\n//import { ProfileTileService } from '../../profileTileServiceService/profileTileService.service';\r\n//import { ProfileTileServiceService } from '../../profileTileServiceService/profileTileServiceService.service';\r\n//import { BackgroundImageAnimationService } from '../../rendererServiceService/backgroundImageAnimationService.service';\r\n//import { RendererServiceService } from '../../rendererServiceService/rendererServiceService.service';\r\n//import { ArrayServiceStatic } from '../arrayServiceStatic.service';\r\n//import { ArraySupportServiceStatic } from '../arraySupportServiceStatic.service';\r\n//import { DictionaryIOServiceStatic } from '../dictionaryIOServiceStatic.service';\r\n//import { DictionaryServiceStatic } from '../dictionaryServiceStatic.service';\r\n//import { EmitterSubjectService } from '../emitterObserverStaticServices/emitterSubject.service';\r\n//import { FrequentlyUsedFunctionsServiceStatic } from '../frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n//import { JsRegExpServiceStatic } from '../jsRegExpServiceStatic.service';\r\n// =====================================================================\r\n// User Profile Rendering System:\r\n// -------------------------------\r\n// This service is exclusively dedicated to rendering a user's profile;\r\n// a user's profile can be rendered from three data sources:\r\n// 1) from ProfileTile model, 2) from Dictionary-data 3) from server-data;\r\n// ...\r\n// Dicrionary will contain data only after server-sent-data is processed\r\n// and saved into the dicrionaries.\r\n//\r\n// But a registered user's limited set of profile-information is available \r\n// in Members page via the respective MemberTile, and the MemberTile UI/UX's\r\n// data is held at ProfileTile model.\r\n//\r\n// Therefore, this system tries to render the user's profile from the \r\n// ProfileTile first if it is available.\r\n// (some user may have not completed their profile partially)\r\n// \r\n// This system uses:\r\n// PagerVerticalKvPhotoNav UI/UX,\r\n// PagerVerticalGlyphMenuForPhotoMgmt UI/UX, and\r\n// PagerVerticalGlyphMenuForViewMember UI/UX\r\n// in addition to displaying the user's profile information in accordions\r\n// and primary picture along with other pictures as background image(s) of the app.\r\n// \r\n// =====================================================================\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class DisplayProfileService implements OnDestroy {\r\n // public pagerVKvPhotoNavService! : PagerVKvPhotoNavService;\r\n public currentKvPhoto : KvPhoto = new KvPhoto();\r\n public distUnit = '';\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public height : any;\r\n public heightUnit : any;\r\n public isKvData = false;\r\n public isKvFile = false;\r\n public isKvNext = false;\r\n public isKvPrev = false;\r\n public isKvUrlData = false;\r\n public isMobilevar = false;\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isViewMember = false;\r\n public kv : KV;\r\n public kvGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public kvPhotoArrBackup : KvPhoto[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public memberViewMgmtModel : MemberViewMgmtModel = new MemberViewMgmtModel();\r\n public pageSize = 6;\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public pagerVMemActGlyphForPhotoMgmt : PagerMemberActivity = new PagerMemberActivity();\r\n public pagerVMemActGlyphForViewMember : PagerMemberActivity = new PagerMemberActivity();\r\n public photoOmni : PhotoOmniModel = new PhotoOmniModel();\r\n public preference : Preference = new Preference();\r\n public preferenceKvAnyArr : KvAny[] = [];\r\n public profileInfo : ProfileInfo = new ProfileInfo();\r\n public profileInfoView : ProfileInfo = new ProfileInfo();\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profileExecutionOption : string = '';\r\n public profileExecutionOptionArr : string[] = [ 'serverData', 'profileTile', 'dictionaryData' ];\r\n public rootScopeTs : Set = new Set();\r\n public signedInUser : SitUser = new SitUser();\r\n public signedInUserId : number = 0;\r\n public signedInUserPagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public signedInUserKvPhotoArr : KvPhoto[] = [];\r\n public sitUser : SitUser = new SitUser();\r\n public sitUerId : number = 0;\r\n\r\n public width : any;\r\n public weightUnit : any;\r\n\r\n constructor (\r\n public abstractPagerVPhotoNavService : AbstractPagerVPhotoNavService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public dictionaryService : DictionaryService,\r\n public dictionaryIOService : DictionaryIOService,\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public httpService : HttpService,\r\n public kvArrayService : KvArrayService,\r\n public memberService : MemberService,\r\n public pagerPhotoMgmtService : PagerPhotoMgmtService,\r\n public pagerSupportService : PagerSupportService,\r\n public pagerServiceService : PagerServiceService,\r\n public photoBnService : PhotoBnService,\r\n public photoPrivacyService : PhotoPrivacyService,\r\n public preferenceService : PreferenceService,\r\n public profileContentService : ProfileContentService,\r\n public profileInfoService : ProfileInfoService,\r\n public profilePicsService : ProfilePicsService,\r\n public profileTileService : ProfileTileService,\r\n public bias : BackgroundImageAnimationService,\r\n public sitUserService : SitUserService,\r\n public signedInUserService : SignedInUserService,\r\n public rendererServiceService : RendererServiceService,\r\n ) {\r\n // this.pagerVKvPhotoNavService = this.pagerServiceService.getPagerVKvPhotoNavService();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------------\r\n //public createProfilePicsFromKvPhotoDictionary (sitUserId : number) : ProfilePics | any {\r\n //\t// debugger;\r\n //\tlet profilePics = new ProfilePics();\r\n //\tif (sitUserId > 0) {\r\n //\t\tprofilePics.sitUserId = sitUserId;\r\n //\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(DictionaryServiceStatic.kvPhotoDictionary) && DictionaryServiceStatic.kvPhotoDictionary.size() > 0) {\r\n //\t\t\t// debugger;\r\n //\t\t\tprofilePics = DictionaryServiceStatic.getProfilePicsFromKvPhotoDictionary(sitUserId); // KvPhotos are not filtered yet.\r\n //\t\t\t// debugger;\r\n //\t\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)\r\n //\t\t\t\t&& !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.unFilteredKvPhotoArr)\r\n //\t\t\t\t&& profilePics.unFilteredKvPhotoArr.length > 0) {\r\n //\t\t\t\t// debugger;\r\n //\t\t\t\tthis.photoPrivacyService.filterKvPhotoArr(profilePics.unFilteredKvPhotoArr).then(result => {\r\n //\t\t\t\t\t// debugger;\r\n //\t\t\t\t\tif (result) {\r\n //\t\t\t\t\t\tprofilePics.filteredKvPhotoArr = result;\r\n //\t\t\t\t\t\t// debugger;\r\n //\t\t\t\t\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.filteredKvPhotoArr) && profilePics.filteredKvPhotoArr.length > 0) {\r\n //\t\t\t\t\t\t\t// debugger;\r\n //\t\t\t\t\t\t\tprofilePics.filteredKvPhotoArr.forEach(e => {\r\n //\t\t\t\t\t\t\t\tif (e) {\r\n //\t\t\t\t\t\t\t\t\tprofilePics.filteredKvPhotoDictionary.setValue(e.photoBnId, e);\r\n //\t\t\t\t\t\t\t\t}\r\n //\t\t\t\t\t\t\t})\r\n //\t\t\t\t\t\t}\r\n //\t\t\t\t\t}\r\n //\t\t\t\t})\r\n //\t\t\t}\r\n //\t\t}\r\n //\t\treturn profilePics;\r\n //\t}\r\n //\telse return null;\r\n // }\r\n // ------------------------------------------------------------------------------\r\n // Note: this function will display all the VerticalMenues for ProfilePics model\r\n // ------------------------------------------------------------------------------\r\n //public displayPhotoMgmtView (pPics : ProfilePics) : Promise {\r\n // let kvMemActGlyphArr : any = [];\r\n // return new Promise((resolve, reject) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)) {\r\n // // Note: PagerVPhotoNavComponent via AppComponent will display all necessary view-parts:\r\n // // ------------------------------------------------------------------------------------\r\n // debugger;\r\n // this.profilePics.unFilteredKvPhotoArr = pPics.unFilteredKvPhotoArr.sort((a, b) => {\r\n // return a.photoId - b.photoId\r\n // });\r\n\r\n // EmitterSubjectService.setProfileImages(this.profilePics.unFilteredKvPhotoArr);\r\n\r\n // EmitterSubjectService.emitProfileImages(this.profilePics.unFilteredKvPhotoArr);\r\n\r\n // let currentItem = EmitterSubjectService.getCurrentKvPhoto();\r\n // let index = -1;\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentItem)) {\r\n // index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdOrPhotoIdInKvPhotoArr(this.profilePics.unFilteredKvPhotoArr, currentItem.photoBnId, currentItem.photoId);\r\n // if (index <= -1) {\r\n // {\r\n // debugger;\r\n // index = ArrayServiceStatic.getIndexOfItemByProfileIdInKvPhotoArr(this.profilePics.unFilteredKvPhotoArr, currentItem.profileId);\r\n // }\r\n // }\r\n\r\n // if (index > -1) {\r\n // this.glyphiconMenuService.displayGlyphiconMenus(currentItem.sitUserId).then(result => {\r\n // debugger;\r\n // kvMemActGlyphArr = result;\r\n // });\r\n // }\r\n // }\r\n // else {\r\n // debugger;\r\n // this.glyphiconMenuService.displayGlyphiconMenus(pPics.sitUserId).then(result => {\r\n // debugger;\r\n // kvMemActGlyphArr = result;\r\n // });\r\n // }\r\n // resolve(kvMemActGlyphArr);\r\n // }\r\n // else reject('displayPhotoMgmtView() for profilePics failed @ PhotoMgmtService - line: 275');\r\n // });\r\n //}\r\n // ------------------------------------------------------------------------------\r\n // Note: this function will display all the VerticalMenues for ProfilePics model\r\n // This method expects a ProfilePics model's data set in the Emitter,\r\n // and that the model's data is complete, meaning both unFilteredKvPhotos\r\n // and filteredKvPhotos are present in both arrays and dictionaries.\r\n //\r\n // While selecting the executionOptions, we create a complete ProfilePics\r\n // and set it in Emitter.\r\n // ------------------------------------------------------------------------------\r\n //\tProfilePics/UserPics methods: Begin\r\n // ------------------------------------------------------------------------------\r\n public displayProfilePicsFromEmitterOrDictionary (situserid : number) : Observable {\r\n let date = new Date();\r\n let kvMemActGlyphArr : [];\r\n let pagerVKvPhotoNav : any;\r\n let pPics = EmitterSubjectService.getProfilePics();\r\n let sitUserId : number = situserid;\r\n\r\n return new Observable(subscriber => {\r\n // debugger;\r\n \r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId > 0 && pPics.sitUserId === situserid) {\r\n // debugger;\r\n this.displayProfilePicsView(pPics)\r\n .subscribe(data => {\r\n this.pagerVKvPhotoNav = data;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n subscriber.complete();\r\n });\r\n }\r\n else if (sitUserId > 0) {\r\n pPics = this.dictionaryIOService.getProfilePicsFromDictionary(sitUserId);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId > 0) {\r\n this.displayProfilePicsView(pPics)\r\n .subscribe(data => {\r\n this.pagerVKvPhotoNav = data;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n subscriber.complete();\r\n });\r\n // return this.displayUserPicsFromDictionary(sitUserId).then(data => {\r\n // this.pagerVKvPhotoNav = data;\r\n // });\r\n }\r\n } \r\n });\r\n\t}\r\n // ------------------------------------------------------------------------------\r\n // Note: this function will display all the VerticalMenues for ProfilePics model\r\n\t//\t\t\t\tThis method is unique and is used for Breadcrum-based-Navigation.\r\n\t//\r\n\t//\t\t\t\tIMPORTANT!!!:\r\n\t//\t\t\t\t-------------\r\n\t//\t\t\t\tBreadcrum-based-navigation is different than RedirectionServiceStatic-based-navigation.\r\n // ------------------------------------------------------------------------------\r\n public displayProfilePicsView (profilePics : ProfilePics) : Observable {\r\n // debugger;\r\n let date = new Date();\r\n let kvMemActGlyphArr : [];\r\n let pagerVKvPhotoNav : any;\r\n let pPics = profilePics;\r\n\r\n return new Observable((subscriber) => { \r\n\t\tthis.isViewMember = EmitterSubjectService.getIsViewMember();\r\n\t\tthis.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n\t\tthis.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n \r\n\t\t\t// debugger;\r\n\t\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId > 0) {\r\n\t\t\t\t// debugger;\r\n\t\t\t\t \r\n\t\t\t\tlet kvPhotoArr : KvPhoto[] = [];\r\n\r\n\t\t\t\t// ----------------------------------------------------------------------\r\n\t\t\t\t// Note:\tDuring execution of this method via the Breadcrum Navigation,\r\n\t\t\t\t//\t\t\t\tthe booleans(isViewMember/isMyProfile/isPhotoMgmt) values are false /default-valued.\r\n\t\t\t\t//\t\t\t\r\n\t\t\t\t//\t\t\t\tHence we determine these values using sitUser, loginSuccess and avatar-profileTile, and emit these values\r\n\t\t\t\t// ----------------------------------------------------------------------\r\n\t\t\t\tthis.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n if (!(new ProfilePics()?.isKvPhotoDictionariesEmpty(pPics)) && pPics.unFilteredKvPhotoDictionary?.size > 0) {\r\n kvPhotoArr = JSON.parse(JSON.stringify(pPics.unFilteredKvPhotoDictionary.values())); // ArraySupportServiceStatic.deepCopyArray(pPics.filteredKvPhotoDictionary.values());\r\n pPics.unFilteredKvPhotoArr = kvPhotoArr;\r\n // debugger;\r\n }\r\n \r\n if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0))\r\n {\r\n\t\t\t\t\t// -----------------------------\r\n if (this.isViewMember && this.loginSuccess.signedInUserId !== this.sitUser.sitUserId)\r\n {\r\n\r\n EmitterSubjectService.setIsViewMember(true); // TODO: may need to delete\r\n\t\t\t\t\t\t// debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr) && pPics.unFilteredKvPhotoArr.length > 0) {\r\n kvPhotoArr = JSON.parse(JSON.stringify(pPics.unFilteredKvPhotoArr)); //ArraySupportServiceStatic.deepCopyArray(pPics.filteredKvPhotoArr);\r\n // debugger;\r\n //kvPhotoArr.map(e => {\r\n // this.dictionaryService.updateDictionary(e, 'filteredKvPhotoDictionary', e.photoBnId > 0 ? e.photoBnId : e.photoId > 0 ? e.photoId : e.sitUserId);\r\n //})\r\n\r\n this.abstractPagerVPhotoNavService.executeKvPhotoNavTasks(this.profilePics.unFilteredKvPhotoArr[ 0 ], this.profilePics.unFilteredKvPhotoArr).subscribe(data => {\r\n this.pagerVKvPhotoNav = data;\r\n })\r\n\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n kvPhotoArr = kvPhotoArr.sort((a, b) => {\r\n return a.photoBnId - b.photoBnId\r\n });\r\n\r\n // debugger;\r\n EmitterSubjectService.emitProfileImages(kvPhotoArr);\r\n subscriber.next(kvPhotoArr);// TODO: Caution!!may break badly because it was next(paverVKvPhotoNav)\r\n subscriber.complete();\r\n }\r\n else {\r\n // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayProfilePicsView.filteredKvPhotoArr was null or empty');\r\n }\r\n }\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse /*if (this.loginSuccess.signedInUserId === this.sitUser.sitUserId)*/ {\r\n\t\t\t\t\t\t// debugger;\r\n // Since myProfile and unfilteredKvPhotos are for the signedInUser:\r\n\t\t\t\t\t\t// ----------------------------------------------------------------\r\n\t\t\t\t\t\tthis.isPhotoMgmt = true;\r\n EmitterSubjectService.setIsPhotoMgmt(this.isPhotoMgmt); // // TODO: may need to delete\r\n\r\n\t\t\t\t\t\tlet profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n\r\n\t\t\t\t\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileTile) && profileTile.sitUserId === this.sitUser.sitUserId) {\r\n\t\t\t\t\t\t\tthis.isMyProfile = true;\r\n\t\t\t\t\t\t\tEmitterSubjectService.setIsMyProfile(this.isMyProfile);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// -----------------------------\r\n\r\n if (!(new ProfilePics()?.isKvPhotoDictionariesEmpty(pPics)) && pPics.unFilteredKvPhotoArr.length > 0) {\r\n kvPhotoArr = JSON.parse(JSON.stringify(pPics.unFilteredKvPhotoArr)); \r\n\t\t\t\t\t\t\t// debugger;\r\n\t\t\t\t\t\t}\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr) && pPics.unFilteredKvPhotoArr.length > 0) {\r\n kvPhotoArr = JSON.parse(JSON.stringify(pPics.unFilteredKvPhotoArr)); \r\n\t\t\t\t\t\t\t// debugger;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// debugger;\r\n\t\t\t\t\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n\t\t\t\t\t\t\tkvPhotoArr = kvPhotoArr.sort((a, b) => {\r\n\t\t\t\t\t\t\t\treturn a.photoBnId - b.photoBnId\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t// debugger;\r\n EmitterSubjectService.emitProfileImages(kvPhotoArr);\r\n\r\n // debugger;\r\n subscriber.next(kvPhotoArr);// TODO: Caution!!may break badly because it was next(paverVKvPhotoNav)\r\n subscriber.complete();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t// debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayProfilePicsView.unFilteredKvPhotoArr was null or empty');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayProfilePicsView() rejected promise');\r\n }\r\n\t\t})\r\n }\r\n // ---------------------------------------------------------------\r\n // public displayProfileTileDataAndImage (pTile: ProfileTile) : Promise {\r\n // return new Promise((resolve, reject) => {\r\n // // render vertical menues for profileTile:\r\n // // ---------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n // this.pagerVKvPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks(this.profileTile).subscribe(result => {\r\n // // debugger;\r\n // if (result) {\r\n // // debugger;\r\n // this.pagerVKvPhotoNav = result;\r\n // resolve(this.pagerVKvPhotoNav);\r\n // }\r\n // else {\r\n // // debugger;\r\n // reject('timestamp : ' + new Date().getTime() + ': displayProfileTileDataAndImage () for sitUserId==' + pTile.sitUserId + ' promise returned a null result');\r\n // }\r\n // });\r\n // }\r\n // }).catch(error => {\r\n // // debugger;\r\n // console.log('timestamp : ' + new Date().getTime() + ': displayUserPicsFromProfileTile() rejected the promise. error: ' + error);\r\n // });\r\n\t //}\r\n\t// ---------------------------------------------------------------\r\n public displayUserPicsFromProfileTile (situserId : number) : Observable {\r\n let sitUserId = situserId;\r\n let date = new Date();\r\n\r\n return new Observable((subscriber) => { \r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n\t\t\t// debugger;\r\n\t\t\tif (this.isViewMember) {\r\n\t\t\t\t// debugger;\r\n\t\t\t\tthis.profileTile = EmitterSubjectService.getSelectedProfileTile();\r\n\t\t\t}\r\n\t\t\telse if (this.isPhotoMgmt || this.isMyProfile) {\r\n\t\t\t\t// debugger;\r\n\t\t\t\tthis.profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n\t\t\t}\r\n\r\n\t\t\t// render vertical menues for profileTile:\r\n\t\t\t// ---------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n this.profileTileService.executeProfileTileKvPhotoAndGlyphMenuTasks(this.profileTile).subscribe(result => {\r\n // debugger;\r\n if (result) {\r\n // debugger;\r\n this.pagerVKvPhotoNav = result;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n subscriber.complete();\r\n }\r\n else {\r\n // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayProfileService.displayUserPicsFromProfileTile() for sitUserId==' + sitUserId + ' promise returned a null result');\r\n }\r\n })\r\n }\r\n\t\t})\r\n\t}\r\n\t// ---------------------------------------------------------------\r\n\tpublic displayUserPicsFromDictionary (situserId : number) : Observable {\r\n\t\t// -------------------------------------------------\r\n\t\t// Begin: get user pics( ProfilePics & KvPhotos) from dictionary:\r\n\t\t// -------------------------------------------------\r\n\t\tlet tsitUser : SitUser = new SitUser();\r\n\t\tlet tpKvPhotoArr : KvPhoto[] = [];\r\n\t\tlet sitUserId = situserId;\r\n let date = new Date();\r\n\r\n return new Observable((subscriber) => {\r\n\t\t\t// debugger;\r\n\t\t\tif (sitUserId > 0) {\r\n\t\t\t\t// debugger;\r\n\t\t\t\t// get user's profilePics from Dictionary:\r\n\t\t\t\t// ---------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dictionaryService.profilePicsDictionary)\r\n && this.dictionaryService.profilePicsDictionary.size > 0) {\r\n // debugger;\r\n this.profilePics = this.dictionaryIOService.getProfilePicsFromDictionary(sitUserId) as ProfilePics;\r\n // debugger;\r\n var modelPPics = new ProfilePics();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)\r\n && !(modelPPics?.isKvPhotoDictionariesEmpty(this.profilePics)\r\n || modelPPics?.isModelKvPhotoArraysEmpty(this.profilePics))) {\r\n this.displayProfilePicsView(this.profilePics).subscribe(result => {\r\n // debugger;\r\n subscriber.next(result);\r\n subscriber.complete();\r\n });\r\n } \r\n else {\r\n // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserPicsFromDictionary().profilePics for sitUserId==' + sitUserId + ' was null or empty-1');\r\n }\r\n } \r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserPicsFromDictionary().promise for sitUserId==' + sitUserId + ' was null or empty-3');\r\n\t\t\t}\r\n\t\t})\r\n }\r\n // ---------------------------------------------------------------\r\n // Currently in use:\r\n\t// ---------------------------------------------------------------\r\n displaySignedInUserPicsFromServer () : Observable {\r\n return new Observable((subscriber) => {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.displayUserPicsFromServer(this.loginSuccess.signedInUserId).subscribe(data => { // data is of type pagerVKvPhotoNav\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n this.signedInUserPagerVKvPhotoNav = JSON.parse(JSON.stringify(data));\r\n this.signedInUserKvPhotoArr = JSON.parse(JSON.stringify(data.kvPhotoArr));\r\n subscriber.next(data);\r\n }\r\n })\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUserPagerVKvPhotoNav)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUserPagerVKvPhotoNav.kvPhotoArr)\r\n // && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUserPagerVKvPhotoNav.kvPhotoArr.length > 0)) {\r\n // {\r\n // debugger;\r\n // subscriber.next(this.signedInUserPagerVKvPhotoNav);\r\n // }\r\n //}\r\n //else {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.displayUserPicsFromServer(this.loginSuccess.signedInUserId).subscribe(data => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // this.signedInUserPagerVKvPhotoNav = JSON.parse(JSON.stringify(data));\r\n // this.signedInUserKvPhotoArr = JSON.parse(JSON.stringify(data.kvPhotoArr));\r\n // subscriber.next(data);\r\n // }\r\n // })\r\n //}\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Currently in use:\r\n //\r\n // This method gets the profilePics of the user with sitUseId,\r\n // and returns a pagerVKvPhotoNav\r\n\t// ---------------------------------------------------------------\r\n public displayUserPicsFromServer (situserId : number) : Observable {\r\n let sitUserId = situserId; \r\n\t\t// ---------------------------------\r\n\t\t// Begin: get user pics from server:\r\n\t\t// ---------------------------------\r\n EmitterSubjectService.emitShowSpinner('Getting user pics...');\r\n\r\n return new Observable((subscriber) => {\r\n\t\t let tpKvPhotoArr : KvPhoto[] = [];\t\t \r\n\t\t\t// debugger;\r\n if (sitUserId > 0) {\r\n // debugger;\r\n this.kvPhotoArr = [];\r\n this.photoBnService?.getAllPhotosOfUserBySitUserIdObservable(sitUserId)?.subscribe(result => {\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result))\r\n {\r\n this.profilePics = result as ProfilePics; \r\n this.profilePics.populateDictionaries();\r\n\r\n // getAllPhotosOfUserBySitUserIdObservable() method saves the dicitonary to indexedDb\r\n //this.dbDexieToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // this.dictionaryService.profilePicsDictionary, 'profilePics', this.loginSuccess.signedInUserId);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoDictionary)\r\n && this.profilePics.unFilteredKvPhotoDictionary.values().length > 0)\r\n {\r\n this.kvPhotoArr = this.profilePics.unFilteredKvPhotoDictionary.values();\r\n this.abstractPagerVPhotoNavService.executeKvPhotoNavTasks(this.kvPhotoArr[ 0 ], this.kvPhotoArr).subscribe(data1 => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data1)) {\r\n this.pagerVKvPhotoNav = data1;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n subscriber.complete();\r\n }\r\n else {\r\n console.log('timestamp : ' + new Date().getTime() + ': DisplayProfileService->executeKvPhotoNavTasks() returned a null or undefined promise;');\r\n subscriber.next(new PagerPhotoMgmt());\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n else {\r\n console.log('timestamp : ' + new Date().getTime() + ': DisplayProfileService->profilePics.unFilteredKvPhotoArr was null or empty;');\r\n subscriber.next(new PagerPhotoMgmt());\r\n subscriber.complete();\r\n }\r\n }\r\n else {\r\n // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': DisplayProfileService.getProfilePicsFromServer() returned a null or undefined promise;');\r\n subscriber.next(new PagerPhotoMgmt());\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n else {\r\n console.log('timestamp : ' + new Date().getTime() + ': DisplayProfileService->getAllPhotosOfUserBySitUserIdObservable() sitUserId === 0');\r\n subscriber.next(new PagerPhotoMgmt());\r\n subscriber.complete();\r\n }\r\n\t })\t\t\t\r\n\t\t// ---------------------------------\r\n\t\t// End: get user pics from server:\r\n\t\t// ---------------------------------\r\n\t}\r\n\t// ---------------------------------------------------------------\r\n\t//\tProfilePics/UserPics methods: End\r\n\t// ---------------------------------------------------------------\r\n\t// ---------------------------------------------------------------\r\n\t//\tUserData methods: Begin\r\n\t// ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n\t//\tchecked on 20230518\r\n // ---------------------------------------------------------------\r\n public displayUserDataFromProfileTile (situserId : number) : Observable { \r\n let sitUserId = situserId;\r\n let tProfileTile = null;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n return new Observable((subscriber) => {\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n // debugger;\r\n if (this.isViewMember) {\r\n // debugger;\r\n let selectedProfileTile = EmitterSubjectService.getSelectedProfileTile();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(selectedProfileTile) && selectedProfileTile.sitUserId > 0) {\r\n // debugger;\r\n if (selectedProfileTile.sitUserId === sitUserId) {\r\n tProfileTile = selectedProfileTile;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0\r\n && selectedProfileTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n tProfileTile = EmitterSubjectService.getAvatarProfileTile();\r\n }\r\n }\r\n else {\r\n // debugger;\r\n tProfileTile = EmitterSubjectService.getProfileTile(); \r\n }\r\n }\r\n else if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n tProfileTile = EmitterSubjectService.getAvatarProfileTile();\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tProfileTile) && tProfileTile.sitUserId > 0 && tProfileTile.sitUserId === sitUserId) {\r\n this.profileTile = tProfileTile;\r\n }\r\n else this.profileTile = null;\r\n\r\n // debugger;\r\n // prepare and display profileInfoView from profileTile:\r\n // -----------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n // debugger;\r\n if (this.profileTile.sitUserId > 0) {\r\n // debugger;\r\n this.memberViewMgmtModel = this.profileTileService.executeProfileTileTasks(this.profileTile) as MemberViewMgmtModel;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel) && this.memberViewMgmtModel.sitUserId > 0) {\r\n // debugger;\r\n EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n }\r\n else {\r\n // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserDataFromProfileTile->this.memberViewMgmtModel for sitUserId==' + this.profileTile.sitUserId + ' was null or undefined');\r\n }\r\n }\r\n else {\r\n // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserDataFromProfileTile-> this.profileTile.sitUserId: ' + this.profileTile.sitUserId + '.');\r\n }\r\n }\r\n else {\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserDataFromProfileTile-> this.profileTile was null or undefined');\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n\t//\tchecked!!!\r\n // ---------------------------------------------------------------\r\n public displayUserDataFromDictionary (situserId : number) : Observable {\r\n let sitUserId = situserId;\r\n let date = new Date();\r\n\r\n return new Observable((subscriber) => { \r\n\t\t\t// debugger;\r\n if (sitUserId > 0) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dictionaryService.profileInfoDictionary) && this.dictionaryService.profileInfoDictionary.size > 0) {\r\n this.profileInfo = this.dictionaryService.profileInfoDictionary.get(sitUserId) as ProfileInfo;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // debugger;\r\n this.profileTileService.executeAllNonProfileTileTasks(this.profileInfo).subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n\t\t\t\t\t\t\t\t// debugger;\r\n\t\t\t\t\t\t\t\tthis.memberViewMgmtModel = result;\r\n\t\t\t\t\t\t\t\tEmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n\t\t\t\t\t\t\t\t// debugger;\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t// debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserDataFromDictionary()=>executeAllNonProfileTileTasks() for sitUserId==' + sitUserId + ' the promise returned a null result');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n }\r\n }\r\n }\r\n\t\t\telse {\r\n\t\t\t\t// debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserDataFromDictionary().getUserData() for sitUserId== ' + sitUserId );\r\n }\t\t\t\r\n\t\t})\r\n }\r\n // ---------------------------------------------------------------\r\n //\tTODO: this needs to be checked!!!\r\n // Not in use:\r\n // ------------------------------------------------------------------------------\r\n public displayUserDataFromServer (situserId : number) : Observable | any{ \r\n\t\t// debugger;\r\n let date = new Date();\r\n let sitUserId = situserId;\r\n\r\n return new Observable((subscriber) => { \r\n this.profileInfo = new ProfileInfo();\r\n\t\t\t// debugger;\r\n\t\t\tif (sitUserId > 0) {\r\n\t\t\t\t// debugger;\r\n this.profileInfoService.getProfileInfo(sitUserId).subscribe((result : any) =>\r\n {\r\n\t\t\t\t\t// debugger;\r\n\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\t// debugger;\r\n this.profileInfo = result;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // debugger;\r\n let profileContetnKvAnyArr = this.profileContentService.createProfileContentKvAnyArr(this.profileInfo);\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel)) {\r\n this.memberViewMgmtModel = new MemberViewMgmtModel();\r\n }\r\n // debugger;\r\n this.memberViewMgmtModel.profileContentKvAnyArr = profileContetnKvAnyArr;\r\n EmitterSubjectService.setMemberViewMgmtModel(this.memberViewMgmtModel); \r\n // debugger;\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete(); \r\n }\r\n else {\r\n // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserPicsFromDictionary().getProfileInfo().memberViewMgmtModel was null of empty');\r\n }\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserPicsFromDictionary().getProfileInfo()=>returned result was null of empty');\r\n\t\t\t\t\t}\r\n })\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': displayUserDataFromServer().getUserData() for sitUserId== ' + sitUserId);\r\n }\t\t\t\r\n\t\t})\r\n }\r\n // ---------------------------------------------------------------\r\n\t//\tUserData methods: End\r\n\t// ---------------------------------------------------------------\r\n\r\n\r\n // ---------------------------------------------------------------\r\n // Note: 1) This method displays the PagerVKvPhotoNav - vertical menu.\r\n // This is a stand-alone display system for this purpose.\r\n //\r\n // 2) There is another stand-alond PagerVKvPhotoNav - vertical menu\r\n // and it's associated PagerViewMemberGlyphMenu display system located in\r\n // PagerVKvPhotoNavService.\r\n //\r\n // There should NOT be any other pathway to display these vertical menues,\r\n // other than the Emitters's listeners, which in turn will use the (2).\r\n\t//\r\n\t//\t\t\t\t3) This method is triggered via the Emitter and it's listener is located\r\n\t//\t\t\t\tin the AppComponent. Since the Vertical menues are child-components of\r\n\t//\t\t\t\tAppComponent, these vertical menues have to be triggered there to launch this method.\r\n // ----------------------------------------------------------------\r\n public executeProfilePicsImagesTasks (kvphotoArr : KvPhoto[]) : Observable {\r\n // debugger;\r\n let date = new Date();\r\n let index = -1;\r\n let currentKvPhoto : any;\r\n let kvpArr = kvphotoArr;\r\n return new Observable((observer) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n this.kvPhotoArr = [];\r\n // debugger;\r\n this.kvPhotoArr.forEach(e => {\r\n e.value = JsRegExpServiceStatic.setUrlForImageData(e.value);\r\n })\r\n\r\n this.kvPhotoArrBackup = ArraySupportServiceStatic.mergeArraysUniq(this.kvPhotoArrBackup, this.kvPhotoArr);\r\n EmitterSubjectService.setProfileImages(this.kvPhotoArrBackup);\r\n // debugger;\r\n // this.kvPhotoArr = ArraySupportServiceStatic.mergeArraysUniq(this.kvPhotoArr, kvpArr);\r\n // debugger;\r\n }\r\n\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.pageSize = EmitterSubjectService.getPageSize();\r\n // -------------------------------------------------------------------------------------------\r\n // if the singedInUser is uploading/editing Photos of himself, turn the isViewMember off:\r\n // -------------------------------------------------------------------------------------------\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n this.isViewMember = false;\r\n EmitterSubjectService.setIsViewMember(this.isViewMember);\r\n }\r\n // -------------------------------------------------------------------------------------------\r\n let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr(this.kvPhotoArr, 'pagerVKvPhotoNav-');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n this.kvPhotoArr = tpKvPhotoArr;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvPhotoArr) && this.kvPhotoArr.length > 0) {\r\n this.abstractPagerVPhotoNavService.setPagerVKvPhotoArr(this.kvPhotoArr);\r\n EmitterSubjectService.setProfileImages(this.kvPhotoArr);\r\n\r\n // now capture the current-item:\r\n // -----------------------------\r\n currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto)) {\r\n index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr(this.kvPhotoArr, currentKvPhoto);\r\n\r\n if (index > -1) { // if found\r\n // debugger;\r\n currentKvPhoto.copyIfExists(this.kvPhotoArr[ index ]);\r\n }\r\n else { // not found\r\n currentKvPhoto = new KvPhoto().copySourceToDestination(currentKvPhoto, this.kvPhotoArr[ 0 ]);\r\n // debugger;\r\n }\r\n\r\n // debugger;\r\n \r\n }\r\n // debugger;\r\n this.pagerPhotoMgmtService.getBasicPagerDynamicObservable(this.kvPhotoArr, currentKvPhoto.pageNum > 0 ? currentKvPhoto.pageNum : 1, this.pageSize).subscribe(data => {\r\n // debugger;\r\n this.pagerVKvPhotoNav = data as PagerPhotoMgmt;\r\n // debugger \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // debugger;\r\n // currentKvPhoto = this.bias.setupKvPhotoIfPrimaryOrPrivate(currentKvPhoto);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n this.currentKvPhoto = this.bias.displayBackgroundAndNavImageForKvPhoto(this.currentKvPhoto, this.pagerVKvPhotoNav);\r\n\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.currentKvPhoto);\r\n }\r\n // this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(this.pagerVKvPhotoNav?.currentItem?.sitUserId);\r\n EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.pagerVKvPhotoNav?.currentItem?.sitUserId); \r\n\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n EmitterSubjectService.emitDisplayMyPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n }\r\n else {\r\n // debugger;\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n }\r\n\r\n // debugger;\r\n observer.next(this.pagerVKvPhotoNav);\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n console.log(date.getTime() + ': in DisplayProfileService.executeProfileImagesTasks().pagerVKvPhotoNav was null or empty.')\r\n }\r\n });\r\n }\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public executeProfileImagesTasks (kvphotoArr : KvPhoto[]) : Observable {\r\n // debugger;\r\n\t\treturn new Observable((observer) => {\r\n // debugger;\r\n let date = new Date();\r\n let index = -1;\r\n let currentKvPhoto : any;\r\n let kvpArr = kvphotoArr;\r\n\r\n\t\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n this.kvPhotoArr = [];\r\n // debugger;\r\n this.kvPhotoArr.forEach(e => {\r\n e.value = JsRegExpServiceStatic.setUrlForImageData(e.value);\r\n e.value = JsRegExpServiceStatic.stripUrlForImageData(e.value);\r\n });\r\n\r\n let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr(this.kvPhotoArr, 'pagerVKvPhotoNav-');\r\n this.kvPhotoArr = ArraySupportServiceStatic.mergeArraysUniq(this.kvPhotoArr, tpKvPhotoArr);\r\n this.kvPhotoArrBackup = ArraySupportServiceStatic.mergeArraysUniq(this.kvPhotoArrBackup, this.kvPhotoArr );\r\n EmitterSubjectService.setProfileImages(this.kvPhotoArrBackup);\r\n }\r\n\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\t\t\tthis.pageSize = EmitterSubjectService.getPageSize();\r\n\t\t\t// -------------------------------------------------------------------------------------------\r\n\t\t\t// if the singedInUser is uploading/editing Photos of himself, turn the isViewMember off:\r\n\t\t\t// -------------------------------------------------------------------------------------------\r\n\t\t\tif (this.isPhotoMgmt || this.isMyProfile) {\r\n\t\t\t\tthis.isViewMember = false;\r\n\t\t\t\tEmitterSubjectService.setIsViewMember(this.isViewMember);\r\n\t\t\t}\r\n\t\t\t// ------------------------------------------------------------------------------------------- \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvPhotoArr) && this.kvPhotoArr.length > 0) {\r\n this.abstractPagerVPhotoNavService.setPagerVKvPhotoArr(this.kvPhotoArr);\r\n EmitterSubjectService.setProfileImages(this.kvPhotoArr);\r\n \r\n // now capture the current-item:\r\n // -----------------------------\r\n currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto) || currentKvPhoto.photoBnId === 0) {\r\n currentKvPhoto = kvphotoArr[ kvphotoArr.length - 1 ];\r\n // debugger;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto)) {\r\n index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr(this.kvPhotoArr, currentKvPhoto);\r\n // debugger;\r\n\r\n if (index > -1) { // if found\r\n // debugger;\r\n currentKvPhoto.copyIfExists(this.kvPhotoArr[ index ]);\r\n }\r\n else { // not found\r\n currentKvPhoto = new KvPhoto().copySourceToDestination(currentKvPhoto, this.kvPhotoArr[ this.kvPhotoArr.length - 1 ]);\r\n // debugger;\r\n }\r\n\r\n // debugger;\r\n // replace with method in bias:\r\n currentKvPhoto = this.bias.displayBackgroundAndNavImageForKvPhoto(currentKvPhoto, this.pagerVKvPhotoNav);\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.kvPhotoArr, this.pagerVKvPhotoNav.currentItem);\r\n\r\n // debugger;\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n // OR\r\n if (this.isViewMember) {\r\n // debugger;\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUser)) {\r\n // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(this.signedInUser.sitUserId);\r\n EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.signedInUser.sitUserId); \r\n }\r\n }\r\n else\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(currentKvPhoto); // will display photo primary/public/public glyphs\r\n }\r\n\r\n }\r\n\r\n // debugger;\r\n this.pagerPhotoMgmtService.getBasicPagerDynamicObservable(this.kvPhotoArr, this.kvPhotoArr.length - 1, this.pageSize).subscribe(data => {\r\n // debugger;\r\n this.pagerVKvPhotoNav = data as PagerPhotoMgmt;\r\n // debugger \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // debugger;\r\n\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n EmitterSubjectService.emitDisplayMyPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n }\r\n else {\r\n // debugger;\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n }\r\n\r\n // debugger;\r\n observer.next(this.pagerVKvPhotoNav);\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n console.log('timestamp : ' + new Date().getTime() + ': in DisplayProfileService.executeProfileImagesTasks().pagerVKvPhotoNav was null or empty.')\r\n }\r\n });\r\n } \r\n\t\t})\r\n }\r\n \r\n // ----------------------------------------------------------------\r\n public getKvPhotoUrl (kvPhoto : KvPhoto) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // debugger;\r\n return 'url(\\'' + kvPhoto.value + '\\')';\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n public getKvPhotoWithoutUrl (kvPhoto : KvPhoto) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // debugger;\r\n kvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(kvPhoto.value);\r\n return kvPhoto.value;\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n public getPagerVKvPhotoNavWithoutUrl (pagerVKvPhotoNav : PagerPhotoMgmt, isStripUrl: boolean) : KvPhoto[] | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems) && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n e.value = JsRegExpServiceStatic.setUrlForImageData(e.value);\r\n // e.value = JsRegExpServiceStatic.stripUrlForImageData(e.value);\r\n });\r\n }\r\n else return null;\r\n }\r\n\r\n // ------------------------------------------------------------\r\n public getIsKvData (kvPhoto : KvPhoto) : boolean {\r\n this.isKvData = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('.png') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('.jpg') === -1;\r\n return this.isKvData;\r\n }\r\n // ------------------------------------------------------------\r\n public getIsKvFile (kvPhoto : KvPhoto) : boolean {\r\n this.isKvFile = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') === -1\r\n && (kvPhoto.value.toString().toLowerCase().indexOf('.png') !== -1 || kvPhoto.value.toString().toLowerCase().indexOf('.jpg') !== -1);\r\n return this.isKvFile;\r\n }\r\n // ------------------------------------------------------------\r\n public getIsKvUrlData (kvPhoto : KvPhoto) : boolean {\r\n this.isKvUrlData = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') !== -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('.png') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('.jpg') === -1;\r\n return this.isKvUrlData;\r\n }\r\n // ------------------------------------------------------------\r\n public isInPagedItems (pagerVKvPhotoNav : PagerPhotoMgmt, kvPhoto : KvPhoto) : boolean {\r\n let isFound = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n for (let i = 0; i < pagerVKvPhotoNav.pagedItems.length; i++) {\r\n if (pagerVKvPhotoNav.pagedItems[ i ].photoBnId === kvPhoto.photoBnId) {\r\n isFound = true;\r\n break;\r\n }\r\n }\r\n }\r\n return isFound;\r\n }\r\n // ------------------------------------------------------------\r\n public isNextOrLastPage (pagerVKvPhotoNav : PagerPhotoMgmt) : boolean {\r\n this.isKvNext = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav?.endPage)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav?.nextPage)\r\n && pagerVKvPhotoNav.currentPage >= pagerVKvPhotoNav?.startPage\r\n && (pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav?.nextPage\r\n || pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav?.endPage)\r\n return this.isKvNext;\r\n }\r\n // ------------------------------------------------------------\r\n public isPreviousOrFirstPage (pagerVKvPhotoNav : PagerPhotoMgmt) : boolean {\r\n this.isKvPrev = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.startPage)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.previousPage)\r\n && (pagerVKvPhotoNav.currentPage >= pagerVKvPhotoNav.startPage\r\n || pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav.previousPage)\r\n return this.isKvPrev;\r\n }\r\n // ---------------------------------------------------------------\r\n // This method normalizes and image's raw data for displaying on\r\n // an html element. It can be prefixed with a 'url()' around the\r\n // image-data, or can strip the 'url()' from the image-data.\r\n // ---------------------------------------------------------------\r\n //public prepareKvPhotoArrForDisplay (kvPhotoArr : KvPhoto[], isStripUrl : boolean) : KvPhoto[] | any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n // kvPhotoArr.forEach(e => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) && e.value.length > 0) {\r\n // if (JsRegExpServiceStatic.photoUrlPrefixPattern.test(e.value)) {\r\n // // debugger;\r\n // if (isStripUrl) {\r\n // // debugger;\r\n // if (JsRegExpServiceStatic.allImageTypesFilePattern.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageFileName(e.value);\r\n // }\r\n // else if (JsRegExpServiceStatic.allImageTypesDataPattern3.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern2.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern1.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.setUrlForImageData(e.value); // .normalizeImageData(e.value);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // /*e.value = JsRegExpServiceStatic.normalizeImageData(e.value);*/\r\n // if (JsRegExpServiceStatic.allImageTypesFilePattern.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageFileName(e.value);\r\n // }\r\n // else if (JsRegExpServiceStatic.allImageTypesDataPattern4.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern5.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern6.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageData(e.value); // .normalizeImageData(e.value);\r\n // }\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageData(e.value);\r\n // }\r\n // }\r\n // });\r\n // }\r\n // return kvPhotoArr;\r\n //}\r\n // ---------------------------------------------------------------\r\n // Dictionary data: priority#1 -> should be called last\r\n // ProfileTile data: priority#2\r\n // Server data: priority#3 -> should be called first\r\n // ---------------------------------------------------------------\r\n //selectProfileExectionType (situserId: number) : Promise {\r\n // // debugger;\r\n // let date = new Date();\r\n // let sitUserId = situserId;\r\n // let modelPPics = new ProfilePics();\r\n // this.profilePics = new ProfilePics();\r\n // this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // this.isMyProfile = EmitterSubjectService.getIsPhotoMgmt();\r\n // this.isViewMember = EmitterSubjectService.getIsPhotoMgmt();\r\n // this.profileTile = EmitterSubjectService.getSelectedProfileTile();\r\n // // debugger;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) || this.profileTile.sitUserId === 0) {\r\n\t\t//\tif (this.isViewMember) {\r\n\t\t//\t\tthis.profileTile = EmitterSubjectService.getSelectedProfileTile();\r\n\t\t//\t}\r\n\t\t//\telse if (this.isPhotoMgmt || this.isMyProfile) {\r\n\t\t//\t\tthis.profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n\t\t//\t}\r\n\t\t//\telse {\r\n\t\t//\t\tif (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n\t\t//\t\t\tthis.profileTile = DictionaryServiceStatic.getProfileTileBySitUserId(this.sitUser.sitUserId);\r\n\t\t//\t\t}\r\n\t\t//\t}\r\n // // debugger;\r\n // }\r\n // // debugger;\r\n // return new Promise((resolve, reject) => {\r\n // // debugger;\r\n // if (sitUserId === 0) {\r\n // this.message = \"selectProfileExectionType(-sitUserId) cannot be determined for soitUserId = \" + sitUserId;\r\n // reject(this.message);\r\n\t\t//\t}\r\n \r\n\r\n // // Server-data case (priority#1):\r\n // // ------------------------------\r\n // // debugger;\r\n // this.profileExecutionOption = this.profileExecutionOptionArr[ 0 ];\r\n // console.log('timestamp : ' + new Date().getTime() + 'in displayProfileService.selectProfileExectionType(), executed profile option: ' + this.profileExecutionOption);\r\n \r\n \r\n // // ProfileTile-data case (priority#2):\r\n // // -----------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n // // debugger;\r\n // this.profileExecutionOption = this.profileExecutionOptionArr[ 1 ];\r\n // console.log('timestamp : ' + new Date().getTime() + ': in displayProfileService.selectProfileExectionType(), executed profile option: ' + this.profileExecutionOption);\r\n // }\r\n // // Dictionary-data case (priority#1.a):\r\n // // ----------------------------------\r\n // // generate the profilePics' data from profilePicsDictionary: \r\n // // ----------------------------------------------------------\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(DictionaryServiceStatic.profilePicsDictionary)\r\n // && DictionaryServiceStatic.profilePicsDictionary.size() == 0) {\r\n\r\n // // debugger;\r\n // this.profilePics = DictionaryServiceStatic.profilePicsDictionary.getValue(sitUserId) as ProfilePics;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)\r\n // && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.filteredKvPhotoDictionary) && this.profilePics.filteredKvPhotoDictionary.values.length > 0\r\n // || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoDictionary) && this.profilePics.unFilteredKvPhotoDictionary.values.length > 0)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.filteredKvPhotoArr) && this.profilePics.filteredKvPhotoArr.length > 0)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoArr) && this.profilePics.unFilteredKvPhotoArr.length > 0)) {\r\n\r\n // // save the profilePics model in Emitter for later use:\r\n // // ----------------------------------------------------\r\n // EmitterSubjectService.setProfilePics(this.profilePics);\r\n\r\n // this.profileExecutionOption = this.profileExecutionOptionArr[ 0 ];\r\n // // debugger;\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n // // debugger;\r\n // this.profileExecutionOption = this.profileExecutionOptionArr[ 1 ];\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.profileExecutionOption = this.profileExecutionOptionArr[ 2 ];\r\n // }\r\n // console.log('timestamp : ' + new Date().getTime() + ' in displayProfileService.selectProfileExectionType(), executed profile option: ' + this.profileExecutionOption);\r\n\r\n // } // end of if profilePicsDictionary\r\n // // Dictionary-data case (priority#1.b):\r\n // // ----------------------------------\r\n // // generate the profilePics' data from KvPhotoDictionary:\r\n // // ------------------------------------------------------\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(DictionaryServiceStatic.kvPhotoDictionary)\r\n // && DictionaryServiceStatic.kvPhotoDictionary.size() > 0) {\r\n // // debugger;\r\n // // Note: this method gets only unFilteredKvPhotoArray of ProfilePics:\r\n // // -------------------------------------------------------------------\r\n // this.profilePics = DictionaryServiceStatic.getProfilePicsFromKvPhotoDictionary(sitUserId); // KvPhotos are not filtered yet.\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoArr) && this.profilePics.unFilteredKvPhotoArr.length > 0) {\r\n // // filter the kvPhotoArr of ProfilePics:\r\n // // -------------------------------------\r\n // this.photoPrivacyService.filterKvPhotoArr(this.profilePics.unFilteredKvPhotoArr).then(result => {\r\n // this.profilePics.filteredKvPhotoArr = result;\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.filteredKvPhotoArr) && this.profilePics.filteredKvPhotoArr.length > 0) {\r\n // // debugger;\r\n // this.profilePics.filteredKvPhotoArr.forEach(e => {\r\n // if (e) {\r\n // this.profilePics.filteredKvPhotoDictionary.setValue(e.photoBnId, e);\r\n // }\r\n // })\r\n // }\r\n // });\r\n // }\r\n\r\n // if (!(modelPPics?.isKvPhotoDictionariesEmpty(this.profilePics) || !modelPPics?.isModelKvPhotoArraysEmpty(this.profilePics))) {\r\n\r\n // // save the profilePics model in Emitter for later use:\r\n // // ----------------------------------------------------\r\n // EmitterSubjectService.setProfilePics(this.profilePics);\r\n\r\n // this.profileExecutionOption = this.profileExecutionOptionArr[ 2 ];\r\n // // debugger;\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n // // debugger;\r\n // this.profileExecutionOption = this.profileExecutionOptionArr[ 1 ];\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.profileExecutionOption = this.profileExecutionOptionArr[ 2 ];\r\n // }\r\n // }\r\n // console.log('timestamp : ' + new Date().getTime() + ': in displayProfileService.selectProfileExectionType(), executed profile option: ' + this.profileExecutionOption);\r\n // }\r\n\r\n // if (this.profileExecutionOption) {\r\n // resolve(this.profileExecutionOption)\r\n // }\r\n // else {\r\n // reject('timestamp : ' + new Date().getTime() + ': selectProfileExectionType() failed.');\r\n // }\r\n // }).catch(error => {\r\n // this.message = 'timestamp : ' + new Date().getTime() + 'in displayProfileService.selectProfileExectionType(), error : ' + error;\r\n // console.log(this.message);\r\n // });\r\n //}\r\n\r\n // ----------------------------------------------------------------------\r\n \r\n // ----------------------------------------------------------------------\r\n}\r\n// ========================================================================\r\n// --------------------------------------------------------------------\r\n\r\n\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { DisplayProfileService } from './displayProfileService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DisplayProfileServiceService {\r\n \r\n constructor(\r\n public displayProfileService : DisplayProfileService\r\n ) { \r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n public setDisplayProfileService (pbs : DisplayProfileService): void {\r\n this.displayProfileService = pbs;\r\n }\r\n public getDisplayProfileService () : DisplayProfileService {\r\n return this.displayProfileService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n \r\n}\r\n","\r\nimport { Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Sorter } from '../../models/common/genericSearchSortFilter.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { ClientHttpDataModel } from '../../models/data/clientHttpDataModel.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { MemberActivitiesAndAction } from '../../models/member/memberActivitesAndAction.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { PhotoPrivacyService } from '../photoServiceService/photoPrivacyService.service';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../rendererServiceService/rendererServiceService.service';\r\nimport { GenericSearchSortFilterService } from '../searchSortServiceService/genericSearchSortFilterService.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n\r\n\r\n// ===============================================================================================\r\n// Note: This service has a Dictionary-Version of itself named MemberActivityDictionaryService.ts\r\n// in the UsusedSlakezCoreParts/services folder with identical functionalities.\r\n// ===============================================================================================\r\n\r\n\r\nexport enum activityArrayEnum\r\n{\r\n myBlockArray = 1,\r\n myDislikeArray = 2,\r\n myFriendArray = 3,\r\n myLikeArray = 4,\r\n myLockArray = 5,\r\n myStarArray = 6,\r\n myTrackArray = 7,\r\n myUnblockArray = 8,\r\n myUnfriendArray = 9,\r\n myUnlockArray = 10,\r\n myWinkArray = 11,\r\n yourBlockArray = 21,\r\n yourDislikeArray = 22,\r\n yourFriendArray = 23,\r\n yourLikeArray = 24,\r\n yourLockArray = 25,\r\n yourStarArray = 26,\r\n yourTrackArray = 27,\r\n yourUnfriendArray = 28,\r\n yourUnblockArray = 29,\r\n yourUnlockArray = 30,\r\n yourWinkArray = 31\r\n}\r\n\r\nexport enum staticDictionaryEnum {\r\n myBlockDictionary = 1,\r\n myFriendDictionary = 2,\r\n myLikeDictionary = 3,\r\n myMemberActivityDictionary = 4,\r\n myStarDictionary = 5,\r\n myTrackDictionary = 6,\r\n myUnlockDictionary = 7,\r\n myWinkDictionary = 8,\r\n myProfilePicsDictionary = 9,\r\n\r\n buddyDictionary = 10,\r\n heartbeatDictionary = 11,\r\n preferenceDictionary = 12,\r\n profileImageDictionary = 13,\r\n profileInfoDictionary = 14,\r\n profilePicsDictionary = 15,\r\n profileTileIdDictionary = 16,\r\n profileTileDictionary = 17,\r\n sitUserDictionary = 18,\r\n sitUserIdDictionary = 19,\r\n\r\n yourBlockDictionary = 20,\r\n yourFriendDictionary = 21,\r\n yourLikeDictionary = 22,\r\n yourMemberActivityDictionary = 23,\r\n yourStarDictionary = 24,\r\n yourTrackDictionary = 25,\r\n yourUnlockDictionary = 26,\r\n yourWinkDictionary = 27,\r\n\r\n preferenceBnDictionary = 30,\r\n profileInfoBnDictionary = 31,\r\n photoBnArrDictionary = 32,\r\n profileTileIdBnDictionary = 33,\r\n profileTileBnDictionary = 34,\r\n sitUserBnDictionary = 35,\r\n\r\n\r\n chatHistoryIdictionary = 40,\r\n chatHistoryictionary = 41,\r\n myChatDictionary = 42,\r\n emailTileIdDictionary = 43,\r\n emailTileDictionary = 44,\r\n notificationIdDictionary = 45,\r\n notificationDictionary = 46,\r\n\r\n\r\n // ------------------------------------------------------------------------------------------------------------------------\r\n // New PhotoToPhotoBnToPhotoSystem:\r\n // ---------------------------------\r\n // When a user uploads a photo, it will be saved in the backendDB first, then the client-sent\r\n // Photo's box and nonce along with the saved photo's data will be populated in a PhotoBn Model and be saved in backendDB.\r\n // This is a one-time-one-way transaction.\r\n //\r\n // Subsequestly, whenever the client requests for a photo, the respective PhotoBn will be sent by the photoId/PhotoBnId.\r\n //\r\n // The client will always get a photoBn or a set of PhotoBns when a photo or set of photos are requested.\r\n // Upon receiving the photoBn(s), client will decrypt to get photoBn/PhotoBns to get the respective Photo/Photos,\r\n // and populate them to the PhotoDictionary for the view to use.\r\n // This photoDictionary will NOT be saved in indexedDb, neither any PhotoIds.\r\n //\r\n // The client will also populate the received PhotoBn(s) to the PhotoBnDictionary that will be saved to the indexedDb,\r\n // which the client will use to create the PhotoDictionary for the View upon launching or as needed basis.\r\n //\r\n // The client will save a UserPhotoBnIdArr(all the photoBnIds of one user in an array) in the UserPhotoBnIdDictionary\r\n // that will be saved in the indexedDb. Therefore, wheneve the user saves a new Photo, or whenever the user gets a\r\n // PhotoBn from the server, the respective PhotoBnId will be first saved to the UserPhotoBnIdArray, and update the\r\n // UserPhotoBnIdDictionary and the dictionary will be saved in the indexedDb.\r\n // It's noteworthy that the signedInUser's photoBnIdArr will contain the signedInUser's data, and any other user's\r\n // photoBnIds will be in an array saved using the respective sitUserId, such that signedInUserId != sitUserId.\r\n // Hence the PhotoBnIdDitionary will contain any/all phootoBnIds of a member viewed by the signedInUser.\r\n //\r\n // This UserPhotoBnIdDictionary will be used to create/lookup a specific user's Photo(s). \r\n // \r\n // ------------------------------------------------------------------------------------------------------------------------\r\n\r\n // photoIdDictionary = 50, // will be deprecated since photoDictionary will contain PhotoId\r\n photoDictionary = 51, // will be used by View Only, and will not presist in indexedDb\r\n userPhotoBnIdDictionary = 52, //will be renamed to UserPhotoBnIds since a user may have more than one photo,\r\n photoBnDictionary = 53, // will NOT be used by the View since PhotoDictionary will be used by the View, but will persist in indexedDb\r\n pageNumItemArrDictionary = 54,\r\n\r\n}\r\n\r\n@Injectable( {\r\n providedIn: 'any',\r\n} )\r\n\r\nexport class ActivityService implements OnDestroy {\r\n [ x : string ] : any;\r\n public renderer! : Renderer2;\r\n public activeSorter : Sorter = new Sorter(false); // isDescending===true;\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public filteredKvPhotoArr : KvPhoto[] = [];\r\n public isLiked = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isPhotoMgmt = false;\r\n public isPrivate = false;\r\n public isToggleCamera = false;\r\n public isBlockedByDictionaryData = false;\r\n public isBlockedByServerData = false;\r\n public isFriendByDictionaryData = false;\r\n public isFriendByServerData = false;\r\n public isFriendByMyDictionaryData = false;\r\n public isLikedByDictionaryData = false;\r\n public isLikedByServerData = false;\r\n public isStarredByDictionaryData = false;\r\n public isUnlocked = false;\r\n public isUnlockedByDictionaryData = false;\r\n public isUnlockedByServerData = false;\r\n public isViewMember = false;\r\n public isWinkedByDictionaryData = false;\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public kvGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public commActivity : CommunicationActivity = new CommunicationActivity();\r\n public myCommActivity : CommunicationActivity = new CommunicationActivity();\r\n public profileImageKvPhotos: KvPhoto[] = [];\r\n public profilePics: ProfilePics = new ProfilePics();\r\n public tempUniqueMemberActivities : CommunicationActivity[] = [];\r\n public yourCommActivity : CommunicationActivity = new CommunicationActivity();\r\n public message = '';\r\n public sitUser: SitUser = new SitUser();\r\n public timer: any;\r\n public timerArray: any[] = [];\r\n public trackCount = 0;\r\n\r\n public destinationD = new Dictionary();\r\n public sourceD = new Dictionary();\r\n\r\n // ============================================================================================================\r\n // NOTE: Instead of passing the whole dictionary as a parameter, we pass the name of the respective dictionary\r\n // from the Enum. The target methods should use the name-enum and act on the actual dictionary.\r\n // This is intended to speed up computation and thresore responsiveness.\r\n // ============================================================================================================\r\n\r\n\r\n public myBlockArray: CommunicationActivity[] = [];\r\n public myUnblockArray: CommunicationActivity[] = [];\r\n public myFriendArray: CommunicationActivity[] = [];\r\n public myUnfriendArray: CommunicationActivity[] = [];\r\n public myLikeArray : CommunicationActivity[] = [];\r\n public myLikeDictionary = new Dictionary();\r\n public myDislikeArray: CommunicationActivity[] = [];\r\n public myLockArray: CommunicationActivity[] = [];\r\n public myUnlockArray: CommunicationActivity[] = [];\r\n public myStarArray: CommunicationActivity[] = [];\r\n public myTrackArray: CommunicationActivity[] = [];\r\n public myWinkArray: CommunicationActivity[] = [];\r\n\r\n public yourBlockArray: CommunicationActivity[] = [];\r\n public yourUnblockArray: CommunicationActivity[] = [];\r\n public yourFriendArray: CommunicationActivity[] = [];\r\n public yourUnfriendArray: CommunicationActivity[] = [];\r\n public yourLikeArray: CommunicationActivity[] = [];\r\n public yourDislikeArray: CommunicationActivity[] = [];\r\n public yourLockArray: CommunicationActivity[] = [];\r\n public yourUnlockArray: CommunicationActivity[] = [];\r\n public yourStarArray: CommunicationActivity[] = [];\r\n public yourTrackArray: CommunicationActivity[] = [];\r\n public yourWinkArray: CommunicationActivity[] = [];\r\n\r\n constructor (\r\n public dictionaryService : DictionaryService,\r\n private httpService: HttpService,\r\n private genericSearchSortFilterService: GenericSearchSortFilterService,\r\n private photoPrivacyService : PhotoPrivacyService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n private rendererServiceService : RendererServiceService,\r\n ) {\r\n this.initialize();\r\n }\r\n // ------------------------------------------------------------\r\n protected initialize(): void {\r\n // debugger; //TODO: check the value!!!!\r\n if (this.rendererServiceService) { this.rendererService = this.rendererServiceService.getRendererService() as RendererService; }\r\n if (this.rendererService) { this.renderer = this.rendererService.getRenderer() as Renderer2; }\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.myLikeDictionary = this.dictionaryService.getMyLikeDictionary();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n }\r\n /*\r\n * ============================================================================================================\r\n * Begin of Dictionary based CommunicationActivity-Toggle-and-NonToggle-Behavior-System:\r\n * ============================================================================================================\r\n * Note: This system is for creating a 'unique-CommunicationActivity-array' in order to implement the\r\n * Toggle and non-Toggle behaviors.\r\n *\r\n * This 'unique-CommunicationActivity-array' contains the latest CommunicationActivity data of a certain behavior's\r\n * action between a tuple of two users.\r\n *\r\n * MemberActiviy is the model wich is used to hold these behaviors' model-state-data.\r\n *\r\n * For example, for 'Tracking activity/action' it should contain\r\n * only the latest 'Track' action's CommunicationActivity model-data.\r\n * Wink-action is similar to track-action.\r\n *\r\n * The array contains such data of many tuples where the 'Doer' is the 'signedInUser',\r\n * and the 'Doee' is any other user other than the 'signedInuser'.\r\n *\r\n * The 'Doer' is the user who initiates/performs these actions and\r\n * the 'Doee' is the one on whom these actions are performed.\r\n *\r\n * Two opposing actions constitutes a Toggle-behavior, and a single action constitues a\r\n * non-Toggle-Behavior.\r\n *\r\n * For example: lock and unlock actions constitue an Unlocking-Toggle-Behavior to unlock\r\n * a certain user's (has to be signed-in/logged-in, hence signedInUser) PRIVATE pictures\r\n * to be viewable by the another user (only one user, hence 1-to-1 relatinship),\r\n * constituting a tuple of or .\r\n *\r\n * And viewing a member's profile constitues a non-Toggle-Tracking-Behavior by the single\r\n * action of clicking the profile-tile of that member from the Members page.\r\n *\r\n * The Toggle-Behaviours and their respective actions are the following:\r\n * 1: Blocking: (behavior)\r\n * 1.1: block (action)\r\n * 1.2: unblock (action)\r\n * 2: Friending:\r\n * 2.1: friend\r\n * 2.2: unfriend\r\n * 3: Liking:\r\n * 3.1: like\r\n * 3.2: dislike\r\n * 4: Unlocking:\r\n * 4.1: lock\r\n * 4.2: unlock\r\n *\r\n * The non-Toggle-Behaviors and the respective actions are the following:\r\n * 5: Tracking:\r\n * 5.1: track\r\n * 6: Winking:\r\n * 6.1: wink\r\n *\r\n * The 'tempUniqueMemberActivities' array will be used to produce the respective\r\n * 'action-based-dictionaries' which are used to implement these behaviors and maintain their states.\r\n *\r\n * Note: Toggle-Behaviour-actions (block/unblock, friend/unfriend, like/dislike, lock/unlock)\r\n * have no expiry dates.\r\n * Hence, their behavior is the same.\r\n *\r\n * But unlock-action has an expiry date, hence lock/unlock behave slightly differently while\r\n * maintaining the general toggle-behavior.\r\n *\r\n * Note: General Toggle-Behavior:\r\n * The back-end database never updates (edits) an existing Toggle-Behavior's data, it just adds.\r\n * Each time a user acts, it is recorded as adding a new record. Therefore, for a specific user,\r\n * there can be more than one entry for each action such as a 'tala' action.\r\n * The back-end server may not group a similar action-entries, and send the latest one for a user.\r\n * Therefore, this routine assumes that a array/list of a certain action-entries may be presented for a user,\r\n * and it should only keep the latest action of a behavior for a certain user.\r\n *\r\n * The 'unique-CommunicationActivity-array' will cotain all of these 'latest-behavior-action-data' for all visited profiles,\r\n * by actions taken on each user when the signedInUser visits the profile of another user (not his own),\r\n * Hence it contains all of the CommunicationActivity data which is used to produce the respective behavior-dictionary.\r\n *\r\n * A toggle-behavior consits of two actions such as 'tala' and 'unlock'. So, for\r\n * a certain toggle-action, there can be two lists to consider, and there will be two\r\n * latest entries, one for each list. Amongst these two latest entries, the latest-one wins,\r\n * meaning the final toggle-state will be of that entry.\r\n *\r\n * For example, if latest lock-action's entry key is 'lock.15' and latest unlock-action entry key\r\n * is 'unlock.27', the final toggle-action-state is that of 'unlock.27' for that user,\r\n * and in the myUnlockDictionary, only the 'unlock.27' entry should exist.\r\n * It is noteworty that Lock-Unlock has its own entity(table) on the back-end-db, and the other\r\n * toggle-actions have their sigle entity/table.\r\n *\r\n * Special Lock/Unlcok behavior:\r\n * Unlock-action has an expiry date. If a user has a valid (unexpired) unlcok action in a dictionary (my or your),\r\n * and if the user subsiquently takes an opposite action, which will have a latest 'key'\r\n * (key is composed of 'actionName.id'), this method will not alter the expiry date of the unlock-action.\r\n * Instead, this method will just simply remove the 'unlock' entry from the respective dictionary,\r\n * and add the 'tala' entry into the respective unlock-dictionary to reflect the current toggle-state.\r\n *\r\n * CommunicationActivity Toggle Bevahior are maintained via a set of Dictionaries on the front-end (client) which are:\r\n * 1. MyDictionaries:\r\n * 1.1: myBlockDictionary (for block/unblock)\r\n * 1.2: myfriendDictionary (for friend/unfriend)\r\n * 1.3: myLikeDictionary (for like/dislike)\r\n * 1.4: myTrackDictionary (for Track) (non-toggle-behavior)\r\n * 1.5: myUnlockDictionary (for lock/unlock)\r\n * 1.6: myWinkDictionary (for Wink) (non-toggle-behavior)\r\n * 2. YourDictionaries:\r\n * 2.1: yourBlockDictionary (for block/unblock)\r\n * 2.2: yourfriendDictionary (for friend/unfriend)\r\n * 2.3: yourLikeDictionary (for like/dislike)\r\n * 2.4: yourTrackDictionary (for Track) (non-toggle-behavior)\r\n * 2.5: yourUnlockDictionary (for lock/unlock)\r\n * 2.6: yourWinkDictionary (for Wink) (non-toggle-behavior)\r\n *\r\n * Note: On various member-actions (Block, Friend, Like, Unlock, Trac, Wink):\r\n *\r\n * The others' (yourDictionary) action on these are computed behind the scene\r\n * when the signedInUser visits another user's profile.\r\n * The signedInUser never intentionally acts to get/collect these data.\r\n * Therefore he never gets to see this data being collected and hence,\r\n * this process is completely abstracted away for him and done behind the scene.\r\n * However, his actions are effected by these values that are collected in\r\n * 'yourDictionaries'.\r\n *\r\n * For example, when others blocked the signedInUser, the signedInUser\r\n * should never know that it is being done to him. However, the result is\r\n * that the blockers' profiles are never seen by the signedInUser, untill\r\n * they unblock him.\r\n * ============================================================================================================\r\n * API:\r\n * Process#1:\r\n * In order to produce the above mentioned objective, a set of ActionArrayDictionaries created\r\n * (my and your) as holder of all data sent by the backe-end server, one dictionary for each\r\n * action, therefore, two dictionaries for each behavior, for example, myBlockArray\r\n * and yourBlockArray for Blocking behaviour of 'block' and 'unblock' actions.\r\n *\r\n * The entries of the dictionaries are sitUserId based key, and ActionArray value.\r\n * Each ActionArray is kept sorted in descending order, therefore, providing the latest value\r\n * from the beginning of each ActionArray.\r\n *\r\n * There are also some helper methods and behavior based processing methods\r\n * to manipulate and create these ActionArrays, and dictionaries.\r\n * ------------------------------------------------------------------------------------------------\r\n * Begin of Core-Helper-Methods:\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n addActivityToUserActionArray ( arrayName : activityArrayEnum, mAct : CommunicationActivity, sitId: number ) : CommunicationActivity[]\r\n {\r\n let actionArr: CommunicationActivity[] = [];\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arrayName) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct) && sitId > 0) {\r\n\r\n actionArr = this.callActivityArray( arrayName ) as [];\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionArr) && actionArr.length > 0 )\r\n {\r\n let index = this.isActivityFoundInArrayByName( arrayName, mAct );\r\n if ( index === -1 )\r\n {\r\n actionArr.push( mAct );\r\n }\r\n else\r\n {\r\n actionArr.splice( index, 1, mAct );\r\n }\r\n } else {\r\n // debugger;\r\n actionArr.push( mAct );\r\n }\r\n }\r\n // debugger;\r\n return actionArr;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n callActivityArray ( arrayName : any) : CommunicationActivity[]\r\n {\r\n let returnActivityArr : any[] = [];\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arrayName ) )\r\n {\r\n switch ( arrayName.toString() )\r\n {\r\n case 'myBlockArray':\r\n returnActivityArr = this.myBlockArray;\r\n break;\r\n case 'myUnblockArray':\r\n returnActivityArr = this.myUnblockArray;\r\n break;\r\n case 'myFriendArray':\r\n returnActivityArr = this.myFriendArray;\r\n break;\r\n case 'myUnfriendArray':\r\n returnActivityArr = this.myUnfriendArray;\r\n break;\r\n case 'myLikeArray':\r\n returnActivityArr = this.myLikeArray;\r\n break;\r\n case 'myDislikeArray':\r\n returnActivityArr = this.myDislikeArray;\r\n break;\r\n case 'myLockArray':\r\n returnActivityArr = this.myLockArray;\r\n break;\r\n case 'myUnlockArray':\r\n returnActivityArr = this.myUnlockArray;\r\n break;\r\n case 'myStarArray':\r\n returnActivityArr = this.myStarArray;\r\n break;\r\n case 'myTrackArray':\r\n returnActivityArr = this.myTrackArray;\r\n break;\r\n case 'myWinkArray':\r\n returnActivityArr = this.myWinkArray;\r\n break;\r\n case 'yourBlockArray':\r\n returnActivityArr = this.yourBlockArray;\r\n break;\r\n case 'yourUnblockArray':\r\n returnActivityArr = this.yourUnblockArray;\r\n break;\r\n case 'yourFriendArray':\r\n returnActivityArr = this.yourFriendArray;\r\n break;\r\n case 'yourUnfriendArray':\r\n returnActivityArr = this.yourUnfriendArray;\r\n break;\r\n case 'yourLikeArray':\r\n returnActivityArr = this.yourLikeArray;\r\n break;\r\n case 'yourDislikeArray':\r\n returnActivityArr = this.yourDislikeArray;\r\n break;\r\n case 'yourLockArray':\r\n returnActivityArr = this.yourLockArray;\r\n break;\r\n case 'yourUnlockArray':\r\n returnActivityArr = this.yourLockArray;\r\n break;\r\n case 'yourStarArray':\r\n returnActivityArr = this.yourStarArray;\r\n break;\r\n case 'yourTrackArray':\r\n returnActivityArr = this.yourTrackArray;\r\n break;\r\n case 'yourWinkArray':\r\n returnActivityArr = this.yourWinkArray;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return returnActivityArr;\r\n }\r\n\r\n // ------------------------------------------------------------------------------------------------\r\n callStaticDictionary ( dictionaryName : any ) : Dictionary\r\n {\r\n let returnActivityD : any;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dictionaryName ) )\r\n {\r\n // debugger; // TODO: check the dictionaryName\r\n switch ( dictionaryName.toString() )\r\n {\r\n case 'myBlockDictionary':\r\n returnActivityD = this.dictionaryService.myBlockDictionary;\r\n break;\r\n case 'myFriendDictionary':\r\n returnActivityD = this.dictionaryService.myFriendDictionary;\r\n break;\r\n case 'myLikeDictionary':\r\n returnActivityD = this.dictionaryService.myLikeDictionary;\r\n break;\r\n case 'myUnlockDictionary':\r\n returnActivityD = this.dictionaryService.myUnlockDictionary;\r\n break;\r\n case 'myStarDictionary':\r\n returnActivityD = this.dictionaryService.myStarDictionary;\r\n break;\r\n case 'myTrackDictionary':\r\n returnActivityD = this.dictionaryService.myTrackDictionary;\r\n break;\r\n case 'myWinkDictionary':\r\n returnActivityD = this.dictionaryService.myWinkDictionary;\r\n break;\r\n case 'yourBlockDictionary':\r\n returnActivityD = this.dictionaryService.yourBlockDictionary;\r\n break;\r\n case 'yourFriendDictionary':\r\n returnActivityD = this.dictionaryService.yourFriendDictionary;\r\n break;\r\n case 'yourLikeDictionary':\r\n returnActivityD = this.dictionaryService.yourLikeDictionary;\r\n break;\r\n case 'yourUnlockDictionary':\r\n returnActivityD = this.dictionaryService.yourUnlockDictionary;\r\n break;\r\n case 'yourStarDictionary':\r\n returnActivityD = this.dictionaryService.yourStarDictionary;\r\n break;\r\n case 'yourTrackDictionary':\r\n returnActivityD = this.dictionaryService.yourTrackDictionary;\r\n break;\r\n case 'yourWinkDictionary':\r\n returnActivityD = this.dictionaryService.yourWinkDictionary;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return returnActivityD;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n compareKeys (thisKey : any, thatKey : any): number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(thisKey) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(thatKey)) {\r\n let strCmpVal: any;\r\n let numCmpVal: any;\r\n const thisKeyParts = this.parseMemberActivityKey(thisKey);\r\n const thatKeyParts = this.parseMemberActivityKey(thatKey);\r\n\r\n strCmpVal = StringServiceStatic.strcmp(thatKeyParts[0], thisKeyParts[0]);\r\n numCmpVal = thisKeyParts[1] - thatKeyParts[1];\r\n\r\n const cmpVal = parseInt(strCmpVal, 10) * parseInt(numCmpVal, 10);\r\n // debugger;\r\n\r\n return cmpVal;\r\n }\r\n return -1; // TODO: check to see if other default value should be returned\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n copyArray(destinationArr: CommunicationActivity[], sourceArr: CommunicationActivity[]): CommunicationActivity[] {\r\n // let outD = new Dictionary();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationArr) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceArr) && sourceArr.length > 0) {\r\n // debugger;\r\n sourceArr.map((e) => {\r\n let index = this.isActivityFoundInArray( destinationArr, e);\r\n if ( index === -1 )\r\n {\r\n destinationArr.push( e );\r\n }\r\n else\r\n {\r\n destinationArr.splice( index, 1, e );\r\n }\r\n });\r\n }\r\n // debugger;\r\n return destinationArr;\r\n }\r\n\r\n // ------------------------------------------------------------------------------------------------\r\n copyMemberActivityDictionary (destinationD : Dictionary, sourceD : Dictionary) : Dictionary\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destinationD ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceD ))\r\n {\r\n // debugger;\r\n for (var c in sourceD) {\r\n var e = sourceD[ c ];\r\n destinationD.set(Number(e.key), e);\r\n } \r\n }\r\n // debugger;\r\n return destinationD;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * Note: Create Dictionay should be computed from myActionArrayDictionay\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n createActionDictionaryWithLatestValueFromActionArray (destinationDName : any, sourceDName : any) : Dictionary {\r\n\r\n this.destinationD = new Dictionary();\r\n // debugger;\r\n //if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destinationDName ) )\r\n //{\r\n // this.destinationD = this.callStaticDictionary( destinationDName );\r\n //}\r\n\r\n\r\n let sourceArr :CommunicationActivity[] = [];\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDName ) )\r\n {\r\n sourceArr = this.callActivityArray(sourceDName);\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.destinationD ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceArr ) && sourceArr.length > 0) {\r\n // debugger;\r\n // debugger;\r\n sourceArr.map((e) => {\r\n const latestAct = this.getLatestActivityFromActionArray( sourceArr);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(latestAct)) {\r\n this.destinationD.set(latestAct.receiverSitUserId, latestAct);\r\n }\r\n });\r\n // debugger;\r\n }\r\n // debugger;\r\n return this.destinationD;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n createAllActionDictionariesWithLatestValueFromActionArrayDictionaries(mact: CommunicationActivity): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact)) {\r\n // debugger;\r\n let mAction;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact?.action)) {\r\n mAction = mact?.action;\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact?.memberActivity)) {\r\n mAction = mact?.memberActivity;\r\n }\r\n switch (mAction?.toLowerCase()) {\r\n\r\n case 'block':\r\n case 'unblock':\r\n // debugger;\r\n this.dictionaryService.myBlockDictionary = this.createActionDictionaryWithLatestValueFromActionArray('myBlockDictionary', 'myBlockArray');\r\n this.dictionaryService.myBlockDictionary = this.updateActionDictionaryAgainstOppositeActionArray('myBlockDictionary', 'myUnblockArray');\r\n\r\n this.dictionaryService.yourBlockDictionary = this.createActionDictionaryWithLatestValueFromActionArray('yourBlockDictionary', 'yourBlockArray');\r\n this.dictionaryService.yourBlockDictionary = this.updateActionDictionaryAgainstOppositeActionArray('yourBlockDictionary', 'yourUnblockArray');\r\n break;\r\n\r\n case 'friend':\r\n case 'disfriend':\r\n case 'unfriend':\r\n // debugger;\r\n this.dictionaryService.myFriendDictionary = this.createActionDictionaryWithLatestValueFromActionArray('myFriendDictionary', 'myFriendArray');\r\n this.dictionaryService.myFriendDictionary = this.updateActionDictionaryAgainstOppositeActionArray('myFriendDictionary', 'myUnfriendArray');\r\n\r\n this.dictionaryService.yourFriendDictionary = this.createActionDictionaryWithLatestValueFromActionArray('yourFriendDictionary', 'yourFriendArray');\r\n this.dictionaryService.yourFriendDictionary = this.updateActionDictionaryAgainstOppositeActionArray('yourFriendDictionary', 'yourUnfriendArray');\r\n break;\r\n case 'like':\r\n case 'dislike':\r\n // debugger;\r\n this.dictionaryService.myLikeDictionary = this.createActionDictionaryWithLatestValueFromActionArray('myLikeDictionary', 'myLikeArray');\r\n this.dictionaryService.myLikeDictionary = this.updateActionDictionaryAgainstOppositeActionArray('myLikeDictionary', 'myDislikeArray');\r\n\r\n this.dictionaryService.yourLikeDictionary = this.createActionDictionaryWithLatestValueFromActionArray('yourLikeDictionary', 'yourLikeArray');\r\n this.dictionaryService.yourLikeDictionary = this.updateActionDictionaryAgainstOppositeActionArray('yourLikeDictionary', 'yourDislikeArray');\r\n break;\r\n case 'tala':\r\n case 'unlock':\r\n // debugger;\r\n this.dictionaryService.myUnlockDictionary = this.createActionDictionaryWithLatestValueFromActionArray('myUnlockDictionary', 'myUnlockArray');\r\n this.dictionaryService.myUnlockDictionary = this.updateActionDictionaryAgainstOppositeActionArray('myUnlockDictionary', 'myLockArray');\r\n\r\n this.dictionaryService.yourUnlockDictionary = this.createActionDictionaryWithLatestValueFromActionArray('yourUnlockDictionary', 'yourUnlockArray');\r\n this.dictionaryService.yourUnlockDictionary = this.updateActionDictionaryAgainstOppositeActionArray('yourUnlockDictionary', 'yourLockArray');\r\n break;\r\n case 'star':\r\n // debugger;\r\n this.dictionaryService.myStarDictionary = this.createActionDictionaryWithLatestValueFromActionArray('myStarDictionary', 'myStarArray' );\r\n this.dictionaryService.yourStarDictionary = this.createActionDictionaryWithLatestValueFromActionArray('yourStarDictionary', 'yourStarArray' );\r\n break;\r\n case 'track':\r\n /*\r\n * this.trackCount++;\r\n */\r\n // debugger;\r\n this.dictionaryService.myTrackDictionary = this.createActionDictionaryWithLatestValueFromActionArray('myTrackDictionary', 'myTrackArray');\r\n this.dictionaryService.yourTrackDictionary = this.createActionDictionaryWithLatestValueFromActionArray('yourTrackDictionary', 'yourTrackArray');\r\n break;\r\n case 'wink':\r\n // debugger;\r\n this.dictionaryService.myWinkDictionary = this.createActionDictionaryWithLatestValueFromActionArray('myWinkDictionary', 'myWinkArray');\r\n this.dictionaryService.yourWinkDictionary = this.createActionDictionaryWithLatestValueFromActionArray('yourWinkDictionary', 'yourWinkArray');\r\n break;\r\n }\r\n }\r\n // debugger;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n // Note: This method accumulates the following brhavior into asingle MemberActivityDictionary:\r\n // 1. block/unblock 2. friend/unfriend 3. like/dislike\r\n // ------------------------------------------------------------------------------------------------\r\n createMemberActivityDictionariesFromAllDictionaries (mact : any): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact)) {\r\n // debugger;\r\n let mAction;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact.action)) {\r\n mAction = mact.action;\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact.value)) {\r\n mAction = mact.value.MemberAction;\r\n }\r\n switch (mAction?.toLowerCase()) {\r\n \r\n case 'block':\r\n case 'unblock':\r\n // debugger;\r\n this.dictionaryService.myMemberActivityDictionary = this.copyMemberActivityDictionary(this.dictionaryService.myMemberActivityDictionary, this.dictionaryService.myBlockDictionary);\r\n this.dictionaryService.yourMemberActivityDictionary = this.copyMemberActivityDictionary(this.dictionaryService.yourMemberActivityDictionary, this.dictionaryService.yourBlockDictionary);\r\n break;\r\n \r\n case 'friend':\r\n case 'disfriend':\r\n case 'unfriend':\r\n // debugger;\r\n this.dictionaryService.myMemberActivityDictionary = this.copyMemberActivityDictionary(this.dictionaryService.myMemberActivityDictionary, this.dictionaryService.myFriendDictionary);\r\n this.dictionaryService.yourMemberActivityDictionary = this.copyMemberActivityDictionary(this.dictionaryService.yourMemberActivityDictionary, this.dictionaryService.yourFriendDictionary);\r\n break;\r\n \r\n case 'like':\r\n case 'dislike':\r\n // debugger;\r\n this.dictionaryService.myMemberActivityDictionary = this.copyMemberActivityDictionary(this.dictionaryService.myMemberActivityDictionary, this.dictionaryService.myLikeDictionary);\r\n this.dictionaryService.yourMemberActivityDictionary = this.copyMemberActivityDictionary(this.dictionaryService.yourMemberActivityDictionary, this.dictionaryService.yourLikeDictionary);\r\n break;\r\n // ----------------------------\r\n \r\n case 'tala':\r\n case 'lock':\r\n case 'unlock':\r\n // debugger;\r\n this.dictionaryService.myMemberLockingActivityDictionary =\r\n this.copyMemberActivityDictionary( this.dictionaryService.myMemberLockingActivityDictionary, this.dictionaryService.myUnlockDictionary );\r\n this.dictionaryService.yourMemberLockingActivityDictionary =\r\n this.copyMemberActivityDictionary( this.dictionaryService.yourMemberLockingActivityDictionary, this.dictionaryService.yourUnlockDictionary );\r\n break;\r\n case 'star':\r\n // debugger;\r\n this.dictionaryService.myMemberTrackingActivityDictionary =\r\n this.copyMemberActivityDictionary(this.dictionaryService.myMemberTrackingActivityDictionary, this.dictionaryService.myStarDictionary );\r\n this.dictionaryService.yourMemberTrackingActivityDictionary =\r\n this.copyMemberActivityDictionary(this.dictionaryService.yourMemberTrackingActivityDictionary, this.dictionaryService.yourStarDictionary );\r\n break;\r\n case 'track':\r\n // debugger;\r\n this.trackCount++;\r\n this.dictionaryService.myMemberTrackingActivityDictionary =\r\n this.copyMemberActivityDictionary(this.dictionaryService.myMemberTrackingActivityDictionary, this.dictionaryService.myTrackDictionary );\r\n this.dictionaryService.yourMemberTrackingActivityDictionary =\r\n this.copyMemberActivityDictionary(this.dictionaryService.yourMemberTrackingActivityDictionary, this.dictionaryService.yourTrackDictionary );\r\n break;\r\n case 'wink':\r\n // debugger;\r\n this.dictionaryService.myMemberTrackingActivityDictionary =\r\n this.copyMemberActivityDictionary(this.dictionaryService.myMemberTrackingActivityDictionary, this.dictionaryService.myWinkDictionary );\r\n this.dictionaryService.yourMemberTrackingActivityDictionary =\r\n this.copyMemberActivityDictionary(this.dictionaryService.yourMemberTrackingActivityDictionary, this.dictionaryService.yourWinkDictionary );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n // debugger;\r\n return true;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n createAndSetMemberViewGlyphMenu(): any{\r\n EmitterSubjectService.setIsViewMember( true );\r\n EmitterSubjectService.emitSetMemberViewGlyphMenu(true); // TODO: No listeneres yet\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n // this method is primarily concerned with creating glyph menu on te basis of memberActivities\r\n // NOT in use currently\r\n // ------------------------------------------------------------------------------------------------\r\n filterMemberViewGlyphByMemberActivities ( result : any, profilePics: ProfilePics ) : any\r\n {\r\n let today: any;\r\n let pPics: any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics))\r\n {\r\n this.profilePics = profilePics;\r\n }\r\n\r\n // diplay the MemberView glyphicon menu only:\r\n // ------------------------------------------\r\n if ( result === false )\r\n {\r\n // debugger;\r\n // case-2\r\n return this.createAndSetMemberViewGlyphMenu();\r\n }\r\n // filter against server data on myUnlockingDictionary:\r\n // ----------------------------------------------------\r\n else if ( result === true )\r\n {\r\n // debugger;\r\n this.dictionaryService.myUnlockDictionary.get( this.sitUser.sitUserId );\r\n\r\n const serverMActs = this.getMyUnlockingDictionaryActivities();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( serverMActs ) && serverMActs.length > 0 )\r\n {\r\n // debugger;\r\n serverMActs.map((e : any) =>\r\n {\r\n if ( e.senderSitUserId === this.sitUser.sitUserId\r\n && e.receiverSitUserId === this.loginSuccess.signedInUserId\r\n && DateStringServiceStatic.compareDate( e.expiryDate, today.toLocaleString() ) >= 0 )\r\n {\r\n // debugger; //TODO : Check filtration process\r\n this.photoPrivacyService.filterKvPhotoArrayByServerData(this.profilePics.profileKvPhotoArr, e).then((data : any) =>\r\n {\r\n this.profilePics.unFilteredKvPhotoArr = data;\r\n } );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics.unFilteredKvPhotoArr ) )\r\n {\r\n // debugger;\r\n this.profileImageKvPhotos = this.profilePics.unFilteredKvPhotoArr;\r\n this.profilePics = this.photoPrivacyService.displayFilteredKvPhotosOfProfilePics( this.profilePics );\r\n }\r\n }\r\n } );\r\n }\r\n else if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics.profileKvPhotoArr )\r\n && this.profilePics.profileKvPhotoArr.length > 0 )\r\n {\r\n // debugger; //TODO : Check filtration process\r\n let tfiltered : any;\r\n this.photoPrivacyService.filterKvPhotoArrayByMemberLockingActivityDictionaryData(\r\n this.profilePics.profileKvPhotoArr).then((data : any) =>\r\n {\r\n tfiltered = data;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tfiltered ) )\r\n {\r\n this.profilePics.unFilteredKvPhotoArr = this.filteredKvPhotoArr = tfiltered;\r\n }\r\n // TODO : try to eliminate the 'this.filteredKvPhotoArr' variable:\r\n else if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics.profileKvPhotoArr ) )\r\n {\r\n this.profilePics.unFilteredKvPhotoArr = this.profilePics.profileKvPhotoArr;\r\n }\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoArr ) )\r\n {\r\n // debugger;\r\n this.profileImageKvPhotos = this.profilePics.unFilteredKvPhotoArr;\r\n this.photoPrivacyService.displayFilteredKvPhotosOfProfilePics( this.profilePics );\r\n }\r\n } );\r\n }\r\n\r\n // debugger;\r\n return this.createAndSetMemberViewGlyphMenu();\r\n }\r\n // result==MemberActicity[]:\r\n // -------------------------\r\n else if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) && result.length > 0 )\r\n {\r\n // debugger;\r\n this.profilePics = EmitterSubjectService.getProfilePics();\r\n today = DateStringServiceStatic.getTicks( new Date() );\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n result.map((e : any) =>\r\n {\r\n if ( e.doereSitUserId === this.sitUser.sitUserId\r\n && e.senderSitUserId === this.loginSuccess.signedInUserId\r\n && e.action.toLowerCase().indexOf( 'unlock' ) !== -1\r\n && parseInt( e, 10 ) - today >= 0 )\r\n {\r\n // debugger;//TODO : Check filtration process\r\n this.photoPrivacyService.filterKvPhotoArrayByServerData(this.profilePics.profileKvPhotoArr, e).then((data : any) =>\r\n {\r\n this.profilePics.unFilteredKvPhotoArr = data;\r\n } );\r\n this.profilePics = this.photoPrivacyService.displayFilteredKvPhotosOfProfilePics( this.profilePics );\r\n return this.createAndSetMemberViewGlyphMenu();\r\n }\r\n else if ( e.action.toLowerCase().indexOf( 'track' ) === -1 && e.action.toLowerCase().indexOf( 'wink' ) === -1 )\r\n {\r\n // debugger;\r\n // case-3\r\n return this.createAndSetMemberViewGlyphMenu();\r\n }\r\n } );\r\n }\r\n else\r\n {\r\n // debugger;\r\n return this.createAndSetMemberViewGlyphMenu();\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getLastValueOfDictionary (dictionary : Dictionary) : any {\r\n var values : any[] = [];\r\n var length = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionary)) {\r\n for (var c in dictionary) {\r\n var v = dictionary[ c ];\r\n values.push(v);\r\n length++;\r\n }\r\n const last = values[length - 1];\r\n\r\n return last;\r\n }\r\n else return null;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getLatestActivityFromActionArray(actionArr: CommunicationActivity[]): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionArr) && actionArr.length > 0) {\r\n // debugger;\r\n actionArr = actionArr.sort((a, b) => b.memberActivity.toString().localeCompare(a.memberActivity.toString()));\r\n // debugger;\r\n return actionArr[0];\r\n }\r\n return null;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * Note: this may be not used\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n getLatestActivityFromActionDictionary (actionD : Dictionary, sitId: number, action: string): CommunicationActivity {\r\n let outAct : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionD) && sitId > 0) {\r\n if (actionD.has(sitId)) {\r\n let userAct = actionD.get(sitId) as CommunicationActivity;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userAct) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userAct.action) && userAct.action.toLowerCase().indexOf(action) !== -1) {\r\n if (userAct.receiverSitUserId === sitId) {\r\n outAct = userAct;\r\n }\r\n }\r\n }\r\n }\r\n // debugger;\r\n return outAct;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // NOTE: all the data upon arrival are sequestered into its respective dictionaries and indexedDB\r\n // ---------------------------------------------------------------\r\n public getMemberActivitiesOfSitUser (sitid : number, act: string) : Observable {\r\n let sitId = sitid;\r\n let action = act;\r\n let memberActivitesAndAction : MemberActivitiesAndAction = new MemberActivitiesAndAction();\r\n return new Observable(subscriber => {\r\n if (sitId > 0)\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (sitId !== this.loginSuccess.signedInUserId)\r\n {\r\n switch (action.toLowerCase())\r\n {\r\n case 'like':\r\n case 'dislike':\r\n case 'friend':\r\n case 'unfriend':\r\n case 'block':\r\n case 'unblock':\r\n case 'star':\r\n case 'wink':\r\n this.getMyActivities(sitId, 'MemberActivity').subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n memberActivitesAndAction.action = data.action;\r\n memberActivitesAndAction.memberActivities.push(...data);\r\n // debugger;\r\n subscriber.next(memberActivitesAndAction);\r\n // subscriber.complete();\r\n // debugger;\r\n }\r\n });\r\n break;\r\n\r\n case 'tala':\r\n case 'lock':\r\n case 'unlock':\r\n // debugger;\r\n this.getMyActivities(sitId, 'unlock').subscribe(data => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n memberActivitesAndAction.action = data.action;\r\n memberActivitesAndAction.memberActivities.push(...data);\r\n subscriber.next(memberActivitesAndAction);\r\n // subscriber.complete();\r\n }\r\n });\r\n break;\r\n\r\n case 'track':\r\n this.getMyActivities(sitId, 'track').subscribe(data => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n memberActivitesAndAction.action = data.action;\r\n memberActivitesAndAction.memberActivity = data;\r\n memberActivitesAndAction.memberActivities.push(data);\r\n subscriber.next(memberActivitesAndAction);\r\n // subscriber.complete();\r\n }\r\n });\r\n break;\r\n } \r\n \r\n } \r\n }\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n getMyActivities ( sitId : number, act : string ) : Observable\r\n {\r\n // debugger;\r\n var sitUserId = sitId;\r\n var action = act;\r\n return new Observable(subscriber => {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)) {\r\n this.sitUser = new SitUser();\r\n }\r\n this.sitUser.sitUserId = sitUserId; // Note: important!\r\n\r\n this.memberActivity = new CommunicationActivity();\r\n this.memberActivity.action = action;\r\n this.memberActivity.modelName = action;\r\n this.memberActivity.senderSitUserId = this.loginSuccess.signedInUserId;\r\n this.memberActivity.receiverSitUserId = sitUserId;\r\n this.memberActivity.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n this.getMemberActivities(this.memberActivity, sitUserId).subscribe(data => {\r\n // debugger;\r\n if (data instanceof Array && data.length > 0) {\r\n subscriber.next(...data);\r\n }\r\n else {\r\n subscriber.next(data);\r\n }\r\n subscriber.complete();\r\n })\r\n }\r\n else return null;\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Currently in use:\r\n // ---------------------------------------------------------------\r\n getINotificationsOfAction (action : string): Observable{\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action)) {\r\n let url = 'api/Enote/GetINotificationsOfAction/';\r\n // debugger;\r\n let model : ClientHttpDataModel = new ClientHttpDataModel();\r\n model.action = action;\r\n model.sitUserKey = this.loginSuccess.signedInUserKey;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(model);\r\n this.httpService.postObservable(url, {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce), }, 'json2text')\r\n .subscribe((result) => {\r\n // debugger;\r\n subscriber.next(result);\r\n })\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Currently in use:\r\n // ---------------------------------------------------------------\r\n getINotificationsOfLockingAction (action : string) : Observable {\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action)) {\r\n let url = 'api/Enote/GetINotificationsOfLockingAction/';\r\n // debugger;\r\n let model : ClientHttpDataModel = new ClientHttpDataModel();\r\n model.action = action;\r\n model.sitUserKey = this.loginSuccess.signedInUserKey;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(model);\r\n this.httpService.postObservable(url, {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text')\r\n .subscribe((result) => {\r\n // debugger;\r\n subscriber.next(result);\r\n })\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Currently in use:\r\n // ---------------------------------------------------------------\r\n getINotificationsOfTrackingAction (action : string) : Observable {\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action)) {\r\n let url = 'api/Enote/GetINotificationsOfTrackingAction/';\r\n // debugger;\r\n let model : ClientHttpDataModel = new ClientHttpDataModel();\r\n model.action = action;\r\n model.sitUserKey = this.loginSuccess.signedInUserKey;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(model);\r\n this.httpService.postObservable(url, {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text')\r\n .subscribe((result) => {\r\n // debugger;\r\n subscriber.next(result);\r\n })\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n //getYourActivities ( sitId : number, act : string ) : Observable\r\n //{\r\n // debugger;\r\n // var sitUserId = sitId;\r\n // var action = act;\r\n // return new Observable(subscriber => {\r\n // if (sitUserId > 0) {\r\n // // debugger;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // // debugger;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)) {\r\n // this.sitUser = new SitUser();\r\n // }\r\n // this.sitUser.sitUserId = sitUserId; // Note: important!\r\n\r\n // this.memberActivity = new CommunicationActivity();\r\n // this.memberActivity.action = action;\r\n // this.memberActivity.modelName = action;\r\n // this.memberActivity.senderSitUserId = this.sitUser.sitUserId;\r\n // this.memberActivity.receiverSitUserId = this.loginSuccess.signedInUserId;\r\n // this.memberActivity.signedInUserId = this.sitUser.sitUserId;\r\n\r\n // this.getMemberActivities(this.memberActivity, sitUserId).subscribe(data => {\r\n // debugger;\r\n // subscriber.next(data);\r\n // subscriber.complete();\r\n // })\r\n // }\r\n // else {\r\n // debugger;\r\n // subscriber.next(null);\r\n // subscriber.complete();\r\n // }\r\n // })\r\n //}\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // Currently In Use:\r\n // ---------------------------------------------------------------\r\n getMemberActivities ( mActivity: CommunicationActivity, sitId: number ): Observable {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mActivity ) && sitId > 0)\r\n {\r\n this.memberActvity = mActivity;\r\n let action = mActivity.action;\r\n let url = '/Enote/GetMemberActivities';\r\n let cActs : any;\r\n let uniqueActs : CommunicationActivity[] = [];\r\n let mAct : CommunicationActivity = mActivity;;\r\n let sitUserId = sitId;\r\n // will get activities with respect to the sitUser:\r\n if (sitUserId !== this.loginSuccess.signedInUserId) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action)) {\r\n // debugger;\r\n if (action.toLowerCase().indexOf('lock') !== -1\r\n || action.toLowerCase().indexOf('unlock') !== -1\r\n || action.toLowerCase().indexOf('tala') !== -1) {\r\n url = 'api/Enote/GetLockingActivity';\r\n }\r\n else if (action.toLowerCase().indexOf('track') !== -1) {\r\n url = 'api/Enote/GetTrackingActivity';\r\n }\r\n else {\r\n // debugger;\r\n url = 'api/Enote/GetMemberActivities';\r\n }\r\n }\r\n else {\r\n // debugger;\r\n url = 'api/Enote/GetMemberActivities';\r\n }\r\n }\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel( this.memberActivity );\r\n return new Observable( ( subscriber ) =>\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce))\r\n {\r\n // debugger;\r\n\r\n this.httpService.postObservable( url,\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n }, 'json2text' )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n {\r\n cActs = result;\r\n // debugger;\r\n\r\n // Note: GetMemberActivities sends an array:\r\n //-----------------------------------------\r\n if (cActs instanceof Array && cActs.length > 0) {\r\n // debugger;\r\n cActs.map((e) => {\r\n // debugger;\r\n\r\n // update dictionary and indexedDb:\r\n // --------------------------------\r\n if (sitUserId !== this.loginSuccess.signedInUserId) {\r\n e.senderSitUserId = mAct.senderSitUserId;\r\n e.receiverSitUserId = mAct.receiverSitUserId;\r\n // debugger;\r\n this.populateDictionary(e);\r\n\r\n };\r\n })\r\n }\r\n else {\r\n // Note: GetLockingActivity sends one CommuniationActivity:\r\n // --------------------------------------------------------\r\n // debugger;\r\n cActs.senderSitUserId = mAct.senderSitUserId;\r\n cActs.receiverSitUserId = mAct.receiverSitUserId;\r\n this.populateDictionary(cActs);\r\n }\r\n // debugger;\r\n \r\n }\r\n\r\n // debugger;\r\n this.saveDictionaryToIndexedDb(action);\r\n if (cActs instanceof Array && cActs.length > 0) {\r\n subscriber.next(...cActs);\r\n }\r\n else {\r\n subscriber.next(cActs);\r\n } \r\n },\r\n ( error ) =>\r\n {\r\n // debugger;\r\n this.message = 'Error occured in getMemberActivities(senderSitUserId:' + mAct.senderSitUserId;\r\n this.message += '; receiverSitUserId:' + mAct.receiverSitUserId + '; action: ' + action;\r\n this.message += ');\\n Error message: ' + error.message;\r\n }\r\n );\r\n }\r\n if ( this.message.length > 10 )\r\n {\r\n console.log( this.message );\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n }\r\n \r\n } );\r\n } else {\r\n // debugger;\r\n this.message = 'Could not sent method getMemberActivities(senderSitUserId:' + this.memberActivity.senderSitUserId;\r\n this.message += '; receiverSitUserId:' + sitId + '; action: ' + this.memberActivity.action + ');\\n';\r\n if ( this.message.length > 10 )\r\n {\r\n console.log( this.message );\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n }\r\n // debugger;\r\n \r\n }\r\n }\r\n\r\n // -----------------------------------------------------------\r\n nullPromise ( data : any ) : any\r\n {\r\n this.timer = setTimeout( () =>\r\n {\r\n // debugger;\r\n return data;\r\n }, 500);\r\n clearTimeout(this.timer);\r\n if ( this.timer )\r\n {\r\n this.timerArray.push( this.timer );\r\n }\r\n }\r\n // -----------------------------------------------------------\r\n createUniqueLockingUsers (commActivityArr : CommunicationActivity[]) : CommunicationActivity[]{\r\n let uniqueUsers : CommunicationActivity[] = [];\r\n this.commActivityDictionary = new Dictionary();\r\n commActivityArr.map(e => {\r\n // debugger;\r\n this.commActivityDictionary.set(e.receiverSITUserKey, e);\r\n })\r\n uniqueUsers = this.commActivityDictionary.values();\r\n return uniqueUsers;\r\n }\r\n // -----------------------------------------------------------\r\n populateDictionary (e: CommunicationActivity): void {\r\n // update dictionary and indexedDb:\r\n // --------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n //e.senderSitUserId = mAct.senderSitUserId;\r\n //e.receiverSitUserId = mAct.receiverSitUserId;\r\n // debugger;\r\n switch (e?.memberActivity?.toLowerCase()) {\r\n case 'mymembertrackingactivity':\r\n // debugger;\r\n this.dictionaryService.updateDictionary(e, \"myMemberTrackingActivity\", e.lockingActivityId);\r\n // debugger;\r\n break;\r\n case 'tala':\r\n case 'lock':\r\n case 'unlock':\r\n case 'lockingactivity':\r\n case 'memberlockingactivity':\r\n // debugger;\r\n this.dictionaryService.updateDictionary(e, \"myMemberLockingActivity\", e.lockingActivityId);\r\n // debugger;\r\n break;\r\n case 'like':\r\n case 'dislike':\r\n case 'friend':\r\n case 'unfriend':\r\n case 'block':\r\n case 'unblock':\r\n case 'star':\r\n case 'wink':\r\n case 'memberactivity':\r\n // debugger;\r\n this.dictionaryService.updateDictionary(e, \"myMemberActivity\", e.notificationActivityId);\r\n // debugger;\r\n break;\r\n }\r\n }\r\n }\r\n // -----------------------------------------------------------\r\n // update indexedDb for dictionaries:\r\n // -----------------------------------------------------------\r\n saveDictionaryToIndexedDb (action : string) : void { \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(action)) {\r\n // debugger;\r\n switch (action.toLowerCase()) {\r\n case 'mymembertrackingactivity':\r\n debugger;\r\n if (this.dictionaryService.myMemberTrackingActivityDictionary?.length > 0) {\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.myMemberTrackingActivityDictionary,\r\n \"myMemberTrackingActivity\",\r\n this.loginSuccess.signedInUserId);\r\n }\r\n break;\r\n case 'tala':\r\n case 'lock':\r\n case 'unlock':\r\n case 'lockingactivity':\r\n case 'memberlockingactivity':\r\n // debugger;\r\n if (this.dictionaryService.myMemberLockingActivityDictionary?.length > 0) {\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.myMemberLockingActivityDictionary,\r\n \"myMemberLockingActivity\",\r\n this.loginSuccess.signedInUserId);\r\n }\r\n break;\r\n case 'like':\r\n case 'dislike':\r\n case 'friend':\r\n case 'unfriend':\r\n case 'block':\r\n case 'unblock':\r\n case 'star':\r\n case 'wink':\r\n case 'memberactivity':\r\n // debugger;\r\n if (this.dictionaryService.myMemberActivityDictionary?.length > 0) {\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.myMemberActivityDictionary,\r\n \"myMemberActivity\",\r\n this.loginSuccess.signedInUserId);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n \r\n // ------------------------------------------------------------------------------------------------\r\n updateActionDictionaryAgainstOppositeActionArray (actionDName : any, arrayName : any) : Dictionary {\r\n var outActionDictionary : Dictionary = new Dictionary();\r\n // debugger;\r\n var actionD = new Dictionary();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( actionDName ) )\r\n {\r\n actionD = this.callStaticDictionary( actionDName );\r\n }\r\n\r\n let oppositeActionArr : CommunicationActivity[] = [];\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( actionD ) )\r\n {\r\n oppositeActionArr = this.callActivityArray( arrayName);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionD) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(oppositeActionArr)) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n // it works\r\n outActionDictionary = JSON.parse(JSON.stringify(actionD)); // will be mutable copy of immutable source\r\n // debugger;\r\n\r\n if (actionD.size > 0) {\r\n if (oppositeActionArr.length > 0) {\r\n // get the keys of actionD and keep it immutable:\r\n const actionKeys = actionD.keys();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionKeys) && actionKeys.length > 0) {\r\n actionKeys.map((sitId) => {\r\n let actionValue = actionD.get( sitId ) as CommunicationActivity;\r\n const latestActionArrayValue = this.getLatestActivityFromActionArray(oppositeActionArr);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionValue) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(latestActionArrayValue)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionValue.action) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(latestActionArrayValue.action)) {\r\n if (\r\n actionValue.senderSitUserId === latestActionArrayValue.senderSitUserId && // same Doer\r\n actionValue.receiverSitUserId === latestActionArrayValue.receiverSitUserId\r\n ) {\r\n // same Doee\r\n if (\r\n (actionValue.action.toLowerCase().indexOf('unblock') !== -1 && latestActionArrayValue.action.toLowerCase().indexOf('block') !== -1) || // opposite actions\r\n (actionValue.action.toLowerCase().indexOf('block') !== -1 && latestActionArrayValue.action.toLowerCase().indexOf('unblock') !== -1)\r\n ) {\r\n /*\r\n * opposite actions\r\n * opposite-action id is more recent than action id on same Entity/Table\r\n */\r\n if (actionValue.id < latestActionArrayValue.id && outActionDictionary.has(sitId)) {\r\n outActionDictionary.remove(sitId);\r\n // debugger;\r\n }\r\n } else if (\r\n (actionValue.action.toLowerCase().indexOf('unlock') !== -1\r\n && (latestActionArrayValue.action.toLowerCase().indexOf('tala') !== -1\r\n || latestActionArrayValue.action.toLowerCase().indexOf('lock') !== -1)) || // opposite actions\r\n ((actionValue.action.toLowerCase().indexOf('tala') !== -1\r\n || latestActionArrayValue.action.toLowerCase().indexOf('lock') !== -1)\r\n &&\r\n // opposite actions { // lock/unlock action => same Entity/Table of backend-DB\r\n latestActionArrayValue.action.toLowerCase().indexOf('unlock') !== -1)\r\n ) {\r\n // un/dis-action should contain action\r\n if (actionValue.action.toLowerCase().indexOf(latestActionArrayValue.action.toLowerCase()) !== -1) {\r\n /*\r\n * Note: no need to act upon expired unlocked activity here\r\n * opposite-action id is more recent than action id on same Entity/Table\r\n */\r\n if (actionValue.id < latestActionArrayValue.id && outActionDictionary.has(sitId)) {\r\n outActionDictionary.remove(sitId);\r\n // debugger;\r\n }\r\n }\r\n }\r\n // all other cases; un/dis-action should contain action\r\n else if (latestActionArrayValue.action.toLowerCase().indexOf(actionValue.action.toLowerCase()) !== -1) {\r\n // opposite-action id is more recent than action id on same Entity/Table\r\n if (actionValue.id < latestActionArrayValue.id && outActionDictionary.has(sitId)) {\r\n outActionDictionary.remove(sitId);\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n // else nothing to do in action-Dictionary since opposite-ActionArray is empty, hence nothing to remove against\r\n }\r\n // else nothing to do since ActionDictionary is empty, hence nothing to remove\r\n }\r\n // debugger;\r\n return outActionDictionary;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * Note: most likely this will not be used\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n removeActivityFromActionArray(actionArr: CommunicationActivity[], removeAct: CommunicationActivity, sitId: number): CommunicationActivity[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionArr) && actionArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(removeAct) && sitId > 0) {\r\n let index = this.isActivityFoundInArray( actionArr, removeAct );\r\n if ( index > -1 )\r\n {\r\n actionArr = actionArr.splice( index, 1 );\r\n }\r\n }\r\n // debugger;\r\n return actionArr;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // Note: used by SendMemberActivity()\r\n // ---------------------------------------------------------------\r\n processMemberActivityResult (mAct : CommunicationActivity, result : any, action : string) : any\r\n {\r\n let tMAct : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result))\r\n {\r\n tMAct = JSON.parse(JSON.stringify(result) ) as CommunicationActivity;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tMAct))\r\n {\r\n if (tMAct.senderSITUserId === this.loginSuccess.signedInUserId)\r\n {\r\n this.myMemberActivity = tMAct;\r\n // debugger;\r\n EmitterSubjectService.setMemberActivity(this.myMemberActivity);\r\n // debugger;\r\n\r\n switch (tMAct.modelName) {\r\n case 'LockingActivity':\r\n // debugger;\r\n this.dictionaryService.updateDictionary(tMAct, 'myMemberLockingActivity', tMAct.lockingActivityId); \r\n break;\r\n\r\n case 'MemberActivity':\r\n // debugger;\r\n this.dictionaryService.updateDictionary(tMAct, 'myMemberActivity', tMAct.notificationActivityId);\r\n // debugger;\r\n break;\r\n }\r\n }\r\n return tMAct;\r\n }\r\n else return null;\r\n }\r\n else {\r\n this.message = 'No CommunicationActivity to record. Result is null/undefined on sendMemberActivity(senderSitUserId:';\r\n this.message += this.memberActivity.senderSitUserId + '; receiverSitUserId:' + this.sitUser.sitUserId + ');\\n result: ' + result;\r\n return null;\r\n } \r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Even though TrackingActivity is part of glyphicons,\r\n // it is rather a separate system with it's own entity/table\r\n // in the database. Hence a parallel system for tracking is\r\n // created.\r\n // The main reason for this is that there will be lot more\r\n // tracking activity than any other member activities.\r\n // ---------------------------------------------------------------\r\n sendTrackingActivity (cAct : CommunicationActivity) : void {\r\n // let outMAct = new CommunicationActivity();\r\n // debugger;\r\n \r\n let commAct : CommunicationActivity = cAct;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.action)) {\r\n // debugger; \r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(commAct);\r\n let url = '/api/Enote/SendTrackingActivity'; \r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n url,\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe(\r\n (result) => {\r\n console.log(result.message + ' for sitUserId=' + cAct.sitUserId);\r\n // debugger;\r\n },\r\n (error) => {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.message = 'Error occured in sendTrackingActivity(senderSitUserId:' + commAct.senderSitUserId;\r\n this.message += '; receiverSitUserId:' + this.sitUser.sitUserId + ');\\n Error message: ' + error.message;\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n\r\n });\r\n } \r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n sendMemberActivity (mAct : CommunicationActivity) : Observable {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let outMAct = new CommunicationActivity();\r\n let action = '';\r\n // debugger;\r\n let commAct : CommunicationActivity = mAct;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.action)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)) {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.loginSuccess.signedInUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(commAct);\r\n let url = '';\r\n \r\n if (commAct.action.toLowerCase().indexOf('tala') !== -1 ||\r\n commAct.action.toLowerCase().indexOf('lock') !== -1 ||\r\n commAct.action.toLowerCase().indexOf('unlock') !== -1) {\r\n url = '/api/Enote/UpdateLockingActivity';\r\n action = 'LockingActivity';\r\n }\r\n else if (commAct.action.toLowerCase().indexOf('wink') !== -1 || \r\n commAct.action.toLowerCase().indexOf('star') !== -1 || \r\n commAct.action.toLowerCase().indexOf('block') !== -1 ||\r\n commAct.action.toLowerCase().indexOf('unblock') !== -1 ||\r\n commAct.action.toLowerCase().indexOf('like') !== -1 ||\r\n commAct.action.toLowerCase().indexOf('dislike') !== -1 ||\r\n commAct.action.toLowerCase().indexOf('friend') !== -1 ||\r\n commAct.action.toLowerCase().indexOf('unfriend') !== -1 \r\n ) {\r\n url = '/api/Enote/UpdateMemberActivity';\r\n action = 'MemberActivity';\r\n }\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n url,\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe(\r\n (result) => {\r\n // debugger;\r\n outMAct = this.processMemberActivityResult(mAct, result, action);\r\n // debugger;\r\n subscriber.next(outMAct);\r\n // subscriber.complete();\r\n },\r\n (error) => {\r\n this.message = 'Error occured in sendMemberActivity(senderSitUserId:' + this.memberActivity.senderSitUserId;\r\n this.message += '; receiverSitUserId:' + this.sitUser.sitUserId + ');\\n Error message: ' + error.message;\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n populateRespectiveActionArray (mact : CommunicationActivity): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact)) {\r\n // debugger;\r\n let mAction;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact?.action)) {\r\n mAction = mact?.action;\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact?.memberActivity)) {\r\n mAction = mact?.memberActivity;\r\n }\r\n // debugger;\r\n switch (mAction?.toLowerCase()) {\r\n \r\n case 'block':\r\n // debugger;\r\n this.processBlockingBehavior(mact);\r\n break;\r\n case 'unblock':\r\n // debugger;\r\n this.processUnblockingBehavior(mact);\r\n break;\r\n case 'friend':\r\n // debugger;\r\n this.processFriendingBehavior(mact);\r\n break;\r\n case 'unfriend':\r\n // debugger;\r\n this.processUnfriendingBehavior(mact);\r\n break;\r\n case 'like':\r\n // debugger;\r\n this.processLikingBehavior(mact);\r\n break;\r\n case 'dislike':\r\n // debugger;\r\n this.processDislikingBehavior(mact);\r\n break;\r\n \r\n case 'lock':\r\n // debugger;\r\n this.processLockingBehavior(mact);\r\n break;\r\n case 'tala':\r\n // debugger;\r\n this.processLockingBehavior(mact);\r\n break;\r\n case 'unlock':\r\n // debugger;\r\n this.processUnlockingBehavior(mact);\r\n break;\r\n case 'star':\r\n // debugger;\r\n this.processStarringBehavior( mact );\r\n break;\r\n //case 'track':\r\n // // debugger;\r\n // this.processTrackingBehavior(mact);\r\n // break;\r\n case 'wink':\r\n // debugger;\r\n this.processWinkingBehavior(mact);\r\n break;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // ------------------------------------------------------------------------------------------------\r\n quickSortArray (arr : any): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && arr.length > 0) {\r\n /*\r\n * arr = arr.sort((a, b) => a.key.toString().localeCompare(b.key.toString()));\r\n * arr = arr.sort((a, b) => this.compareKeys(a.key, b.key));\r\n */\r\n arr = arr.sort(((a : any, b : any) => this.genericSearchSortFilterService.genericSort(a, b, this.activeSorter))); // TODO: restore\r\n }\r\n return arr;\r\n }\r\n // -----------------------------------------------------------\r\n prefetchMyMemberActivities (sitId : number, action : string) {\r\n // NOTE: though this methods gets the memberActivities, it does not have to return any obtained data to any other component/service.\r\n // all the data upon arrival are sequestered into its respective dictionary and indexedDB\r\n //\r\n // Also, this will get the group of activities such as lock/unlock, star/track/wink, or like/friend/block/etc.\r\n //------------------------------------------------------------------------------------------------------------------------------\r\n // Deprecated! Not in use:\r\n // ----------------------------------------------------------------\r\n // debugger;\r\n let myActivities : CommunicationActivity[] = [];\r\n let sitUserId = sitId;\r\n switch (action.toLocaleLowerCase()) {\r\n case 'ilock': case 'iunlock': case 'itala': case 'lock': case 'unlock': case 'tala':\r\n this.getMyActivities(sitId, 'unlock').subscribe(data => { // note: important to strip `i` \r\n myActivities = data;\r\n\r\n });\r\n break;\r\n case 'ilike': case 'ifriend': case 'like': case 'friend':\r\n case 'istar': case 'iwink': case 'star': case 'wink':\r\n case 'iblock': case 'iunblock': case 'block': case 'unblock':\r\n case 'idislike': case 'iunfriend': case 'dislike': case 'unfriend':\r\n\r\n this.getMyActivities(sitId, 'MemberActivity').subscribe(data => { // note: important to strip `i` \r\n myActivities = data;\r\n\r\n });\r\n break;\r\n default:\r\n this.getMyActivities(sitId, 'MemberActivity').subscribe(data => { // note: important to strip `i` \r\n myActivities = data;\r\n // debugger;\r\n });\r\n break;\r\n }\r\n\r\n EmitterSubjectService.emitMyActivityArr(myActivities);\r\n //-------------------------------------\r\n myActivities.map((e) => {\r\n // debugger;\r\n this.populateRespectiveActionArray(e);\r\n // debugger;\r\n this.createAllActionDictionariesWithLatestValueFromActionArrayDictionaries(e);\r\n // debugger;\r\n // Note: will accumulate block/unblock, friend/unfriend & like/dislike into MemberActivities:\r\n // and will accumulate Star/Track/Wink into MemberStarTrackWinkActivities\r\n // and Unlock into MemberLockingActivities\r\n this.createMemberActivityDictionariesFromAllDictionaries(e);\r\n // debugger;\r\n });\r\n // debugger;\r\n\r\n // update dictionary and indexedDb:\r\n // --------------------------------\r\n if (sitUserId === this.loginSuccess.signedInUserId) {\r\n // debugger;\r\n switch (action.toLowerCase()) {\r\n\r\n // debugger;\r\n //this.dbDexieToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // this.dictionaryService.myMemberStarTrackWinkActivityDictionary,\r\n // \"myMemberStarTrackWinkActivity\",\r\n // this.loginSuccess.signedInUserId);\r\n //break;\r\n case 'tala':\r\n case 'lock':\r\n case 'unlock':\r\n case 'LockingActivity':\r\n case 'MemberLockingActivity':\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.myMemberLockingActivityDictionary,\r\n \"myMemberLockingActivity\",\r\n this.loginSuccess.signedInUserId);\r\n break;\r\n case 'like':\r\n case 'dislike':\r\n case 'friend':\r\n case 'unfriend':\r\n case 'block':\r\n case 'unblock':\r\n case 'star':\r\n case 'Wink':\r\n case 'CommunicationActivity':\r\n case 'MemberActivity':\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.myMemberActivityDictionary,\r\n \"myMemberActivity\",\r\n this.loginSuccess.signedInUserId);\r\n break;\r\n }\r\n }\r\n else {\r\n debugger;\r\n switch (action) {\r\n\r\n //case 'MemberStarWinkActivity':\r\n // debugger;\r\n // this.dbDexieToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // this.dictionaryService.yourMemberStarTrackWinkActivityDictionary,\r\n // \"yourMemberStarTrackWinkActivity\",\r\n // sitUserId);\r\n\r\n // break;\r\n case 'tala':\r\n case 'lock':\r\n case 'unlock':\r\n case 'LockingActivity':\r\n case 'MemberLockingActivity':\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.yourMemberLockingActivityDictionary,\r\n \"yourMemberLockingActivity\",\r\n sitUserId);\r\n\r\n break;\r\n case 'like':\r\n case 'dislike':\r\n case 'friend':\r\n case 'unfriend':\r\n case 'block':\r\n case 'unblock':\r\n case 'star':\r\n case 'Wink':\r\n case 'CommunicationActivity':\r\n case 'MemberActivity':\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.yourMemberActivityDictionary,\r\n \"yourMemberActivity\",\r\n sitUserId);\r\n break;\r\n }\r\n }\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * End of Core-Helper-Methods:\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * Begin of Behavior-based-processing-methods:\r\n * ------------------------------------------------------------------------------------------------\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n processBlockingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myBlockArray = this.addActivityToUserActionArray( activityArrayEnum.myBlockArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourBlockArray = this.addActivityToUserActionArray( activityArrayEnum.yourBlockArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n processUnblockingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myUnblockArray = this.addActivityToUserActionArray( activityArrayEnum.myUnblockArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourUnblockArray = this.addActivityToUserActionArray( activityArrayEnum.yourUnblockArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n processBuddyingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n let didIFriend = false;\r\n let didYouFriend = false;\r\n let serverSentMemberActivity : any;\r\n let buddyActivity = new CommunicationActivity();\r\n buddyActivity.senderSitUserId = this.loginSuccess.signedInUserId;\r\n // buddyActivity.receiverCryptUserKey = this.loginSuccess.cryptUserKey;\r\n buddyActivity.action = 'buddy';\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) && mact.action.toLowerCase().indexOf( 'friend' ) !== -1 )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess ) )\r\n {\r\n if ( mact.senderSitUserId > 0 && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n didIFriend = true;\r\n\r\n this.getYourActivities( mact.receiverSitUserId, 'freind' ).subscribe( data =>\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( data ) && data.length > 0 ) // TODO: check if data==[] or model?\r\n {\r\n data.map((f : any) =>\r\n {\r\n if ( f.senderSitUserId === mact.receiverSitUserId )\r\n {\r\n buddyActivity.receiverSitUserId = f.senderSitUserId;\r\n // buddyActivity.doeeCryptUserKey = f.doerCryptUserKey;\r\n didYouFriend = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n else if ( mact.receiverSitUserId > 0 && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n didYouFriend = true;\r\n\r\n this.dictionaryService.myFriendDictionary.size > 0 && this.dictionaryService.myFriendDictionary.values().map((e : any) =>\r\n {\r\n if ( e.receiverSitUserId == mact.senderSitUserId )\r\n {\r\n // Note: since buddy.doer==signedInSitUserId, e.doer's value is put on buddy.doee which is also the key for buddydictionary.\r\n buddyActivity.receiverSitUserId = e.receiverSitUserId;\r\n // buddyActivity.doeeCryptUserKey = e.doeeCryptUserKey;\r\n didIFriend = true;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n if ( didIFriend && didYouFriend )\r\n {\r\n this.dictionaryService.buddyDictionary.set( buddyActivity.receiverSitUserId, buddyActivity );\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n\r\n processFriendingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myFriendArray = this.addActivityToUserActionArray( activityArrayEnum.myFriendArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourFriendArray = this.addActivityToUserActionArray( activityArrayEnum.yourFriendArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n processUnfriendingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myUnfriendArray = this.addActivityToUserActionArray( activityArrayEnum.myUnfriendArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourUnfriendArray = this.addActivityToUserActionArray( activityArrayEnum.yourUnfriendArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n processLikingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myLikeArray = this.addActivityToUserActionArray( activityArrayEnum.myLikeArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourLikeArray = this.addActivityToUserActionArray( activityArrayEnum.yourLikeArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n processDislikingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myDislikeArray = this.addActivityToUserActionArray( activityArrayEnum.myDislikeArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourDislikeArray = this.addActivityToUserActionArray( activityArrayEnum.yourDislikeArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------------------------------------\r\n processLockingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myLockArray = this.addActivityToUserActionArray( activityArrayEnum.myLockArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourLockArray = this.addActivityToUserActionArray( activityArrayEnum.yourLockArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n processUnlockingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myUnlockArray = this.addActivityToUserActionArray( activityArrayEnum.myUnlockArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourUnlockArray = this.addActivityToUserActionArray( activityArrayEnum.yourUnlockArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------------------------------------\r\n processStarringBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myStarArray = this.addActivityToUserActionArray( activityArrayEnum.myStarArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourStarArray = this.addActivityToUserActionArray( activityArrayEnum.yourStarArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------------------------------------\r\n processTrackingBehavior(mact: CommunicationActivity): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact)) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myTrackArray = this.addActivityToUserActionArray( activityArrayEnum.myTrackArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourTrackArray = this.addActivityToUserActionArray( activityArrayEnum.yourTrackArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------------------------------------\r\n processWinkingBehavior ( mact : CommunicationActivity ) : void\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mact ) )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess )\r\n && mact.senderSitUserId > 0\r\n && mact.senderSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.myWinkArray = this.addActivityToUserActionArray( activityArrayEnum.myWinkArray, mact, mact.receiverSitUserId );\r\n // debugger;\r\n }\r\n else\r\n {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser ) && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n && mact.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n {\r\n this.yourWinkArray = this.addActivityToUserActionArray( activityArrayEnum.yourWinkArray, mact, mact.senderSitUserId );\r\n // debugger;\r\n }\r\n }\r\n }\r\n\r\n // ==================================================\r\n // TODO: remove after testing\r\n // --------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact)) {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n // /*\r\n // * --------------------------------------------------------------------\r\n // * myWinkArray: for Wink\r\n // * --------------------------------------------------------------------\r\n // */\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n // /*\r\n // * debugger;\r\n // * if I am the doer in this tMAct\r\n // */\r\n // if (mact.senderSitUserId === this.loginSuccess.signedInUserId && mact.receiverSitUserId === this.sitUser.sitUserId) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.myWinkArray)) {\r\n // /*\r\n // * make sure that the dictionary exists\r\n // * debugger;\r\n // */\r\n // this.myWinkArray = this.addActivityToUserActionDictionary(this.myWinkArray, mact, mact.receiverSitUserId);\r\n // }\r\n // } else if (mact.senderSitUserId === this.sitUser.sitUserId && mact.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // /*\r\n // * --------------------------------------------------------------------\r\n // * yourWinkArray: for Wink\r\n // * --------------------------------------------------------------------\r\n // * if I am the doee in this tMAct\r\n // */\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.yourWinkArray)) {\r\n // // make sure that the dictionary exists\r\n // this.yourWinkArray = this.addActivityToUserActionDictionary(this.yourWinkArray, mact, mact.senderSitUserId);\r\n // }\r\n // }\r\n // } else {\r\n // /*\r\n // * debugger;\r\n // * --------------------------------------------------------------------\r\n // * myWinkArray: for Wink\r\n // * --------------------------------------------------------------------\r\n // */\r\n // if (mact.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.myWinkArray)) {\r\n // /*\r\n // * make sure that the dictionary exists\r\n // * debugger;\r\n // */\r\n // this.myWinkArray = this.addActivityToUserActionDictionary(this.myWinkArray, mact, mact.receiverSitUserId);\r\n // }\r\n // } else if (mact.senderSitUserId > 0 && mact.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // /*\r\n // * --------------------------------------------------------------------\r\n // * yourTrackArray: for Track\r\n // * --------------------------------------------------------------------\r\n // */\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.yourWinkArray)) {\r\n // // make sure that the dictionary exists\r\n // this.yourWinkArray = this.addActivityToUserActionDictionary(this.yourWinkArray, mact, mact.senderSitUserId);\r\n // }\r\n // }\r\n // }\r\n // }\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * End of Behavior-based-processing-methods:\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n\r\n // ---------------------------------------------------------------\r\n // Note: This method has a side-effect which is it also finds a\r\n // matching activity of the sitUserId provided.\r\n // Essentially it does two things:\r\n // 1. it gets the array of values of a dictionary\r\n // 2. it also finds an entry into the array for the sitUserId\r\n // ---------------------------------------------------------------\r\n getDictionaryActivities ( dictionaryName : any) : any {\r\n var outArr : any[] = []; \r\n \r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n try {\r\n switch (dictionaryName) {\r\n case 'iBlocked':\r\n case 'myBlockDictionary':\r\n outArr = this.dictionaryService?.myBlockDictionary?.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.myBlockDictionary) {\r\n // act = this.dictionaryService.myBlockDictionary[ c ];\r\n // outArr.push(act);\r\n // if (act.receiverSitUserId === sitUserId && act.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n case 'iFriended':\r\n case 'myFriendDictionary':\r\n outArr = this.dictionaryService.myFriendDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.myFriendDictionary) {\r\n // act = this.dictionaryService.myFriendDictionary[ c ];\r\n // outArr.push(act); \r\n //}\r\n break;\r\n case 'iLiked':\r\n case 'myLikeDictionary':\r\n debugger;\r\n //this.myLikeDictionary = this.dictionaryService.getMyLikeDictionary();\r\n outArr = this.myLikeDictionary?.values() as CommunicationActivity[];\r\n var tOutArr = this.dictionaryService.getMyLikeDictionaryValues();\r\n debugger;\r\n outArr = tOutArr;\r\n debugger;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.outArr) && result.outArr.length > 0) {\r\n // result.outArr.map(e => {\r\n // if (e.receiverSitUserId === sitUserId && e.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n // })\r\n //}\r\n break;\r\n case 'iStarred':\r\n case 'myStarDictionary':\r\n outArr = this.dictionaryService.myStarDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.myStarDictionary) {\r\n // act = this.dictionaryService.myStarDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.receiverSitUserId === sitUserId && act.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n case 'iUnlocked':\r\n case 'myUnlockDictionary':\r\n outArr = this.dictionaryService.myUnlockDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.myUnlockDictionary) {\r\n // act = this.dictionaryService.myUnlockDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.receiverSitUserId === sitUserId && act.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n case 'iWinked':\r\n case 'myWinkDictionary':\r\n outArr = this.dictionaryService.myWinkDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.myWinkDictionary) {\r\n // act = this.dictionaryService.myWinkDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.receiverSitUserId === sitUserId && act.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n // ------------------------------------\r\n case 'youBlocked':\r\n case 'yourBlockDictionary':\r\n outArr = this.dictionaryService.myLikeDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.yourBlockDictionary) {\r\n // act = this.dictionaryService.yourBlockDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.senderSitUserId === sitUserId && act.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n case 'youFriended':\r\n case 'yourFriendDictionary':\r\n outArr = this.dictionaryService.yourFriendDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.yourFriendDictionary) {\r\n // act = this.dictionaryService.yourFriendDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.senderSitUserId === sitUserId && act.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n case 'youLiked':\r\n case 'yourLikeDictionary':\r\n outArr = this.dictionaryService.yourLikeDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.yourLikeDictionary) {\r\n // act = this.dictionaryService.yourLikeDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.senderSitUserId === sitUserId && act.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n // }\r\n break;\r\n case 'youStarred':\r\n case 'yourStarDictionary':\r\n outArr = this.dictionaryService.yourStarDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.yourStarDictionary) {\r\n // act = this.dictionaryService.yourStarDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.senderSitUserId === sitUserId && act.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n case 'youUnlocked':\r\n case 'yourUnlockDictionary':\r\n outArr = this.dictionaryService.yourUnlockDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.yourUnlockDictionary) {\r\n // act = this.dictionaryService.yourUnlockDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.senderSitUserId === sitUserId && act.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n case 'youWinked':\r\n case 'yourWinkDictionary':\r\n outArr = this.dictionaryService.yourWinkDictionary.values() as CommunicationActivity[];\r\n //for (var c in this.dictionaryService.yourWinkDictionary) {\r\n // act = this.dictionaryService.yourWinkDictionary[ c ];\r\n // result.outArr.push(act);\r\n\r\n // if (act.senderSitUserId === sitUserId && act.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // result.isFound = true;\r\n // debugger;\r\n // }\r\n //}\r\n break;\r\n }\r\n // debugger;\r\n return outArr;\r\n }\r\n catch (e) {\r\n console.log('error in try-catch block: ' + e);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getMyLikeDictionaryActivities(): any {\r\n \r\n var myLikingActivities: CommunicationActivity[] = [];\r\n myLikingActivities = this.getDictionaryActivities('mylikeDictionary');\r\n \r\n return myLikingActivities;\r\n \r\n }\r\n // ---------------------------------------------------------------\r\n getMyUnlockingDictionaryActivities(): any {\r\n \r\n var myUnlockingActivities: CommunicationActivity[] = [];\r\n\r\n myUnlockingActivities = this.getDictionaryActivities('myUnlockDictionary');\r\n \r\n\r\n return myUnlockingActivities;\r\n \r\n }\r\n\r\n /*\r\n * =========================================================================================\r\n * All the verifier methods:\r\n * =========================================================================================\r\n */\r\n isActivityFoundInArray ( arr : CommunicationActivity[], activity : CommunicationActivity ) : number\r\n {\r\n let isFound = false;\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arr ) && arr.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( activity ) )\r\n {\r\n let i = 0;\r\n arr.map( ( e ) =>\r\n {\r\n if ( ( e as CommunicationActivity ).id === activity.id )\r\n {\r\n isFound = true;\r\n index = i;\r\n }\r\n i++;\r\n } );\r\n }\r\n return index;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n isActivityFoundInArrayByName ( arrName : activityArrayEnum, activity : CommunicationActivity ) : number\r\n {\r\n let isFound = false;\r\n let index = -1;\r\n let actionArr = [];\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arrName ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( activity ) )\r\n {\r\n actionArr = this.callActivityArray( arrName ) as [];\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( actionArr ) && actionArr.length > 0 )\r\n {\r\n let i = 0;\r\n actionArr.map( ( e ) =>\r\n {\r\n if ( ( e as CommunicationActivity ).id === activity.id )\r\n {\r\n isFound = true;\r\n index = i;\r\n }\r\n i++;\r\n } );\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n isBlockedByMyDictionary(sitUserId: number): boolean {\r\n if (sitUserId > 0) {\r\n this.isBlockedByDictionaryData = false;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n const bActs = this.getDictionaryActivities('myBlockDictionary');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bActs)) {\r\n const isBlocked = (this.isBlockedByDictionaryData = bActs.isFound);\r\n } \r\n }\r\n // debugger;\r\n return this.isBlockedByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isBlockedByYourDictionary(sitUserId: number): boolean {\r\n if (sitUserId > 0) {\r\n this.isBlockedByDictionaryData = false;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n const bActs = this.getDictionaryActivities('yourBlockDictionary');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( bActs )) {\r\n const isBlocked = (this.isBlockedByDictionaryData = bActs.isFound);\r\n }\r\n }\r\n // debugger;\r\n return this.isBlockedByDictionaryData;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: searches by CommunicationActivity.senderSitUserId\r\n * ---------------------------------------------------------------\r\n */\r\n isDoeeSitUserActivityFoundInArr(mActs: CommunicationActivity[], sitId: number): CommunicationActivity {\r\n let foundMAct : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActs) && mActs.length > 0) {\r\n mActs.map((e) => {\r\n if (e.receiverSitUserId === sitId) {\r\n foundMAct = e;\r\n }\r\n });\r\n }\r\n return foundMAct;\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: searches by CommunicationActivity.senderSitUserId\r\n * ---------------------------------------------------------------\r\n */\r\n isDoerSitUserActivityFoundInArr(mActs: CommunicationActivity[], sitId: number): CommunicationActivity {\r\n let foundMAct : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActs) && mActs.length > 0) {\r\n mActs.map((e) => {\r\n if (e.senderSitUserId === sitId) {\r\n foundMAct = e;\r\n }\r\n });\r\n }\r\n return foundMAct;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: searches by CommunicationActivity.receiverSitUserId\r\n * ---------------------------------------------------------------\r\n */\r\n isDoeeSitUserActivityFoundInDictionary ( mActsDictionaryName : staticDictionaryEnum, sitId: number, action: string): CommunicationActivity {\r\n let foundMAct : any;\r\n let mActs = new Dictionary();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mActsDictionaryName ) )\r\n {\r\n mActs = this.callStaticDictionary( mActsDictionaryName );\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActs)) {\r\n for (var c in mActs) {\r\n var e = mActs[ c ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.receiverSitUserId) && e.receiverSitUserId === sitId && e.action.toLowerCase().indexOf(action) !== -1) {\r\n foundMAct = e;\r\n } else if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value.receiverSitUserId) &&\r\n e.value.receiverSitUserId === sitId &&\r\n e.value.MemberAction.toLowerCase().indexOf(action) !== -1\r\n ) {\r\n foundMAct = e.value;\r\n }\r\n }\r\n }\r\n }\r\n return foundMAct;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: searches by CommunicationActivity.senderSitUserId\r\n * ---------------------------------------------------------------\r\n */\r\n isDoerSitUserActivityFoundInDictionary(mActsDictionaryName: staticDictionaryEnum, sitId: number, action: string): CommunicationActivity {\r\n let foundMAct: any;\r\n let mActs = new Dictionary();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mActsDictionaryName ) )\r\n {\r\n mActs = this.callStaticDictionary( mActsDictionaryName );\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActs)) {\r\n for (var c in mActs) {\r\n var e = mActs[ c ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.senderSitUserId) && e.senderSitUserId === sitId && e.action.toLowerCase().indexOf(action) !== -1) {\r\n foundMAct = e;\r\n } else if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value.senderSitUserId) &&\r\n e.value.senderSitUserId === sitId &&\r\n e.value.MemberAction.toLowerCase().indexOf(action) !== -1\r\n ) {\r\n foundMAct = e.value;\r\n }\r\n }\r\n }\r\n }\r\n return foundMAct;\r\n }\r\n\r\n\r\n // ---------------------------------------------------------------\r\n isFoundInDictionary ( dic : any, item : any ) : boolean\r\n {\r\n let isFound = false;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dic ) && dic.size() > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( item ) )\r\n {\r\n for (var c in dic) {\r\n var itm = dic[ c ];\r\n if (itm.id === item.id) {\r\n isFound = true;\r\n // debugger;\r\n break;\r\n }\r\n } \r\n }\r\n return isFound;\r\n }\r\n // ---------------------------------------------------------------\r\n isFriendByMyDictionaryPromise ( sitUserId : number ) : Promise\r\n {\r\n this.isFriendByDictionaryData = false;\r\n // debugger;\r\n return new Promise( ( resolve, reject ) =>\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n var bActs = this.getDictionaryActivities('myFriendDictionary');\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bActs)) \r\n {\r\n this.isFriendByDictionaryData = bActs.isFound;\r\n resolve(this.isFriendByDictionaryData);\r\n } \r\n }\r\n else\r\n {\r\n resolve( this.isFriendByDictionaryData );\r\n }\r\n } );\r\n }\r\n // ---------------------------------------------------------------\r\n isFriendByMyDictionary ( sitUserId : number ) : boolean\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.isFriendByDictionaryData = false;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n for (var c in this.dictionaryService.myFriendDictionary) {\r\n var fAct = this.dictionaryService.myFriendDictionary[ c ];\r\n if (fAct.receiverSitUserId === sitUserId && fAct.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n this.isLikedByDictionaryData = true;\r\n // debugger;\r\n }\r\n } \r\n }\r\n return this.isFriendByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isFriendByYourDictionary ( sitUserId : number ) : boolean\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.isFriendByDictionaryData = false;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n for (var c in this.dictionaryService.yourFriendDictionary) {\r\n var fAct = this.dictionaryService.yourFriendDictionary[ c ];\r\n if (fAct.receiverSitUserId === sitUserId && fAct.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n this.isLikedByDictionaryData = true;\r\n // debugger;\r\n }\r\n } \r\n }\r\n return this.isFriendByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isLikedByMyDictionary(sitUserId: number): boolean {\r\n if (sitUserId > 0) {\r\n this.isLikedByDictionaryData = false;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n for (var c in this.dictionaryService.myLikeDictionary) {\r\n var lAct = this.dictionaryService.myLikeDictionary[ c ];\r\n if (lAct.receiverSitUserId === sitUserId && lAct.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n this.isLikedByDictionaryData = true;\r\n // debugger;\r\n }\r\n }\r\n }\r\n return this.isLikedByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isLikedByYourDictionary(sitUserId: number): boolean {\r\n if (sitUserId > 0) {\r\n this.isLikedByDictionaryData = false;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n for (var c in this.dictionaryService.yourLikeDictionary) {\r\n var lAct = this.dictionaryService.yourLikeDictionary[ c ];\r\n if (lAct.receiverSitUserId === sitUserId && lAct.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n this.isLikedByDictionaryData = true;\r\n // debugger;\r\n }\r\n }\r\n }\r\n return this.isLikedByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isStarredByMyDictionary (sitUserId : any) : boolean\r\n {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty (this.loginSuccess) && this.loginSuccess.signedInUserId > 0 && sitUserId > 0)\r\n {\r\n this.isStarredByDictionaryData = false;\r\n const bActs = this.getDictionaryActivities('myStarDictionary' );\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bActs)) {\r\n this.isStarredByDictionaryData = bActs.isFound;\r\n } \r\n }\r\n return this.isStarredByDictionaryData;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n isStarredByYourDictionary ( sitUserId : number ) : boolean\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.isStarredByDictionaryData = false;\r\n const bActs = this.getDictionaryActivities('yourStarDictionary');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bActs)) {\r\n this.isStarredByDictionaryData = bActs.isFound;\r\n } \r\n }\r\n return this.isStarredByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isWinkedByMyDictionary (sitUserId: number)\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.isWinkedByDictionaryData = false;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n const bActs = this.getDictionaryActivities('myWinkDictionary');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bActs)) {\r\n this.isWinkedByDictionaryData = bActs.isFound;\r\n } \r\n }\r\n return this.isWinkedByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isWinkedByYourDictionary ( sitUserId : number ) : boolean\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.isWinkedByDictionaryData = false;\r\n const bActs = this.getDictionaryActivities('yourWinkDictionary');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bActs)) {\r\n this.isWinkedByDictionaryData = bActs.isFound;\r\n } \r\n }\r\n return this.isWinkedByDictionaryData;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: searches by MemberActivityId or id\r\n * ---------------------------------------------------------------\r\n */\r\n isMemberActivityFoundInArr(mActs: CommunicationActivity[], item: CommunicationActivity): CommunicationActivity {\r\n let foundMAct : any;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActs) && mActs.length > 0) {\r\n mActs.map((e : any) => {\r\n // debugger;\r\n if (e?.memberActivity === item?.memberActivity) {\r\n foundMAct = e;\r\n }\r\n });\r\n }\r\n return foundMAct;\r\n }\r\n // ---------------------------------------------------------------\r\n isMemberActionFoundInArr (mActs : CommunicationActivity[], item : any) : CommunicationActivity {\r\n let foundMAct : any;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActs) && mActs.length > 0) {\r\n mActs.map((e : any) => {\r\n // debugger;\r\n if (e.action.toLowerCase().indexOf(item.toLowerCase() !== -1)) {\r\n foundMAct = e;\r\n }\r\n });\r\n }\r\n return foundMAct;\r\n }\r\n // ---------------------------------------------------------------\r\n isMyDictionaryMemberActivityEmptyForSitUser(sitId: number): boolean {\r\n let isEmpty = true;\r\n\r\n if (sitId > 0) {\r\n for (var c in this.dictionaryService.myMemberActivityDictionary) {\r\n var mAct = this.dictionaryService.myMemberActivityDictionary[ c ];\r\n if (mAct.receiverSitUserId === sitId || mAct.senderSitUserId === sitId) {\r\n isEmpty = true;\r\n // debugger;\r\n }\r\n }\r\n }\r\n return isEmpty;\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: searches by CommunicationActivity.senderSitUserId and receiverSitUserId and action\r\n * ---------------------------------------------------------------\r\n */\r\n isSitUserActivityFoundInDictionary (mActsD : Dictionary, mact: CommunicationActivity): CommunicationActivity {\r\n let foundMAct : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActsD)) {\r\n for (var c in mActsD) {\r\n var e = mActsD[ c ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact)) {\r\n if (\r\n e.senderSitUserId === mact.senderSitUserId &&\r\n e.receiverSitUserId === mact.receiverSitUserId &&\r\n (e.action?.toLowerCase().indexOf(mact.action.toLowerCase()) !== -1 || e?.memberActivity?.toLowerCase().indexOf(mact.memberActivity?.toLowerCase()) !== -1)\r\n ) {\r\n foundMAct = e;\r\n }\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact)) {\r\n if (\r\n e.senderSitUserId === mact.senderSitUserId &&\r\n // && e.receiverSitUserId === mact.receiverSitUserId\r\n (e.action?.toLowerCase().indexOf(mact.action?.toLowerCase()) !== -1 || e?.memberActivity?.toLowerCase().indexOf(mact.memberActivity?.toLowerCase()) !== -1)\r\n ) {\r\n foundMAct = e;\r\n }\r\n }\r\n }\r\n }\r\n return foundMAct;\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: searches by CommunicationActivity.senderSitUserId and receiverSitUserId and action\r\n * ---------------------------------------------------------------\r\n */\r\n isSitUserActivityFoundInArray(mActs: CommunicationActivity[], mact: CommunicationActivity): CommunicationActivity {\r\n let foundMAct : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActs) && mActs.length > 0) {\r\n mActs.map((e : any) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n if (\r\n e.senderSitUserId === mact.senderSitUserId &&\r\n e.receiverSitUserId === mact.receiverSitUserId &&\r\n (e.action?.toLowerCase().indexOf(mact.action?.toLowerCase()) !== -1 || e?.memberActivity?.toLowerCase().indexOf(mact.memberActivity?.toLowerCase()) !== -1)\r\n ) {\r\n foundMAct = e;\r\n }\r\n \r\n else if (\r\n e.senderSitUserId === mact.senderSitUserId &&\r\n // && e.receiverSitUserId === mact.receiverSitUserId\r\n (e.action?.toLowerCase().indexOf(mact.action?.toLowerCase()) !== -1 || e?.memberActivity?.toLowerCase().indexOf(mact.memberActivity?.toLowerCase()) !== -1)\r\n ) {\r\n foundMAct = e;\r\n }\r\n }\r\n });\r\n }\r\n return foundMAct;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: Tested, works! 20202/November/04\r\n * ---------------------------------------------------------------\r\n */\r\n isUnlockedExpired(mact: CommunicationActivity): boolean {\r\n let isExpired = true;\r\n let expDateTicks: any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mact)) {\r\n // debugger;\r\n const todaysTicks = new Date().getTime();\r\n const expDate = DateStringServiceStatic.convertNetTicsToJsDate(mact.expiryDate);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(expDate)) {\r\n expDateTicks = new Date(DateStringServiceStatic.addDate(expDate, 'day', 7)).getTime();\r\n }\r\n // debugger;\r\n isExpired = !(expDateTicks - todaysTicks >= 0);\r\n\r\n /*\r\n * let jsExpDate = DateStringServiceStatic.convertNetTicsToJsDate(mact.expiryDate);\r\n * let jsExpDateTicks = DateStringServiceStatic.getTicks(jsExpDate);\r\n * debugger;\r\n */\r\n }\r\n // debugger;\r\n return isExpired;\r\n }\r\n // ---------------------------------------------------------------\r\n isUnlockedByMyDictionaryPromise(sitUserId: number): Promise {\r\n // debugger;\r\n this.isUnlockedByDictionaryData = false;\r\n return new Promise( ( resolve, reject ) =>\r\n {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dictionaryService.myUnlockDictionary)) {\r\n // debugger;\r\n for (var c in this.dictionaryService.myUnlockDictionary) {\r\n var e = this.dictionaryService.myUnlockDictionary[ c ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n {\r\n if (e.receiverSitUserId === sitUserId && e.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n // debugger;\r\n this.isUnlocked = (this.isUnlockedByDictionaryData = !this.isUnlockedExpired(e)); // important!!\r\n\r\n EmitterSubjectService.setIsUnlocked(this.isUnlockedByDictionaryData);\r\n // debugger;\r\n resolve(this.isUnlockedByDictionaryData);\r\n }\r\n };\r\n }\r\n }\r\n }\r\n else {\r\n // debugger;\r\n resolve(this.isUnlockedByDictionaryData);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n isUnlockedByMyDictionary ( sitUserId : number ) : boolean\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n this.isUnlockedByDictionaryData = false;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dictionaryService.myUnlockDictionary)) {\r\n // debugger;\r\n for (var c in this.dictionaryService.myUnlockDictionary) {\r\n var e = this.dictionaryService.myUnlockDictionary[ c ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n {\r\n if (e.receiverSitUserId === sitUserId && e.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n // debugger;\r\n this.isUnlocked = (this.isUnlockedByDictionaryData = !this.isUnlockedExpired(e)); // important!!\r\n\r\n EmitterSubjectService.setIsUnlocked(this.isUnlockedByDictionaryData);\r\n // debugger; \r\n }\r\n };\r\n }\r\n }\r\n }\r\n }\r\n // debugger;\r\n return this.isUnlockedByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isUnlockedByYourDictionary(sitUserId: number): boolean {\r\n if (sitUserId > 0)\r\n {\r\n this.isUnlockedByDictionaryData = false;\r\n // debugger;\r\n const today = new Date();\r\n const lActs = this.getDictionaryActivities('yourUnlockDictionary');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( lActs )) {\r\n // debugger;\r\n const isUnlocked = (this.isUnlockedByDictionaryData = lActs.isFound);\r\n }\r\n }\r\n // debugger;\r\n return this.isUnlockedByDictionaryData;\r\n }\r\n // ---------------------------------------------------------------\r\n isYourDictionaryMemberActivityEmptyForSitUser (sitId : number) : boolean {\r\n let isEmpty = true;\r\n\r\n if (sitId > 0) {\r\n for (var c in this.dictionaryService.yourMemberActivityDictionary) {\r\n var e = this.dictionaryService.yourMemberActivityDictionary[ c ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n {\r\n if (e.receiverSitUserId === sitId || e.senderSitUserId === sitId) {\r\n isEmpty = false;\r\n }\r\n };\r\n }\r\n }\r\n return isEmpty;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Independent-Image-Setting-System (IISS): Begin\r\n //\r\n // This system will display any image centered and fully covered\r\n // ---------------------------------------------------------------\r\n setProfileTileImage (pTile : ProfileTile, elem: any) : any {\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) \r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage)) {\r\n // debugger;\r\n let imageData : any;\r\n\r\n // raw-image-data-case\r\n if (pTile.primaryImage.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n // debugger;\r\n imageData = JsRegExpServiceStatic.normalizeImageDataWithUrl(pTile.primaryImage);\r\n }\r\n // file-name-case\r\n else if (pTile.primaryImage.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n // debugger;\r\n imageData = JsRegExpServiceStatic.normalizeImageFileNameWithUrl(pTile.primaryImage);\r\n }\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) { \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n //bdebugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.renderer)) {\r\n // debugger;\r\n this.renderer.setStyle(elem, 'background-image', imageData);\r\n this.renderer.setStyle(elem, 'background-position', 'center center');\r\n this.renderer.setStyle(elem, 'background-repeat', 'no-repeat');\r\n this.renderer.setStyle(elem, 'background-size', 'cover');\r\n // this.renderer.setStyle(elem, 'animation', 'fadeInOut 3s');\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem.nativeElement)) {\r\n // debugger;\r\n elem.nativeElement.style.background = imageData;\r\n }\r\n else {\r\n // debugger;\r\n elem.nativeElement.style.backgroundImage = imageData;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /*\r\n * =========================================================================================\r\n * All the unused methods:\r\n * =========================================================================================\r\n * =======================================================================\r\n * Begin of CommunicationActivity-Key-Methods:\r\n * =======================================================================\r\n * ---------------------------------------------------------------\r\n */\r\n createMemberActivityKey(mAct: CommunicationActivity): string {\r\n let key = '';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.action)) {\r\n key = mAct.action + '.' + mAct.id;\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct.memberActivity)) {\r\n key = mAct.memberActivity + '.' + mAct.id;\r\n } \r\n }\r\n return key;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: this method returns an array of strings of length 2\r\n * where the 'first index'===action and 'second index'===id\r\n * ---------------------------------------------------------------\r\n * This method is not used\r\n * ---------------------------------------------------------------\r\n */\r\n parseMemberActivityKey(inKey: string): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inKey) && inKey.indexOf('.') !== -1) {\r\n const parts = inKey.split('.');\r\n\r\n return parts;\r\n }\r\n return null;\r\n }\r\n /*\r\n * =======================================================================\r\n * End of CommunicationActivity-Key-Methods:\r\n * =======================================================================\r\n */\r\n}\r\n\r\n/*\r\n * =========================================================================================\r\n * All the getter methods:\r\n * =========================================================================================\r\n */\r\n //getIsBlockedByYourServerData(sitId: number): boolean {\r\n // if (sitId > 0 && this.dictionaryService.yourBlockDictionary.size() > 0) {\r\n // for (const e of this.dictionaryService.yourBlockDictionary.values()) {\r\n // if (e.senderSitUserId === sitId && e.receiverSitUserId === this.loginSuccess.signedInUserId && e.isBlocked === true) {\r\n // // debugger;\r\n // this.isBlockedByServerData = true;\r\n // break;\r\n // }\r\n // }\r\n // return this.isBlockedByServerData;\r\n // }\r\n // return false;\r\n //}\r\n\r\n // -------------------------------------------------------------------------------\r\n //getIsFriendByYourServerData(sitId: number): boolean {\r\n // if (sitId > 0 && this.dictionaryService.yourMemberActivityDictionary.size() > 0) {\r\n // for (const e of this.dictionaryService.yourMemberActivityDictionary.values()) {\r\n // if (e.senderSitUserId === sitId && e.receiverSitUserId === this.loginSuccess.signedInUserId && e.isFriend === true) {\r\n // // debugger;\r\n // this.isFriendByServerData = true;\r\n // break;\r\n // }\r\n // }\r\n // return this.isFriendByServerData;\r\n // }\r\n // return false;\r\n //}\r\n\r\n // -------------------------------------------------------------------------------\r\n //getIsLikedByYourServerData(sitId: number): boolean {\r\n // if (sitId > 0 && this.dictionaryService.yourMemberActivityDictionary.size() > 0) {\r\n // for (const e of this.dictionaryService.yourMemberActivityDictionary.values()) {\r\n // if (e.senderSitUserId === sitId && e.receiverSitUserId === this.loginSuccess.signedInUserId && e.isLiked === true) {\r\n // // debugger;\r\n // this.isLikedByServerData = true;\r\n // break;\r\n // }\r\n // }\r\n // return this.isLikedByServerData;\r\n // }\r\n // return false;\r\n //}\r\n/*\r\n * -------------------------------------------------------------------------------\r\n * Note: these should be called at the listener of 'dictionariesUpdatedEmitter'\r\n * -------------------------------------------------------------------------------\r\n */\r\n //getIsUnlockedByYourServerData(sitId: number): boolean {\r\n // if (sitId > 0 && this.dictionaryService.yourUnlockDictionary.size() > 0) {\r\n // // debugger;\r\n // for (const e of this.dictionaryService.yourUnlockDictionary.values()) {\r\n // if (e.isUnlocked === true || (e.senderSitUserId === sitId && e.receiverSitUserId === this.loginSuccess.signedInUserId && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.expiryDate) && !this.isUnlockedExpired(e))) {\r\n // // debugger;\r\n // this.isUnlockedByServerData = true;\r\n // break;\r\n // }\r\n // }\r\n // return this.isUnlockedByServerData;\r\n // }\r\n // return false;\r\n //}\r\n/*\r\n * ---------------------------------------------------------------\r\n * Note: returns an array or null\r\n * ---------------------------------------------------------------\r\n */\r\n //getSitUserBlockDictionaryActivities(sitUserId: number): any {\r\n // if (sitUserId > 0) {\r\n // const sitUserBlockingActivities: CommunicationActivity[] = [];\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // const blockedValues = this.dictionaryService.yourBlockDictionary.size() > 0 ? this.dictionaryService.yourBlockDictionary.values() : [];\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(blockedValues)) {\r\n // blockedValues.map((e : any) => {\r\n // if (e.senderSitUserId === sitUserId && e.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // sitUserBlockingActivities.push(e);\r\n // }\r\n // });\r\n // }\r\n // return sitUserBlockingActivities;\r\n // }\r\n // return null;\r\n //}\r\n // ---------------------------------------------------------------\r\n //getSitUserFriendDictionaryActivities(sitUserId: number): any {\r\n // if (sitUserId > 0) {\r\n // const sitUserFreindingActivities: CommunicationActivity[] = [];\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // const friendValues = this.dictionaryService.yourFriendDictionary.size() > 0 ? this.dictionaryService.yourFriendDictionary.values() : [];\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(friendValues)) {\r\n // friendValues.map((e : any) => {\r\n // if (e.senderSitUserId === sitUserId && e.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // sitUserFreindingActivities.push(e);\r\n // }\r\n // });\r\n // }\r\n // return sitUserFreindingActivities;\r\n // }\r\n // return null;\r\n //}\r\n // ---------------------------------------------------------------\r\n //getSitUserLikeDictionaryActivities(sitUserId: number): any {\r\n // if (sitUserId > 0) {\r\n // const sitUserLikingActivities: CommunicationActivity[] = [];\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // const likedValues = this.dictionaryService.yourLikeDictionary.size() > 0 ? this.dictionaryService.yourLikeDictionary.values() : [];\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(likedValues)) {\r\n // likedValues.map((e : any) => {\r\n // if (e.senderSitUserId === sitUserId && e.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // sitUserLikingActivities.push(e);\r\n // }\r\n // });\r\n // }\r\n // return sitUserLikingActivities;\r\n // }\r\n // return null;\r\n //}\r\n\r\n // ---------------------------------------------------------------\r\n //getSitUserStarDictionaryActivities ( sitUserId : number ) : any\r\n //{\r\n // if ( sitUserId > 0 )\r\n // {\r\n // const sitUserStarringActivities : CommunicationActivity[] = [];\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // const starredValues = this.dictionaryService.yourStarDictionary.size() > 0 ? this.dictionaryService.yourStarDictionary.values() : [];\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( starredValues ) )\r\n // {\r\n // starredValues.map((e : any ) =>\r\n // {\r\n // if ( e.senderSitUserId === sitUserId && e.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n // {\r\n // sitUserStarringActivities.push( e );\r\n // }\r\n // } );\r\n // }\r\n // return sitUserStarringActivities;\r\n // }\r\n // return null;\r\n //}\r\n // ---------------------------------------------------------------\r\n //getSitUserUnlockingDictionaryActivities(sitUserId: number): any {\r\n // if (sitUserId > 0) {\r\n // // debugger;\r\n // const sitUserUnlockingActivities: CommunicationActivity[] = [];\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // const ulockedValues = this.dictionaryService.yourUnlockDictionary.size() > 0 ? this.dictionaryService.yourUnlockDictionary.values() : [];\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ulockedValues)) {\r\n // ulockedValues.map((e : any) => {\r\n // if (e.senderSitUserId === sitUserId && e.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // // debugger;\r\n // sitUserUnlockingActivities.push(e);\r\n // }\r\n // });\r\n // }\r\n // return sitUserUnlockingActivities;\r\n // }\r\n // return null;\r\n //}\r\n\r\n // ---------------------------------------------------------------\r\n //getSitUserWinkingDictionaryActivities ( sitUserId : number ) : any\r\n //{\r\n // if ( sitUserId > 0 )\r\n // {\r\n // // debugger;\r\n // const sitUserWinkingActivities : CommunicationActivity[] = [];\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // const winkedValues = this.dictionaryService.myWinkDictionary.size() > 0 ?this.dictionaryService.yourWinkDictionary.values() : [];\r\n // // debugger;\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( winkedValues ) )\r\n // {\r\n // winkedValues.map((e : any ) =>\r\n // {\r\n // if ( e.senderSitUserId === sitUserId && e.receiverSitUserId === this.loginSuccess.signedInUserId )\r\n // {\r\n // // debugger;\r\n // sitUserWinkingActivities.push( e );\r\n // }\r\n // } );\r\n // }\r\n // return sitUserWinkingActivities;\r\n // }\r\n // return null;\r\n //}\r\n // ---------------------------------------------------------------\r\n //getMyBlockingDictionaryActivities(sitUserId: number): any {\r\n // if (sitUserId > 0) {\r\n // // debugger;\r\n // const myBlockingActivities: CommunicationActivity[] = [];\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // const blockedValues = this.dictionaryService.myBlockDictionary.size() > 0 ?this.dictionaryService.myBlockDictionary.values() : [];\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(blockedValues)) {\r\n // blockedValues.map((e : any) => {\r\n // if (e.senderSitUserId === this.loginSuccess.signedInUserId && e.receiverSitUserId === sitUserId) {\r\n // // debugger;\r\n // myBlockingActivities.push(e);\r\n // }\r\n // });\r\n // }\r\n // return myBlockingActivities;\r\n // }\r\n // return null;\r\n //}\r\n // ---------------------------------------------------------------\r\n //getMyFriendDictionaryActivities(sitUserId: number): any {\r\n // if (sitUserId > 0) {\r\n // const myFriendingActivities: CommunicationActivity[] = [];\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // for (var c in this.dictionaryService.myFriendDictionary) {\r\n // var fAct = this.dictionaryService.myFriendDictionary[ c ];\r\n // if (fAct.senderSitUserId === sitUserId && fAct.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n // myFriendingActivities.push(fAct);\r\n // debugger;\r\n // }\r\n // }\r\n // return myFriendingActivities;\r\n // }\r\n // return null;\r\n //}\r\n // ------------------------------------------------------------------------------------------------\r\n // callMyEnumDictionary ( dictionaryName : activityArrayEnum ) : Dictionary\r\n // {\r\n // let returnActivityArr = new Dictionary();\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dictionaryName ) )\r\n // {\r\n // switch ( dictionaryName.toString() )\r\n // {\r\n // case 'myBlockArray':\r\n // returnActivityArr = this.myBlockArray;\r\n // break;\r\n // case 'myUnblockArray':\r\n // returnActivityArr = this.myUnblockArray;\r\n // break;\r\n // case 'myFriendArray':\r\n // returnActivityArr = this.myFriendArray;\r\n // break;\r\n // case 'myUnfriendArray':\r\n // returnActivityArr = this.myUnfriendArray;\r\n // break;\r\n // case 'myLikeArray':\r\n // returnActivityArr = this.myLikeArray;\r\n // break;\r\n // case 'myDislikeArray':\r\n // returnActivityArr = this.myDislikeArray;\r\n // break;\r\n // case 'myLockArray':\r\n // returnActivityArr = this.myLockArray;\r\n // break;\r\n // case 'myUnlockArray':\r\n // returnActivityArr = this.myUnlockArray;\r\n // break;\r\n // case 'myStarArray':\r\n // returnActivityArr = this.myStarArray;\r\n // break;\r\n // case 'myTrackArray':\r\n // returnActivityArr = this.myTrackArray;\r\n // break;\r\n // case 'myWinkArray':\r\n // returnActivityArr = this.myWinkArray;\r\n // break;\r\n // default:\r\n // break;\r\n // }\r\n // }\r\n // return returnActivityArr;\r\n // }\r\n // ------------------------------------------------------------------------------------------------\r\n // callYourEnumDictionary ( dictionaryName : activityArrayEnum ) : Dictionary\r\n // {\r\n // let returnActivityArr = new Dictionary();\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dictionaryName ) )\r\n // {\r\n // switch ( dictionaryName.toString() )\r\n // {\r\n // case 'yourBlockArray':\r\n // returnActivityArr = this.yourBlockArray;\r\n // break;\r\n // case 'yourUnblockArray':\r\n // returnActivityArr = this.yourUnblockArray;\r\n // break;\r\n // case 'yourFriendArray':\r\n // returnActivityArr = this.yourFriendArray;\r\n // break;\r\n // case 'yourUnfriendArray':\r\n // returnActivityArr = this.yourUnfriendArray;\r\n // break;\r\n // case 'yourLikeArray':\r\n // returnActivityArr = this.yourLikeArray;\r\n // break;\r\n // case 'yourDislikeArray':\r\n // returnActivityArr = this.yourDislikeArray;\r\n // break;\r\n // case 'yourLockArray':\r\n // returnActivityArr = this.yourLockArray;\r\n // break;\r\n // case 'yourUnlockArray':\r\n // returnActivityArr = this.yourLockArray;\r\n // break;\r\n // case 'yourStarArray':\r\n // returnActivityArr = this.yourStarArray;\r\n // break;\r\n // case 'yourTrackArray':\r\n // returnActivityArr = this.yourTrackArray;\r\n // break;\r\n // case 'yourWinkArray':\r\n // returnActivityArr = this.yourWinkArray;\r\n // break;\r\n // default:\r\n // break;\r\n // }\r\n // }\r\n // return returnActivityArr;\r\n // }\r\n\r\n/*\r\n * ------------------------------------------------------------------------------------------------\r\n * Note: Updatae Dictionay should be computed by removing the latest activity of a tuple ()\r\n * from ActionDictionary by comparing this latest-activiy against the latest activity of the\r\n * opposite-ArrayDictionay (dis/un-ActionArrayDictionay) of the same tuple ().\r\n * ------------------------------------------------------------------------------------------------\r\n * Note: This is mostlikely not going to be used.\r\n * ------------------------------------------------------------------------------------------------\r\n */\r\n // updateActionDictionaryFromActionArray(destinationD: Dictionary, sourceArrD: Dictionary): Dictionary {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationD)) {\r\n // destinationD = new Dictionary();\r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destinationD) && destinationD.size() > 0) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceArrD) && sourceArrD.size() > 0) {\r\n // const sitUserArr = destinationD.keys();\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserArr) && sitUserArr.length > 0) {\r\n // sitUserArr.sort((a, b) => a - b);\r\n // // debugger;\r\n\r\n // // loop-of-destination-ActionDictionary:\r\n // sitUserArr.map((e) => {\r\n // // get the latest-action of source-action-array-dictionary:\r\n // const lSrcArrAct = this.getLatestActivityFromActionArray(sourceArrD, e);\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(lSrcArrAct) && lSrcArrAct.id > e) {\r\n // /*\r\n // * this.myUnlockArray =\r\n // * this.removeActivityFromUserActionDictionary(destinationD, tAct, mact.receiverSitUserId);\r\n // */\r\n // }\r\n // });\r\n // }\r\n // }\r\n // // else nothing to update destinationDictionary with since the sourceArray is empty\r\n // }\r\n // /*\r\n // * else nothing to update since the destinationDictionary is empty\r\n // * debugger;\r\n // */\r\n // return destinationD;\r\n // }\r\n\r\n","\r\nimport { Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { EmitOffOnResult } from '../../models/common/emitOffOnResult.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { KvAction } from '../../models/keyValue/kvAction.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { ProfileImage } from '../../models/profile/profileImage.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { ImageResizerService } from '../commonServiceService/imageResizerService.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { BreadcrumServiceStatic } from '../staticServices/breadcrumServiceStatic.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DefaultSetterServiceStatic } from '../staticServices/defaultSetterServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\nimport { MemberServiceInterface } from '../../interfaces/serviceInterfaces/memberServicesInterfaces/memberServiceInterface';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { RedirectionService } from '../commonServiceService/redirectionService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { Communication } from '../../models/communication/communication.model';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class MemberService implements OnDestroy {\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public emitterDestroyed$: Subject = new Subject();\r\n public isFormSubmitted = false;\r\n public isTileInitialized = false;\r\n public isMobile = false;\r\n public isMouseIn = false;\r\n public isOnLine = false;\r\n public isLoaded = false;\r\n public kvPhotoLock: KvPhoto = new KvPhoto();\r\n public kvPhotoUnLock: KvPhoto = new KvPhoto();\r\n public kvPhotoPrivate: KvPhoto = new KvPhoto();\r\n public kvPhotoPublic: KvPhoto = new KvPhoto();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public messages: string[] = [];\r\n \r\n // UserData-letiables:\r\n public preference: Preference = new Preference();\r\n public profileInfo: ProfileInfo = new ProfileInfo();\r\n public profilePics: ProfilePics = new ProfilePics();\r\n public renderer!: Renderer2;\r\n public sitUser: SitUser = new SitUser();\r\n public sitUserIdArr: number[] = [];\r\n public tempElem!: HTMLElement;\r\n public timer: any;\r\n public timerArray: any[] = [];\r\n\r\n constructor (\r\n public dictionaryService : DictionaryService,\r\n public httpService : HttpService,\r\n public imageResizeService : ImageResizerService,\r\n public redirectionService: RedirectionService,\r\n public rendererService: RendererService,\r\n public router: Router,\r\n ) {\r\n this.initialize();\r\n }\r\n // ---------------------------------------------------------------\r\n initialize(): void {\r\n // debugger;\r\n this.renderer = this.rendererService.getRenderer();\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // --------------------------------------------------------\r\n EmitterSubjectService.loginSuccessEmitter.subscribe((result) => {\r\n this.loginSuccess = result;\r\n // this.executeLoginSuccessTasks();\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n });\r\n // --------------------------------------------------------\r\n this.isLoaded = true;\r\n /*\r\n * --------------------------------------------------------\r\n * debugger;\r\n * --------------------------------------------------------\r\n */\r\n EmitterSubjectService.photoLockUnLockEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n const kvPhoto = result as KvPhoto;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.cryptUserKey)) {\r\n if (kvPhoto.key.toLowerCase().indexOf('tala') !== -1) {\r\n this.kvPhotoLock = kvPhoto;\r\n } else if (kvPhoto.key.toLowerCase().indexOf('unlock') !== -1) {\r\n this.kvPhotoUnLock = kvPhoto;\r\n } else if (kvPhoto.key.toLowerCase().indexOf('private') !== -1) {\r\n this.kvPhotoPrivate = kvPhoto;\r\n } else if (kvPhoto.key.toLowerCase().indexOf('public') !== -1) {\r\n this.kvPhotoPublic = kvPhoto;\r\n }\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n return true;\r\n }\r\n /*\r\n * =====================All Getter-Setters of vailables are placed hare===========\r\n * ---------------------------------------------------------------\r\n */\r\n getMessages(): string[] {\r\n return this.messages;\r\n }\r\n // ---------------------------------------------------------------\r\n getSitUserIds(): number[] {\r\n return this.sitUserIdArr;\r\n }\r\n // ---------------------------------------------------------------\r\n resetMessages(): void {\r\n this.messages = [];\r\n }\r\n // --------------------------------------------------------------\r\n setMessage(msg: string): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(msg)) {\r\n this.messages.push(msg);\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------\r\n nullPromise () : any\r\n {\r\n this.timer = setTimeout( () =>\r\n {\r\n clearTimeout(this.timer);\r\n return 'undefined'; \r\n }, 500);\r\n clearTimeout(this.timer);\r\n }\r\n\r\n /*\r\n * --------------------------------------------------------------\r\n * Promise for ProfileImage/DefaultImage\r\n * xxx-new-dictionary-based-computation:\r\n * --------------------------------------------------------------\r\n */\r\n processProfileImagePromise(pTile: ProfileTile): Promise {\r\n let imageUrl;\r\n\r\n return new Promise((resolve) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage)) {\r\n /*\r\n * debugger;\r\n * setUrlForImageData(pTile.image); //normalizeImageData(pTile.image);\r\n */\r\n imageUrl = JsRegExpServiceStatic.normalizeImageData(pTile.primaryImage);\r\n } else {\r\n /*\r\n * debugger;\r\n * imageUrl = '/photos/avatar3.png';\r\n */\r\n imageUrl = 'url(\\'/photos/avatar3.png\\')';\r\n }\r\n // ====================================\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageUrl)) {\r\n pTile.primaryImage = imageUrl;\r\n }\r\n // debugger;\r\n resolve(pTile as ProfileTile);\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n public clearGlyphiconMenueOnDifferentMember (isOnExit : boolean) : any {\r\n // -------------------------------------------------------------------------------------\r\n // Note: if current-view-member is signedInUser, and the next page is myphotos,\r\n // then save the profilePics in EmitterSubjectService and profilePicsDictionary\r\n // -------------------------------------------------------------------------------------\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n\r\n // -------------------------------------------------//\r\n // Back-to-Back-memberView-pges-recognition-system: //\r\n // -------------------------------------------------//\r\n if (this.redirectionService.isSignedInUserPagesBackToBack()) {\r\n EmitterSubjectService.setProfilePics(this.profilePics);\r\n\r\n // TODO: if necessary display the glyphicon menu here: \r\n // if (!isOnExit) {\r\n // EmitterSubjectService.emitDisplayProfileView(this.profilePics);\r\n // }\r\n // debugger;\r\n\r\n // -------------------------------------------------------------------------------------\r\n // Note: There is only one profilePicsDictionary that is not persisted to the indexedDb:\r\n // and this dictionary should contain only signedInUser's profilePics..\r\n // -------------------------------------------------------------------------------------\r\n this.dictionaryService.profilePicsDictionary.set(this.loginSuccess.signedInUserId, this.profilePics);\r\n }\r\n // if the signedInUser jumps from myPhotos to myProfileView or vice-versa, we do not clear the userData, but otherwise we do\r\n else {\r\n // debugger;\r\n\r\n DefaultSetterServiceStatic.clearUserData();\r\n EmitterSubjectService.emitClearGlyphiconMenu(true); // will clear the kvGlyphArr on PagerServiceVerticalComponent\r\n }\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n public clearUserDataOnDifferentMember (isOnExit : boolean) : any {\r\n // -------------------------------------------------------------------------------------\r\n // Note: if current-view-member is signedInUser, and the next page is myphotos,\r\n // then save the profilePics in EmitterSubjectService and myProfilePicsDictionary\r\n // -------------------------------------------------------------------------------------\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n\r\n // -------------------------------------------------//\r\n // Back-to-Back-memberView-pges-recognition-system: //\r\n // -------------------------------------------------//\r\n if (this.redirectionService.isSignedInUserPagesBackToBack()) {\r\n EmitterSubjectService.setProfilePics(this.profilePics);\r\n\r\n if (!isOnExit) {\r\n EmitterSubjectService.emitDisplayProfileView(this.profilePics);\r\n }\r\n // debugger;\r\n\r\n // -------------------------------------------------------------------------------------\r\n // Note: There is only one profilePicsDictionary that is not persisted to the indexedDb:\r\n // and this dictionary should contain only signedInUser's profilePics..\r\n // -------------------------------------------------------------------------------------\r\n this.dictionaryService.profilePicsDictionary.set(this.loginSuccess.signedInUserId, this.profilePics);\r\n }\r\n // if the signedInUser jumps from myPhotos to myProfileView or vice-versa, we do not clear the userData, but otherwise we do\r\n else {\r\n // debugger;\r\n\r\n DefaultSetterServiceStatic.clearUserData();\r\n }\r\n\r\n }\r\n \r\n // ----------------------------------------------------------------\r\n executeBackToBackMemberViewMyPhotosPages (): void {\r\n // Note: if nextpage of view-member is signedInUser, and the current page is myphotos,\r\n // then save the profilePics to EmitterSubjectService and myProfilePicsDictionary\r\n // -------------------------------------------------------------------------------------\r\n // -------------------------------------------------------------------------------------\r\n // Note: if current page is page is myphotos of signedInUser, and the next page is \r\n // memberView of the signedInUser, then save the profilePics\r\n // in EmitterSubjectService and myProfilePicsDictionary\r\n // -------------------------------------------------------------------------------------\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n\r\n // ---------------------------------------------------//\r\n // Back-to-Back-memberView-pges-recognition-system: //\r\n // TODO:Converge all of these Back-to-Back..system //\r\n // into a single location of RedirectinService/ //\r\n // or ModuleComponentLoaderServiceStatic. //\r\n // ---------------------------------------------------//\r\n let prevPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 2 ].componentName;\r\n let currentPage = BreadcrumServiceStatic.breadcrumRing[ BreadcrumServiceStatic.breadcrumRing.length - 1 ].componentName;\r\n if ((currentPage.toLowerCase().indexOf('myphotos') !== -1 // if current page is myPhotos\r\n && prevPage.toLowerCase().indexOf('mymeemberviewmgmt') !== -1) // and if previous page was memberView\r\n ||\r\n (currentPage.toLowerCase().indexOf('mymeemberviewmgmt') !== -1 // if current page is memberView\r\n && prevPage.toLowerCase().indexOf('myphotos') !== -1) // and if previous page was myPhotos\r\n ) {\r\n EmitterSubjectService.setProfilePics(this.profilePics);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoArr) && this.profilePics.unFilteredKvPhotoArr.length > 0) {\r\n EmitterSubjectService.emitCurrentPage(this.profilePics.unFilteredKvPhotoArr[ 0 ]);\r\n // EmitterSubjectService.emitDisplayGlyphMenuForKvPhotoMgmtPage(this.profilePics.filteredKvPhotoArr[ 0 ]); // no listener of this emitter\r\n }\r\n // debugger;\r\n\r\n // -------------------------------------------------------------------------------------\r\n // Note: There is only one profilePicsDictionary that is not persisted to the indexedDb:\r\n // and this dictionary should contain only signedInUser's profilePics..\r\n // -------------------------------------------------------------------------------------\r\n this.dictionaryService.profilePicsDictionary.set(this.loginSuccess.signedInUserId, this.profilePics);\r\n }\r\n else {\r\n // debugger;\r\n let currentP : any;\r\n let currentKvp = EmitterSubjectService.getCurrentKvPhoto();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvp)) {\r\n currentP = EmitterSubjectService.getCurrentPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentP)) {\r\n currentKvp = CopyServiceStatic.copyFromPhotoToKvPhoto(currentP);\r\n }\r\n }\r\n EmitterSubjectService.emitCurrentPage(currentKvp);\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n /*\r\n * -----------------------------------------------------------\r\n * Note : Server-sent userPhoto's properties are in UpperCase letter\r\n * We convert them to lowerCase letter using the copyUserPhotoIfExists().\r\n * -----------------------------------------------------------\r\n */\r\n addUpdateUserPhoto(userPhotos: Photo[], userPhoto: any): Photo[] {\r\n let isFound = false;\r\n let tPhoto: any;\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userPhotos)) {\r\n userPhotos = [];\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userPhotos) && userPhotos.length > 0) {\r\n userPhotos.map((e) => {\r\n if (e.photoId === userPhoto.PhotoId) {\r\n isFound = true;\r\n e = CopyServiceStatic.copyFromServerPhotoToClientPhoto(e, userPhoto);\r\n // debugger;\r\n }\r\n });\r\n if (!isFound) {\r\n tPhoto = new Photo();\r\n tPhoto = CopyServiceStatic.copyFromServerPhotoToClientPhoto(tPhoto, userPhoto);\r\n // debugger;\r\n userPhotos.push(tPhoto);\r\n }\r\n } else {\r\n tPhoto = new Photo();\r\n tPhoto = CopyServiceStatic.copyFromServerPhotoToClientPhoto(tPhoto, userPhoto);\r\n // debugger;\r\n userPhotos.push(tPhoto);\r\n }\r\n }\r\n return userPhotos;\r\n }\r\n // -----------------------------------------------------------\r\n //addUpdateProfileImage(profileImages: ProfileImage[], profileImage: ProfileImage): ProfileImage[] {\r\n // let isFound = false;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImages)) {\r\n // profileImages = [];\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImage)) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImages) && profileImages.length >= 0) {\r\n // profileImages.map((e) => {\r\n // if (e.photoId === profileImage.photoId) {\r\n // isFound = true;\r\n // e = CopyServiceStatic.copyProfileImageIfExists(e, profileImage);\r\n // // debugger;\r\n // }\r\n // });\r\n // // debugger;\r\n // if (!isFound) {\r\n // profileImages.push(profileImage);\r\n // }\r\n // } else {\r\n // // debugger;\r\n // profileImages.push(profileImage);\r\n // }\r\n // }\r\n // return profileImages;\r\n //}\r\n\r\n // -----------------------------------------------------------\r\n addUpdateProfileKvPhotoArr(profileKvPhotoArr: KvPhoto[], kvPhoto: KvPhoto): KvPhoto[] {\r\n let isFound = false;\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileKvPhotoArr)) {\r\n profileKvPhotoArr = [];\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileKvPhotoArr) && profileKvPhotoArr.length >= 0) {\r\n profileKvPhotoArr.map((e) => {\r\n if (e.photoId === kvPhoto.photoId) {\r\n isFound = true;\r\n e = CopyServiceStatic.copyKvPhotoIfExists(e, kvPhoto);\r\n // debugger;\r\n }\r\n });\r\n // debugger;\r\n if (!isFound) {\r\n profileKvPhotoArr.push(kvPhoto);\r\n }\r\n } else {\r\n // debugger;\r\n profileKvPhotoArr.push(kvPhoto);\r\n }\r\n }\r\n return profileKvPhotoArr;\r\n }\r\n // --------------------------------------------------------------\r\n // TODO: inestigate if in user or can be used in future\r\n // --------------------------------------------------------------\r\n determineMemberAction(memberAction: KvAction): any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberAction)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberAction.value)) {\r\n // debugger;\r\n switch (memberAction.value.toLowerCase()) {\r\n /*\r\n * TODO : figure out which array the action will go to as well as action-specific return value such as 'isUnlcoked';\r\n * case 'block':\r\n * return true;\r\n */\r\n case 'like':\r\n this.loginSuccess.likedArr.push(memberAction);\r\n return true;\r\n /*\r\n * case 'tala':\r\n * return true;\r\n */\r\n case 'track':\r\n this.loginSuccess.trackedArr.push(memberAction);\r\n return true;\r\n /*\r\n * case 'unblock':\r\n * return true;\r\n */\r\n case 'unlock':\r\n this.loginSuccess.unlockedArr.push(memberAction);\r\n return true;\r\n }\r\n }\r\n }\r\n else return false;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n getImageTagId(pTile: ProfileTile): string {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n let elemId : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.pElemId) && pTile.pElemId.length > 0) {\r\n elemId = pTile.pElemId.toString();\r\n } else if (pTile.index > -1) {\r\n elemId = pTile.index.toString();\r\n }\r\n return elemId;\r\n }\r\n else return '';\r\n }\r\n // ---------------------------------------------------------------\r\n getIsUnlocked (sitUserId : number) : Observable {\r\n var url = 'Member/IsUnlocked'\r\n var commModel : Communication = new Communication();\r\n var kvAction : KvAction = new KvAction();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (sitUserId > 0) {\r\n commModel.sitUserId = sitUserId;\r\n commModel.signedInUserId = this.loginSuccess.signedInUserId\r\n }\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(commModel);\r\n\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n\r\n this.httpService.postObservable(url,\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text')\r\n .subscribe((result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n kvAction = SlakezSaltServiceStatic.boxUnsalt(result) as KvAction;\r\n // debugger;\r\n subscriber.next(kvAction);\r\n }\r\n else {\r\n // debugger;\r\n subscriber.next(null);\r\n }\r\n // subscriber.complete();\r\n })\r\n }\r\n })\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * UserData getters and setters:\r\n * Note : will be used to determine if user's profile is complete or not.\r\n * ---------------------------------------------------------------\r\n */\r\n getPreference(): Preference {\r\n return this.preference;\r\n }\r\n setPreference(value: Preference): any {\r\n this.preference = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n getProfileInfo(): ProfileInfo {\r\n return this.profileInfo;\r\n }\r\n setProfileInfo(value: ProfileInfo): any {\r\n this.profileInfo = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n getProfilePics(): ProfilePics {\r\n return this.profilePics;\r\n }\r\n setProfilePics(value: ProfilePics): any {\r\n this.profilePics = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n isLinkSet(pTile: ProfileTile): boolean {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.link)) {\r\n const parts = pTile.link.split('-');\r\n\r\n if (parts.length > 0) {\r\n const sitId = parseInt(parts[1], 10);\r\n\r\n if ( sitId > 0 )\r\n {\r\n return true;\r\n }\r\n else return false;\r\n }\r\n else return false;\r\n }\r\n else return false;\r\n }\r\n // ---------------------------------------------------------------\r\n isProfileComplete (sitUserId : any): boolean {\r\n let isComplete = false;\r\n\r\n if (sitUserId > 0) {\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference) &&\r\n this.preference.sitUserId === sitUserId &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) &&\r\n this.profileInfo.sitUserId === sitUserId &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics) &&\r\n this.profilePics.sitUserId === sitUserId\r\n ) {\r\n // debugger;\r\n let isPrefComplete = false;\r\n let isProfInfoComplete = false;\r\n let isProfPicsComplete = false;\r\n\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.hobbies) &&\r\n this.preference.hobbies.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.intos) &&\r\n this.preference.intos.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.lookingFors) &&\r\n this.preference.lookingFors.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.meetingLocations) &&\r\n this.preference.meetingLocations.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.pets) &&\r\n this.preference.pets.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.petPeeves) &&\r\n this.preference.petPeeves.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference.whenLookingToMeets) &&\r\n this.preference.whenLookingToMeets.length > 0\r\n ) {\r\n // debugger;\r\n isPrefComplete = true;\r\n }\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.gender) &&\r\n this.profileInfo.gender.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.highestEducation) &&\r\n this.profileInfo.highestEducation.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.relationshipStatus) &&\r\n this.profileInfo.relationshipStatus.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.religion) &&\r\n this.profileInfo.religion.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.sexuality) &&\r\n this.profileInfo.sexuality.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.smokingStatus) &&\r\n this.profileInfo.smokingStatus.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.aBstract) &&\r\n this.profileInfo.aBstract.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.contents) &&\r\n this.profileInfo.contents.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.heading) &&\r\n this.profileInfo.heading.length > 0\r\n ) {\r\n // debugger;\r\n isProfInfoComplete = true;\r\n }\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.profileImageArr) && this.profilePics.profileImageArr.length > 0) {\r\n // isProfPicsComplete = true;\r\n //}\r\n if (isPrefComplete && isProfInfoComplete && isProfPicsComplete) {\r\n // debugger;\r\n isComplete = true;\r\n }\r\n }\r\n }\r\n // debugger;\r\n return isComplete;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n salt (model : any): BoxNonceEntity {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n // debugger;\r\n return (this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model)));\r\n }\r\n else\r\n {\r\n return new BoxNonceEntity();\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n setLink ( tTile : ProfileTile ) : EmitOffOnResult\r\n {\r\n let offOnResult !: any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tTile)) {\r\n if (tTile.sitUserId > 0 && !this.isLinkSet(tTile)) {\r\n // debugger;\r\n offOnResult = new EmitOffOnResult();\r\n\r\n offOnResult.link = 'profile/view/sitUser-' + tTile.sitUserId;\r\n // this will be dom-element-id which will be used to render profileImage\r\n offOnResult.pTileElemId = 's-' + tTile.sitUserId;\r\n return offOnResult;\r\n }\r\n else\r\n {\r\n return new EmitOffOnResult();\r\n }\r\n }\r\n else\r\n {\r\n return new EmitOffOnResult();\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n serializeMessages(msgArr: string[]): string {\r\n let message = '';\r\n\r\n msgArr.map((e) => {\r\n message = '
' + message + '
' + e.replace(') : ==>', '):') + '
';\r\n });\r\n return (this.message = message);\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * this.renderer.setStyle(this.tempElem, 'background-image', this.getdbgi(pTile));\r\n * --------------------------------------------------------------\r\n */\r\n setThisImage(elemId: string, src: string): boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n const tElem = document.getElementById(elemId) as HTMLElement;\r\n\r\n this.tempElem = document.getElementById(elemId) as HTMLElement;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(src)) {\r\n this.renderer.setStyle(tElem, 'background', src);\r\n tElem.remove();\r\n return true;\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(src)) {\r\n this.renderer.setStyle(this.tempElem, 'background', src);\r\n this.tempElem.remove();\r\n return true;\r\n }\r\n return false;\r\n }\r\n return false;\r\n }\r\n \r\n // -----------------------------------------------------------\r\n //sortProfileImageArr(items: any[]): any[] {\r\n // items.sort((a: any, b: any) => this.findDiffOf(a, b));\r\n // // debugger;\r\n // return items;\r\n //}\r\n // ---------------------------------------------------------------\r\n findDiffOf(a: any, b: any): any {\r\n if (a && a.photoId && b && b.photoId) {\r\n return a.photoId - b.photoId; // sort it in ascending order\r\n } else if (a && a.date && b && b.date) {\r\n return parseInt(a.date, 10) - parseInt(b.date, 10);\r\n } else if (a && a.index && b && b.index) {\r\n return parseInt(a.index, 10) - parseInt(b.index, 10);\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------\r\n uniquelyMergeKvPhotoArrays(dKvPhotos: KvPhoto[], sKvPhotos: KvPhoto[]): KvPhoto[] {\r\n let outKvPhotos: KvPhoto[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dKvPhotos) && dKvPhotos.length > 0) {\r\n outKvPhotos = dKvPhotos;\r\n sKvPhotos.map((e) => {\r\n outKvPhotos.map((f) => {\r\n if (e.key.toString().toLowerCase().indexOf(f.key.toString().toLowerCase()) !== -1) {\r\n CopyServiceStatic.copyKvPhotoIfExists(f, e);\r\n } else {\r\n outKvPhotos.push(e);\r\n }\r\n });\r\n });\r\n } else {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sKvPhotos) && sKvPhotos.length > 0) {\r\n outKvPhotos = sKvPhotos;\r\n }\r\n }\r\n return outKvPhotos;\r\n }\r\n // -----------------------------------------------------------\r\n //uniqueMergeProfileImageArrays(dProfileImages: ProfileImage[], sProfileImages: ProfileImage[]): ProfileImage[] {\r\n // // sort and unique-merge (no-duplicate-merge)\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sProfileImages) && sProfileImages.length > 0) {\r\n // sProfileImages = this.sortProfileImageArr(sProfileImages);\r\n // // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dProfileImages)) {\r\n // dProfileImages = sProfileImages;\r\n // return dProfileImages;\r\n // }\r\n // let isFound = false;\r\n // let index = -1;\r\n // let i = 0;\r\n\r\n // sProfileImages.map((e) => {\r\n // dProfileImages.map((f) => {\r\n // if (e.photoId === f.photoId) {\r\n // isFound = true;\r\n // index = i;\r\n // }\r\n // i++;\r\n // });\r\n // // debugger;\r\n // if (!isFound) {\r\n // dProfileImages.push(e);\r\n // } else {\r\n // dProfileImages[index] = CopyServiceStatic.copyProfileImageIfExists(dProfileImages[index], e);\r\n // }\r\n // });\r\n // // debugger;\r\n // return dProfileImages;\r\n // }\r\n // // sProfilePics is just image-data\r\n // const tProfileImage = new ProfileImage();\r\n\r\n // tProfileImage.image = sProfileImages[0].image.toString();\r\n // dProfileImages.push(tProfileImage);\r\n // return dProfileImages;\r\n //}\r\n // -----------------------------------------------------------\r\n //addUpdateProfileImageToProfilePics(profilePics: ProfilePics, profileImage: ProfileImage): ProfilePics {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)) {\r\n // profilePics = new ProfilePics();\r\n // }\r\n // let tArr: any;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.profileImageArr) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImage)) {\r\n // tArr = profilePics.profileImageArr;\r\n // tArr.map((e : any) => {\r\n // if (profileImage.photoId === e.photoId) {\r\n // e.date = profileImage.date;\r\n // e.image = profileImage.image;\r\n // e.imageFile = profileImage.imageFile;\r\n // e.imageBytes = profileImage.imageBytes;\r\n // e.isPrimary = profileImage.isPrimary;\r\n // e.privacy = profileImage.privacy;\r\n // e.profileId = profileImage.profileId;\r\n // e.sitUserId = profileImage.sitUserId;\r\n // } else {\r\n // profilePics.profileImageArr.push(profileImage);\r\n // }\r\n // });\r\n // }\r\n // return profilePics;\r\n //}\r\n \r\n // -----------------------------------------------------------\r\n // Note : this method is not so desirable because it lacks a photoId\r\n // -----------------------------------------------------------\r\n \r\n //addImageToProfileImageArr(image: string, profileImageArr: ProfileImage[]): ProfileImage[] {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr)) {\r\n // profileImageArr = [];\r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n // const pImage = new ProfileImage();\r\n\r\n // pImage.image = image;\r\n // if (profileImageArr.length > 0) {\r\n // pImage.profileId = profileImageArr[0].profileId;\r\n // pImage.sitUserId = profileImageArr[0].sitUserId;\r\n // pImage.sitUserKey = profileImageArr[0].sitUserKey;\r\n // profileImageArr.push(pImage);\r\n // } else {\r\n // profileImageArr.push(pImage);\r\n // }\r\n // }\r\n // return profileImageArr;\r\n //}\r\n // -----------------------------------------------------------\r\n\r\n //addPhotoToProfileImageArr (p : Photo, profileImageArr : ProfileImage[]) : ProfileImage[] {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr)) {\r\n // profileImageArr = [];\r\n // }\r\n // const pImage = new ProfileImage();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p.imageString)) {\r\n // pImage.image = p.imageString;\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p.imageBytes) && p.imageBytes.length > 0) {\r\n // p.imageString = this.imageResizeService.createImageFromByteArray(new Uint8Array(p.imageBytes));\r\n // pImage.image = p.imageString;\r\n // }\r\n // if (profileImageArr.length > 0) {\r\n // pImage.profileId = profileImageArr[ 0 ].profileId;\r\n // pImage.sitUserId = profileImageArr[ 0 ].sitUserId;\r\n // pImage.sitUserKey = profileImageArr[ 0 ].sitUserKey;\r\n // profileImageArr.push(pImage);\r\n // } else {\r\n // profileImageArr.push(pImage);\r\n // }\r\n \r\n // return profileImageArr;\r\n\r\n //}\r\n /*\r\n * -----------------------------------------------------------\r\n * End of Uniquely-Merge-ProfilePics-System\r\n * -----------------------------------------------------------\r\n */\r\n unSalt (model : any): any {\r\n // debugger;\r\n if (model) {\r\n return SlakezSaltServiceStatic.boxUnsalt(model);\r\n }\r\n return null;\r\n }\r\n // ==============================================================\r\n // BEGIN of Members methods:\r\n \r\n // ---------------------------------------------------------------\r\n // Note: This has been moved to PhotoService and renamed to getPrimaryPhoto!!\r\n // --------------------------------------------------------------\r\n // getUserPrimaryPhoto (sitUserId : number) : Promise {\r\n // // debugger;\r\n\r\n // const bnComm : Communication = new Communication();\r\n\r\n // bnComm.sitUserId = sitUserId;\r\n // this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)) {\r\n // return new Promise((resolve, reject) => {\r\n // // debugger;\r\n // this.httpService.post('/api/Photo/GetUserPrimaryPhoto',\r\n // {\r\n // box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n // nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n // },\r\n // 'json',\r\n // ).subscribe((result) => {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // this.boxNonceEntity = new BoxNonceEntity();\r\n // this.boxNonceEntity.box = result.box;\r\n // this.boxNonceEntity.nonce = result.nonce;\r\n\r\n // let tempPhoto;\r\n // /*\r\n // * do not directly assing to profileTile!! capture it in a let first\r\n // */\r\n // let unboxedPhoto = SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity);\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unboxedPhoto)) {\r\n // tempPhoto = unboxedPhoto as Photo;\r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempPhoto)) {\r\n // tempPhoto = JSON.parse(tempPhoto); // convert string to model\r\n // debugger;\r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempPhoto)) {\r\n // resolve(tempPhoto);\r\n // }\r\n // }\r\n // else {\r\n // reject(null); //message for result being null \r\n // }\r\n // });\r\n // });\r\n // }\r\n // else {\r\n // return this.nullPromise();\r\n // }\r\n // }\r\n \r\n // ---------------------------------------------------------------\r\n // -----------------------------------------------------------\r\n // End of Creating-MemberTile-from-ProfileTile-System\r\n // -----------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // Note : This method will get 100 SitUserIds at a time\r\n // This method is been moved to SitUserService\r\n // TODO: Delete before deployment!!!\r\n // ---------------------------------------------------------------\r\n // getBatchOfSitUserIds (beginIndex : number) : Promise\r\n // {\r\n // EmitterSubjectService.emitStartSpinner('Getting profile ids....');\r\n // // debugger;\r\n // let batchOfSitUserIds = [];\r\n // return new Promise((resolve, reject) =>\r\n // {\r\n // if ( beginIndex > -1 )\r\n // {\r\n // const bnComm : Communication = new Communication();\r\n\r\n // bnComm.beginIndex = beginIndex;\r\n // bnComm.sitUserId = 0;\r\n // bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // // debugger;\r\n // this.boxNonceEntity = this.salt( bnComm );\r\n\r\n // // debugger;\r\n // if ( this.boxNonceEntity )\r\n // {\r\n // this.httpService.post( '/api/Member/GetBatchOfSitUserIds', JSON.stringify( {\r\n // box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n // nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n // } ),\r\n // 'json',\r\n // ).pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((result) =>\r\n // {\r\n // batchOfSitUserIds = this.processBatchOfMemberIdsResult(result);\r\n // DictionaryServiceStatic.updateDictionary(batchOfSitUserIds, 'sitUserId', this.loginSuccess.signedInUserId);\r\n\r\n // // Note: the sitUserId is saved on the indexedDb by the caller method:\r\n // // -------------------------------------------------------------------\r\n // this.indexedDbToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // DictionaryServiceStatic.sitUserDictionary, 'sitUserId', this.loginSuccess.signedInUserId);\r\n\r\n // resolve( batchOfSitUserIds );\r\n // // debugger;\r\n // }, ( error ) =>\r\n // {\r\n // // debugger;\r\n // this.message = 'Error occured in GetBatchOfUserIds();\\n Error-msg : ' + error.message;\r\n // console.log( this.message );\r\n // // EmitterSubjectService.emitMyErrorLog( this.message );\r\n // // debugger;\r\n // reject(this.message);\r\n // } );\r\n // }\r\n // }\r\n // else return this.nullPromise();\r\n // } );\r\n // }\r\n // ---------------------------------------------------------------\r\n // Note : This method is been moved to SitUserService\r\n // \r\n // TODO: Delete before deployment!!!\r\n // ---------------------------------------------------------------\r\n // processBatchOfMemberIdsResult ( result : any ) : any\r\n // {\r\n // let tBatchOfIds: number[] = [];\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n // {\r\n // const bn = result;\r\n // tBatchOfIds = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity)) as number[];\r\n // // debugger;\r\n // }\r\n // return tBatchOfIds;\r\n // }\r\n // ---------------------------------------------------------------\r\n\r\n \r\n // ---------------------------------------------------------------\r\n // --------------------------------------------------------------\r\n // ==============================================================\r\n // END of Members methods:\r\n // ==============================================================\r\n // --------------------------------------------------------------\r\n // ==============================================================\r\n // BEGIN of MemberTile methods:\r\n // ==============================================================\r\n\r\n \r\n // ==============================================================\r\n // END of MemberTile methods:\r\n // ==============================================================\r\n // --------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivityService } from './activityService.service';\r\nimport { MemberService } from './memberService.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class MemberServiceService {\r\n constructor (\r\n private activityService: ActivityService,\r\n private memberService : MemberService, \r\n ) { }\r\n // ------------------------------------------------------------------\r\n setActivityService ( as : ActivityService ) : void\r\n {\r\n this.activityService = as;\r\n }\r\n getActivityService () : ActivityService\r\n {\r\n return this.activityService;\r\n }\r\n // ------------------------------------------------------------------\r\n setMemberService(mes: MemberService): void {\r\n this.memberService = mes;\r\n }\r\n getMemberService(): MemberService {\r\n return this.memberService;\r\n }\r\n // ------------------------------------------------------------------\r\n \r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ApplicationRef, ComponentFactoryResolver, ElementRef, EmbeddedViewRef, Inject, Injectable, Injector } from '@angular/core';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DomService {\r\n public childComponentRef : any;\r\n public document ! : Document;\r\n public window ! : Window;\r\n public unloadConponentRef: ElementRef;\r\n public isModalVisible = false;\r\n constructor(\r\n private componentFactoryResolver : ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector : Injector,\r\n @Inject( DOCUMENT ) Document : Document,\r\n @Inject( Window ) Window : Window,\r\n )\r\n {\r\n this.document = Document;\r\n this.window = Window;\r\n this.unloadConponentRef = EmitterSubjectService.getElementRef();\r\n }\r\n\r\n public appendComponentTo ( parentElem : HTMLElement, childElem : any, childConfig?: ChildConfig) {\r\n // Create a component reference from the component\r\n const childComponentRef = this.componentFactoryResolver.resolveComponentFactory(childElem).create(this.injector);\r\n\r\n // Attach the config to the child (inputs and outputs)\r\n this.attachConfig(childConfig, childComponentRef);\r\n\r\n this.childComponentRef = childComponentRef;\r\n // Attach component to the appRef so that it's inside the ng component tree\r\n this.appRef.attachView(childComponentRef.hostView);\r\n\r\n // Get DOM element from component\r\n const childDomElem = (childComponentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\r\n\r\n // Append DOM element to the body\r\n parentElem.appendChild(childDomElem);\r\n }\r\n\r\n public removeComponent(): any {\r\n // this.isModalVisible = EmitterSubjectService.getIsModalVisible();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.childComponentRef) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.childComponentRef.hostView)) {\r\n this.appRef.detachView(this.childComponentRef.hostView);\r\n this.childComponentRef.destroy();\r\n }\r\n return true;\r\n }\r\n\r\n /*\r\n * ----------------------------------------------------------------------------------\r\n * Note: Tested, works! 2020/12/20\r\n * REF:https:// stackoverflow.com/questions/35412526/angular2-remove-component-programmatically\r\n * ----------------------------------------------------------------------------------\r\n */\r\n unloadComponent(componentId: string): any {\r\n // debugger;\r\n let tElem: any;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(componentId) && componentId.toLowerCase().indexOf('module') === -1) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(componentId)) {\r\n // debugger;\r\n tElem = document.getElementById(componentId);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n componentId = '#' + componentId;\r\n }\r\n // debugger;\r\n tElem = document.getElementById(componentId);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.unloadConponentRef) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.unloadConponentRef.nativeElement)) {\r\n /*\r\n * debugger;\r\n * this.unloadConponentRef.nativeElement.querySelector('#' + componentId)?.destroy; // Does NOT work\r\n * ref:https:// stackoverflow.com/questions/34449112/how-to-conditionally-insert-remove-host-dom-element-in-angular-2-directive\r\n */\r\n const el = this.unloadConponentRef.nativeElement.querySelector('#' + componentId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(el) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(el.parentNode)) {\r\n el.parentNode.removeChild(el); // Tested, works!\r\n }\r\n // debugger;\r\n\r\n // the caller should run after executing unloadComponent()\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n tElem.remove();\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private attachConfig (config : any, componentRef : any) {\r\n const inputs = config.inputs;\r\n const outputs = config.outputs;\r\n let i = 0;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inputs)) {\r\n inputs.map((e : any) => {\r\n componentRef.instance[i] = inputs[i];\r\n i++;\r\n });\r\n }\r\n i = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outputs)) {\r\n outputs.map((f : any) => {\r\n componentRef.instance[i] = outputs[i];\r\n i++;\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport interface ChildConfig {\r\n inputs: object;\r\n outputs: object;\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { DomService } from './domService.service';\r\nimport { SpinnerOverlayService } from './spinnerOverlayService';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ModalServiceService implements OnDestroy {\r\n private emitterDestroyed$: Subject = new Subject();\r\n constructor(\r\n private domService : DomService,\r\n private spinnerOverlayService: SpinnerOverlayService\r\n ) { }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setDomService (ds : DomService): void {\r\n this.domService = ds;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getDomService () : DomService {\r\n return this.domService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setSpinnerOverlayService (sos : SpinnerOverlayService): void {\r\n this.spinnerOverlayService = sos;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getSpinnerOverlayService () : SpinnerOverlayService {\r\n return this.spinnerOverlayService;\r\n }\r\n // ------------------------------------------------------------------\r\n // setPagerServiceChatHistory(chps: PagerServiceChatHistory): void {\r\n // this.pagerServiceChatHistory = chps;\r\n // }\r\n // getPagerServiceChatHistory(): PagerServiceChatHistory {\r\n // return this.pagerServiceChatHistory;\r\n // }\r\n // ------------------------------------------------------------------------------------------------\r\n // setPagerServicePhotoMgmt(psp: PagerServicePhotoMgmt): void {\r\n // this.pagerServicePhotoMgmt = psp;\r\n // }\r\n // // ------------------------------------------------------------------------------------------------\r\n // getPagerServicePhotoMgmt(): PagerServicePhotoMgmt {\r\n // return this.pagerServicePhotoMgmt;\r\n // }\r\n // ------------------------------------------------------------------\r\n}\r\n","'use strict'\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SpinnerOverlayComponent } from '../../app/modalModule/spinnerOverlay/spinnerOverlay.component';\r\nimport { SpinnerModel } from '../../models/common/spinnerModel.model';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n// ref: https://christianlydemann.com/four-ways-to-create-loading-spinners-in-an-angular-app/\r\n\r\n@Injectable( {\r\n providedIn: 'root',\r\n} )\r\nexport class SpinnerOverlayService\r\n{\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public isSpinner = false;\r\n private loading : boolean = false;\r\n public spinnerCounter = 0;\r\n public spinnerModel : SpinnerModel = new SpinnerModel();\r\n // public overlay : Overlay;\r\n public overlayComponent : SpinnerOverlayComponent;\r\n public overlayRef : OverlayRef = null;;\r\n public timer : any;\r\n public timerMap : Map = new Map();\r\n // @ViewChild(SpinnerOverlayComponent) overlayComponent! : SpinnerOverlayComponent;\r\n\r\n \r\n \r\n constructor (private overlay : Overlay) {\r\n }\r\n // ---------------------------------------------------------------\r\n //ngOnDestroy () : void {\r\n // this.emitterDestroyed$.next(true);\r\n // this.emitterDestroyed$.complete();\r\n // this.timerMap.forEach((timer) => clearInterval(timer));\r\n // this.timerMap.clear();\r\n //}\r\n public setLoading (loading : boolean) {\r\n this.loading = loading;\r\n }\r\n\r\n public getLoading () : boolean {\r\n return this.loading;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n hideSpinner () {\r\n this.spinnerModel.message = '';\r\n EmitterSubjectService.emitHideSpinner(this.spinnerModel);\r\n }\r\n // ---------------------------------------------------------------\r\n public showSpinner (message?: string) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(message) && message.length > 0) {\r\n var spm = new SpinnerModel();\r\n spm.message = message;\r\n spm.isSpinner = true;\r\n return this.showSpinnerModel(spm);\r\n\t\t}\r\n }\r\n // ---------------------------------------------------------------\r\n public showSpinnerModel (spm ?: SpinnerModel) {\r\n this.setLoading(true);\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spm) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spm.message)) {\r\n spm = new SpinnerModel();\r\n spm.message = \"Busy...\"\r\n }\r\n\r\n spm.isOpen = spm.isSpinner = true;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spm)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spm.message)) {\r\n this.spinnerModel = spm;\r\n this.isSpinner = this.spinnerModel.isSpinner;\r\n // debugger;\r\n // this.spinnerOverlayService.show(this.spinnerModel.message, this.spinnerModel.isSpinner);\r\n EmitterSubjectService.emitShowSpinner(this.spinnerModel);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // public hideSpinner (message : string) {\r\n // this.setLoading(false);\r\n // this.spinnerModel.message = message as string;\r\n // this.isSpinner = this.spinnerModel.isSpinner = false;\r\n // EmitterSubjectService.emitHideSpinner(this.spinnerModel.message);\r\n // // this.spinnerOverlayService.hide(this.spinnerModel.isSpinner);\r\n // }\r\n // ------------------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n public show ( message = '', isOpen: boolean )\r\n {\r\n debugger;\r\n // Returns an OverlayRef (which is a PortalHost):\r\n // ----------------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.overlayRef)) {\r\n this.overlayRef = this.overlay.create();\r\n this.spinnerCounter++;\r\n\r\n // debugger;\r\n // Create ComponentPortal that can be attached to a PortalHost:\r\n // ------------------------------------------------------------\r\n let spinnerOverlayPortal = new ComponentPortal(SpinnerOverlayComponent);\r\n let component = this.overlayRef.attach(spinnerOverlayPortal); // Attach ComponentPortal to PortalHost\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public hide (isOpen: boolean)\r\n {\r\n debugger;\r\n if (!isOpen) {\r\n let negORef = !this.overlayRef;\r\n let tempORef = !negORef;\r\n if (tempORef) {\r\n this.spinnerCounter--;\r\n }\r\n }\r\n // debugger;\r\n // this.checkSpinner();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.overlayRef)) {\r\n this.overlayRef.detach();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public checkSpinner () {\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n this.spinnerCounter = 0;\r\n this.hide(false); // isOpen == false\r\n\r\n if (this.timerMap.has(this.timer)) {\r\n // debugger;\r\n clearTimeout(this.timer);\r\n this.timerMap.delete(this.timer);\r\n }\r\n }, 100);\r\n clearTimeout(this.timer);\r\n\r\n if (this.timer > 0 && !this.timerMap.has(this.timer)) {\r\n this.timerMap.set(this.timer, this.timer);\r\n }\r\n }\r\n // -----------------------------------------------------------------------------------\r\n}\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { AbstractPagerVPhotoNavServiceInterface } from '../../interfaces/serviceInterfaces/pagerServicesInterfaces/abstractPagerVPhotoNavServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { ModuleComponentLoader } from '../../models/common/moduleComponentLoader.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { PagerMemberActivity } from '../../models/pagination/pagerMemberActivity.model';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { RedirectionService } from '../../services/commonServiceService/redirectionService.service';\r\nimport { PagerPhotoMgmtService } from '../../services/pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerSupportService } from '../../services/pagerServiceService/pagerSupportService.service';\r\nimport { PhotoPrivacyService } from '../../services/photoServiceService/photoPrivacyService.service';\r\nimport { BackgroundImageAnimationService } from '../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../services/rendererServiceService/rendererServiceService.service';\r\nimport { ArrayServiceStatic } from '../../services/staticServices/arrayServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../../services/staticServices/jsRegExpServiceStatic.service';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\n\r\n\r\n// ------------------------------------------------------------------\r\n// This pager-service is the most recently updated one. If other\r\n// pagers need to be updated, this one should be used as a model for\r\n// them. Updated on 20220623.\r\n// ------------------------------------------------------------------\r\n\r\n// ref: http://xahlee.info/js/javascript_range_array.html\r\n// const xah_range = ((min, max, step = 1,) => (Array(Math.floor((max - min) / step) + 1).fill(min).map(((x, i) => (x + i * step)),)));\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class AbstractPagerVPhotoNavService implements OnDestroy, AbstractPagerVPhotoNavServiceInterface {\r\n // public override renderer = Renderer2;\r\n // ----------------------------------------------------------------\r\n public currentKvPhoto : KvPhoto = new KvPhoto();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isViewMember = false;\r\n public isStripUrl = true;\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public message = '';\r\n public pageSize = 6;\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public pagerVMemberActivityForPhotoMgmt : PagerMemberActivity = new PagerMemberActivity(); // for primary/private/public photo \r\n public pagerVMemberActivityForViewMember : PagerMemberActivity = new PagerMemberActivity();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public signedInUser : SitUser = new SitUser();\r\n public sitUser : SitUser = new SitUser();\r\n public timer : any;\r\n // ---------------------------------------------------------------\r\n constructor (\r\n public bias : BackgroundImageAnimationService,\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public pagerPhotoMgmtService : PagerPhotoMgmtService,\r\n public pagerSupportService : PagerSupportService,\r\n public photoPrivacyService : PhotoPrivacyService,\r\n public redirectionService: RedirectionService,\r\n public rendererServiceService : RendererServiceService,\r\n public rendererService : RendererService,\r\n public router : Router,\r\n @Inject(DOCUMENT) document : any,\r\n @Inject(Window) window : any\r\n ) {\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ===============================================================\r\n\r\n \r\n public clearPagerVKvPhotoNavService (): void {\r\n this.kvPhotoArr = [];\r\n this.pagerVKvPhotoNav = new PagerPhotoMgmt();\r\n // debugger;\r\n }\r\n // ----------------------------------------------------------------\r\n determinePrivacyStatusOfKvPhoto (kvp : KvPhoto): KvPhoto {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n switch (kvp.privacy.toLocaleLowerCase()) {\r\n case 'primary':\r\n kvp.glyphName = 'primary';\r\n kvp.key = 'primary';\r\n kvp.isPrimary = true;\r\n kvp.isPrivate = false;\r\n kvp.isPublic = false;\r\n break;\r\n case 'public':\r\n kvp.glyphName = 'public';\r\n kvp.key = 'public';\r\n kvp.isPrimary = false;\r\n kvp.isPrivate = false;\r\n kvp.isPublic = true;\r\n break;\r\n case 'private':\r\n kvp.glyphName = 'private';\r\n kvp.key = 'private';\r\n kvp.isPrimary = false;\r\n kvp.isPrivate = true;\r\n kvp.isPublic = false;\r\n break;\r\n default:\r\n kvp.glyphName = 'public';\r\n kvp.key = 'public';\r\n kvp.isPrimary = false;\r\n kvp.isPrivate = false;\r\n kvp.isPublic = true;\r\n break;\r\n }\r\n }\r\n return kvp;\r\n }\r\n // ----------------------------------------------------------------\r\n public executeOnCurrentPictureSelection (currentKvP:KvPhoto) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvP)) {\r\n\r\n\t\t}\r\n }\r\n // ----------------------------------------------------------------\r\n public executeOnPictureSelectionChange (currentKvp: KvPhoto, kvpArr: KvPhoto[]) : Observable {\r\n var pageSize = EmitterSubjectService.getPageSize() as number;\r\n var currentItemKvPhoto = currentKvp;\r\n var kvPhotoArr = kvpArr;\r\n var currentPageNum = EmitterSubjectService.getCurrentPage().pageNum;\r\n return new Observable(subscriber => {\r\n\r\n // get initial pager which willbe used to get the updated pagerVKvPhotoNav:\r\n this.pagerVKvPhotoNav = this.getPagerForVKvPhotoNav(kvPhotoArr, currentPageNum, pageSize);\r\n \r\n // Note: the following line must be run right after the previous line/method: getPagerForVKvPhotoNav() !!\r\n this.pagerVKvPhotoNav = this.setupPagerVKvPhotoNav(kvPhotoArr, currentItemKvPhoto);\r\n\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)) {\r\n // debugger;\r\n this.executePagerVKvPhotoNavTasks(this.pagerVKvPhotoNav).then(data => {\r\n this.pagerVKvPhotoNav = data;\r\n this.pagerVKvPhotoNav.pagedItems = this.prepareKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems);\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n subscriber.complete();\r\n });\r\n }\r\n else {\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n })\r\n\t}\r\n // ----------------------------------------------------------------\r\n // API: !!!!!!\r\n // ----------------------------------------------------------------\r\n\r\n // Candidate-4: 1-stop-shop\r\n // First-Way to display All Vertical menues:\r\n //\r\n // Note: This method will execute the complete PagerVKvPhotoNav\r\n // and vertical glyphcon-menu and display them as a one-stop-shop.\r\n // ----------------------------------------------------------------\r\n public executePagerVKvPhotoNavTasks (pagerVKvPhotoNav : PagerPhotoMgmt) : Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)\r\n && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n debugger;\r\n // task#1 display photoNavMenu:\r\n // ----------------------------\r\n this.executePagerVKvPhotoNavPagedItems(pagerVKvPhotoNav).then(result => {\r\n debugger;\r\n if (result) {\r\n // debugger;\r\n pagerVKvPhotoNav = result;\r\n debugger;\r\n EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(pagerVKvPhotoNav.currentItem);\r\n }\r\n else {\r\n debugger;\r\n reject('pagerVKvPhotoNav.pagedItems was empty or null: ' + pagerVKvPhotoNav);\r\n }\r\n });\r\n\r\n // ---------------------------------------------------\r\n // task#2 display glyphNavMenu of the currentKvPhoto:\r\n // ---------------------------------------------------\r\n if (pagerVKvPhotoNav.currentItem) {\r\n debugger;\r\n this.executePagerVKvPhotoNavCurrentKvPhotoTasks(pagerVKvPhotoNav.currentItem, pagerVKvPhotoNav.pagedItems).subscribe(data => {\r\n debugger;\r\n resolve(data);\r\n })\r\n }\r\n else {\r\n debugger;\r\n reject('pagerVKvPhotoNav.pagedItems failed to display kvPhotos: ' + pagerVKvPhotoNav);\r\n }\r\n }\r\n else {\r\n reject('executePagerVKvPhotoNavTasks.pagerVKvPhoto was null or empty.');\r\n }\r\n })\r\n }\r\n // ----------------------------------------------------------------\r\n // API: !!!!!!\r\n // ----------------------------------------------------------------\r\n // Note: This methods prepares the Glyphicon menu(s) of a kvPhoto,\r\n // and emits PagerVKvPhotoNav to render via appComponent.\r\n // It also selects/highlights the appropriate Glyph-menu-item;\r\n // ----------------------------------------------------------------\r\n executePagerVKvPhotoNavKvPhotoTasks (pagerVKvPhotoNav : PagerPhotoMgmt) : Promise {\r\n return new Promise((resolve, reject) => {\r\n // debugger;\r\n \r\n // debugger;\r\n // kvPhoto's image as background:\r\n // ------------------------------\r\n this.bias.updateBackgroundImageOutsideAngular(pagerVKvPhotoNav.currentItem.value);\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n // Note: disply the glyphMenu for currentKvPhoto:\r\n // ----------------------------------------------\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // --------------------------------------- \r\n this.pagerVMemberActivityForPhotoMgmt = this.glyphiconMenuService.getPagerVMemActGlyphMenuForPhotoMgmt(pagerVKvPhotoNav.currentItem);\r\n // debugger;\r\n pagerVKvPhotoNav.pagerVMemberActivityForPhotoMgmt = this.pagerVMemberActivityForPhotoMgmt;\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(pagerVKvPhotoNav.currentItem); // will display photo primary/private/public glyphs\r\n pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, pagerVKvPhotoNav.currentItem);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForPhotoMgmt)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForPhotoMgmt.pagedItems)\r\n && this.pagerVMemberActivityForPhotoMgmt.pagedItems.length > 0) {\r\n // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // ---------------------------------------\r\n // debugger;\r\n this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemberActivityForPhotoMgmt.pagedKvGlyphItems, this.pagerVMemberActivityForPhotoMgmt.currentKvGlyphItem, \"pagerVGlyphMgmt-\");\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForPhotoMgmt) && this.kvMemActGlyphArrForPhotoMgmt.length > 0) {\r\n // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // ---------------------------------------\r\n // debugger;\r\n this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.kvMemActGlyphArrForPhotoMgmt, this.kvMemActGlyphArrForPhotoMgmt[ 0 ], \"pagerVGlyphMgmt-\");\r\n }\r\n }\r\n else if (this.isViewMember) {\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, pagerVKvPhotoNav.currentItem);\r\n // debugger;\r\n if (this.sitUser.sitUserId > 0) {\r\n // pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(this.sitUser.sitUserId);\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.sitUser.sitUserId); \r\n }\r\n this.pagerVMemberActivityForViewMember = this.glyphiconMenuService.getPagerVMemActGlyphMenuForViewMember(pagerVKvPhotoNav.currentItem.pageNum > 0 ? pagerVKvPhotoNav.currentItem.pageNum : 1, this.sitUser);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForViewMember)) {\r\n pagerVKvPhotoNav.pagerVMemberActivityForViewMember = this.pagerVMemberActivityForViewMember;\r\n // debugger;\r\n }\r\n }\r\n EmitterSubjectService.setPagerPhotoMgmt(pagerVKvPhotoNav);\r\n // debugger;\r\n resolve(pagerVKvPhotoNav);\r\n })\r\n }\r\n\r\n // --------------------------------------------------------------------\r\n executePagerVKvPhotoNavAndBackgroundImageTasks (pagerVKvPhotoNav : PagerPhotoMgmt) : PagerPhotoMgmt {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.kvPhotoArr) && pagerVKvPhotoNav.kvPhotoArr.length > 0) {\r\n pagerVKvPhotoNav.kvPhotoArr = this.prepareKvPhotoArrForDisplay(pagerVKvPhotoNav.kvPhotoArr);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.kvPhotoArr) && pagerVKvPhotoNav.kvPhotoArr.length > 0) {\r\n pagerVKvPhotoNav.kvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr(pagerVKvPhotoNav.kvPhotoArr, 'pagerVKvPhotoNav-');\r\n // debugger;\r\n // TODO: see if it is still needed?\r\n // --------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.kvPhotoArr) && pagerVKvPhotoNav.kvPhotoArr.length > 0) {\r\n // pagerVKvPhotoNav = this.pagerVKvPhotoNavService.getPagerForVKvPhotoNav(pagerVKvPhotoNav.kvPhotoArr, 1, 6);\r\n //}\r\n\r\n var i = 0;\r\n pagerVKvPhotoNav.kvPhotoArr.forEach(e => {\r\n pagerVKvPhotoNav.pagedItems[ i ] = this.bias.setupKvPhotoIfPrimaryOrPrivate(pagerVKvPhotoNav.pagedItems[ i ]);\r\n\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)\r\n && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n this.pagerVKvPhotoNav.pagedItems[ i ] = this.bias.displayBackgroundAndNavImageForKvPhoto(pagerVKvPhotoNav.pagedItems[ i ], pagerVKvPhotoNav);\r\n\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, pagerVKvPhotoNav.pagedItems[ i ]);\r\n }\r\n i++;\r\n })\r\n }\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvPhoto(pagerVKvPhotoNav.currentItem);\r\n pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n\r\n\r\n\r\n // debugger;\r\n EmitterSubjectService.emitCurrentPage(pagerVKvPhotoNav.currentItem);\r\n\r\n\r\n pagerVKvPhotoNav.currentItem = this.bias.setupKvPhotoIfPrimaryOrPrivate(pagerVKvPhotoNav.currentItem);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)\r\n && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n pagerVKvPhotoNav.currentItem = this.bias.displayBackgroundAndNavImageForKvPhoto(pagerVKvPhotoNav.currentItem, pagerVKvPhotoNav);\r\n\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, pagerVKvPhotoNav.currentItem);\r\n }\r\n // debugger;\r\n\r\n // EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt);\r\n pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(pagerVKvPhotoNav.currentItem); // will display photo primary/private/public glyphs\r\n this.kvMemActGlyphArrForPhotoMgmt = pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt;\r\n this.pagerVKvPhotoNav = pagerVKvPhotoNav;\r\n return pagerVKvPhotoNav;\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n\r\n // Candidate-3: 1-stop-shop\r\n // 1) This method will simply print the pagerVKvPhotoNav.currentItem/currentKvPhoto\r\n // and select the currentKvPhoto, and deselct others.\r\n // 2) This will set the KvPhoto as background-image.\r\n // 3) This will get the pagerVKvPhotoNav from Emitter and match with currentKvPhoto with pagerVKvPhotoNav.currentItem,\r\n // and if they don't match, it will create a new pagerVKvPhotoNav on the basis of CurrentKvPhoto.\r\n // 4) this will also cover for the primaryImage case for pagerVKvPhotoNav.\r\n // 5) This will print the currentKvPhoto respective glyphMenu.\r\n // 6) This will highlight primaryImage if it finds it.\r\n // ---------------------------------------------------------------------------------\r\n executePagerVKvPhotoNavCurrentKvPhotoTasks (currentKvPhoto : KvPhoto, kvpArr : KvPhoto[]) : Observable {\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n let pagerVKvPhotoNav = new PagerPhotoMgmt();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto) && currentKvPhoto.itemNum >= 0 &&\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto.value) && currentKvPhoto.value.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto.image) && currentKvPhoto.image.length > 0)) {\r\n // debugger;\r\n pagerVKvPhotoNav = EmitterSubjectService.getPagerPhotoMgmt();\r\n\r\n // check to see that the Emitter's pagerPhotoMgmt is same as currentKvPhoto's pagerPhotoMgmt,\r\n // otherwise create a new pagerPhotoMgmt for currentKvPhoto:\r\n // Note: PhotoId or PhotoBnId or both may be 0, so need to check for currentKvPhoto.image:\r\n // -------------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItem)\r\n && (pagerVKvPhotoNav.currentItem.photoId !== currentKvPhoto.photoId\r\n || pagerVKvPhotoNav.currentItem.photoBnId !== currentKvPhoto.photoBnId)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem.value)\r\n && this.pagerVKvPhotoNav.currentItem.value.length > 0)) {\r\n // debugger;\r\n pagerVKvPhotoNav = this.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(currentKvPhoto, kvpArr); \r\n }\r\n\r\n // debugger;\r\n // kvPhoto's image as background:\r\n // ------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem.value)\r\n && this.pagerVKvPhotoNav.currentItem.value.length > 0) {\r\n this.bias.updateBackgroundImageOutsideAngular(pagerVKvPhotoNav.currentItem.value);\r\n }\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n // Note: disply the glyphMenu for currentKvPhoto:\r\n // ----------------------------------------------\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // --------------------------------------- \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItem)) {\r\n this.pagerVMemberActivityForPhotoMgmt = this.glyphiconMenuService.getPagerVMemActGlyphMenuForPhotoMgmt(pagerVKvPhotoNav.currentItem);\r\n // debugger;\r\n pagerVKvPhotoNav.pagerVMemberActivityForPhotoMgmt = this.pagerVMemberActivityForPhotoMgmt;\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(pagerVKvPhotoNav.currentItem); // will display photo primary/private/public glyphs\r\n\r\n pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, pagerVKvPhotoNav.currentItem);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForPhotoMgmt)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForPhotoMgmt.pagedItems)\r\n && this.pagerVMemberActivityForPhotoMgmt.pagedItems.length > 0) {\r\n // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // ---------------------------------------\r\n debugger;\r\n this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemberActivityForPhotoMgmt.pagedKvGlyphItems, this.pagerVMemberActivityForPhotoMgmt.currentKvGlyphItem, \"pagerVGlyphMgmt-\");\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForPhotoMgmt) && this.kvMemActGlyphArrForPhotoMgmt.length > 0) {\r\n // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // ---------------------------------------\r\n // debugger;\r\n this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.kvMemActGlyphArrForPhotoMgmt, this.kvMemActGlyphArrForPhotoMgmt[ 0 ], \"pagerVGlyphMgmt-\");\r\n }\r\n }\r\n else if (this.isViewMember) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItem)) {\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, pagerVKvPhotoNav.currentItem);\r\n // debugger;\r\n if (this.sitUser.sitUserId > 0) {\r\n // pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(this.sitUser.sitUserId);\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.sitUser.sitUserId); \r\n }\r\n this.pagerVMemberActivityForViewMember = this.glyphiconMenuService.getPagerVMemActGlyphMenuForViewMember(currentKvPhoto.pageNum > 0 ? currentKvPhoto.pageNum : 1, this.sitUser);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForViewMember)) {\r\n pagerVKvPhotoNav.pagerVMemberActivityForViewMember = this.pagerVMemberActivityForViewMember;\r\n // debugger;\r\n }\r\n \r\n }\r\n }\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)) {\r\n EmitterSubjectService.setPagerPhotoMgmt(pagerVKvPhotoNav);\r\n subscriber.next(pagerVKvPhotoNav);\r\n }\r\n })\r\n }\r\n // ----------------------------------------------------------------\r\n // Candidate-2: 1-stop-shop\r\n // This method will simply print the pagerVKvPhotoNav.pagedItems\r\n // and select the currentKvPhoto, and deselct others:\r\n // Will also cover for the primaryImage case for pagerVKvPhotoNav.\r\n // ----------------------------------------------------------------\r\n executePagerVKvPhotoNavPagedItems (pagerVKvPhotoNav : PagerPhotoMgmt) : Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.kvPhotoArr)\r\n && pagerVKvPhotoNav.kvPhotoArr.length > 0) {\r\n\r\n // -------------------------------------------------------------------------------------------\r\n let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr(pagerVKvPhotoNav.kvPhotoArr, 'pagerVKvPhotoNav-');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n this.kvPhotoArr = tpKvPhotoArr;\r\n this.pagerVKvPhotoNav.kvPhotoArr = this.kvPhotoArr;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvPhotoArr) && this.kvPhotoArr.length > 0) {\r\n this.setPagerVKvPhotoArr(this.kvPhotoArr);\r\n EmitterSubjectService.setProfileImages(this.kvPhotoArr);\r\n\r\n // now capture the current-item:\r\n // -----------------------------\r\n let index = -1;\r\n this.currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto)) {\r\n index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr(pagerVKvPhotoNav.kvPhotoArr, this.currentKvPhoto);\r\n }\r\n if (index > -1) { // not found\r\n // debugger;\r\n this.currentKvPhoto = new KvPhoto().copySourceToDestination(this.currentKvPhoto, this.kvPhotoArr[ index ]);\r\n }\r\n else {\r\n this.currentKvPhoto = new KvPhoto().copySourceToDestination(this.currentKvPhoto, this.kvPhotoArr[ this.kvPhotoArr.length - 1 ]);\r\n }\r\n\r\n this.pagerVKvPhotoNav = this.setupPagerVKvPhotoNav(this.kvPhotoArr, this.currentKvPhoto);\r\n // debugger;\r\n this.currentKvPhoto = this.bias.setupKvPhotoIfPrimaryOrPrivate(this.currentKvPhoto);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n this.currentKvPhoto = this.bias.displayBackgroundAndNavImageForKvPhoto(this.currentKvPhoto, this.pagerVKvPhotoNav);\r\n\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.currentKvPhoto);\r\n }\r\n }\r\n\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n\r\n // debugger;\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n this.bias.setPagerVNavKvPhotoImage(this.pagerVKvPhotoNav.currentItem);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)\r\n && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.pagerVKvPhotoNav.currentItem);\r\n }\r\n this.bias.addPrimaryOrOtherClassToKvPhotoElement(this.pagerVKvPhotoNav.currentItem);\r\n // debugger;\r\n resolve(this.pagerVKvPhotoNav);\r\n clearTimeout(this.timer);\r\n })\r\n }\r\n else {\r\n reject(null);\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This method display All vertical menues and bgImage for a profilePics. !!!!\r\n // ---------------------------------------------------------------\r\n public executeProfilePicsKvPhotoAndGlyphMenuTasks (inpPics : ProfilePics) : Observable {\r\n return new Observable(subscriber => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpPics)) {\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.isViewMember) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpPics.filteredKvPhotoArr) && inpPics.filteredKvPhotoArr.length > 0) {\r\n this.pagerVKvPhotoNav = this.getPagerForVKvPhotoNav(inpPics.filteredKvPhotoArr, 1, 6);\r\n if (this.loginSuccess.signedInUserId !== inpPics.sitUserId) {\r\n // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(inpPics.sitUserId); // will display photo primary/private/public glyphs\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(inpPics.sitUserId); \r\n // debugger; \r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n }\r\n\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n }\r\n }\r\n else if (this.isPhotoMgmt || this.isMyProfile) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpPics.unFilteredKvPhotoArr) && inpPics.unFilteredKvPhotoArr.length > 0) {\r\n this.pagerVKvPhotoNav = this.getPagerForVKvPhotoNav(inpPics.unFilteredKvPhotoArr, 1, 6);\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.pagerVKvPhotoNav.currentItem); // will display photo primary/private/public glyphs\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n\r\n // debugger;\r\n EmitterSubjectService.emitDisplayMyPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n }\r\n }\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public executeProfileTileKvPhotoAndGlyphMenuTasks2 (inpTile : ProfileTile) : Observable {\r\n return new Observable((subscriber) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n // debugger;\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto) &&\r\n (\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.image) && inpTile.kvPhoto.image.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.value) && inpTile.kvPhoto.value.length > 0)\r\n )\r\n ) {\r\n this.profileTile = inpTile;\r\n let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr([ this.profileTile.kvPhoto ], 'pagerVKvPhotoNav-');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n this.profileTile.kvPhoto = tpKvPhotoArr[ 0 ];\r\n }\r\n // debugger;\r\n // EmitterSubjectService.emitProfileImages([ this.profileTile.kvPhoto ]);\r\n\r\n // debugger;\r\n if (this.isViewMember) {\r\n // debugger;\r\n let sitUser : SitUser = EmitterSubjectService.getSitUserModel();\r\n if (sitUser.sitUserId === this.profileTile.sitUserId) {\r\n // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(sitUser.sitUserId); // will display photo primary/private/public glyphs\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(sitUser.sitUserId); \r\n // debugger;\r\n //this.pagerPhotoMgmtService.setKvPhotoArr([ this.profileTile.kvPhoto ]);\r\n //this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.getPagerVKvPhotoForCurrentPage(this.profileTile.kvPhoto );\r\n //this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n\r\n this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profileTile.kvPhoto, [ this.profileTile.kvPhoto ]);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n }\r\n }\r\n }\r\n else if (this.isMyProfile) {\r\n debugger;\r\n // this.pagerVKvPhotoNav = this.photoMgmtService.setPageOfPhotoNav(1, [ this.profileTile.kvPhoto ]);\r\n // this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.getPagerVKvPhotoForCurrentPage(this.profileTile.kvPhoto);\r\n this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profileTile.kvPhoto, [ this.profileTile.kvPhoto ]);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n }\r\n }\r\n else if (this.isPhotoMgmt) {\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.profileTile.kvPhoto); // will display photo primary/private/public glyphs\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n }\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This method display All vertical menues and bgImage for a profileTile. !!!!\r\n // ---------------------------------------------------------------\r\n public executeProfileTileKvPhotoAndGlyphMenuTasks (inptile : ProfileTile) : Observable {\r\n let inpTile = inptile\r\n return new Observable((subscriber) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n //// debugger;\r\n //this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n //this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n //this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n let tpKvPhotoArr : any[] = [];\r\n let kvp : KvPhoto = new KvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile)) {\r\n this.profileTile = inpTile;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.primaryImage) && inpTile.primaryImage.length > 0) {\r\n kvp = new ProfileTile().copyToKvPhoto(kvp, inpTile);\r\n tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr([ kvp ], 'pagerVKvPhotoNav-');\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.image) && inpTile.kvPhoto.image.length > 0\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.value) && inpTile.kvPhoto.value.length > 0)) {\r\n tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr([ this.profileTile.kvPhoto ], 'pagerVKvPhotoNav-');\r\n // debugger;\r\n } \r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n this.profileTile.kvPhoto = tpKvPhotoArr[ 0 ];\r\n }\r\n\r\n this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profileTile.kvPhoto, [ this.profileTile.kvPhoto ]);\r\n\r\n // debugger;\r\n //if (this.isViewMember) {\r\n // // debugger;\r\n // // let sitUser : SitUser = EmitterSubjectService.getSitUserModel();\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if (this.loginSuccess.signedInUserId !== this.profileTile.sitUserId) {\r\n // // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(this.profileTile.sitUserId); // will display photo primary/private/public glyphs\r\n // // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.profileTile.sitUserId); \r\n // // debugger; \r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // // debugger;\r\n // this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n // }\r\n //}\r\n //if (this.isPhotoMgmt || this.isMyProfile) {\r\n // // debugger;\r\n\r\n // this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.profileTile.kvPhoto); // will display photo primary/private/public glyphs\r\n // this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n //}\r\n\r\n // debugger;\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n // debugger;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n }\r\n else {\r\n this.message = 'pagerVKvPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks ->profileTile was null or it\\'s image was null';\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n \r\n // ----------------------------------------------------------------\r\n // Used by MemberViewMgmtService && MyProfileViewMgmtComponent\r\n //\r\n // Candidate-1: 1-stop-shop\r\n // Second-Way to display All Vertical menues:\r\n //\r\n // Note: This method will execute the complete PagerVKvPhotoNav\r\n // and vertical glyphcon-menu and display them as a one-stop-shop.\r\n // ----------------------------------------------------------------\r\n public executePagedItemsAndGlyphMenuTasks (pagerVKvPhotoNav : PagerPhotoMgmt) : Promise {\r\n let tKvPhotoArr : any;\r\n // debugger;\r\n return new Promise((resolve, reject) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n // debugger;\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n\r\n // setup the kvPhotoArr for pagerVKvPhotoNav, if it isn't setup yet:\r\n // -----------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.kvPhotoArr)\r\n && pagerVKvPhotoNav.kvPhotoArr.length > 0\r\n && (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.kvPhotoArr[ 0 ].elemId) || pagerVKvPhotoNav.kvPhotoArr[ 0 ].elemId.length == 0)\r\n ) {\r\n this.pagerVKvPhotoNav = pagerVKvPhotoNav;\r\n // debugger;\r\n tKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr(pagerVKvPhotoNav.kvPhotoArr, 'pagerVKvPhotoNav-');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tKvPhotoArr) && tKvPhotoArr.length > 0) {\r\n this.kvPhotoArr = pagerVKvPhotoNav.kvPhotoArr = tKvPhotoArr;\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.pagerVKvPhotoNav = pagerVKvPhotoNav;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.kvPhotoArr) \r\n && this.pagerVKvPhotoNav.kvPhotoArr.length > 0) {\r\n this.kvPhotoArr = pagerVKvPhotoNav.kvPhotoArr;\r\n }\r\n }\r\n\r\n\r\n // executes the pagedItems:\r\n // ------------------------\r\n this.executePagerVKvPhotoNavPagedItems(this.pagerVKvPhotoNav).then(result => {\r\n this.pagerVKvPhotoNav = result;\r\n });\r\n\r\n // display the glyphicon menu:\r\n // ---------------------------\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // debugger;\r\n if (this.isViewMember) {\r\n // debugger;\r\n if (this.sitUser?.sitUserId === pagerVKvPhotoNav?.kvPhotoArr[ 0 ]?.sitUserId) {\r\n // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(this.sitUser?.sitUserId); // will display photo primary/private/public glyphs\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.sitUser.sitUserId); \r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForViewMember)\r\n && this.kvMemActGlyphArrForViewMember.length > 0) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n }\r\n }\r\n else {\r\n if (this.isMyProfile) {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForViewMember)\r\n && this.kvMemActGlyphArrForViewMember.length > 0) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n }\r\n }\r\n }\r\n if (this.isPhotoMgmt) {\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(pagerVKvPhotoNav.currentItem); // will display photo primary/private/public glyphs\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForViewMember)\r\n && this.kvMemActGlyphArrForViewMember.length > 0) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n }\r\n }\r\n }\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n // debugger;\r\n resolve(this.pagerVKvPhotoNav);\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public executeKvPhotoNavTasks (kvp : KvPhoto, kvpArr : KvPhoto[]) : Observable {\r\n let kvP = kvp;\r\n let kvPArr = kvpArr;\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n // debugger;\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP) &&\r\n (\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP.image) && kvP.image.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP.value) && kvP.value.length > 0)\r\n )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0)\r\n {\r\n let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr(kvPArr, 'pagerVKvPhotoNav-');\r\n\r\n // TODO: check for accuracy, otherwise replace with previous:\r\n // this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(kvP, kvPArr);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n this.pagerVKvPhotoNav = this.setupPagerVKvPhotoNav(tpKvPhotoArr, kvP);\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n this.pagerVKvPhotoNav = this.setupPagerVKvPhotoNav(kvPArr, kvP);\r\n } \r\n // debugger;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n // debugger;\r\n subscriber.complete();\r\n }\r\n else {\r\n this.message = 'pagerVKvPhotoNavService.executeKvPhotoNavTasks ->KvPhotoArr was null or KvPhoto was null or it\\'s image was null';\r\n console.log(this.message);\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Used for memberViewMgmt:\r\n // TODO: separate out the KvPhoto display task from GlyphMenu display task.\r\n // ---------------------------------------------------------------\r\n public executeKvPhotoAndGlyphMenuTasks (kvp : KvPhoto, kvpArr : KvPhoto[]) : Observable {\r\n let kvP = kvp;\r\n let kvPArr = kvpArr;\r\n // debugger;\r\n return new Observable((subscriber) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n // debugger;\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP) &&\r\n (\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP.image) && kvP.image.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP.value) && kvP.value.length > 0)\r\n )\r\n\r\n ) {\r\n let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr(kvPArr, 'pagerVKvPhotoNav-');\r\n\r\n // TODO: check for accuracy, otherwise replace with previous:\r\n // this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(kvP, kvPArr);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n this.pagerVKvPhotoNav = this.setupPagerVKvPhotoNav(tpKvPhotoArr, kvP);\r\n }\r\n \r\n\r\n // debugger;\r\n // NOTE: TODO: since this method is used by lot other methods, it is kept here instead of deleting\r\n // in case it is needed or other pages behave undesirably.\r\n if (this.isViewMember) {\r\n // debugger;\r\n // let sitUser : SitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.loginSuccess.signedInUserId !== kvP.sitUserId) {\r\n this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.displayViewMemberGlyphMenu(kvP.sitUserId); // will display photo primary/private/public glyphs\r\n // debugger; \r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n }\r\n }\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(kvP); // will display photo primary/private/public glyphs\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n }\r\n\r\n // debugger;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n // debugger;\r\n // subscriber.complete();\r\n }\r\n else {\r\n this.message = 'pagerVKvPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks ->profileTile was null or it\\'s image was null';\r\n console.log(this.message);\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n // ------------------------------------------------------------\r\n // Note: This should be called when a pager is needed.\r\n // ------------------------------------------------------------\r\n executeSetPageTasks (currentItem : KvPhoto, kvpArr : KvPhoto[]) : PagerPhotoMgmt | any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentItem) && currentItem.pageNum >= 1) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(currentItem, kvpArr); //get pager\r\n\r\n // this should call the following method regarless:\r\n // ---------------------------------------------------------\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n\r\n this.pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n e.value = JsRegExpServiceStatic.setUrlForImageData(e.value);\r\n });\r\n\r\n // debugger;\r\n EmitterSubjectService.setPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n // EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n // debugger;\r\n }\r\n else {\r\n this.pagerVKvPhotoNav = EmitterSubjectService.getPagerVKvPhotoNav();\r\n }\r\n }\r\n else {\r\n this.pagerVKvPhotoNav = EmitterSubjectService.getPagerVKvPhotoNav();\r\n }\r\n // debugger;\r\n return this.pagerVKvPhotoNav;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n public getPagerVKvPhotoNav(): PagerPhotoMgmt {\r\n // debugger;\r\n return this.pagerVKvPhotoNav;\r\n }\r\n // ----------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n // Note: API\r\n // Used by lot of components and services:\r\n // Objective: try to rely on this method\r\n // ----------------------------------------------------------------\r\n public getPagerVKvPhotoNavForKvPhotoInKvPhotoArr (kvp : KvPhoto, kvpArr : KvPhoto[]) : PagerPhotoMgmt | any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n //&& (kvp.photoBnId > 0 || kvp.photoId > 0\r\n //|| (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && kvp.image.length > 0))) {\r\n if (kvp.pageNum <= 0) {\r\n if (kvp.index >= 0) {\r\n kvp.pageNum = kvp.index + 1;\r\n }\r\n else if (kvp.itemNum >= 0) {\r\n kvp.pageNum = kvp.itemNum + 1;\r\n }\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n // debugger;\r\n // Note: the following line must be run right after the previous line/method: getPager() !! \r\n this.pagerVKvPhotoNav = this.setupPagerVKvPhotoNav(kvpArr, kvp);\r\n // debugger;\r\n return this.pagerVKvPhotoNav;\r\n }\r\n else return null; \r\n }\r\n // ---------------------------------------------------------------\r\n // Getter/Setter:\r\n // `VKv`=Vertically displayed ; \r\n // `PhotoNav`=Photo Navigation;\r\n // ---------------------------------------------------------------\r\n public getPagerForVKvPhotoNav (kvpArr : KvPhoto[], page : number, pageSize : number) : PagerPhotoMgmt | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0\r\n && page > 0 && pageSize > 0) {\r\n // debugger;\r\n this.pagerVKvPhotoNav = this.pagerPhotoMgmtService.getBasicPagerDynamic(kvpArr, page, pageSize);\r\n // debugger;\r\n EmitterSubjectService.setPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n\r\n // debugger;\r\n return this.pagerVKvPhotoNav;\r\n }\r\n else return null;\r\n } \r\n // ---------------------------------------------------------------\r\n // Note: API\r\n // ---------------------------------------------------------------\r\n prepareKvPhotoForDisplay (kvPhoto : KvPhoto) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n if (kvPhoto.value.length > 0 ) { \r\n kvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(kvPhoto.value);\r\n } \r\n }\r\n }\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------------\r\n // Note: This method does not check whether the value has image-prefix:\r\n // So only image-prefixed data should call this method.\r\n // ---------------------------------------------------------------------\r\n prefixUrlToKvPhotoForDisplay (kvPhoto : KvPhoto) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n if (kvPhoto.value.length > 0 && !JsRegExpServiceStatic.photoUrlPrefixPattern.test(kvPhoto.value)) {\r\n kvPhoto.value = JsRegExpServiceStatic.prefixUrlToImageData(kvPhoto.value); \r\n } \r\n }\r\n }\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------\r\n isPrivateAndUnlocked (kvp : KvPhoto) : boolean {\r\n var isPandUnlocked = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n this.photoPrivacyService.filterKvPhoto(kvp).subscribe(data => {\r\n isPandUnlocked = data.isPrivate && data.isUnlocked;\r\n\t\t\t})\r\n }\r\n return isPandUnlocked;\r\n\t}\r\n // ---------------------------------------------------------------\r\n // This method normalizes and image's raw data for displating on\r\n // an html element. It can be prefixed with a 'url()' around the\r\n // image-data, or can strip the 'url()' from the image-data.\r\n // ---------------------------------------------------------------\r\n prepareKvPhotoArrForDisplay (kvPhotoArr : KvPhoto[]) : KvPhoto[] | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n kvPhotoArr.forEach(e => {\r\n // debugger;\r\n // NOTE: this section contains an infinite-loop. \r\n // TODO: remove the infinite-loop!!\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) && e.value.length > 0) {\r\n if (e.value.match(JsRegExpServiceStatic.allImageTypesDataPattern3) && !e.value.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n // debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageData(e.value);\r\n e.value = JsRegExpServiceStatic.stripUrlForImageData(e.value);\r\n // debugger;\r\n }\r\n else if (e.value.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageFileNameWithoutUrl(e.value);\r\n debugger;\r\n }\r\n else {\r\n debugger;\r\n e.value = JsRegExpServiceStatic.normalizeImageData(e.value);\r\n e.value = JsRegExpServiceStatic.stripUrlForImageData(e.value);\r\n\t\t\t\t\t}\r\n }\r\n });\r\n }\r\n return kvPhotoArr;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // Note: This should be called when a pager is needed for any KvPhoto.\r\n // --------------------------------------------------------------------\r\n public setCurrentItemPage (currentitem : KvPhoto, kvpArr : KvPhoto[]) : Observable {\r\n // debugger;\r\n var currentItem = currentitem;\r\n var kvPhotoArr = kvpArr;\r\n\r\n return new Observable(subscriber => { \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentItem) && currentItem.pageNum > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n // debugger;\r\n // this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.executeSetPageTasks(currentItem, this.kvPhotoArr); // (pagerVKvPhotoNav\r\n this.executePagerVKvPhotoNavCurrentKvPhotoTasks(currentItem, kvPhotoArr).subscribe(data => {\r\n subscriber.next(data);\r\n subscriber.complete();\r\n })\r\n }\r\n else {\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // Note: This should be called when a pager is needed for a pageNum.\r\n // --------------------------------------------------------------------\r\n public setPageAndGetCurrentPageNum (page : string, pagerVKvPhotoNav : PagerPhotoMgmt) : number {\r\n debugger;\r\n let currentPageNum : number = 0;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(page)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)) {\r\n switch (page.toLowerCase()) {\r\n case 'f':\r\n currentPageNum = 1;\r\n break;\r\n case 'prev':\r\n currentPageNum = (this.pagerVKvPhotoNav.currentPageNo - 1) > 0 ? this.pagerVKvPhotoNav.currentPageNo - 1 : 1;\r\n break;\r\n case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '10':\r\n case '11': case '12': case '13': case '14': case '15': case '16': case '17': case '18': case '19': case '20':\r\n case '21': case '22': case '23': case '24': case '25': case '26': case '27': case '28': case '29': case '30':\r\n case '31': case '32': case '33': case '34': case '35': case '36': case '37': case '38': case '39': case '340':\r\n case '41': case '42': case '43': case '44': case '45': case '46': case '47': case '48': case '49': case '50':\r\n case '51': case '52': case '53': case '54': case '55': case '56': case '57': case '58': case '59': case '60':\r\n case '61': case '62': case '63': case '64': case '65': case '66': case '67': case '68': case '69': case '70':\r\n case '71': case '72': case '73': case '74': case '75': case '76': case '77': case '78': case '79': case '80':\r\n case '81': case '82': case '83': case '84': case '85': case '86': case '87': case '88': case '89': case '90':\r\n case '91': case '92': case '93': case '94': case '95': case '96': case '97': case '98': case '99': case '100':\r\n currentPageNum = parseInt(page, 10);\r\n // debugger;\r\n break;\r\n case 'l':\r\n currentPageNum = pagerVKvPhotoNav.pages.length;\r\n break;\r\n case 'next':\r\n currentPageNum = currentPageNum + 1 >= pagerVKvPhotoNav.nextPageNo ? currentPageNum + 1 : pagerVKvPhotoNav.pages.length;\r\n break;\r\n default:\r\n // this.currentItemKvPhoto = EmitterSubjectService.getCurrentKvPhoto();;\r\n currentPageNum = pagerVKvPhotoNav.currentPageNo;\r\n this.executePagerVKvPhotoNavPagedItems(pagerVKvPhotoNav).then(data => {\r\n pagerVKvPhotoNav = data;\r\n debugger;\r\n currentPageNum = pagerVKvPhotoNav.currentPageNo;\r\n });\r\n // debugger;\r\n break;\r\n }\r\n return currentPageNum;\r\n }\r\n }\r\n // ----------------------------------------------------------------------\r\n \r\n // ----------------------------------------------------------------\r\n public setupForProfilePicsToPagerVPhotoNav (pPics : ProfilePics) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr) && pPics.unFilteredKvPhotoArr.length > 0) {\r\n this.pagerVKvPhotoNav = this.pagerPhotoMgmtService.getBasicPagerDynamic(pPics.unFilteredKvPhotoArr, 1, 5);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.kvPhotoArr)\r\n && this.pagerVKvPhotoNav.kvPhotoArr.length > 0) {\r\n // debugger;\r\n this.kvPhotoArr = this.pagerVKvPhotoNav.kvPhotoArr;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem.value)\r\n && this.redirectionService.isCurrentUrlAProfilePage()) {\r\n // debugger;\r\n // this.bias.setKvPhotoBackgroundImagePrimaryOrOtherwise(this.pagerVKvPhotoNav.currentItem);\r\n EmitterSubjectService.emitCurrentPage(this.pagerVKvPhotoNav.currentItem);\r\n }\r\n }\r\n }\r\n\r\n }\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.signedInUser = CopyServiceStatic.copyLoginSuccessToSitUser(this.loginSuccess);\r\n\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n return this.pagerVKvPhotoNav;\r\n }\r\n // --------------------------------------------------------------------\r\n // TODO: This method should be in respective component\r\n // because more than one component will call it,\r\n // but this knows only memberViewMgmt component.\r\n // --------------------------------------------------------------------\r\n setMcLoader (sitUserId ?: number) {\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n\r\n if (this.isViewMember) {\r\n this.mcLoader.moduleName = \"memberViewAndUpdgadedm\";\r\n this.mcLoader.componentName = \"memberViewMgmt\";\r\n this.mcLoader.id = sitUserId > 0 ? sitUserId : 0;\r\n }\r\n //else if (this.isPhotoMgmt) {\r\n // this.mcLoader.moduleName = \"mym\";\r\n // this.mcLoader.componentName = \"myPhotoMgmt\";\r\n // this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n //}\r\n //else if (this.isMyProfile) {\r\n // this.mcLoader.moduleName = \"mym\";\r\n // this.mcLoader.componentName = \"myProfileViewMgmt\";\r\n // this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n //}\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // Note : View calls this method.\r\n // Stable and works; on 20220429 & 20220514 & 20220622 & 20230108\r\n // --------------------------------------------------------------------\r\n public setPhotoNavItemBase (iTem : KvPhoto, pVKvPhotoNav : PagerPhotoMgmt) : Observable {\r\n // debugger; \r\n let item = iTem;\r\n let pagerVKvPhotoNav = pVKvPhotoNav;\r\n // debugger; \r\n return new Observable(subscriber => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)) {\r\n // debugger;\r\n this.executeKvPhotoAndGlyphMenuTasks(item, pagerVKvPhotoNav.kvPhotoArr).subscribe(data => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n pagerVKvPhotoNav = data;\r\n // debugger;\r\n } \r\n // debugger;\r\n subscriber.next(pagerVKvPhotoNav);\r\n subscriber.complete();\r\n })\r\n \r\n }\r\n else {\r\n subscriber.next(pagerVKvPhotoNav);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n // ----------------------------------------------------------------\r\n public setupForKvPhotoArrToPagerVPhotoNav (kvpArr : [KvPhoto]) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0){ \r\n this.pagerVKvPhotoNav = this.pagerPhotoMgmtService.getBasicPagerDynamic(kvpArr, 1, 5);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.kvPhotoArr)\r\n && this.pagerVKvPhotoNav.kvPhotoArr.length > 0) {\r\n // debugger;\r\n this.kvPhotoArr = this.pagerVKvPhotoNav.kvPhotoArr;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem.value)\r\n && this.redirectionService.isCurrentUrlAProfilePage()) {\r\n // debugger;\r\n // this.bias.setKvPhotoBackgroundImagePrimaryOrOtherwise(this.pagerVKvPhotoNav.currentItem);\r\n EmitterSubjectService.emitCurrentPage(this.pagerVKvPhotoNav.currentItem);\r\n }\r\n }\r\n\r\n }\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.signedInUser = CopyServiceStatic.copyLoginSuccessToSitUser(this.loginSuccess);\r\n\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n return this.pagerVKvPhotoNav;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public setupPagerVKvPhotoNav (kvpArr : KvPhoto[], kvp : KvPhoto) : PagerPhotoMgmt | any {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n var mFloor = Math.floor(kvp.pageNum / this.pageSize);\r\n var page = mFloor > 0 ? mFloor : 1;\r\n // debugger;\r\n return this.getPagerForVKvPhotoNav(kvpArr, page, this.pageSize)\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n public setPagerVKvPhotoArr (kvpArr : KvPhoto[]) : void {\r\n this.kvPhotoArr = kvpArr;\r\n }\r\n // ----------------------------------------------------------------\r\n public updatePagerVPhotoNav (pgrVPhotoNav : PagerPhotoMgmt) : PagerPhotoMgmt {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pgrVPhotoNav) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pgrVPhotoNav.kvPhotoArr) && pgrVPhotoNav.kvPhotoArr.length > 0) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n pgrVPhotoNav.kvPhotoArr = this.pagerSupportService.updateKvPhotoArr(pgrVPhotoNav.kvPhotoArr, pgrVPhotoNav.kvPhotoArr[ 0 ].sitUserId);\r\n\r\n // debugger;\r\n if (this.pageSize <= 0) {\r\n this.pageSize = EmitterSubjectService.getPageSize();\r\n }\r\n\r\n pgrVPhotoNav = this.pagerPhotoMgmtService.getBasicPagerDynamic(pgrVPhotoNav.kvPhotoArr, pgrVPhotoNav.currentItem.pageNum, this.pageSize); // get initial pager which willbe used to get the pageSize\r\n // debugger;\r\n // TODO: check to see if recompute pager is necessary\r\n // pgrVPhotoNav = (this.pagerServicePhotoMgmt as PagerServicePhotoMgmt).getPagerUpTo10(pgrVPhotoNav.kvPhotoArr, currentPage, this.pageSize); // recompute pager\r\n // debugger;\r\n // this.pagerVPhotoNav = pgrVPhotoNav;\r\n }\r\n return pgrVPhotoNav;\r\n } \r\n // ------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { PagerBreadcrum } from '../../models/breadcrum/pagerBreadcrum.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { BasicPagerModel } from '../../models/pagination/basicPagerModel.model';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n// ------------------------------------------------------------------\r\n// This pager-service is the most recently updated one. If other\r\n// pagers need to be updated, this one should be used as a model for\r\n// them. Updated on 20220420.\r\n// ------------------------------------------------------------------\r\n\r\n// ref: http://xahlee.info/js/javascript_range_array.html\r\nconst xah_range = ((min : any, max : any, step = 1,) => (Array(Math.floor((max - min) / step) + 1).fill(min).map(((x, i) => (x + i * step)),)));\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport abstract class BasicPagerService implements OnDestroy {\r\n public renderer! : Renderer2;\r\n // ----------------------------------------------------------------\r\n public basicPagerModel : BasicPagerModel = new BasicPagerModel();\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public pageSize = 5;\r\n\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public timer : any;\r\n // ---------------------------------------------------------------\r\n constructor (\r\n ) {\r\n }\r\n ngAfterViewInit () : void {\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n clearInterval(this.timer);\r\n }\r\n // ===============================================================\r\n // TODO : Separate out PagerBreadCrum into its own PagerServiceBreadCrum,\r\n // ---------------------------------------------------------------\r\n // API:\r\n // ---------------------------------------------------------------\r\n public getPagerBreadcrum(): PagerBreadcrum {\r\n return this.pagerBrdCrm;\r\n }\r\n // ---------------------------------------------------------------\r\n public getBasicPager (page : number) : any {\r\n // returnthis.setPagerUpTo15(this.kvPhotoArr, page);\r\n return this.getBasicPagerDynamic(this.kvPhotoArr, page, this.pageSize);\r\n }\r\n // ---------------------------------------------------------------\r\n public getBasicPagerDynamicObservable (kvPhotoArr : KvPhoto[], page : number, pageSize : number) : Observable {\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n this.basicPagerModel = this.getBasicPagerDynamic(kvPhotoArr, page, this.pageSize);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.basicPagerModel)) {\r\n subscriber.next(this.basicPagerModel);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n //setBasicPagerVKvPhoto (page : number) : any {\r\n // // returnthis.setPagerUpTo15(this.kvPhotoArr, page);\r\n // return this.setPagerVKvPhotoDynamic(this.kvPhotoArr, page, this.pageSize);\r\n //}\r\n // ---------------------------------------------------------------\r\n public getBasicPagerDynamic (kvPhotoArr : KvPhoto[], page : number, pageSize : number) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n this.basicPagerModel.kvPhotoArr = JSON.parse(JSON.stringify(kvPhotoArr)); // deep copy\r\n // debugger;\r\n if (this.basicPagerModel.kvPhotoArr && this.basicPagerModel.kvPhotoArr.length > 0) {\r\n this.basicPagerModel.totalItems = kvPhotoArr.length;\r\n }\r\n this.basicPagerModel.pageSize = pageSize > 0 ? pageSize : 10;\r\n\r\n this.basicPagerModel.currentPageNo = page > 0 ? page : 1;\r\n // get pager object\r\n // debugger;\r\n this.basicPagerModel = this.GetPagerChatDynamic(kvPhotoArr.length, page, pageSize); \r\n\r\n // debugger;\r\n this.basicPagerModel.pagedItems = this.basicPagerModel.kvPhotoArr.slice(this.basicPagerModel.startIndex, this.basicPagerModel.endIndex + 1);\r\n this.basicPagerModel.pagedItems.forEach(e => {\r\n e.pageNum = page;\r\n });\r\n this.basicPagerModel.currentItem = this.basicPagerModel.pagedItems[ this.basicPagerModel.pagedItems.length - 1 ]; //TODO: or could be the last item\r\n // debugger;\r\n this.basicPagerModel = this.setupBasicPagerModel(this.basicPagerModel.currentItem, this.basicPagerModel);\r\n\r\n EmitterSubjectService.setBasicPager(this.basicPagerModel);\r\n\r\n // TODO: remove beofore deployment:\r\n // --------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.basicPagerModel)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.basicPagerModel.kvPhotoArr)\r\n // && this.basicPagerModel.kvPhotoArr.length > 0) {\r\n // debugger;\r\n // this.basicPagerModel.pagedItems = this.basicPagerModel.kvPhotoArr.slice(this.basicPagerModel.startIndex, this.basicPagerModel.endIndex + 1); // important!!\r\n // // debugger;\r\n \r\n //}\r\n // debugger;\r\n \r\n\r\n\r\n // ------------------------------------------------------------------------------------------------------\r\n // get current items of page\r\n // NOTE : We do not follow these steps. Instead we reverse the kvPhotoArr upon constructing a conversation.\r\n // Note : because we want to see the most-recent-messages near the Chat Message Console, we do the following steps:\r\n // Step-1 : We sort the messages in descending order(with isAsc == false)\r\n // Step-2 : Then we take a slice for PagedChatArr\r\n // Step-3 : Then the pagedChatArr are sorted in Ascending order (isAsc==true)\r\n // for the most - recent - message to appear near the Chat Message Console.\r\n // let reversedChats = this.reverseChats(this.pagerPhotoMgmt.kvPhotoArr, false); // Step-1\r\n // debugger;\r\n // this.pagedChatArr = reversedChats.slice(this.pagerPhotoMgmt.startIndex, this.pagerPhotoMgmt.endIndex); // Step-2\r\n // debugger;\r\n // this.pagedChatArr = this.reverseChats(this.pagedChatArr, true); // Step-3\r\n\r\n // ------------------------------------------------------------------------------------------------------\r\n\r\n // this.pagerPhotoMgmt.currentBrdCrmPage = this.breadcrumRing[this.currentPage - 1];\r\n // this.pagerPhotoMgmt.previousPage = this.currentPage - 1 >= 1 ? this.currentPage - 1 : this.currentPage;\r\n // if (this.pagerPhotoMgmt.previousPage >= 1) {\r\n // this.pagerPhotoMgmt.previousBrdCrmPage = this.breadcrumRing[this.pagerPhotoMgmt.previousPage - 1];\r\n // }\r\n // this.pagerPhotoMgmt.nextPage = this.currentPage + 1 <= totalItems ? this.currentPage + 1 : this.currentPage;\r\n // if (this.pagerPhotoMgmt.nextPage <= this.totalItems) {\r\n // this.pagerPhotoMgmt.nextBrdCrmPage = this.breadcrumRing[this.pagerPhotoMgmt.nextPage - 1];\r\n // }\r\n // ------------------------------------------------------------------------------------------------------\r\n\r\n\r\n\r\n // debugger;\r\n // EmitterSubjectService.emitPager(this.pagerPhotoMgmt);\r\n return this.basicPagerModel;\r\n }\r\n else return null;\r\n }\r\n // --------------------------------------------------\r\n public range (min : any, max : any, delta ?: any) {\r\n const arr : any[] = [];\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(delta)) {\r\n delta = 0;\r\n }\r\n let stepCount;\r\n if (min && !max && !delta) {\r\n for (let i = 0; i < min; i++) {\r\n arr[ i ] = i + 1;\r\n }\r\n } else {\r\n if (min && max && !delta) {\r\n stepCount = (max - min);\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i + min);\r\n }\r\n } else {\r\n stepCount = Math.floor((max - min) / delta);\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i * delta + min + 1);\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n // --------------------------------------------------\r\n // Can be used for any array. \r\n // just the array's totalItems, currentPage and pageSize are required.\r\n // will give a pager from 1 upto 10.\r\n // Note: this algorithm implicitely equates pageSize to pagedItems, \r\n // i.e.pageSize === itemSize\r\n //\r\n // Also, the pagedItems shoild be computed by the calling method.\r\n // Because this service may not have KvPhotoArray to slice the pagedItems. !!!\r\n // --------------------------------------------------\r\n protected GetPagerChatDynamic (totalItems : any, page : any, pageSize ?: any) : BasicPagerModel | any {\r\n let tItems : number;\r\n if (totalItems > 0) {\r\n tItems = totalItems;\r\n this.basicPagerModel.totalItems = tItems;\r\n\r\n // default page size is 10\r\n let pSize = pageSize > 0 ? pageSize : 10;\r\n this.basicPagerModel.pageSize = pSize;\r\n\r\n // calculate total pages\r\n let totalPageNo = 0;\r\n if (tItems < pSize) {\r\n totalPageNo = 1;\r\n }\r\n else {\r\n totalPageNo = Math.abs(Math.ceil(tItems / pSize));\r\n }\r\n // default to first page\r\n let cPage = page > 0 && page < totalPageNo ? page : 1;\r\n this.basicPagerModel.currentPageNo = cPage;\r\n\r\n // debugger;\r\n // calculate start and end item indexes\r\n // updated version-2: Date: 20230116:\r\n // ----------------------------------\r\n let startPageItemNo;\r\n let endPageItemNo;\r\n if (tItems <= 10) {\r\n // less than 10 total pages so show all\r\n startPageItemNo = 1;\r\n endPageItemNo = tItems;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n //if (tItems <= 6) {\r\n // startPageItemNo = 1;\r\n // endPageItemNo = 10;\r\n //} else \r\n if (cPage + 4 >= tItems) {\r\n startPageItemNo = totalPageNo - 9;\r\n endPageItemNo = totalPageNo;\r\n } else {\r\n startPageItemNo = cPage - 5;\r\n endPageItemNo = cPage + 4;\r\n }\r\n }\r\n // this.startPage = startPageNo;\r\n // this.endPage = endPageNo;\r\n\r\n //let startIndex = (cPageNo - 1) * this.pageSize;\r\n //let endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1\r\n // : this.pageSize), (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n\r\n var startIndex = (Math.floor(cPage / pSize) - 1 >= 0 ? (cPage - 1) : 0) * pSize;\r\n let min = Math.min(startIndex + pSize - 1, tItems - 1);\r\n var endIndex = min >= 0 ? min : 0;\r\n this.basicPagerModel.startIndex = startIndex;\r\n this.basicPagerModel.endIndex = endIndex;\r\n\r\n // debugger;\r\n // create an array of pages to ng-repeat in the pager control\r\n // this.pages = xah_range(startPageItemNo, endPageItemNo, 1);\r\n this.basicPagerModel.pages = this.range(startIndex, endIndex, pSize);\r\n // debugger;\r\n //this.basicPagerModel.startPageNo = 1;\r\n //this.basicPagerModel.endPageNo = this.basicPagerModel.pages.length;\r\n\r\n this.basicPagerModel.pageSize = pSize;\r\n this.basicPagerModel.previousPageNo = cPage - 1 > 0 ? cPage - 1 : 1;\r\n this.basicPagerModel.nextPageNo = cPage + 1 <= totalPageNo ? cPage + 1 : totalPageNo;\r\n this.basicPagerModel.totalPages = totalPageNo;\r\n\r\n\r\n // debugger;\r\n // var startIndex = (cPageNo - 1);\r\n // var endIndex = Math.min(startIndex + pSize - 1, totalItems - 1);\r\n\r\n this.basicPagerModel.endIndex = endIndex;\r\n this.basicPagerModel.startIndex = startIndex;\r\n\r\n this.basicPagerModel.startItemNo = startIndex;\r\n this.basicPagerModel.endItemNo = endIndex;\r\n this.basicPagerModel.currentItemNo = 0;\r\n this.basicPagerModel.previousItemNo = this.basicPagerModel.currentItemNo - 1 >= 0 ? this.basicPagerModel.currentItemNo - 1 : 0;\r\n this.basicPagerModel.nextItemNo = this.basicPagerModel.currentItemNo + 1 <= this.basicPagerModel.totalItems ? this.basicPagerModel.currentItemNo + 1 : this.basicPagerModel.totalItems;\r\n\r\n this.basicPagerModel.totalItems = tItems;\r\n // debugger;\r\n\r\n // get the rest of the property's value:\r\n this.pagerBrdCrm = this.setupPagerBrdCrm();\r\n EmitterSubjectService.setBasicPager(this.basicPagerModel);\r\n // debugger;\r\n return this.basicPagerModel;\r\n }\r\n else return null;\r\n }\r\n // --------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n // API:\r\n // ---------------------------------------------------------------\r\n public setKvPhotoArr (kvpArr : KvPhoto[]) : void {\r\n this.kvPhotoArr = kvpArr;\r\n }\r\n // ---------------------------------------------------------------\r\n protected setupBasicPagerModel (currItem ?: KvPhoto | any, inPager ?: BasicPagerModel) : BasicPagerModel | any {\r\n this.basicPagerModel = new BasicPagerModel();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inPager)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inPager.kvPhotoArr)\r\n && inPager.kvPhotoArr.length > 0) {\r\n this.basicPagerModel = inPager;\r\n\t\t}\r\n\r\n this.basicPagerModel.pageSize = this.pageSize;\r\n\r\n // kvPhotoArr varoiables:\r\n // ----------------------\r\n this.basicPagerModel.kvPhotoArr = inPager.kvPhotoArr;\r\n this.basicPagerModel.startItem = inPager.kvPhotoArr[ 0 ];\r\n this.basicPagerModel.endItem = inPager.kvPhotoArr[ inPager.kvPhotoArr.length - 1 ];\r\n \r\n\r\n // pagedItems variables:\r\n // ---------------------\r\n let index = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currItem)) {\r\n if (currItem.pageNum > 0 && currItem.pageNum <= this.kvPhotoArr.length + 1\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvPhotoArr[ currItem.pageNum - 1 ])) {\r\n // debugger;\r\n this.basicPagerModel.currentItem = new KvPhoto().copySourceToDestination(this.basicPagerModel.currentItem, this.kvPhotoArr[ currItem.pageNum - 1 ]);\r\n }\r\n else {\r\n index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdOrPhotoIdInKvPhotoArr(this.kvPhotoArr, currItem.photoBnId, currItem.photoId);\r\n \r\n if (index > -1) {\r\n // debugger;\r\n this.basicPagerModel.currentItem = new KvPhoto().copySourceToDestination(this.basicPagerModel.currentItem, this.kvPhotoArr[ index ]);\r\n }\r\n else {\r\n this.basicPagerModel.currentItem = new KvPhoto().copySourceToDestination(this.basicPagerModel.currentItem, this.kvPhotoArr[ this.kvPhotoArr.length - 1 ]);\r\n\t\t\t\t}\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.basicPagerModel.currentItem)) {\r\n this.basicPagerModel.currentItemNo = this.basicPagerModel.currentItem.index;\r\n\t\t}\r\n\r\n // debugger;\r\n\r\n if (this.basicPagerModel.endIndex < this.basicPagerModel.totalItems\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvPhotoArr[ this.basicPagerModel.endIndex ])) {\r\n this.basicPagerModel.endItem = this.kvPhotoArr[ this.basicPagerModel.endIndex ];\r\n }\r\n\r\n // the lowest value for currentPageNo==1, so nextPageNo==2\r\n if (this.basicPagerModel.nextPageNo >= 2 && this.basicPagerModel.nextPageNo - 1 >= 1\r\n && this.basicPagerModel.nextPageNo - 1 <= this.kvPhotoArr.length) {\r\n this.basicPagerModel.nextItem = this.kvPhotoArr[ this.basicPagerModel.nextPageNo - 1 ];\r\n this.basicPagerModel.nextItemNo = this.kvPhotoArr[ this.basicPagerModel.nextPageNo - 1 ].index;\r\n }\r\n else {\r\n if (this.basicPagerModel.totalItems - 1 <= this.kvPhotoArr.length) {\r\n this.basicPagerModel.nextItem = this.kvPhotoArr[ this.basicPagerModel.totalItems - 1 ];\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.basicPagerModel.nextItem)) {\r\n this.basicPagerModel.nextItemNo = this.basicPagerModel.nextItem.index;\r\n }\r\n }\r\n\r\n if (this.basicPagerModel.previousPageNo >= 1) {\r\n this.basicPagerModel.previousItem = this.kvPhotoArr[ this.basicPagerModel.previousPageNo - 1 ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.basicPagerModel.previousItem)) {\r\n this.basicPagerModel.previousItemNo = this.basicPagerModel.previousItem.index;\r\n }\r\n }\r\n else {\r\n this.basicPagerModel.previousItem = this.kvPhotoArr[ 0 ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.basicPagerModel.previousItem)) {\r\n this.basicPagerModel.previousItemNo = this.basicPagerModel.previousItem.index;\r\n }\r\n }\r\n\r\n if (this.basicPagerModel.startIndex >= 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvPhotoArr[ this.basicPagerModel.startIndex ])) {\r\n this.basicPagerModel.startItem = this.kvPhotoArr[ this.basicPagerModel.startIndex ];\r\n this.basicPagerModel.startItemNo = this.kvPhotoArr[ this.basicPagerModel.startIndex ].index;\r\n }\r\n else {\r\n this.basicPagerModel.startItem = this.kvPhotoArr[ 0 ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.basicPagerModel.startItem)) {\r\n this.basicPagerModel.startItemNo = this.basicPagerModel.startItem.index;\r\n }\r\n }\r\n\r\n // debugger;\r\n return this.basicPagerModel;\r\n }\r\n // ---------------------------------------------------------------\r\n // API:\r\n // ---------------------------------------------------------------\r\n protected setupPagerBrdCrm () :any {\r\n // return object with all the pager properties required by the view\r\n this.pagerBrdCrm = new PagerBreadcrum();\r\n this.pagerBrdCrm.totalItems = this.basicPagerModel.totalItems;\r\n this.pagerBrdCrm.currentPage = this.basicPagerModel.currentPageNo;\r\n // this.pagerBrdCrm.currentBrdCrmPage = this.breadcrumRing[this.currentPage - 1];\r\n this.pagerBrdCrm.previousPage = this.basicPagerModel.currentPageNo - 1 >= 1 ? this.basicPagerModel.currentPageNo - 1 : this.basicPagerModel.currentPageNo;\r\n // if (this.pagerBrdCrm.previousPage >= 1) {\r\n // this.pagerBrdCrm.previousBrdCrmPage = this.breadcrumRing[this.pagerBrdCrm.previousPage - 1];\r\n // }\r\n this.pagerBrdCrm.nextPage = this.basicPagerModel.nextPageNo + 1 <= this.basicPagerModel.totalItems ? this.basicPagerModel.nextPageNo + 1 : this.basicPagerModel.nextPageNo;\r\n // if (this.pagerBrdCrm.nextPage <= this.totalItems) {\r\n // this.pagerBrdCrm.nextBrdCrmPage = this.breadcrumRing[this.pagerBrdCrm.nextPage - 1];\r\n // }\r\n\r\n this.pagerBrdCrm.pageSize = this.pageSize;\r\n this.pagerBrdCrm.totalPagedBlocks = this.basicPagerModel.totalPages;\r\n // this.pagerBrdCrm.startPage = this.basicPagerModel.startPage;\r\n // this.pagerBrdCrm.pagedEndPage = this.basicPagerModel.endPage;\r\n this.pagerBrdCrm.pagedStartIndex = this.basicPagerModel.startIndex;\r\n this.pagerBrdCrm.pagedEndIndex = this.basicPagerModel.endIndex;\r\n this.pagerBrdCrm.pagedPages = this.basicPagerModel.pages;\r\n\r\n EmitterSubjectService.setPagerBreadcrum(this.pagerBrdCrm);\r\n return this.pagerBrdCrm;\r\n }\r\n \r\n // --------------------------------------------------\r\n // Note: Even though this method eliminates the need\r\n // of it's counterParts = [GetPagerOfSize10(), GetPagerOfSize5()]\r\n // we DO NOT delete it's counterParts\r\n // ---------------------------------------------------------------\r\n // Deprecared\r\n //-------------------------------------------------- \r\n // ref: http://xahlee.info/js/javascript_range_array.html\r\n // const xah_range = ((min, max, step = 1,) => (Array(Math.floor((max - min) / step) + 1).fill(min).map(((x, i) => (x + i * step)),))); \r\n // ----------------------------------------------------------------\r\n // Note : The following methods are optional giving more page selections:\r\n //\r\n // The setPagerUpTo10() method returns a 'Pager' of size 5 if the total elements are <=5\r\n // or a pager of size 10 if the elements are >5.\r\n // Also if it produces a pager of size 10, it also produces a 'PagerBreadcrum' of sixe 10.\r\n //\r\n // You can obtain the 'PagerBreadcrum' via the api : getPagerBreadcrum();\r\n // ---------------------------------------------------------------\r\n // Deprecared\r\n // ---------------------------------------------------------------\r\n\r\n //protected getPagerUpTo10 (kvpArr : KvPhoto[], page : number, pageSize : number) : any {\r\n // if (kvpArr && kvpArr.length > 0) {\r\n // this.totalItems = kvpArr.length;\r\n // this.kvPhotoArr = kvpArr;\r\n // }\r\n // if (page < 1 && page > this.totalItems) {\r\n // return null;\r\n // }\r\n\r\n // // default to first page\r\n // this.page = (page > 0 && page <= this.totalItems) ? page : 1;\r\n\r\n // // this.pageSize = (pageSize > 0 && pageSize < 10 && this.totalItems < 10) ? 5 : 10;\r\n\r\n // if (this.kvPhotoArr && this.kvPhotoArr.length > 0) {\r\n\r\n // // default page size is 5\r\n // if (pageSize > 0 && pageSize <= 10) {\r\n // this.pageSize = pageSize;\r\n // }\r\n\r\n // // debugger;\r\n // // calculate total pages\r\n // this.totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n // // debugger;\r\n // this.getPagerOfAnySizeUpto10(this.totalItems, this.page);\r\n\r\n // // Note: Though this method returns only this.pagerPhotoMgmt,\r\n // // the this.pagerBrdCrm can be accessed by it's getter:\r\n // // ---------------------------------------------------------- \r\n // this.pagerBrdCrm = this.setupPagerBrdCrm();\r\n\r\n // // debugger; \r\n // this.pagerPhotoMgmt.kvPhotoArr = this.kvPhotoArr;\r\n\r\n // // capture the values before creating pagedItems:\r\n // //-----------------------------------------------\r\n // // debugger;\r\n // this.pagerPhotoMgmt = this.setupPagerPhotoMgmt();\r\n\r\n // // debugger;\r\n // return this.pagerPhotoMgmt;\r\n // }\r\n // else return null;\r\n\r\n //}\r\n // --------------------------------------------------\r\n // updated on 20220416\r\n // --------------------------------------------------\r\n //protected rangeOld (min: number, max: number, delta: number) : any {\r\n // var arr: any[] = [];\r\n // var stepCount = 0;\r\n // // debugger;\r\n // if (arguments.length === 1) {\r\n // for (var i = 0; i < min; i++) {\r\n // arr.push(i + 1);\r\n // };\r\n // } else {\r\n // if (arguments.length === 2) {\r\n // stepCount = Math.floor((max - min));\r\n // if (stepCount > 0) {\r\n // for (var i = 0; i <= stepCount; i++) {\r\n // arr.push(i + min);\r\n // };\r\n // }\r\n // else {\r\n // arr.push(1);\r\n // }\r\n // } else {\r\n // debugger;\r\n // stepCount = Math.floor((max - min) / delta);\r\n // if (stepCount >= 0) {\r\n // for (var i = 0; i <= stepCount; i++) {\r\n // arr.push(i * delta + min);\r\n // };\r\n // } \r\n // } \r\n // }\r\n // // debugger;\r\n // return arr;\r\n //}\r\n // --------------------------------------------------\r\n // range2(min, max, delta): any {\r\n // const arr : any[] = [];\r\n // let stepCount;\r\n // if (min && !max && !delta) {\r\n // for (let i = 0; i < min; i++) {\r\n // arr[i] = i + 1;\r\n // }\r\n // } else {\r\n // if (min && max && !delta) {\r\n // stepCount = (max - min);\r\n // for (let i = 0; i <= stepCount; i++) {\r\n // arr.push(i + min);\r\n // }\r\n // } else {\r\n // stepCount = Math.floor((max - min) / delta);\r\n // for (let i = 0; i <= stepCount; i++) {\r\n // arr.push(i * delta + min);\r\n // }\r\n // }\r\n // }\r\n // return arr;\r\n // }\r\n \r\n // ------------------------------------------------------------\r\n}\r\n\r\n\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { PagerPhotoMgmtServiceInterface } from '../../interfaces/serviceInterfaces/pagerServicesInterfaces/pagerPhotoMgmtServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { PagerBreadcrum } from '../../models/breadcrum/pagerBreadcrum.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { BasicPagerService } from './basicPagerService.service';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\nimport { PagerServiceService } from './pagerServiceService.service';\r\nimport { PagerSupportService } from './pagerSupportService.service';\r\n\r\n// ------------------------------------------------------------------\r\n// This pager-service is the most recently updated one. If other\r\n// pagers need to be updated, this one should be used as a model for\r\n// them. Updated on 20220420.\r\n// ------------------------------------------------------------------\r\n\r\n// ref: http://xahlee.info/js/javascript_range_array.html\r\nconst xah_range = ((min : any, max : any, step = 1,) => (Array(Math.floor((max - min) / step) + 1).fill(min).map(((x, i) => (x + i * step)),)));\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PagerPhotoMgmtService extends BasicPagerService implements OnDestroy, PagerPhotoMgmtServiceInterface {\r\n /*public renderer! : Renderer2;*/\r\n // ----------------------------------------------------------------\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public filteredKvPhotoArr : KvPhoto[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public kvPhotoArr : KvPhoto[] = [];\r\n\r\n public pagerBrdCrm : PagerBreadcrum = new PagerBreadcrum();\r\n public pagerPhotoMgmt : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public pics : string[] = [];\r\n public profilePics : ProfilePics = new ProfilePics();\r\n /*public timer : any;*/\r\n // ---------------------------------------------------------------\r\n constructor (\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public pagerSupportService: PagerSupportService,\r\n public rendererService : RendererService,\r\n public router : Router,\r\n @Inject(DOCUMENT) document : any,\r\n @Inject(Window) window : any\r\n ) {\r\n super();\r\n if (this.rendererService) {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n clearInterval(this.timer);\r\n }\r\n // ================================================================\r\n // ----------------------------------------------------------------\r\n // API: Begin\r\n // ---------------------------------------------------------------\r\n public clearPagerServicePhotoMgmtData (): void {\r\n this.kvPhotoArr = [];\r\n this.pagerPhotoMgmt = new PagerPhotoMgmt();\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n public getPagerPhotoMgmt(): PagerPhotoMgmt {\r\n // debugger;\r\n return this.pagerPhotoMgmt;\r\n }\r\n // ===============================================================\r\n // TODO : Separate out PagerBreadCrum into its own PagerServiceBreadCrum,\r\n // ---------------------------------------------------------------\r\n public getPagerBreadcrum(): PagerBreadcrum {\r\n return this.pagerBrdCrm;\r\n }\r\n // ---------------------------------------------------------------\r\n getPagerVKvPhoto (page : number) : any {\r\n // returnthis.setPagerUpTo15(this.kvPhotoArr, page);\r\n return this.getBasicPagerDynamic(this.kvPhotoArr, page, this.pageSize);\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n public setKvPhotoArr (kvpArr : KvPhoto[]) : void {\r\n this.kvPhotoArr = kvpArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public setupPagerBrdCrm () :any {\r\n // return object with all the pager properties required by the view\r\n this.pagerBrdCrm = new PagerBreadcrum();\r\n this.pagerBrdCrm.totalItems = this.pagerPhotoMgmt.totalItems;\r\n this.pagerBrdCrm.currentPage = this.pagerPhotoMgmt.page;\r\n // this.pagerBrdCrm.currentBrdCrmPage = this.breadcrumRing[this.currentPage - 1];\r\n this.pagerBrdCrm.previousPage = this.pagerPhotoMgmt.page - 1 >= 1 ? this.pagerPhotoMgmt.page - 1 : this.pagerPhotoMgmt.page;\r\n // if (this.pagerBrdCrm.previousPage >= 1) {\r\n // this.pagerBrdCrm.previousBrdCrmPage = this.breadcrumRing[this.pagerBrdCrm.previousPage - 1];\r\n // }\r\n this.pagerBrdCrm.nextPage = this.pagerPhotoMgmt.page + 1 <= this.pagerPhotoMgmt.totalItems ? this.pagerPhotoMgmt.page + 1 : this.pagerPhotoMgmt.page;\r\n // if (this.pagerBrdCrm.nextPage <= this.totalItems) {\r\n // this.pagerBrdCrm.nextBrdCrmPage = this.breadcrumRing[this.pagerBrdCrm.nextPage - 1];\r\n // }\r\n\r\n this.pagerBrdCrm.pageSize = this.pageSize;\r\n this.pagerBrdCrm.totalPagedBlocks = this.pagerPhotoMgmt.totalPages;\r\n //this.pagerBrdCrm.pagedStartPage = this.pagerPhotoMgmt.startPage;\r\n //this.pagerBrdCrm.pagedEndPage = this.pagerPhotoMgmt.endPage;\r\n this.pagerBrdCrm.pagedStartIndex = this.pagerPhotoMgmt.startIndex;\r\n this.pagerBrdCrm.pagedEndIndex = this.pagerPhotoMgmt.endIndex;\r\n this.pagerBrdCrm.pagedPages = this.pagerPhotoMgmt.pages;\r\n\r\n EmitterSubjectService.setPagerBreadcrum(this.pagerBrdCrm);\r\n return this.pagerBrdCrm;\r\n }\r\n // --------------------------------------------------\r\n public setPagerButtonImagByKvPhoto(kvImage: KvPhoto): any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvImage) && kvImage.value && kvImage.value.length > 0 && kvImage.photoId > 0) {\r\n const image = 'url(\\'' + kvImage.value + '\\')';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n const pageId = 'pagePmgmt-' + kvImage.itemNum.toString();\r\n const pElem = document.getElementById(pageId);\r\n // debugger;\r\n if (pElem) {\r\n // debugger;\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n this.renderer?.setStyle(pElem, 'background-image', image);\r\n }, 500);\r\n clearTimeout(this.timer);\r\n pElem.remove();\r\n }\r\n }\r\n }\r\n }\r\n // --------------------------------------------------\r\n // NOTE : All the image-setter methods are here:\r\n // Note : this method will simply set the background-image of all the numbered-pages (1...10 ->)\r\n // --------------------------------------------------\r\n // TODO : Test with setTimeout\r\n public setPagerButtonImagesByKvPhotoArr(kvImageArr: KvPhoto[]): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvImageArr) && kvImageArr.length > 0) {\r\n // debugger;\r\n kvImageArr.map(e => {\r\n this.setPagerButtonImagByKvPhoto(e);\r\n });\r\n }\r\n }\r\n // ------------------------------------------------------------\r\n public drawPagerButtons (pgrmgmt : any) : any{\r\n if (pgrmgmt && pgrmgmt.length > 0) {\r\n // debugger;\r\n return this.setPagerButtonImagesByKvPhotoArr(pgrmgmt.pagedKvPhotoArr);\r\n }\r\n }\r\n // ------------------------------------------------------------\r\n // API: End\r\n // ---------------------------------------------------------------\r\n}\r\n\r\n\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { PagerServiceInterface } from '../../interfaces/serviceInterfaces/pagerServicesInterfaces/pagerServiceInterface';\r\nimport { PagerBreadcrum } from '../../models/breadcrum/pagerBreadcrum.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { Pager } from '../../models/pagination/pager.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { BasicPagerService } from './basicPagerService.service';\r\n\r\ndeclare let jQuery: any;\r\n\r\ndeclare let $: any;\r\n\r\n@Injectable({ providedIn: 'any'})\r\nexport class PagerService extends BasicPagerService implements OnDestroy, PagerServiceInterface {\r\n public breadcrumArr: KvAny[] = [];\r\n public emitterDestroyed$: Subject = new Subject();\r\n public pics: string[] = [];\r\n // public profilePics: ProfilePics = new ProfilePics();\r\n public pager: Pager = new Pager();\r\n public pagerBrdCrm: PagerBreadcrum = new PagerBreadcrum();\r\n // public rendererService : RendererService;\r\n // public renderer!: Renderer2;\r\n // public stringService : StringService;\r\n public pagedKvPhotoArr: KvPhoto[] = [];\r\n public pagedBreadcrumArr: KvAny[] = [];\r\n public kvPhotoArr: KvPhoto[] = [];\r\n //public pageSize = 10;\r\n //public totalItems = 0;\r\n // ---------------------------------------------------------------\r\n constructor(\r\n private rendererService: RendererService,\r\n private router: Router,\r\n @Inject(DOCUMENT) document : any,\r\n @Inject(Window) window : any\r\n ) {\r\n super();\r\n if (this.rendererService) {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy(): void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n /*\r\n * ===============================================================\r\n * ---------------------------------------------------------------\r\n */\r\n public getImageKvArr(): KvPhoto[] {\r\n return this.kvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public setImageKvArr(imageArr: KvPhoto[]): void {\r\n this.kvPhotoArr = imageArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public getPagedKvPhotoArr(): KvPhoto[] {\r\n return this.pagedKvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public setPagedImagesKvArr(pagedImageArr: KvPhoto[]): void {\r\n this.pagedKvPhotoArr = pagedImageArr;\r\n // this.setGlyphicons(this.pagedGlyphsArr);\r\n }\r\n // ---------------------------------------------------------------\r\n public getPager(): Pager {\r\n return this.pager;\r\n }\r\n // ---------------------------------------------------------------\r\n public getPagerBreadcrum(): PagerBreadcrum {\r\n return this.pagerBrdCrm;\r\n }\r\n // ---------------------------------------------------------------\r\n public setPager(page: number): any {\r\n return this.setPagerWithImageKvArr(this.kvPhotoArr, page);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setPagerWithImageKvArr(pics: KvPhoto[], page: number): any {\r\n if (page < 1) {\r\n return;\r\n }\r\n this.pager.currentPageNo = page > 0 ? page : 1;\r\n\r\n if (pics && pics.length > 0) {\r\n this.pager.totalItems = pics.length;\r\n this.kvPhotoArr = this.pager.kvPhotoArr = pics;\r\n }\r\n this.pageSize = 10;\r\n\r\n /*\r\n * get pager object\r\n * (totalItems, currentPage, pageSize)\r\n */\r\n this.pager = this.GetPagerOfSize10(this.pager.totalItems, this.pager.currentPageNo, this.pageSize > 0 ? this.pageSize : 10);\r\n /*\r\n * debugger;\r\n * get current items of page\r\n */\r\n if (this.kvPhotoArr && this.kvPhotoArr.length > 0) {\r\n this.pagedKvPhotoArr = this.kvPhotoArr.slice(this.pager.startIndex, this.pager.endIndex + 1);\r\n if (this.pagedKvPhotoArr && this.pagedKvPhotoArr.length > 0) {\r\n // this.profilePics.pagedKvPhotoArr = this.pagedKvPhotoArr; //TODO: restore\r\n this.pager.pagedKvPhotoArr = this.pagedKvPhotoArr;\r\n }\r\n }\r\n /*\r\n * debugger;\r\n * this.emitterService.emitSetPage(page);\r\n * debugger;\r\n */\r\n return this.pager;\r\n /*\r\n * this.emitterService.emitPager(this.pager);\r\n * this.emitterService.emitPagedProfilePics(this.profilePics.pagedProfilePics);\r\n */\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n public setPageNumAndIndex (kvpArr : KvPhoto[]) : KvPhoto[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n\r\n for (var i = 0; i < kvpArr.length; i++) {\r\n kvpArr[ i ].itemNum = i + 1;\r\n kvpArr[ i ].index = i;\r\n }\r\n }\r\n return kvpArr;\r\n }\r\n // ---------------------------------------------------------------\r\n \r\n public setPagerOld(pics: string[], page: number): any {\r\n if (page < 1) {\r\n return;\r\n }\r\n this.pager.currentPageNo = page > 0 ? page : 1;\r\n\r\n if (pics && pics.length > 0) {\r\n this.pager.totalItems = pics.length;\r\n }\r\n /*\r\n * get pager object\r\n * (totalItems, currentPage, pageSize)\r\n */\r\n\r\n this.pager = this.GetPager(this.pager.totalItems, this.pager.currentPageNo, this.pageSize > 0 ? this.pageSize : 10);\r\n /*\r\n * debugger;\r\n * get current items of page\r\n */\r\n if (this.kvPhotoArr && this.kvPhotoArr.length > 0) {\r\n this.pagedKvPhotoArr = this.kvPhotoArr.slice(this.pager.startIndex, this.pager.endIndex + 1);\r\n if (this.pagedKvPhotoArr && this.pagedKvPhotoArr.length > 0) {\r\n // this.profilePics.pagedKvPhotoArr = this.pagedKvPhotoArr; // TODO: restore\r\n this.pager.pagedKvPhotoArr = this.pagedKvPhotoArr;\r\n // this.setPageImagesByKvImageArr(this.pagedKvPhotoArr);\r\n }\r\n }\r\n\r\n /*\r\n * let pElem = document.getElementById('page-' + page);\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pElem)) this.setPagerPic(this.pics, pElem, page);\r\n * debugger;\r\n */\r\n return this.pager;\r\n /*\r\n * this.emitterService.emitPager(this.pager);\r\n * this.emitterService.emitPagedProfilePics(this.profilePics.pagedProfilePics);\r\n */\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public setPagerKv(imageArr: KvPhoto[], page: number):any {\r\n // if (page < 1 || page > this.pager.totalPages) {\r\n if (page < 1) {\r\n return null;\r\n }\r\n if (imageArr && imageArr.length > 0) {\r\n this.kvPhotoArr = imageArr;\r\n }\r\n this.pager.currentPageNo = page;\r\n const totalItems = this.kvPhotoArr ? this.kvPhotoArr.length : 0;\r\n // get pager object from service\r\n\r\n this.kvPhotoArr = this.setPageNumAndIndex(this.kvPhotoArr);\r\n\r\n this.pager = this.setPagerUpTo10(imageArr, page); // this.GetPager(totalItems, page, this.pageSize);\r\n\r\n // get current page of items\r\n if (this.kvPhotoArr.length > 0) {\r\n this.pagedKvPhotoArr = this.kvPhotoArr.slice(this.pager.startIndex, this.pager.endIndex + 1);\r\n if (this.pagedKvPhotoArr && this.pagedKvPhotoArr.length > 0) {\r\n // this.profilePics.pagedKvPhotoArr = this.pagedKvPhotoArr; // TODO: restore\r\n this.pager.pagedKvPhotoArr = this.pagedKvPhotoArr;\r\n // this.setPageImagesByKvImageArr(this.pagedKvPhotoArr);\r\n }\r\n }\r\n \r\n this.pager.startPage = this.kvPhotoArr[ 0 ];\r\n this.pager.endPage = this.kvPhotoArr[ this.kvPhotoArr.length - 1 ];\r\n\r\n let index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo);\r\n if (index > -1) {\r\n this.pager.currentPage = this.kvPhotoArr[ index ];\r\n }\r\n \r\n index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo - 1);\r\n \r\n this.pager.nextPage = this.kvPhotoArr[ this.pager.currentPageNo + 1 ];\r\n index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo + 1);\r\n if (index > -1) {\r\n\r\n this.pager.previousPage = this.kvPhotoArr[ this.pager.currentPageNo - 1 ];\r\n }\r\n /*\r\n * this.emitterService.emitPager(this.pager);\r\n * this.emitterService.emitPagedProfileImages(this.pagedKvPhotoArr);\r\n */\r\n return this.pager;\r\n }\r\n // --------------------------------------------------\r\n public GetPager (totalItems : any, currentPage : any, pageSize : any): any {\r\n // default to first page\r\n currentPage = currentPage || 1;\r\n\r\n // default page size is 10\r\n pageSize = pageSize || 10;\r\n\r\n // calculate total pages\r\n const totalPages = Math.ceil(totalItems / pageSize);\r\n\r\n let startPage;\r\n let endPage;\r\n\r\n if (totalPages <= 10) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (currentPage <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (currentPage + 4 >= totalPages) {\r\n startPage = totalPages - 9;\r\n endPage = totalPages;\r\n } else {\r\n startPage = currentPage - 5;\r\n endPage = currentPage + 4;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n const startIndex = (currentPage - 1) * pageSize;\r\n const endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range(startPage, endPage, 1);\r\n\r\n // return object with all pager properties required by the view\r\n this.pager.totalItems = totalItems;\r\n this.pager.currentPageNo = currentPage;\r\n this.pager.pageSize = pageSize;\r\n this.pager.totalPages = totalPages;\r\n this.pager.startPageNo = startPage;\r\n this.pager.endPageNo = endPage;\r\n this.pager.startIndex = startIndex;\r\n this.pager.endIndex = endIndex;\r\n this.pager.pages = pages;\r\n this.pager.startPage = this.kvPhotoArr[ 0 ];\r\n this.pager.endPage = this.kvPhotoArr[ this.kvPhotoArr.length - 1 ];\r\n\r\n let index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo);\r\n if (index > -1) {\r\n this.pager.currentPage = this.kvPhotoArr[ index ];\r\n }\r\n if (index > -1) {\r\n index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo - 1);\r\n }\r\n this.pager.nextPage = this.kvPhotoArr[ this.pager.currentPageNo - 1 ];\r\n index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo + 1);\r\n if (index > -1) {\r\n\r\n this.pager.previousPage = this.kvPhotoArr[ this.pager.currentPageNo + 1 ];\r\n }\r\n \r\n return this.pager;\r\n }\r\n // --------------------------------------------------\r\n public range (min : any, max : any, delta : any): any {\r\n const arr : any[] = [];\r\n let stepCount;\r\n\r\n if (min && !max && !delta) {\r\n for (let i = 0; i < min; i++) {\r\n arr[i] = i + 1;\r\n }\r\n } else {\r\n if (min && max && !delta) {\r\n stepCount = max - min;\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i + min);\r\n }\r\n } else {\r\n stepCount = Math.floor((max - min) / delta);\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i * delta + min);\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : The following methods are optional giving more page selections:\r\n *\r\n * The setPagerUpTo10() method returns a 'Pager' of size 5 if the total elements are <=5\r\n * or a pager of size 10 if the elements are >5.\r\n * Also if it produces a pager of size 10, it also produces a 'PagerBreadcrum' of sixe 10.\r\n *\r\n * You can obtain the 'PagerBreadcrum' via the api : getPagerBreadcrum();\r\n * ---------------------------------------------------------------\r\n */\r\n public setPagerUpTo10(pics: KvPhoto[], page: number): any {\r\n if (page < 1) {\r\n return;\r\n }\r\n this.pager.currentPageNo = page > 0 ? page : 1;\r\n\r\n if (pics && pics.length > 0) {\r\n this.pager.totalItems = pics.length;\r\n this.kvPhotoArr = this.pager.kvPhotoArr = pics;\r\n }\r\n let i = 0;\r\n for (let kv of this.kvPhotoArr) {\r\n kv.itemNum = (i + 1);\r\n i++;\r\n }\r\n this.pageSize = 10;\r\n\r\n // get pager object\r\n if (this.pager.totalItems <= 5) {\r\n this.pager = this.GetPagerOfSize5(this.pager.totalItems, this.pager.currentPageNo, this.pageSize > 0 ? this.pageSize : 5);\r\n } else {\r\n // (totalItems, currentPage, pageSize)\r\n this.pager = this.GetPagerOfSize10(this.pager.totalItems, this.pager.currentPageNo, this.pageSize > 0 ? this.pageSize : 10);\r\n }\r\n /*\r\n * debugger;\r\n * get current items of page\r\n */\r\n if (this.kvPhotoArr && this.kvPhotoArr.length > 0) {\r\n this.pagedKvPhotoArr = this.kvPhotoArr.slice(this.pager.startIndex, this.pager.endIndex + 1);\r\n if (this.pagedKvPhotoArr && this.pagedKvPhotoArr.length > 0) {\r\n // this.profilePics.pagedKvPhotoArr = this.pagedKvPhotoArr; // TODO: restore\r\n // this.setPageImagesByKvImageArr(this.pagedKvPhotoArr);\r\n this.pager.pagedKvPhotoArr = this.pagedKvPhotoArr;\r\n }\r\n }\r\n /*\r\n * this.pager.pagedImageKvArr = this.pagedKvPhotoArr;\r\n * this.setPageClass(page);\r\n * debugger;\r\n */\r\n return this.pager;\r\n /*\r\n * this.emitterService.emitPager(this.pager);\r\n * this.emitterService.emitPagedProfilePics(this.profilePics.pagedProfilePics);\r\n */\r\n }\r\n // --------------------------------------------------\r\n public GetPagerOfSize10 (totalItems : any, currentPage : any, pageSize : any): any {\r\n // default to first page\r\n this.pager.currentPageNo = currentPage > 0 ? currentPage : 1;\r\n this.pager.totalItems = totalItems > 0 ? totalItems : 1;\r\n // default page size is 10\r\n this.pageSize = pageSize > 0 ? pageSize : 10;\r\n\r\n // calculate total pages\r\n const totalPages = Math.ceil(this.pager.totalItems / this.pageSize);\r\n\r\n let startPage;\r\n let endPage;\r\n\r\n if (totalPages <= 10) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (this.pager.currentPageNo <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (this.pager.currentPageNo + 4 >= totalPages) {\r\n startPage = totalPages - 9;\r\n endPage = totalPages;\r\n } else {\r\n startPage = this.pager.currentPageNo - 5;\r\n endPage = this.pager.currentPageNo + 4;\r\n }\r\n }\r\n\r\n /*\r\n * calculate start and end item indexes\r\n * Updated version:\r\n * ------------------\r\n */\r\n const startIndex = totalItems <= this.pageSize ? this.pager.currentPageNo - 1 : this.pager.currentPageNo > this.pageSize && this.pageSize < totalPages ? (this.pager.currentPageNo - 1) * this.pageSize : 0;\r\n const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), this.pager.totalItems > 1 ? this.pager.totalItems - 1 : this.pager.totalItems);\r\n\r\n /*\r\n * original version:\r\n * ------------------\r\n * let startIndex = (this.currentPage - 1) * this.pageSize;\r\n * let endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1\r\n * : this.pageSize), (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n * create an array of pages to ng-repeat in the pager control\r\n */\r\n const pages = this.range(startPage, endPage, 1);\r\n\r\n // return object with all the pager properties required by the view\r\n this.pagerBrdCrm = new PagerBreadcrum();\r\n this.pagerBrdCrm.totalItems = this.pager.totalItems;\r\n this.pagerBrdCrm.currentPage = pages[ this.pager.currentPageNo];\r\n // this.pagerBrdCrm.currentBrdCrmPage = this.breadcrumRing[this.currentPage - 1];\r\n this.pagerBrdCrm.previousPage = pages[ this.pager.currentPageNo - 1 >= 1 ? this.pager.currentPageNo - 1 : this.pager.currentPageNo];\r\n // if (this.pagerBrdCrm.previousPage >= 1) this.pagerBrdCrm.previousBrdCrmPage = this.breadcrumRing[this.pagerBrdCrm.previousPage - 1];\r\n this.pagerBrdCrm.nextPage = pages[ this.pager.currentPageNo + 1 <= totalItems ? this.pager.currentPageNo + 1 : this.pager.currentPageNo];\r\n // if (this.pagerBrdCrm.nextPage <= this.totalItems) this.pagerBrdCrm.nextBrdCrmPage = this.breadcrumRing[this.pagerBrdCrm.nextPage - 1];\r\n this.pagerBrdCrm.pageSize = this.pageSize;\r\n this.pagerBrdCrm.totalPagedBlocks = totalPages;\r\n this.pagerBrdCrm.pagedStartPage = startPage;\r\n this.pagerBrdCrm.pagedEndPage = endPage;\r\n this.pagerBrdCrm.pagedStartIndex = startIndex;\r\n this.pagerBrdCrm.pagedEndIndex = endIndex;\r\n this.pagerBrdCrm.pagedPages = pages;\r\n\r\n return this.pager; // (this.pager = this.copyService.copyFromPagerBreadcrumToPager(this.pagerBrdCrm)); // TODO: restore\r\n }\r\n\r\n // --------------------------------------------------\r\n public GetPagerOfSize5 (totalItems : any, currentPage : any, pageSize : any): any {\r\n // default to first page\r\n this.pager.currentPageNo = currentPage > 0 ? currentPage : 1;\r\n this.pager.totalItems = totalItems > 0 ? totalItems : 1;\r\n // default page size is 10\r\n this.pageSize = pageSize > 0 ? pageSize : 5;\r\n\r\n // calculate total pages\r\n const totalPages = Math.ceil(this.pager.totalItems / this.pageSize);\r\n\r\n let startPage;\r\n let endPage;\r\n\r\n if (totalPages <= 5) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (this.pager.currentPageNo <= 3) {\r\n startPage = 1;\r\n endPage = 5;\r\n } else if (this.pager.currentPageNo + 2 >= totalPages) {\r\n startPage = totalPages - 4;\r\n endPage = totalPages;\r\n } else {\r\n startPage = this.pager.currentPageNo - 3;\r\n endPage = this.pager.currentPageNo + 2;\r\n }\r\n }\r\n\r\n /*\r\n * calculate start and end item indexes\r\n * Updated version:\r\n * ------------------\r\n */\r\n const startIndex = totalItems <= this.pageSize ? this.pager.currentPageNo - 1 : this.pager.currentPageNo > this.pageSize && this.pageSize < totalPages ? (this.pager.currentPageNo - 1) * this.pageSize : 0;\r\n const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), this.pager.totalItems > 1 ? this.pager.totalItems - 1 : this.pager.totalItems);\r\n\r\n /*\r\n * original version:\r\n * ------------------\r\n * let startIndex = (this.currentPage - 1) * this.pageSize;\r\n * let endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), (this.totalItems > 1 ?\r\n * this.totalItems - 1 : this.totalItems));\r\n */\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range(startPage, endPage, 1);\r\n\r\n // return object with all pager properties required by the view\r\n this.pager.totalItems = this.pager.totalItems;\r\n this.pager.currentPageNo = this.pager.currentPageNo;\r\n this.pager.pageSize = this.pageSize;\r\n this.pager.totalPages = totalPages;\r\n this.pager.startPageNo = startPage;\r\n this.pager.endPageNo = endPage;\r\n this.pager.startIndex = startIndex;\r\n this.pager.endIndex = endIndex;\r\n this.pager.pages = pages;\r\n this.pager.startPage = this.kvPhotoArr[ 0 ];\r\n this.pager.endPage = this.kvPhotoArr[ this.kvPhotoArr.length - 1 ];\r\n\r\n let index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo);\r\n if (index > -1) {\r\n this.pager.currentPage = this.kvPhotoArr[ index ];\r\n }\r\n if (index > -1) {\r\n index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo - 1);\r\n }\r\n this.pager.nextPage = this.kvPhotoArr[ this.pager.currentPageNo - 1 ];\r\n index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo + 1);\r\n if (index > -1) {\r\n\r\n this.pager.previousPage = this.kvPhotoArr[ this.pager.currentPageNo + 1 ];\r\n }\r\n \r\n return this.pager;\r\n }\r\n /*\r\n * --------------------------------------------------\r\n * NOTE : All the image-setter methods are here:\r\n * Note : this method will simply set the background-image of all the numbered-pages (1...10 ->)\r\n * --------------------------------------------------\r\n * TODO : Test with setTimeout\r\n */\r\n public setPagerImagesByKvImageArr(kvImageArr: KvAny[]): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvImageArr) && kvImageArr.length > 0) {\r\n // debugger;\r\n kvImageArr.map((e) => {\r\n // debugger;\r\n const image = 'url(\\'' + e.value + '\\')';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n const pageId = 'pagePmgmt-' + (e.id + 1);\r\n // debugger;\r\n const pElem = document.getElementById(pageId);\r\n\r\n if (pElem) {\r\n // debugger;\r\n this.renderer?.setStyle(pElem, 'backgroumd-image', image);\r\n pElem.remove();\r\n }\r\n }\r\n // debugger;\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setStyleProperties(properties:any = { }):void {\r\n Object.keys(properties).forEach((k : any) => document.documentElement.style.setProperty(`--${ k }`, properties[ k ])); // Sayeed: Experimental: 'k.id'\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setPagerImage(page: any): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(page)) {\r\n let pageId;\r\n\r\n if (page > -1) {\r\n pageId = 'page-' + page;\r\n } else if (page.length > 5 && page.indexOf('page') !== -1) {\r\n pageId = page;\r\n }\r\n const pElem = document.getElementById(pageId);\r\n // debugger;\r\n\r\n if (pElem) {\r\n switch (pageId.toLowerCase()) {\r\n // Note :\r\n case 'page-F':\r\n case 'page-prev':\r\n case 'page-next':\r\n case 'page-L':\r\n /*\r\n * this.pagedGlyphsArr.map(e => {\r\n * if (!this.elementHasThisClass(pElem, 'pagerRotate')) {\r\n * debugger;\r\n * this.renderer?.addClass(pElem, 'pagerRotate');\r\n * }\r\n * });\r\n * Do nothing\r\n */\r\n break;\r\n default:\r\n let image;\r\n let pNum : any;\r\n\r\n if (page > -1) {\r\n pNum = page;\r\n } else {\r\n const parts = pageId.split('-');\r\n\r\n if (parts?.length === 2) {\r\n pNum = parseInt(parts[1], 10);\r\n }\r\n }\r\n this.pagedKvPhotoArr.map((e) => {\r\n if (e.photoId === pNum) {\r\n image = e.value;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n // debugger;\r\n this.renderer?.setStyle(pElem, 'backgroumd-image', 'url(\\'' + image + '\\')');\r\n }\r\n }\r\n });\r\n }\r\n // this.renderer?.setStyle(pElem, 'transform', 'rotate(45deg)');\r\n }\r\n if (pElem) {\r\n pElem.remove();\r\n\t\t\t}\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ***************************************************************\r\n * ---------------------------------------------------------------\r\n * Begin of Breadcrum functionalities:\r\n *\r\n * Note : These following methods were part of the early-scheme,\r\n * which did not work 100%, and was longer-code-base.\r\n *\r\n * Some of these methods are used/based to build the new\r\n * Breadcrum-System.\r\n * ---------------------------------------------------------------\r\n * ***************************************************************\r\n * ---------------------------------------------------------------\r\n */\r\n public setPagerBreadcrum(brdcrmArr: KvAny[], page: number): any {\r\n // if (page < 1 || page > this.pager.totalPages) {\r\n if (page < 1) {\r\n return null;\r\n }\r\n if (brdcrmArr && brdcrmArr.length > 0) {\r\n this.breadcrumArr = brdcrmArr;\r\n }\r\n this.pager.currentPageNo = page;\r\n const totalItems = this.breadcrumArr ? this.breadcrumArr.length : 0;\r\n // get pager object from service\r\n\r\n this.pagerBrdCrm = this.GetPagerBreadcrum(totalItems, this.pager.currentPageNo, this.pageSize);\r\n\r\n /*\r\n * this.emitterService.emitPager(this.pager);\r\n * this.emitterService.emitPagedProfileImages(this.pagedKvPhotoArr);\r\n */\r\n return this.pagerBrdCrm;\r\n }\r\n // --------------------------------------------------\r\n GetPagerBreadcrum (totalItems : any, currentPage : any, pageSize : any): PagerBreadcrum {\r\n // default to first page\r\n this.pager.currentPageNo = currentPage > 0 ? currentPage : 1;\r\n this.pager.totalItems = totalItems > 0 ? totalItems : 1;\r\n // default page size is 10\r\n this.pageSize = pageSize > 0 ? pageSize : 10;\r\n\r\n // calculate total pages\r\n const totalPages = Math.ceil(this.pager.totalItems / this.pageSize);\r\n\r\n let startPage;\r\n let endPage;\r\n\r\n if (totalPages <= 10) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (this.pager.currentPageNo <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (this.pager.currentPageNo + 4 >= totalPages) {\r\n startPage = totalPages - 9;\r\n endPage = totalPages;\r\n } else {\r\n startPage = this.pager.currentPageNo - 5;\r\n endPage = this.pager.currentPageNo + 4;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n const startIndex =\r\n this.pager.currentPageNo - 1 <= this.pageSize - 1 ? this.pager.currentPageNo - 1 : this.pager.currentPageNo > this.pageSize && this.pager.currentPageNo < totalPages ? this.pager.currentPageNo - 1 : (this.pager.currentPageNo - 1) % this.pageSize;\r\n const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), this.pager.totalItems > 1 ? this.pager.totalItems - 1 : this.pager.totalItems - 1);\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range(startPage, endPage, 1);\r\n\r\n // return object with all pager properties required by the view\r\n this.pagerBrdCrm.totalItems = this.pager.totalItems;\r\n this.pagerBrdCrm.currentPage = pages[this.pager.currentPageNo];\r\n this.pagerBrdCrm.pageSize = this.pageSize;\r\n this.pagerBrdCrm.totalPagedBlocks = totalPages;\r\n this.pagerBrdCrm.pagedStartPage = startPage;\r\n this.pagerBrdCrm.pagedEndPage = endPage;\r\n this.pagerBrdCrm.pagedStartIndex = startIndex;\r\n this.pagerBrdCrm.pagedEndIndex = endIndex;\r\n this.pagerBrdCrm.pagedPages = pages;\r\n return this.pagerBrdCrm;\r\n }\r\n // --------------------------------------------------\r\n public displayBreadcrumButtons(kvArr: KvAny[]): void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvArr) && kvArr.length > 0) {\r\n /*\r\n * this.pagerService.setImageKvArr(kvArr);\r\n * this.pagerService.setPagerImagesByKvImageArr(kvArr); //TODO : Test with setTimeout\r\n * debugger;\r\n */\r\n kvArr.map((e) => {\r\n setTimeout(() => {\r\n // debugger;\r\n if (e && e.value && e.id > -1) {\r\n const elemId = 'pageBrdcrm-' + (e.id + 1);\r\n\r\n this.setButtonImage(e.value, elemId);\r\n }\r\n }, 500);\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setButtonImage(image: string, elemId: string): void {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n const tempElem = document.getElementById(elemId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n // debugger;\r\n const tImage = 'url(\\'' + image + '\\')';\r\n\r\n this.renderer?.setStyle(tempElem, 'background-image', tImage);\r\n tempElem.remove();\r\n /*\r\n * this.renderer?.setStyle(tempElem, 'transform', 'rotate(45deg)');\r\n * debugger;\r\n */\r\n }\r\n }\r\n }\r\n /*\r\n * ***************************************************************\r\n * ---------------------------------------------------------------\r\n * End of Breadcrum functionalities:\r\n * ---------------------------------------------------------------\r\n * ***************************************************************\r\n * ===============================================================\r\n * Note : Not used at the moment, and may need to be updated in accordance with setPage()\r\n * ---------------------------------------------------------------\r\n */\r\n public setPageOfProfilePics (profilePics : any, page : any): any {\r\n if (profilePics && profilePics.profileImageArr && profilePics.profileImageArr?.length > 0) {\r\n // this.profilePics = profilePics; // TODO: restore\r\n }\r\n if (page < 0) {\r\n return;\r\n }\r\n\r\n this.pager.currentPageNo = page;\r\n const totalItems = profilePics ? profilePics?.profileImageArr?.length : 0;\r\n // get pager object from service\r\n\r\n this.pager = this.GetPager(totalItems, page, 10); // (totalItems, currentPage, pageSize)\r\n\r\n // get current page of items\r\n if (profilePics && profilePics?.profileImageArr && profilePics?.profileImageArr?.length > 0) {\r\n const profileImageArr = profilePics.profileImageArr.slice(this.pager.startIndex, this.pager.endIndex + 1);\r\n\r\n if (profileImageArr && profileImageArr.length > 0) {\r\n profileImageArr.map((e : any) => {\r\n // this.profilePics.pagedProfilePics.push(e.image); // TODO: restore\r\n });\r\n }\r\n }\r\n /*\r\n * let pElem = document.getElementById('page-' + page);\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pElem)) this.setPagerPic(this.pics, pElem, page);\r\n */\r\n return this.pager;\r\n /*\r\n * this.emitterService.emitPager(this.pager);\r\n * this.emitterService.emitPagedProfilePics(this.profilePics.pagedProfilePics);\r\n */\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public elementHasThisClass(pElem: any, glyph: string): boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(glyph)) {\r\n if ($(this).hasClass(glyph)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setPagerPic(pics: string[], pElem: any, page: number): any {\r\n if (page > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pics) && pics.length > 0) {\r\n let i = 0;\r\n\r\n this.pics.map((e) => {\r\n ++i;\r\n if (i + 1 === page) {\r\n this.renderer?.setStyle(pElem, 'background-image', 'url(\\'' + pics[i] + '\\')');\r\n }\r\n });\r\n }\r\n }\r\n /*\r\n * ==================================================\r\n * --------------------------------------------------\r\n * Deprecated!\r\n * --------------------------------------------------\r\n */\r\n // GetPagerOriginal(totalItems, currentPage, pageSize) {\r\n // // default to first page\r\n // this.pager.currentPageNo = currentPage > 0 ? currentPage : 1;\r\n // this.totalItems = totalItems > 0 ? totalItems : 1;\r\n // // default page size is 10\r\n // this.pageSize = pageSize > 0 ? pageSize : 10;\r\n\r\n // // calculate total pages\r\n // const totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n // let startPage;\r\n // let endPage;\r\n\r\n // if (totalPages <= 10) {\r\n // // less than 10 total pages so show all\r\n // startPage = 1;\r\n // endPage = totalPages;\r\n // } else {\r\n // // more than 10 total pages so calculate start and end pages\r\n // if (this.pager.currentPageNo <= 6) {\r\n // startPage = 1;\r\n // endPage = 10;\r\n // } else if (this.pager.currentPageNo + 4 >= totalPages) {\r\n // startPage = totalPages - 9;\r\n // endPage = totalPages;\r\n // } else {\r\n // startPage = this.pager.currentPageNo - 5;\r\n // endPage = this.pager.currentPageNo + 4;\r\n // }\r\n // }\r\n\r\n // // calculate start and end item indexes\r\n // const startIndex = (this.pager.currentPageNo - 1) * this.pageSize;\r\n // const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), this.totalItems > 1 ? this.totalItems - 1 : this.totalItems);\r\n\r\n // // create an array of pages to ng-repeat in the pager control\r\n // const pages = this.range(startPage, endPage, 1);\r\n\r\n // // return object with all pager properties required by the view\r\n // this.pager.totalItems = this.totalItems;\r\n // this.pager.currentPageNo = this.pager.currentPageNo;\r\n // this.pager.pageSize = this.pageSize;\r\n // this.pager.totalPages = totalPages;\r\n // this.pager.startPageNo = startPage;\r\n // this.pager.endPageNo = endPage;\r\n // this.pager.startIndex = startIndex;\r\n // this.pager.endIndex = endIndex;\r\n // this.pager.pages = pages;\r\n // this.pager.pages.firstPage = this.kvPhotoArr[ 0 ];\r\n // this.pager.pages.lastPage = this.kvPhotoArr[ this.kvPhotoArr.length - 1 ];\r\n\r\n // let index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo);\r\n // if (index > -1) {\r\n // this.pager.pages.currentPage = this.kvPhotoArr[ index ];\r\n // }\r\n // if (index > -1) {\r\n // index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo - 1);\r\n // }\r\n // this.pager.pages.nextPage = this.kvPhotoArr[ this.pager.currentPageNo - 1 ];\r\n // index = ArrayServiceStatic.getIndexOfItemByPageNumInKvPhotoArr(this.kvPhotoArr, this.pager.currentPageNo + 1);\r\n // if (index > -1) {\r\n\r\n // this.pager.pages.previousPage = this.kvPhotoArr[ this.pager.currentPageNo + 1 ];\r\n // }\r\n // return this.pager;\r\n // }\r\n /*\r\n * --------------------------------------------------\r\n * Deprecated!\r\n * --------------------------------------------------\r\n */\r\n // rangeOriginal(min, max, delta) {\r\n // const arr : any[] = [];\r\n // let stepCount;\r\n\r\n // if (min && !max && !delta) {\r\n // for (let i = 0; i < min; i++) {\r\n // arr[i] = i + 1;\r\n // }\r\n // } else {\r\n // if (min && max && !delta) {\r\n // stepCount = max - min;\r\n // for (let i = 0; i <= stepCount; i++) {\r\n // arr.push(i + min);\r\n // }\r\n // } else {\r\n // stepCount = Math.floor((max - min) / delta);\r\n // for (let i = 0; i <= stepCount; i++) {\r\n // arr.push(i * delta + min);\r\n // }\r\n // }\r\n // }\r\n // return arr;\r\n // }\r\n // --------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Chat } from '../../models/chat/chat.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { Pager } from '../../models/pagination/pager.model';\r\nimport { PagerChat } from '../../models/pagination/pagerChat.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ChatService } from '../communicationServiceService/chatService';\r\nimport { CommunicationServiceService } from '../communicationServiceService/communicationServiceService.service';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\ndeclare let jQuery: any;\r\ndeclare let $: any;\r\n\r\n@Injectable({\r\n providedIn : 'any'\r\n})\r\n\r\n// ---------------------------------------------------------------\r\n// Note : For any future Pager Reference, this should be used.\r\n// ---------------------------------------------------------------\r\nexport class PagerServiceChatHistory implements OnDestroy {\r\n // public chatService! : ChatService;\r\n public chat: Chat = new Chat();\r\n public chats: Chat[] = [];\r\n public currentPage = 1;\r\n public emitterDestroyed$: Subject = new Subject();\r\n public lastPage = 1;\r\n public isLastPage = false;\r\n public pagedChats : Chat[] = [];\r\n public pagedChatArr : Chat[] = [];\r\n public pagerChat: PagerChat = new PagerChat();\r\n public pageSize = 10;\r\n public tempElem: any;\r\n public totalItems = 0;\r\n // ---------------------------------------------------------------\r\n constructor (/*private communicationServiceService: CommunicationServiceService,*/\r\n ) {\r\n // if (this.communicationServiceService) this.chatService = this.communicationServiceService.getChatService();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // =============================================================== \r\n getPagedChats () : Chat[] {\r\n return this.pagedChats;\r\n }\r\n // ---------------------------------------------------------------\r\n getPagerChat(): PagerChat {\r\n this.pagerChat = this.setPagerChat(1);\r\n return this.pagerChat;\r\n }\r\n\r\n // --------------------------------------------\r\n public sortChats (chats : Chat[], isAsc : boolean) : Chat[] {\r\n if (isAsc) {\r\n return chats.sort((a, b) => (a.communicationActivityId as number) - (b.communicationActivityId as number));\r\n }\r\n else {\r\n return chats.sort((a, b) => (b.communicationActivityId as number) - (a.communicationActivityId as number));\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n setChats(chats: Chat[]): void {\r\n this.chats = chats;\r\n }\r\n // ---------------------------------------------------------------\r\n setPager(page: number): any {\r\n // returnthis.setPagerUpTo15(this.chats, page);\r\n return this.setPagerChatDynamic(this.chats, page, 10);\r\n }\r\n // ---------------------------------------------------------------\r\n setPagerChat (page : number) : any {\r\n // returnthis.setPagerUpTo15(this.chats, page);\r\n return this.setPagerChatDynamic(this.chats, page, 15);\r\n }\r\n // ---------------------------------------------------------------\r\n public setPagerChatDynamic (chats : Chat[], page : number, pageSize: number) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chats) && chats.length > 0) {\r\n this.chats = chats;\r\n if (this.chats && this.chats.length > 0) {\r\n this.totalItems = this.chats.length;\r\n }\r\n this.pageSize = pageSize > 0 ? pageSize : 15;\r\n\r\n this.currentPage = page > 0 ? page : 1;\r\n // ---------------\r\n // backup:\r\n // -------\r\n //chats = chats.sort((a, b) => b.chatActivityId - a.chatActivityId);\r\n\r\n //// get pager object\r\n //this.pagerChat = this.GetPagerChatDynamic(this.totalItems, this.currentPage, this.pageSize);\r\n\r\n //var isAsc = false;\r\n //this.pagerChat.chats = this.sortChats(this.chats, isAsc);\r\n //this.pagerChat.pagedChats = this.chats.slice(this.pagerChat.startIndex, this.pagerChat.endIndex);\r\n // ---------------\r\n chats = chats.sort((a, b) => b.chatActivityId - a.chatActivityId);\r\n\r\n // get pager object\r\n this.pagerChat = this.GetPagerChatDynamic(this.totalItems, this.currentPage, this.pageSize);\r\n\r\n var isAsc = false;\r\n this.pagerChat.chats = this.chats = chats;\r\n this.pagerChat.pagedChats = this.chats.slice(this.pagerChat.startIndex, this.pagerChat.endIndex);\r\n \r\n // debugger;\r\n \r\n\r\n // ------------------------------------------------------------------------------------------------------\r\n // get current items of page\r\n // NOTE : We do not follow these steps. Instead we reverse the chats upon constructing a conversation.\r\n // Note : because we want to see the most-recent-messages near the Chat Message Console, we do the following steps:\r\n // Step-1 : We sort the messages in descending order(with isAsc == false)\r\n // Step-2 : Then we take a slice for PagedChatArr\r\n // Step-3 : Then the pagedChatArr are sorted in Ascending order (isAsc==true)\r\n // for the most - recent - message to appear near the Chat Message Console.\r\n // let reversedChats = this.reverseChats(this.pagerChat.chats, false); // Step-1\r\n // debugger;\r\n // this.pagedChatArr = reversedChats.slice(this.pagerChat.startIndex, this.pagerChat.endIndex); // Step-2\r\n // debugger;\r\n // this.pagedChatArr = this.reverseChats(this.pagedChatArr, true); // Step-3\r\n\r\n // ------------------------------------------------------------------------------------------------------\r\n\r\n // this.pagerChat.currentBrdCrmPage = this.breadcrumRing[this.currentPage - 1];\r\n // this.pagerChat.previousPage = this.currentPage - 1 >= 1 ? this.currentPage - 1 : this.currentPage;\r\n // if (this.pagerChat.previousPage >= 1) {\r\n // this.pagerChat.previousBrdCrmPage = this.breadcrumRing[this.pagerChat.previousPage - 1];\r\n // }\r\n // this.pagerChat.nextPage = this.currentPage + 1 <= totalItems ? this.currentPage + 1 : this.currentPage;\r\n // if (this.pagerChat.nextPage <= this.totalItems) {\r\n // this.pagerChat.nextBrdCrmPage = this.breadcrumRing[this.pagerChat.nextPage - 1];\r\n // }\r\n // ------------------------------------------------------------------------------------------------------\r\n\r\n \r\n\r\n // debugger;\r\n EmitterSubjectService.emitPager(this.pagerChat);\r\n return this.pagerChat;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note : The following methods are optional giving more page selections:\r\n //\r\n // The setPagerUpTo15() method returns a 'Pager' of size 5 if the total elements are <=5\r\n // or a pager of size 10 if the total elements are >5 but < 15, and 15 otherwise.\r\n // Also if it produces a pager of size 10, it also produces a 'PagerBreadcrum' of sixe 10.\r\n //\r\n // You can obtain the 'PagerBreadcrum' via the api : getPagerBreadcrum();\r\n // ---------------------------------------------------------------\r\n // public setChatPagerUpTo15(chats: Chat[], page: number): any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chats) && chats.length > 0) {\r\n // this.chats = chats;\r\n // if (this.chats && this.chats.length > 0) {\r\n // this.totalItems = this.chats.length;\r\n // }\r\n // this.pageSize = 15;\r\n // this.currentPage = page > 0 ? page : 1;\r\n // // get pager object\r\n // if (this.totalItems <= 5) {\r\n // this.pagerChat = this.GetPagerOfSize5(this.totalItems, this.currentPage, this.pageSize > 0 ? this.pageSize : 5);\r\n // }\r\n // //else if (this.totalItems <= 10) {\r\n // // // (totalItems, currentPage, pageSize)\r\n // // // this.pager = this.GetPagerOfSize10(this.totalItems, this.currentPage, this.pageSize > 0 ? this.pageSize : 10);\r\n // //}\r\n // else {\r\n // // (totalItems, currentPage, pageSize)\r\n // this.pagerChat = this.GetPagerOfSize15(this.totalItems, this.currentPage, this.pageSize > 0 ? this.pageSize : 15);\r\n // }\r\n \r\n // ------------------------------------------------------------------------------------------------------\r\n // get current items of page\r\n // NOTE : We do not follow these steps. Instead we reverse the chats upon constructing a conversation.\r\n // Note : because we want to see the most-recent-messages near the Chat Message Console, we do the following steps:\r\n // Step-1 : We sort the messages in descending order(with isAsc == false)\r\n // Step-2 : Then we take a slice for PagedChatArr\r\n // Step-3 : Then the pagedChatArr are sorted in Ascending order (isAsc==true)\r\n // for the most - recent - message to appear near the Chat Message Console.\r\n // let reversedChats = this.reverseChats(this.pagerChat.chats, false); // Step-1\r\n // debugger;\r\n // this.pagedChatArr = reversedChats.slice(this.pagerChat.startIndex, this.pagerChat.endIndex); // Step-2\r\n // debugger;\r\n // this.pagedChatArr = this.reverseChats(this.pagedChatArr, true); // Step-3\r\n // ------------------------------------------------------------------------------------------------------\r\n // debugger;\r\n \r\n // this.pagerChat.chats = this.chats;\r\n // // debugger;\r\n // this.pagedChats = this.chats.slice(this.pagerChat.startIndex, this.pagerChat.endIndex + 1);\r\n // // debugger;\r\n\r\n // // the pagedChats are reversed because\r\n // // we want to display the latest message \r\n // // closer to the chat-message-typing-UI.\r\n // // --------------------------------------\r\n // this.pagerChat.pagedChats = ArraySupportServiceStatic.reverseArrayOnItself(this.pagedChats);\r\n\r\n // EmitterSubjectService.emitPager(this.pagerChat);\r\n // return this.pagerChat;\r\n // }\r\n // }\r\n // --------------------------------------------------\r\n private range (min : any, max : any, delta? : any) {\r\n const arr : any[] = [];\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(delta)) {\r\n delta = 0.5;\r\n\t\t}\r\n let stepCount;\r\n if (min && !max && !delta) {\r\n for (let i = 0; i < min; i++) {\r\n arr[i] = i + 1;\r\n }\r\n } else {\r\n if (min && max && !delta) {\r\n stepCount = (max - min);\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i + min);\r\n }\r\n } else {\r\n stepCount = Math.floor((max - min) / delta);\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i * delta + min);\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n // --------------------------------------------------\r\n // Can be used for any array. \r\n // just the array's totalItems, currentPage and pageSize are required.\r\n // will give a pager from 1 upto 10.\r\n // Note: this algorithm implicitely equates pageSize to pagedItems, \r\n // i.e.pageSize === itemSize\r\n // --------------------------------------------------\r\n public GetPagerChatDynamic (totalItems : any, currentPageNo : any, pageSize ?: any) : any {\r\n // default to first page\r\n let cPageNo = currentPageNo > 0 ? currentPageNo : 1;\r\n let tItems = totalItems > 0 ? totalItems : 1;\r\n // default page size is 10\r\n let pSize = pageSize > 0 ? pageSize : 10;\r\n\r\n // calculate total pages\r\n let totalPageNo = 0;\r\n if (tItems < pSize) {\r\n totalPageNo= 1;\r\n }\r\n else {\r\n totalPageNo = Math.ceil(tItems / pSize);\r\n }\r\n // debugger;\r\n // calculate start and end item indexes\r\n // updated version-2: Date: 20231016:\r\n // ----------------------------------\r\n let startPageNo;\r\n let endPageNo;\r\n if (totalPageNo <= 10) {\r\n // less than 10 total pages so show all\r\n startPageNo = 1;\r\n endPageNo = totalPageNo;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (cPageNo <= 6) {\r\n startPageNo = 1;\r\n endPageNo = 10;\r\n } else if (this.currentPage + 4 >= totalPageNo) {\r\n startPageNo = totalPageNo - 9;\r\n endPageNo = totalPageNo;\r\n } else {\r\n startPageNo = this.currentPage - 5;\r\n endPageNo = this.currentPage + 4;\r\n }\r\n }\r\n\r\n let startIndex = (cPageNo - 1) * this.pageSize;\r\n let endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1\r\n : this.pageSize), (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n\r\n // debugger;\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range(startPageNo, endPageNo, 1);\r\n\r\n this.pagerChat.totalItems = tItems;\r\n this.pagerChat.currentPageNo = cPageNo;\r\n this.pagerChat.pageSize = pSize;\r\n this.pagerChat.startPageNo = startPageNo;\r\n this.pagerChat.endPageNo = endPageNo;\r\n this.pagerChat.startIndex = startIndex;\r\n this.pagerChat.endIndex = endIndex;\r\n this.pagerChat.pages = pages;\r\n this.pagerChat.totalPageNo = totalPageNo;\r\n this.pagerChat.blockStartIndex = startIndex;\r\n this.pagerChat.blockEndIndex = endIndex;\r\n\r\n this.pagerChat.previousPageNo = cPageNo - 1 > 0 ? cPageNo - 1 : 1;\r\n this.pagerChat.nextPageNo = cPageNo + 1 <= totalPageNo ? cPageNo + 1 : totalPageNo;\r\n this.pagerChat.firstPageNo = 1;\r\n this.pagerChat.lastPageNo = totalPageNo;\r\n // debugger;\r\n EmitterSubjectService.setPagerChat(this.pagerChat);\r\n return this.pagerChat;\r\n }\r\n // --------------------------------------------------\r\n // Can be used for any array. \r\n // just the array's totalItems, currentPage and pageSize are required.\r\n // Note: the startPage, endPage, startIndex and endIndex values need attention!\r\n // These can be refactored/computed according to GatPagerDynamic() method's \r\n // algorithm to get the desired values for these variables.\r\n // --------------------------------------------------\r\n // public GetPagerOfSize15 (totalItems : any, currentPage : any, pageSize? : any): any {\r\n // // default to first page\r\n // this.currentPage = currentPage > 0 ? currentPage : 1;\r\n // this.totalItems = totalItems > 0 ? totalItems : 1;\r\n // // default page size is 15\r\n // this.pageSize = pageSize > 0 ? pageSize : 15;\r\n\r\n // // calculate total pages\r\n // const totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n // let startPage;\r\n // let endPage;\r\n // if (totalPages <= 15) {\r\n // // less than 15 total pages so show all\r\n // startPage = 1;\r\n // endPage = totalPages;\r\n // } else {\r\n // // more than 15 total pages so calculate start and end pages\r\n // if (this.currentPage <= 15) {\r\n // startPage = 1;\r\n // endPage = 15;\r\n // } else if (this.currentPage + 7 >= totalPages) {\r\n // startPage = totalPages - 14;\r\n // endPage = totalPages;\r\n // } else {\r\n // startPage = this.currentPage - 8;\r\n // endPage = this.currentPage + 7;\r\n // }\r\n // }\r\n\r\n // // calculate start and end item indexes\r\n // // Updated version: found to be incorrect on 20230113\r\n // // --------------------------------------------------\r\n // // const startIndex = totalItems <= this.pageSize ? (this.currentPage - 1)\r\n // // : this.currentPage > this.pageSize && this.pageSize < totalPages ? (this.currentPage - 1) * this.pageSize : 0;\r\n // // const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), (this.totalItems > 1 ?\r\n // // this.totalItems - 1 : this.totalItems));\r\n\r\n // // original version:\r\n // // ------------------\r\n // // let startIndex = (this.currentPage - 1) * this.pageSize;\r\n // // let endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1\r\n // // : this.pageSize), (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n\r\n\r\n // // updated version-2: Date: 20231013:\r\n // // ----------------------------------\r\n // let startIndex = this.currentPage - Math.floor(this.pageSize / 2) - 1;\r\n // let endIndex = this.currentPage + Math.floor(this.pageSize / 2) - 1;\r\n\r\n // // create an array of pages to ng-repeat in the pager control\r\n // const pages = this.range(startPage, endPage, 1) ;\r\n\r\n // // return object with all the pager properties required by the view\r\n // this.pagerChat = new PagerChat();\r\n // this.pagerChat.totalItems = this.totalItems;\r\n // this.pagerChat.currentPage = this.currentPage;\r\n // // this.pagerChat.currentBrdCrmPage = this.breadcrumRing[this.currentPage - 1];\r\n // // this.pagerChat.previousPage = this.currentPage - 1 >= 1 ? this.currentPage - 1 : this.currentPage;\r\n // // if (this.pagerChat.previousPage >= 1) {\r\n // // this.pagerChat.previousBrdCrmPage = this.breadcrumRing[this.pagerChat.previousPage - 1];\r\n // // }\r\n // // this.pagerChat.nextPage = this.currentPage + 1 <= totalItems ? this.currentPage + 1 : this.currentPage;\r\n // // if (this.pagerChat.nextPage <= this.totalItems) {\r\n // // this.pagerChat.nextBrdCrmPage = this.breadcrumRing[this.pagerChat.nextPage - 1];\r\n // // }\r\n // this.pagerChat.pageSize = this.pageSize;\r\n // this.pagerChat.totalPages = totalPages;\r\n // this.pagerChat.startPage = startPage;\r\n // this.pagerChat.endPage = endPage;\r\n // this.pagerChat.startIndex = startIndex;\r\n // this.pagerChat.endIndex = endIndex;\r\n // this.pagerChat.pages = pages;\r\n\r\n // // return this.pagerChat;\r\n // return {\r\n // totalItems: totalItems,\r\n // currentPage: currentPage,\r\n // pageSize: pageSize,\r\n // totalPages: totalPages,\r\n // startPage: startPage,\r\n // endPage: endPage,\r\n // startIndex: startIndex,\r\n // endIndex: endIndex,\r\n // pages: pages\r\n // };\r\n //}\r\n\r\n // --------------------------------------------------\r\n // Can be used for any array. \r\n // just the array's totalItems, currentPage and pageSize are required.\r\n // Note: the startPage, endPage, startIndex and endIndex values need attention!\r\n // These can be refactored/computed according to GatPagerDynamic() method's \r\n // algorithm to get the desired values for these variables.\r\n // --------------------------------------------------\r\n // --------------------------------------------------\r\n //public GetPagerOfSize10 (totalItems : any, currentPage : any, pageSize : any) {\r\n // // default to first page\r\n // currentPage = currentPage || 1;\r\n\r\n // // default page size is 10\r\n // pageSize = pageSize || 10;\r\n\r\n // // calculate total pages\r\n // const totalPages = Math.ceil(totalItems / pageSize);\r\n\r\n // let startPage;\r\n // let endPage;\r\n // if (totalPages <= 10) {\r\n // // less than 10 total pages so show all\r\n // startPage = 1;\r\n // endPage = totalPages;\r\n // } else {\r\n // // more than 10 total pages so calculate start and end pages\r\n // if (currentPage <= 6) {\r\n // startPage = 1;\r\n // endPage = 10;\r\n // } else if (currentPage + 4 >= totalPages) {\r\n // startPage = totalPages - 9;\r\n // endPage = totalPages;\r\n // } else {\r\n // startPage = currentPage - 5;\r\n // endPage = currentPage + 4;\r\n // }\r\n // }\r\n\r\n // // calculate start and end item indexes:\r\n // // Found to be incorrect on 20221213:\r\n // // ------------------------------------\r\n // // const startIndex = (currentPage - 1) * pageSize;\r\n // // const endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\r\n\r\n // // updated version-2: Date: 20231013:\r\n // // ----------------------------------\r\n // let startIndex = this.currentPage - Math.floor(this.pageSize / 2) - 1;\r\n // let endIndex = this.currentPage + Math.floor(this.pageSize / 2) - 1;\r\n\r\n\r\n // // create an array of pages to ng-repeat in the pager control\r\n // const pages = this.range(startPage, endPage, 1);\r\n\r\n // // return object with all pager properties required by the view\r\n // this.pagerChat.totalItems = totalItems;\r\n // this.pagerChat.currentPage = currentPage;\r\n // this.pagerChat.pageSize = pageSize;\r\n // this.pagerChat.totalPages = totalPages;\r\n // this.pagerChat.startPage = startPage;\r\n // this.pagerChat.endPage = endPage;\r\n // this.pagerChat.startIndex = startIndex;\r\n // this.pagerChat.endIndex = endIndex;\r\n // this.pagerChat.pages = pages;\r\n // // return this.pagerChat;\r\n // return {\r\n // totalItems: totalItems,\r\n // currentPage: currentPage,\r\n // pageSize: pageSize,\r\n // totalPages: totalPages,\r\n // startPage: startPage,\r\n // endPage: endPage,\r\n // startIndex: startIndex,\r\n // endIndex: endIndex,\r\n // pages: pages\r\n // };\r\n //}\r\n // --------------------------------------------------\r\n // Can be used for any array. \r\n // just the array's totalItems, currentPage and pageSize are required.\r\n // Note: the startPage, endPage, startIndex and endIndex values need attention!\r\n // These can be refactored/computed according to GatPagerDynamic() method's \r\n // algorithm to get the desired values for these variables.\r\n // --------------------------------------------------\r\n // --------------------------------------------------\r\n // public GetPagerOfSize5 (totalItems : any, currentPage : any, pageSize : any): any {\r\n // // default to first page\r\n // this.currentPage = currentPage > 0 ? currentPage : 1;\r\n // this.totalItems = totalItems > 0 ? totalItems : 1;\r\n // // default page size is 5\r\n // this.pageSize = pageSize > 0 ? pageSize : 5;\r\n\r\n // // calculate total pages\r\n // const totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n // let startPage;\r\n // let endPage;\r\n // if (totalPages <= 5) {\r\n // // less than 5 total pages so show all\r\n // startPage = 1;\r\n // endPage = totalPages;\r\n // } else {\r\n // // more than 5 total pages so calculate start and end pages\r\n // if (this.currentPage <= 3) {\r\n // startPage = 1;\r\n // endPage = 5;\r\n // } else if (this.currentPage + 2 >= totalPages) {\r\n // startPage = totalPages - 4;\r\n // endPage = totalPages;\r\n // } else {\r\n // startPage = this.currentPage - 3;\r\n // endPage = this.currentPage + 2;\r\n // }\r\n // }\r\n\r\n // // calculate start and end item indexes\r\n // // Updated version: Found to be incorrect on 20231013:\r\n // // ----------------------------------------------------\r\n // // const startIndex = totalItems <= this.pageSize ? (this.currentPage - 1)\r\n // // : this.currentPage > this.pageSize && this.pageSize < totalPages ? (this.currentPage - 1) * this.pageSize : 0;\r\n // // const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), (this.totalItems > 1 ?\r\n // // this.totalItems - 1 : this.totalItems));\r\n\r\n // // original version:\r\n // // ------------------\r\n // // let startIndex = (this.currentPage - 1) * this.pageSize;\r\n // // let endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1\r\n // // : this.pageSize), (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n\r\n // // updated version-2: Date: 20231013:\r\n // // ----------------------------------\r\n // let startIndex = this.currentPage - Math.floor(this.pageSize / 2) - 1;\r\n // let endIndex = this.currentPage + Math.floor(this.pageSize / 2) - 1;\r\n\r\n // // create an array of pages to ng-repeat in the pager control\r\n // const pages = this.range(startPage, endPage, 1);\r\n\r\n // // return object with all pager properties required by the view\r\n // this.pagerChat.totalItems = this.totalItems;\r\n // this.pagerChat.currentPage = this.currentPage;\r\n // this.pagerChat.pageSize = this.pageSize;\r\n // this.pagerChat.totalPages = totalPages;\r\n // this.pagerChat.startPage = startPage;\r\n // this.pagerChat.endPage = endPage;\r\n // this.pagerChat.startIndex = startIndex;\r\n // this.pagerChat.endIndex = endIndex;\r\n // this.pagerChat.pages = pages;\r\n // // return this.pagerChat;\r\n // return {\r\n // totalItems: totalItems,\r\n // currentPage: currentPage,\r\n // pageSize: pageSize,\r\n // totalPages: totalPages,\r\n // startPage: startPage,\r\n // endPage: endPage,\r\n // startIndex: startIndex,\r\n // endIndex: endIndex,\r\n // pages: pages\r\n // };\r\n //}\r\n // ==================================================\r\n // --------------------------------------------------\r\n // Deprecated!/ Use as a reference\r\n // --------------------------------------------------\r\n //public getPagerOriginal (totalItems : any, currentPage : any, pageSize : any): any {\r\n // // default to first page\r\n // this.currentPage = currentPage > 0 ? currentPage : 1;\r\n // this.totalItems = totalItems > 0 ? totalItems : 1;\r\n // // default page size is 10\r\n // this.pageSize = pageSize > 0 ? pageSize : 10;\r\n\r\n // // calculate total pages\r\n // const totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n\r\n // let startPage;\r\n // let endPage;\r\n // if (totalPages <= 10) {\r\n // // less than 10 total pages so show all\r\n // startPage = 1;\r\n // endPage = totalPages;\r\n // } else {\r\n // // more than 10 total pages so calculate start and end pages\r\n // if (this.currentPage <= 6) {\r\n // startPage = 1;\r\n // endPage = 10;\r\n // } else if (this.currentPage + 4 >= totalPages) {\r\n // startPage = totalPages - 9;\r\n // endPage = totalPages;\r\n // } else {\r\n // startPage = this.currentPage - 5;\r\n // endPage = this.currentPage + 4;\r\n // }\r\n // }\r\n\r\n // // calculate start and end item indexes\r\n // const startIndex = (this.currentPage - 1) * this.pageSize;\r\n // const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1\r\n // : this.pageSize), (this.totalItems > 1 ? this.totalItems - 1 : this.totalItems));\r\n\r\n // // create an array of pages to ng-repeat in the pager control\r\n // const pages = this.rangeOriginal(startPage, endPage, 0.5);\r\n\r\n // // return object with all pager properties required by the view\r\n // this.pagerChat.totalItems = this.totalItems;\r\n // this.pagerChat.currentPage = this.currentPage;\r\n // this.pagerChat.pageSize = this.pageSize;\r\n // this.pagerChat.totalPages = totalPages;\r\n // this.pagerChat.startPage = startPage;\r\n // this.pagerChat.endPage = endPage;\r\n // this.pagerChat.startIndex = startIndex;\r\n // this.pagerChat.endIndex = endIndex;\r\n // this.pagerChat.pages = pages;\r\n // return {\r\n // totalItems: totalItems,\r\n // currentPage: currentPage,\r\n // pageSize: pageSize,\r\n // totalPages: totalPages,\r\n // startPage: startPage,\r\n // endPage: endPage,\r\n // startIndex: startIndex,\r\n // endIndex: endIndex,\r\n // pages: pages\r\n // };\r\n //}\r\n // --------------------------------------------------\r\n // Deprecated!/ Use as a reference\r\n // --------------------------------------------------\r\n //public rangeOriginal (min : any, max : any, delta : any) {\r\n // const arr :any[] = [];\r\n // let stepCount;\r\n // if (min && !max && !delta) {\r\n // for (let i = 0; i < min; i++) {\r\n // arr[i] = i + 1;\r\n // }\r\n // } else {\r\n // if (min && max && !delta) {\r\n // stepCount = (max - min);\r\n // for (let i = 0; i <= stepCount; i++) {\r\n // arr.push(i + min);\r\n // }\r\n // } else {\r\n // stepCount = Math.floor((max - min) / delta);\r\n // for (let i = 0; i <= stepCount; i++) {\r\n // arr.push(i * delta + min);\r\n // }\r\n // }\r\n // }\r\n // return arr;\r\n //}\r\n // --------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\nimport { PagerService } from './pagerService.service';\r\nimport { PagerServiceChatHistory } from './pagerServiceChatHistory.service';\r\nimport { PagerPhotoMgmtService } from './pagerPhotoMgmtService.service';\r\nimport { PagerSupportService } from './pagerSupportService.service';\r\nimport { AbstractPagerVPhotoNavService } from './abstractPagerVPhotoNavService.service';\r\nimport { PagerVPhotoNavService } from './pagerVPhotoNavService.service';\r\n// import { PagerPhotoNavService } from './pagerPhotoNavService.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class PagerServiceService implements OnDestroy {\r\n private emitterDestroyed$: Subject = new Subject();\r\n constructor(\r\n private glyphiconMenuService: GlyphiconMenuService,\r\n private pagerService: PagerService,\r\n private pagerServiceChatHistory: PagerServiceChatHistory,\r\n private pagerPhotoMgmtService : PagerPhotoMgmtService,\r\n private pagerVPhotoNavService : PagerVPhotoNavService,\r\n private pagerSupportService : PagerSupportService,\r\n private abstractPagerVPhotoNavService : AbstractPagerVPhotoNavService,\r\n ) { }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setGlyphiconMenuService(gms: GlyphiconMenuService): void {\r\n this.glyphiconMenuService = gms;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getGlyphiconMenuService(): GlyphiconMenuService {\r\n return this.glyphiconMenuService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setPagerService(gd: PagerService): void {\r\n this.pagerService = gd;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getPagerService(): PagerService {\r\n return this.pagerService;\r\n }\r\n // ------------------------------------------------------------------\r\n setPagerServiceChatHistory(chps: PagerServiceChatHistory): void {\r\n this.pagerServiceChatHistory = chps;\r\n }\r\n getPagerServiceChatHistory(): PagerServiceChatHistory {\r\n return this.pagerServiceChatHistory;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getAbstractPagerVPhotoNavService () : AbstractPagerVPhotoNavService {\r\n return this.abstractPagerVPhotoNavService;\r\n }\r\n setAbstractPagerVPhotoNavService (pvs : AbstractPagerVPhotoNavService) : void {\r\n this.abstractPagerVPhotoNavService = pvs;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setPagerPhotoMgmtService (pps : PagerPhotoMgmtService): void {\r\n this.pagerPhotoMgmtService = pps;\r\n } \r\n // ------------------------------------------------------------------------------------------------\r\n getPagerPhotoMgmtService () : PagerPhotoMgmtService {\r\n return this.pagerPhotoMgmtService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setPagerVPhotoNavService (pns : PagerVPhotoNavService) : void {\r\n this.pagerVPhotoNavService = pns;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getPagerVPhotoNavService () : PagerVPhotoNavService {\r\n return this.pagerVPhotoNavService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setPagerSupportService (pvs : PagerSupportService) : void {\r\n this.pagerSupportService = pvs;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getPagerSupportService () : PagerSupportService {\r\n return this.pagerSupportService;\r\n }\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { Subject } from 'rxjs';\r\nimport { PagerSupportServiceInterface } from '../../interfaces/serviceInterfaces/pagerServicesInterfaces/pagerSupportServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { SitUserService } from '../commonServiceService/sitUserService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { PhotoPrivacyService } from '../photoServiceService/photoPrivacyService.service';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\n\r\n// declare let jQuery: any;\r\n\r\n// declare let $: any;\r\n\r\n@Injectable({ providedIn: 'any' })\r\nexport class PagerSupportService implements OnDestroy, PagerSupportServiceInterface {\r\n // ---------------------------------------------------------------\r\n public currentKvPhoto : KvPhoto = new KvPhoto();\r\n public currentPageNum = 0;\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isStripUrl = true;\r\n public isViewMember = false;\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public pageSize = 6;\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n // public renderer! : Renderer2;\r\n // ---------------------------------------------------------------\r\n constructor (\r\n public dictionaryService : DictionaryService,\r\n private photoPrivacyService : PhotoPrivacyService,\r\n private sitUserService : SitUserService,\r\n private router : Router,\r\n @Inject(DOCUMENT) document : any,\r\n // @Inject(Window) window\r\n ) {\r\n EmitterSubjectService.setPageSize(this.pageSize);\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : void {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n\r\n // ------------------------------------------------------------\r\n public createKvPhotoDictionaryFromKvPhotoArray (kvpD : Dictionary, kvpArr : KvPhoto[]) : Dictionary | any {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpD)) {\r\n kvpD = new Dictionary();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n kvpArr.map(e => {\r\n if (e && e.photoId > 0) {\r\n kvpD.set(e.photoId, e);\r\n }\r\n })\r\n return kvpD;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n getCurrentKvPhotoByPageNumFromArr (kvPhotoArr : KvPhoto[], pageNum : number) {\r\n let currentPage : any;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n kvPhotoArr.forEach(e => {\r\n if (e.pageNum === pageNum) {\r\n currentPage = e;\r\n }\r\n });\r\n\r\n }\r\n return currentPage;\r\n }\r\n // ---------------------------------------------------------------\r\n public getCurrentKvPhotoByItemNumFromArr (kvPhotoArr : KvPhoto[], currPageItem : number = 0) : KvPhoto {\r\n let currentPage : any;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n kvPhotoArr.map(e => {\r\n if (e.itemNum == currPageItem) {\r\n currentPage = e;\r\n }\r\n });\r\n\r\n }\r\n return currentPage;\r\n }\r\n // ---------------------------------------------------------------\r\n public getCurrentKvPhotoByPhotoBnIdFromArr (kvPhotoArr : KvPhoto[], pBnId : number = 0) : KvPhoto {\r\n // prevent memory leak when component destroyed\r\n let currentPage : any;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n kvPhotoArr.map(e => {\r\n if (e.photoBnId == pBnId) {\r\n currentPage = e;\r\n }\r\n });\r\n\r\n }\r\n return currentPage;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public getPageNumByItemNumFromKvPhotoItemArrDictionary (pNumKvPhotoDictionary : Dictionary, kvp : KvPhoto, pageSize : number) : number {\r\n let pageNum = 1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pNumKvPhotoDictionary)) {\r\n if (pNumKvPhotoDictionary.size > 0) {\r\n let pagedItemsArr = pNumKvPhotoDictionary.values(); // [[]...[]]\r\n let keys = pNumKvPhotoDictionary.keys();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp) && kvp.itemNum >= 0 && pageSize > 0) {\r\n let iDiv = Math.floor(kvp.itemNum / pageSize);\r\n if (iDiv >= 0 && iDiv < 1) {\r\n pageNum = 1;\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n let pagedItems = pNumKvPhotoDictionary.get(iDiv + 1) as KvPhoto[];\r\n if (kvp.itemNum > 0 && (pagedItems[ kvp.itemNum ] as KvPhoto).itemNum > 0) {\r\n pageNum = iDiv + 1;\r\n }\r\n else {\r\n pagedItems.map(ikvp => {\r\n if (kvp.itemNum > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ikvp) && (ikvp as KvPhoto).itemNum >= 0) {\r\n if ((ikvp as KvPhoto).itemNum === kvp.itemNum) {\r\n pageNum = iDiv + 1;\r\n // debugger;\r\n }\r\n }\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // debugger;\r\n return pageNum;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n //public getPageNumFromKvPhotoItemNum (pgrVPhotoNav : PagerPhotoMgmt, kvp : KvPhoto) : number {\r\n\r\n // let pageNum = 1;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pgrVPhotoNav)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pgrVPhotoNav.kvPhotoArr)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pgrVPhotoNav.kvPhotoArr)\r\n // && pgrVPhotoNav.kvPhotoArr.length > 0 && pgrVPhotoNav.pageSize > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)\r\n // && kvp.itemNum > 0\r\n // ) {\r\n // // debugger;\r\n // if (pgrVPhotoNav.pageSize <= 0) {\r\n // pgrVPhotoNav.pageSize = this.pageSize;\r\n // }\r\n\r\n // let iNum = 0;\r\n // pgrVPhotoNav.pages.forEach(p => {\r\n // pageNum = p;\r\n // let pagedItems = pgrVPhotoNav.kvPhotoArr.slice(iNum, pageNum * pgrVPhotoNav.pageSize) as []\r\n // DictionaryServiceStatic.kvPhotoDictionary.setValue(pageNum, pagedItems);\r\n // iNum = iNum + pgrVPhotoNav.pageSize;\r\n // });\r\n\r\n // pageNum = this.getPageNumByItemNumFromKvPhotoItemArrDictionary(DictionaryServiceStatic.kvPhotoDictionary, kvp, this.pageSize);\r\n // }\r\n // // debugger;\r\n // return pageNum;\r\n //} \r\n // ----------------------------------------------------------------\r\n // public getPagerVKvPhotoNavWithoutUrl (pagerVKvPhotoNav : PagerPhotoMgmt) : KvPhoto[] | any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems) && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n // return DisplayProfileServiceStatic.prepareKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems, this.isStripUrl);\r\n // }\r\n // else return null;\r\n // }\r\n // ----------------------------------------------------------------\r\n // Note: This method has been replaced with PrepareKvPhotoForDisplay()\r\n // and it is in DisplayProfileServiceStatic.\r\n // ----------------------------------------------------------------\r\n // public getKvPhotoWithoutUrl (kvPhoto : KvPhoto) : any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // // debugger;\r\n // kvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(kvPhoto.value);\r\n // return kvPhoto.value;\r\n // }\r\n // }\r\n // ----------------------------------------------------------------\r\n // Note: This method has been replaced with PrepareKvPhotoArrForDisplay()\r\n // and it is in DisplayProfileServiceStatic.\r\n // ----------------------------------------------------------------\r\n // public getPagedItemsWithoutUrl (pagedItems : KvPhoto[]) : KvPhoto[] | any {\r\n // // this.pagerVKvPhotoNav.pagedItems.map(e => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagedItems) && pagedItems.length > 0) {\r\n // pagedItems.forEach(e => {\r\n // e.value = this.getKvPhotoWithoutUrl(e);\r\n // })\r\n // }\r\n // return pagedItems;\r\n // }\r\n // ============================================================\r\n // Note: KvPhotoDictionary related functions:\r\n // ------------------------------------------------------------\r\n public getPrimaryKvPhotoFromDictionary (sitUser? : SitUser|any, photoId?: number|any) : KvPhoto | any {\r\n let primaryKvPhoto : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoId) && photoId > 0) {\r\n primaryKvPhoto = this.dictionaryService.kvPhotoDictionary.get(photoId);\r\n } \r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0 && sitUser.primaryPhotoBnId > 0) {\r\n let kvpArr = this.dictionaryService.kvPhotoDictionary.size > 0 ? this.dictionaryService.kvPhotoDictionary.values() : [];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n kvpArr.forEach((e : any) => {\r\n if (e.photoBnId == sitUser.primaryPhotoBnId) {\r\n primaryKvPhoto = e;\r\n }\r\n });\r\n }\r\n return primaryKvPhoto\r\n }\r\n else return null;\r\n }\r\n // ------------------------------------------------------------\r\n public getPrimaryKvPhotoForSitUser (sitUser : SitUser, kvPhotoArr : KvPhoto[]) : KvPhoto | any {\r\n let primaryKvPhoto = new KvPhoto();\r\n let index = -1;\r\n if (sitUser.sitUserId > 0) {\r\n if (sitUser.sitUserId === this.loginSuccess.signedInUserId && this.loginSuccess.primaryPhotoBnId > 0) {\r\n index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr((kvPhotoArr as any), this.loginSuccess.primaryPhotoBnId);\r\n if (index === -1) {\r\n // debugger;\r\n primaryKvPhoto = CopyServiceStatic.copyFromLoginSuccessToKvPhoto(this.loginSuccess);\r\n // primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(primaryKvPhoto.value);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.value)) {\r\n primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageData(primaryKvPhoto.value);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.value)) {\r\n primaryKvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(primaryKvPhoto.value);\r\n }\r\n primaryKvPhoto.index = primaryKvPhoto.itemNum = 0;\r\n }\r\n else {\r\n // debugger;\r\n primaryKvPhoto = kvPhotoArr[ index ] as KvPhoto;\r\n }\r\n return primaryKvPhoto;\r\n }\r\n else if (sitUser.sitUserId !== this.loginSuccess.signedInUserId && sitUser.primaryPhotoBnId > 0) {\r\n index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr((kvPhotoArr as any), sitUser.primaryPhotoBnId);\r\n if (index === -1) {\r\n // debugger;\r\n primaryKvPhoto = CopyServiceStatic.copySitUserToKvPhoto(sitUser);\r\n // primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(primaryKvPhoto.value);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.value)) {\r\n primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageData(primaryKvPhoto.value);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.value)) {\r\n primaryKvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(primaryKvPhoto.value);\r\n }\r\n primaryKvPhoto.index = primaryKvPhoto.itemNum = 0;\r\n }\r\n else {\r\n // debugger;\r\n primaryKvPhoto = kvPhotoArr[ index ] as KvPhoto;\r\n }\r\n return primaryKvPhoto;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // This method normalizes and image's raw data for displating on\r\n // an html element. It can be prefixed with a 'url()' around the\r\n // image-data, or can strip the 'url()' from the image-data.\r\n //\r\n // Note: this method has been moved to DisplayProfileServiceStatic().\r\n // ---------------------------------------------------------------\r\n //public prepareKvPhotoArrForDisplay (kvPhotoArr : KvPhoto[]) : KvPhoto[] | any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n // kvPhotoArr.forEach(e => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) && e.value.length > 0 && JsRegExpServiceStatic.photoUrlPrefixPattern.test(e.value)) {\r\n // e.value = JsRegExpServiceStatic.stripUrlForImageData(e.value);\r\n // }\r\n // });\r\n\r\n // }\r\n // return kvPhotoArr;\r\n //}\r\n // ---------------------------------------------------------------\r\n // this method will fill in the following properties of kvp:\r\n // 1. index 2.pagenum 3.elemId\r\n // -------------------------------------------------------------- \r\n public setIndexAndPageNumAndElemIdForKvPhotoArr (kvPhotoArr : KvPhoto[], idPrefix : string) : KvPhoto[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n var i = 0;\r\n for (i; i < kvPhotoArr.length; i++) {\r\n kvPhotoArr[ i ].index = i;\r\n kvPhotoArr[ i ].elemId = idPrefix + i;\r\n // debugger;\r\n // Note: do not overwrite the key.\r\n // If needed, uncomment it here for appropriate key:\r\n // --------------------------------------------------------\r\n // kvPhotoArr[ i ].key = kvPhotoArr[ i ].photoBnId.toString();\r\n }\r\n }\r\n // debugger;\r\n return kvPhotoArr;\r\n }\r\n // --------------------------------------------------------------\r\n public setIndexAndPageNumAndElemIdForPagerPhotoMgmt (pgrVPhotoNav : PagerPhotoMgmt, idPrefix : string) : PagerPhotoMgmt {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pgrVPhotoNav.kvPhotoArr) && pgrVPhotoNav.kvPhotoArr.length > 0) {\r\n pgrVPhotoNav.kvPhotoArr = this.setIndexAndPageNumAndElemIdForKvPhotoArr(pgrVPhotoNav.kvPhotoArr, idPrefix);\r\n }\r\n return pgrVPhotoNav;\r\n }\r\n // ============================================================\r\n // Note: KvPhotoArray related functions:\r\n // ------------------------------------------------------------\r\n // This is a general/generic KvPhotoArr's method\r\n // to update with PrimaryKvPhoto if missing.\r\n // ------------------------------------------------------------\r\n // This method will obtain the PrimaryKvPhoto using sitUser,\r\n // and if necessary, by getting it from the backend-server.\r\n // ------------------------------------------------------------\r\n public updateKvPhotoArr (kvPhotoArr : KvPhoto[], sitUserId : number) : KvPhoto[] | any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) { \r\n let i = 0;\r\n let index = -1;\r\n let sitUser = new SitUser();\r\n let primaryKvPhoto = new KvPhoto();\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // get Emitter-sitUser's primaryKvPhoto:\r\n // -------------------------------------\r\n sitUser = EmitterSubjectService.getSitUserModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0\r\n && sitUser.sitUserId === sitUserId\r\n && sitUser.primaryPhotoBnId > 0) {\r\n // debugger;\r\n primaryKvPhoto = this.getPrimaryKvPhotoForSitUser(sitUser, kvPhotoArr);\r\n }\r\n\r\n // if emitter-situser's primaryKvPhoto is null or empty.\r\n // get it from the dictionary-sitUser's primaryKvPhoto\r\n // ---------------------------------------------------\r\n if (sitUserId > 0) {\r\n sitUser = this.dictionaryService.sitUserDictionary.get(sitUserId);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) || sitUser.sitUserId === 0) {\r\n debugger;\r\n console.log('calling fetchSitUser() from pagerSupportService@ln367')\r\n this.sitUserService.getSitUserFromDictionaryOrServer(sitUserId).subscribe(data => {\r\n sitUser = data;\r\n debugger;\r\n })\r\n }\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0 && sitUser.primaryPhotoBnId > 0) {\r\n primaryKvPhoto = this.getPrimaryKvPhotoForSitUser(sitUser, kvPhotoArr);\r\n }\r\n\r\n\r\n // if dictionary-situser's primaryKvPhoto is null or empty.\r\n // get it from the sitUser from the backend-server\r\n // and then get it's primaryKvPhoto\r\n // --------------------------------------------------- \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto) || primaryKvPhoto.sitUserId === 0) { \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0 && sitUser.primaryPhotoBnId > 0) {\r\n primaryKvPhoto = this.getPrimaryKvPhotoForSitUser(sitUser, kvPhotoArr);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto) && primaryKvPhoto.sitUserId > 0) {\r\n return this.updateKvArrForPrimaryKvPhoto(primaryKvPhoto, kvPhotoArr); // must be used step!!\r\n }\r\n } \r\n }\r\n else {\r\n return this.updateKvArrForPrimaryKvPhoto(primaryKvPhoto, kvPhotoArr); // must be used step!!\r\n }\r\n }\r\n }\r\n return kvPhotoArr;\r\n }\r\n // ============================================================\r\n // Note: KvPhotoDictionary related functions:\r\n // ------------------------------------------------------------\r\n // ------------------------------------------------------------\r\n // this method gets the kvPhoto of PrimaryImage from KvPhotoDictionary\r\n // then sets this in KvPhotoArrays if missing, \r\n // and then updates the kvPhotoDictionaries of profilePics.\r\n //\r\n // Not in use:\r\n // ------------------------------------------------------------\r\n // public updateKvPhotoArraysAndDictionariesOfProfilePics (pPics : ProfilePics , sitUser : SitUser) : any /* Promise*/ {\r\n // let kvPhotoArr: KvPhoto[] = [];\r\n // let filteredKvPhotoArr : any;\r\n // let primaryKvPhoto : any;\r\n // let fkvp : any;\r\n // // debugger;\r\n \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr)\r\n // && pPics.unFilteredKvPhotoArr.length > 0) {\r\n // kvPhotoArr = pPics.unFilteredKvPhotoArr;\r\n // kvPhotoArr.sort((a, b) => {\r\n // return a.photoBnId - b.photoBnId;\r\n // });\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0) {\r\n // primaryKvPhoto = this.getPrimaryKvPhotoForSitUser(sitUser, kvPhotoArr);\r\n // }\r\n // // ----------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto) && primaryKvPhoto.sitUserId > 0) {\r\n // // debugger;\r\n // kvPhotoArr = this.updateKvArrForPrimaryKvPhoto(primaryKvPhoto, kvPhotoArr) as KvPhoto[]; // must be used step!!\r\n\r\n // }\r\n // // update dictionaries and Arrays with updated-kvPhotoArr:\r\n // // -----------------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) { \r\n \r\n // kvPhotoArr.forEach(e => {\r\n // pPics.unFilteredKvPhotoArr.push(e);\r\n\r\n // pPics.filteredKvPhotoArr.map(f => {\r\n // if (f.photoBnId === e.photoBnId) {\r\n // f.elemId = e.elemId;\r\n // pPics.filteredKvPhotoArr.push(f);\r\n // }\r\n // })\r\n // });\r\n \r\n // // debugger;\r\n // return pPics;\r\n // }\r\n // else {\r\n // // debugger;\r\n // return null;\r\n // } \r\n // }\r\n //}\r\n // ------------------------------------------------------------\r\n // get the kvPhoto of PrimaryImage from DictionaryServiceStatic.kvPhotoDictionary\r\n // and set this in the provided KvPhotoDictionary in the parameter.\r\n // ------------------------------------------------------------\r\n public updateKvPhotoDictionary (kvpD : Dictionary, sitUser : SitUser, isFiltered : boolean) : Dictionary | any {\r\n let kvPhotoArr = [];\r\n let filteredKvPhotoArr : any;\r\n let primaryKvPhoto : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)) {\r\n primaryKvPhoto = this.getPrimaryKvPhotoFromDictionary(sitUser);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto) && primaryKvPhoto.sitUserId > 0) {\r\n kvPhotoArr = this.dictionaryService.getUserKvPhotoArrFromKvPhotoDictionary(sitUser.sitUserId)\r\n kvPhotoArr = this.updateKvArrForPrimaryKvPhoto(primaryKvPhoto, kvPhotoArr);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpD)) {\r\n if (isFiltered) {\r\n // TODO: temporary Unsage solution:\r\n // --------------------------------\r\n kvpD = this.createKvPhotoDictionaryFromKvPhotoArray(kvpD, filteredKvPhotoArr);\r\n\r\n // TODO: check the filtration process. It is failing now!!!!\r\n // ----------------------------------------------------------\r\n // this.photoPrivacyService.filterKvPhotoArr(kvPhotoArr).then(result => {\r\n // if (result) {\r\n // filteredKvPhotoArr = result;\r\n // debugger;\r\n // kvpD = this.createKvPhotoDictionaryFromKvPhotoArray(kvpD, filteredKvPhotoArr);\r\n // return kvpD;\r\n // }\r\n // else {\r\n // console.log(result);\r\n // return null;\r\n // }\r\n // });\r\n }\r\n else {\r\n debugger;\r\n kvpD = this.createKvPhotoDictionaryFromKvPhotoArray(kvpD, kvPhotoArr);\r\n return kvpD;\r\n }\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n // ----------------------------------------------------------------------\r\n // Note: This must be used for filtered/unFiltered array beofe rendering:\r\n // ----------------------------------------------------------------------\r\n public updateKvArrForPrimaryKvPhoto (primaryKvPhoto : KvPhoto, kvPhotoArr : KvPhoto[]) : KvPhoto[] | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto) && primaryKvPhoto.index >= 0 && primaryKvPhoto.photoBnId > 0) {\r\n primaryKvPhoto.isPrimary = true;\r\n // primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageData(primaryKvPhoto.value); // will add 'url(...)' to image-data\r\n primaryKvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(primaryKvPhoto.value);\r\n\r\n let index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr((kvPhotoArr as any), primaryKvPhoto.photoBnId);\r\n \r\n if (index > -1) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr[ index ])) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr[ index ].value)) {\r\n kvPhotoArr[ index ] = kvPhotoArr[ index ].copyIfExists(primaryKvPhoto);\r\n // debugger;\r\n }\r\n else {\r\n kvPhotoArr[ index ] = kvPhotoArr[ index ].copy(primaryKvPhoto);\r\n // debugger;\r\n }\r\n }\r\n }\r\n else {\r\n // debugger;\r\n kvPhotoArr.push(primaryKvPhoto);\r\n }\r\n }\r\n\r\n kvPhotoArr = ArraySupportServiceStatic.makeArrayOfUniqElements(kvPhotoArr);\r\n\r\n // debugger;\r\n kvPhotoArr = this.setIndexAndPageNumAndElemIdForKvPhotoArr(kvPhotoArr, \"pagerVKvPhotoNav-\");\r\n kvPhotoArr.sort((a, b) => {\r\n return a.elemId.localeCompare(b.elemId)\r\n });\r\n // debugger;\r\n kvPhotoArr = ArraySupportServiceStatic.mergeArraysUniq(kvPhotoArr, kvPhotoArr);\r\n // debugger;\r\n return kvPhotoArr;\r\n }\r\n else return kvPhotoArr;\r\n }\r\n // -----------------------------------------------------------------------\r\n // Note: this will update KvPhotoArr of both filtered and unFiltered type\r\n // -----------------------------------------------------------------------\r\n public updateProfilePicsArraysWithPrimaryKvPhotoIfMissing (pPics : ProfilePics) : ProfilePics {\r\n let tKvPhotoArr : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr) && pPics.filteredKvPhotoArr.length > 0) {\r\n tKvPhotoArr = this.updateKvPhotoArr(pPics.filteredKvPhotoArr, pPics.sitUserId);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tKvPhotoArr) && tKvPhotoArr.length > 0) {\r\n pPics.filteredKvPhotoArr = tKvPhotoArr;\r\n }\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr) && pPics.unFilteredKvPhotoArr.length > 0) {\r\n tKvPhotoArr = this.updateKvPhotoArr(pPics.unFilteredKvPhotoArr, pPics.sitUserId);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tKvPhotoArr) && tKvPhotoArr.length > 0) {\r\n pPics.unFilteredKvPhotoArr = tKvPhotoArr;\r\n }\r\n }\r\n }\r\n return pPics;\r\n }\r\n // ----------------------------------------------------------------\r\n // Note: this will update the kvPhotoArr(s) and KvPhotoDictionary(s)\r\n // on the basis of the values of isPhotoMgmt and isViewMember.\r\n //\r\n // This method will update KvPhotoDictionary and\r\n // the KvPhotoArr (filtered /unfiltered) pf ProfilePics\r\n // with the primaryKvPhoto.\r\n // ----------------------------------------------------------------\r\n public updatePrimaryKvPhotoIfMissingOnProfilePics (pPics : ProfilePics) : ProfilePics {\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n let isFiltered = false;\r\n let fkvpD: any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId > 0) {\r\n let sitUser = this.dictionaryService.sitUserDictionary.get(pPics.sitUserId) as SitUser;\r\n\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n isFiltered = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoDictionary) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)) {\r\n fkvpD = this.updateKvPhotoDictionary(pPics.unFilteredKvPhotoDictionary, sitUser, isFiltered);\r\n if (fkvpD) {\r\n pPics.unFilteredKvPhotoDictionary = fkvpD;\r\n }\r\n // debugger;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr) && pPics.unFilteredKvPhotoArr.length > 0) {\r\n pPics.unFilteredKvPhotoArr = this.updateKvPhotoArr(pPics.unFilteredKvPhotoArr, pPics.sitUserId);\r\n // debugger;\r\n }\r\n }\r\n else if (this.isViewMember) {\r\n isFiltered = true;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoDictionary) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)) {\r\n fkvpD = this.updateKvPhotoDictionary(pPics.filteredKvPhotoDictionary, sitUser, isFiltered);\r\n if (fkvpD) {\r\n\r\n pPics.filteredKvPhotoDictionary = fkvpD;\r\n }\r\n // debugger;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr) && pPics.filteredKvPhotoArr.length > 0) {\r\n pPics.filteredKvPhotoArr = this.updateKvPhotoArr(pPics.filteredKvPhotoArr, pPics.sitUserId);\r\n }\r\n }\r\n }\r\n return pPics;\r\n } \r\n // ------------------------------------------------------------\r\n}\r\n\r\n\r\n // ================================================================\r\n // Deprecated methods:\r\n // ----------------------------------------------------------------\r\n // TODO: check why primaryKvPhoto.value == '';\r\n // TODO: Test!\r\n // Deprecated: 2022/06/12\r\n // ----------------------------------------------------------------\r\n // getPrimaryKvPhoto (sitUser : SitUser, pPics : ProfilePics) : any {\r\n // let primaryKvPhoto : KvPhoto = new KvPhoto();\r\n // let index = -1;\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // // get the primaryKvPhoto for singedInUser:\r\n // // ----------------------------------------\r\n // if (pPics.sitUserId === this.loginSuccess.signedInUserId\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr)\r\n // && pPics.unFilteredKvPhotoArr.length > 0) {\r\n\r\n // index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr((pPics.unFilteredKvPhotoArr as any), this.loginSuccess.primaryPhotoBnId);\r\n // if (index === -1) {\r\n // debugger;\r\n // primaryKvPhoto = CopyServiceStatic.copyFromLoginSuccessToKvPhoto(this.loginSuccess);\r\n // // primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(primaryKvPhoto.value); // TODO: this may return an empty value, so check!\r\n // primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageData(primaryKvPhoto.value); \r\n // primaryKvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(primaryKvPhoto.value);\r\n // primaryKvPhoto.index = primaryKvPhoto.itemNum = 0;\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr[ index ])\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr[ index ].value)) {\r\n // debugger;\r\n // primaryKvPhoto = pPics.unFilteredKvPhotoArr[ index ] as KvPhoto;\r\n // }\r\n // }\r\n\r\n // // get the primaryKvPhoto for the non-signedInUser:\r\n // // ------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)\r\n // && sitUser.sitUserId > 0\r\n // && sitUser.sitUserId !== this.loginSuccess.signedInUserId\r\n // && pPics.sitUserId === sitUser.sitUserId) {\r\n\r\n // index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr((pPics.filteredKvPhotoArr as any), sitUser.primaryPhotoBnId);\r\n\r\n // if (index === -1) {\r\n // debugger;\r\n // primaryKvPhoto = CopyServiceStatic.copySitUserToKvPhoto(sitUser);\r\n // primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(primaryKvPhoto.value);\r\n // primaryKvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(primaryKvPhoto.value);\r\n // primaryKvPhoto.index = primaryKvPhoto.itemNum = 0;\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr[ index ])\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr[ index ].value)) {\r\n // debugger;\r\n // primaryKvPhoto = pPics.filteredKvPhotoArr[ index ] as KvPhoto;\r\n // }\r\n // }\r\n // debugger;\r\n // return primaryKvPhoto;\r\n // }\r\n // ------------------------------------------------------------\r\n // TODO: test!\r\n // ------------------------------------------------------------\r\n // Deprecated! 2022/06/12\r\n // ------------------------------------------------------------\r\n // updateProfilePicsKvPhotoArr (pPics : ProfilePics) : ProfilePics {\r\n // // debugger; \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId > 0) {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // let index = -1;\r\n // let i = 0;\r\n // let primaryKvPhoto : any = new KvPhoto();\r\n // let result : any;\r\n\r\n // // get the sitUser from the dictionary, or fetch sitUser:\r\n // // 20220604\r\n // // ------------------------------------------------------\r\n // let tSitUser = DictionaryServiceStatic.sitUserDictionary.getValue(pPics.sitUserId) as SitUser;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tSitUser) || tSitUser.sitUserId === 0) {\r\n\r\n // // if the dictionary sitUser is empty or sitUserId == 0, get it from the Emitter: \r\n // // (should check for both signedInUser and non-signedInUser)\r\n // // ------------------------------------------------------------------------------\r\n // if (pPics.sitUserId === this.loginSuccess.signedInUserId) {\r\n // tSitUser = EmitterSubjectService.getSignedInUser();\r\n // }\r\n // else {\r\n // tSitUser = EmitterSubjectService.getSitUserModel();\r\n // }\r\n\r\n // // debugger;\r\n // // if the Emitter's sitUser is empty or sitUserId == 0, get it from the backend-server:\r\n // // -------------------------------------------------------------------------------------\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tSitUser) || tSitUser.sitUserId === 0) {\r\n // this.sitUserService.fetchSitUser(pPics.sitUserId).then(data => {\r\n // tSitUser = data;\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tSitUser) && tSitUser.sitUserId > 0 && tSitUser.primaryPhotoBnId > 0) {\r\n // debugger;\r\n // primaryKvPhoto = this.getPrimaryKvPhoto(tSitUser, pPics); \r\n // }\r\n // });\r\n // }\r\n // // Emitter's sitUser is found:\r\n // // -----------------------------\r\n // else if (tSitUser.primaryPhotoBnId > 0) {\r\n // debugger;\r\n // primaryKvPhoto = this.getPrimaryKvPhoto(tSitUser, pPics); \r\n // }\r\n // }\r\n // // dictionary's sitUser is found:\r\n // // ------------------------------\r\n // else if(tSitUser.primaryPhotoBnId > 0) {\r\n // debugger;\r\n // primaryKvPhoto = this.getPrimaryKvPhoto(tSitUser, pPics); \r\n // }\r\n // debugger;\r\n\r\n // let tProfilePics : any;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto)\r\n // && primaryKvPhoto.sitUserId > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.value)) {\r\n // debugger;\r\n // tProfilePics = this.updateProfilePicsWithPrimaryKvPhoto(pPics, primaryKvPhoto);\r\n // }\r\n \r\n // debugger;\r\n // return tProfilePics;\r\n // }\r\n // // debugger; // watch-\r\n // else return pPics;\r\n // }\r\n \r\n // ----------------------------------------------------------------\r\n // Deprecated! 2022/06/12\r\n // ------------------------------------------------------------\r\n // updateProfilePicsWithPrimaryKvPhoto (pPics : ProfilePics, pkvPhoto : KvPhoto) : any {\r\n // let primaryKvPhoto = pkvPhoto; \r\n // let index = -1;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(primaryKvPhoto.value)\r\n // && primaryKvPhoto.index >= 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)) {\r\n // // primaryKvPhoto.elemId = 'pagerVKvPhotoNav-' + primaryKvPhoto.index;\r\n // primaryKvPhoto.isPrimary = true;\r\n // primaryKvPhoto.value = JsRegExpServiceStatic.normalizeImageData(primaryKvPhoto.value); // will add 'url(...)' to image-data\r\n // primaryKvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(primaryKvPhoto.value);\r\n\r\n // if (this.isPhotoMgmt) {\r\n // index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr(pPics.unFilteredKvPhotoArr, primaryKvPhoto.photoBnId);\r\n // if (index > -1 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr[ index ])) {\r\n // pPics.unFilteredKvPhotoArr[ index ] = pPics.unFilteredKvPhotoArr[ index ].copyIfExists(primaryKvPhoto);\r\n // // debugger;\r\n // }\r\n // else {\r\n // // debugger;\r\n // pPics.unFilteredKvPhotoArr.push(primaryKvPhoto);\r\n // }\r\n // }\r\n // if (this.isViewMember) {\r\n // index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdInKvPhotoArr(pPics.filteredKvPhotoArr, primaryKvPhoto.photoBnId);\r\n // if (index > -1 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr[ index ])) {\r\n // pPics.filteredKvPhotoArr[ index ] = pPics.filteredKvPhotoArr[ index ].copyIfExists(primaryKvPhoto);\r\n // }\r\n // else {\r\n // pPics.filteredKvPhotoArr.push(primaryKvPhoto);\r\n // }\r\n // }\r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)) {\r\n // pPics.filteredKvPhotoArr = ArraySupportServiceStatic.makeUniq(pPics.filteredKvPhotoArr);\r\n // pPics.unFilteredKvPhotoArr = ArraySupportServiceStatic.makeUniq(pPics.unFilteredKvPhotoArr);\r\n\r\n // // debugger;\r\n // pPics.filteredKvPhotoArr = this.setIndexAndPageNumAndElemIdForKvPhotoArr(pPics.filteredKvPhotoArr, \"pagerVKvPhotoNav-\");\r\n // pPics.filteredKvPhotoArr.sort((a, b) => {\r\n // return a.elemId.localeCompare(b.elemId)\r\n // });\r\n\r\n // pPics.unFilteredKvPhotoArr = this.setIndexAndPageNumAndElemIdForKvPhotoArr(pPics.unFilteredKvPhotoArr, \"pagerVKvPhotoNav-\");\r\n // pPics.unFilteredKvPhotoArr.sort((a, b) => {\r\n // return a.elemId.localeCompare(b.elemId)\r\n // });\r\n // }\r\n // // debugger; // watch-\r\n // return pPics;\r\n // }\r\n // ----------------------------------------------------------------\r\n // Deprecated:\r\n // -------------------------------------------------------------- \r\n // setIndexAndPageNumAndElemId (kvPhotoArr : KvPhoto[], idPrefix : string) : KvPhoto[] {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n // var i = 0;\r\n // for (i; i < kvPhotoArr.length; i++) {\r\n // kvPhotoArr[ i ].index = i;\r\n // kvPhotoArr[ i ].itemNum = i;\r\n // kvPhotoArr[ i ].pageNum = i < this.pageSize ? 1 : Math.floor(i / this.pageSize) + 1; // this.getPageNumFromKvPhotoItemNum(pgrVPhotoNav, pgrVPhotoNav.kvPhotoArr[ i ]);\r\n // kvPhotoArr[ i ].elemId = idPrefix + i;\r\n // kvPhotoArr[ i ].key = kvPhotoArr[ i ].photoBnId.toString();\r\n // }\r\n // }\r\n // return kvPhotoArr;\r\n // }\r\n // ----------------------------------------------------------------\r\n // This has been moved to BIAS service\r\n // ----------------------------------------------------------------\r\n // selectCurrentElemDeselctOthers (kvpArr : KvPhoto[], item : KvPhoto) : void {\r\n // let currentPageElemId = '';\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item.elemId)) {\r\n // if (item.itemNum >= 0) {\r\n // // debugger;\r\n // currentPageElemId = 'pagerVPhotoNav-' + item.itemNum.toString();\r\n // } \r\n // else {\r\n // // debugger;\r\n // currentPageElemId = 'pagerVPhotoNav-0';\r\n // }\r\n // }\r\n\r\n // let currentItemElem : any;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentPageElemId)) {\r\n // currentItemElem = document.getElementById(currentPageElemId) as HTMLElement;\r\n // }\r\n\r\n // // debugger;\r\n // // highlight PrimaryImage in deepskyblue color:\r\n // // --------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentItemElem)) {\r\n // // debugger;\r\n // // this.bias.removeClassForElement(currentItemElem, 'smallerCircle');\r\n // this.bias.addClassForElement(currentItemElem, 'smallerPrimary');\r\n // }\r\n // // debugger;\r\n // // remove highlight active-Image in array in gold color:\r\n // // ----------------------------------------------\r\n // let elemId = 'pagerVPhotoNav-';\r\n // let tempElemIdStr = '';\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n // for (let i = 0; i < kvpArr.length; i++) {\r\n // if (kvpArr[ i ].photoBnId !== item.photoBnId) {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr[ i ].elemId)) {\r\n // tempElemIdStr = elemId + kvpArr[ i ].itemNum.toString();\r\n // }\r\n // else {\r\n // tempElemIdStr = kvpArr[ i ].elemId;\r\n // }\r\n // let tempElem = document.getElementById(tempElemIdStr) as HTMLElement;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n // // this.bias.removeClassForElement(tempElem, 'smallerPrimary');\r\n // this.bias.addClassForElement(tempElem, 'smallerCircle');\r\n // // debugger;\r\n // break;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // // will draw the body-bg with item.value:\r\n // // --------------------------------------\r\n // // EmitterSubjectService.emitCurrentPage(item);\r\n // }\r\n // ---------------------------------------------------------------------------------\r\n // Note: This has been moved to GlyphiconMenuService\r\n //\r\n // Note : this method does not check whether it is a isPhotoMgmt or isViewMember.\r\n // the caller should check/filter and call this only in case of isPhotoMgmt==true.\r\n // ---------------------------------------------------------------------------------\r\n // getPagerVForCurrentPage (input : any) : any {\r\n // // Note: IMPORTANT! it may be required that either photoId or PhotoBnId will be used but NOT both\r\n // // and the decision will depend on application wide whether Photo or PhotoBn will be used.\r\n // // ----------------------------------------------------------------------------------------------\r\n // if (input instanceof KvPhoto)\r\n // {\r\n // // debugger;\r\n // let kvPhoto = input as KvPhoto;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(input) || kvPhoto.sitUserId === 0 || kvPhoto.photoId === 0 || kvPhoto.photoBnId == 0) {\r\n // this.currentPageGlyph = EmitterSubjectService.getCurrentPage();\r\n // // debugger;\r\n //\r\n // // if currentPageGlyph is still not complete, create it from currentPhoto or currentKvPhoto\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph.value)) {\r\n // this.currentPhoto = EmitterSubjectService.getCurrentPhoto();\r\n // // debugger;\r\n //\r\n // // if currentPhoto data exists:\r\n // // -----------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPhoto) && this.currentPhoto.photoId > 0) {\r\n // this.currentPageGlyph.photoId = this.currentPhoto.photoId;\r\n // this.currentKvPhoto = CopyServiceStatic.copyFromPhotoToKvPhoto(this.currentPhoto);\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // // debugger;\r\n // }\r\n // // create currentKvPhoto from loginSuccess and kvPhoto:\r\n // // -----------------------------------------------------\r\n // else {\r\n // this.currentKvPhoto = EmitterSubjectService.getCurrentKvPhoto();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPhoto)) {\r\n // this.currentKvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPhoto)) {\r\n // this.currentKvPhoto = CopyServiceStatic.copyKvPhotoIfExists(this.currentKvPhoto, kvPhoto);\r\n // this.currentPageGlyph.photoId = this.currentKvPhoto.photoId;\r\n // }\r\n // }\r\n //\r\n // // create the currentPageGlyph:\r\n // // ----------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto) && this.currentKvPhoto.photoId > 0) {\r\n // this.currentPageGlyph = CopyServiceStatic.copyFromKvPhotoToKvGlyph(this.currentKvPhoto);\r\n // // debugger;\r\n // }\r\n // }\r\n // // Note : currentKvPhoto does not have a pageNum, so we first create the pagination, and then get its number:\r\n // // ----------------------------------------------------------------------------------------------------------\r\n // if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph) && this.currentPageGlyph.pageNum <= 0)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto) && this.currentKvPhoto.itemNum <= 0)) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.glyphiconMenuService)) {\r\n // this.pagerV = this.glyphiconMenuService.setKvGlyphPager(1);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerV)) {\r\n // this.pagerV.kvGlyphsArr.map(e => {\r\n // // debugger;\r\n // if (e.photoId === this.currentKvPhoto.photoId && e.pageNum > 0) {\r\n // this.currentKvPhoto.itemNum = e.pageNum;\r\n // this.currentPageGlyph.pageNum = e.pageNum;\r\n // this.currentPageGlyph.photoId = e.photoId;\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // EmitterSubjectService.setCurrentPage(this.currentPageGlyph);\r\n // // debugger;\r\n // }\r\n // });\r\n // }\r\n // }\r\n // }\r\n // else {\r\n // EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n // EmitterSubjectService.setCurrentPage(this.currentPageGlyph);\r\n // // debugger;\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // if (this.currentKvPhoto.photoId === 0) {\r\n // this.currentKvPhoto = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n // this.currentKvPhoto = CopyServiceStatic.copyKvPhotoIfExists(this.currentKvPhoto, kvPhoto);\r\n // }\r\n // this.glyphKvArr = this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvPhoto(this.currentKvPhoto);\r\n // // debugger; // TODO: watch for primary-photo-case\r\n // this.glyphiconMenuService.setGlyphs(this.glyphKvArr);\r\n // }\r\n // }\r\n // else if (input instanceof KvMemberActivityGlyph) {\r\n // // debugger;\r\n // this.currentPageGlyph = input as KvMemberActivityGlyph;\r\n // }\r\n //\r\n // // render the glyphicon-menu for the currentPageGlyph:\r\n // // ----------------------------------------------\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageGlyph.value)\r\n // && this.currentPageGlyph.value.length > 0) {\r\n // // debugger;\r\n //\r\n // // var returnUrl = window.location.pathname + window.location.search;\r\n //\r\n // // debugger;\r\n // // will display the glyphs\r\n // this.glyphKvArr = this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvGlyph(this.currentPageGlyph);\r\n // // debugger;\r\n //\r\n // // Note : The View does not require to programatically draw the images, just setting the glyph/image name will suffice\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.glyphKvArr) && this.glyphKvArr.length > 0) {\r\n // // debugger;\r\n // this.glyphiconMenuService.executeGlyphMenuArr(this.glyphKvArr);\r\n // // debugger;\r\n // }\r\n // }\r\n //\r\n // if (this.currentPageGlyph.pageNum > 0) {\r\n // // debugger;\r\n // this.pagerV = this.glyphiconMenuService.setKvGlyphPager(this.currentPageGlyph.pageNum); // current-case\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.pagerV = this.glyphiconMenuService.setKvGlyphPager(1); // default-case\r\n // }\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerV)) {\r\n // this.pagerV.isPhotoMgmt = true;\r\n // // debugger;\r\n // }\r\n // EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n // return this.pagerV;\r\n // }\r\n // ---------------------------------------------------------------------------------\r\n // Note: this has been moved to GlyphiconMenuService\r\n // ---------------------------------------------------------------------------------\r\n //executeGlyphMenuArr (kvAnyArr : KvMemberActivityGlyph[]) : any {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAnyArr) && kvAnyArr.length > 0) {\r\n // this.glyphKvArr = kvAnyArr;\r\n // // debugger;\r\n // this.glyphiconMenuService.setGlyphs(this.glyphKvArr);\r\n // if (this.glyphKvArr.length > 10) { this.glyphiconMenuService.rotateArrowGlyphicons(); }\r\n // // debugger; // TODO: inspect the glyphKvArr\r\n // return true;\r\n // }\r\n // return false;\r\n //}\r\n // ----------------------------------------------------------------\r\n // Deprecated:\r\n // ----------------------------------------------------------------\r\n // selectCurrentElemDeselctOthersOld (kvpArr : KvPhoto[], currPage : KvPhoto) : void {\r\n // OLD scheme:\r\n // -------------\r\n // This works as well, in fact better,\r\n // but it is too verbose and with redundant codes\r\n // -------------------------------------------------\r\n // first: remove highlight of all elements:\r\n // ---------------------------------------\r\n // elemId = 'pagerVPhotoNav-';\r\n\r\n // if (currPageNo > 0) {\r\n // elemId = elemId + currPageNo;\r\n // this.tempElem = document.getElementById(elemId); // for the div-for-backgroundImage\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem.id)\r\n // && this.tempElem.id.indexOf('pagerVPhotoNav-') !== -1) {\r\n // // debugger;\r\n // this.bias.removeClassForElement(this.tempElem, 'smallerSelected');\r\n // }\r\n\r\n // tempImgElems = document.querySelectorAll('img');\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempImgElems) && tempImgElems.length > 0) {\r\n // for (let i = 0; i < tempImgElems.length; i++) {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempImgElems[ i ])\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempImgElems[ i ].id)\r\n // && tempImgElems[ i ].id.indexOf('pagerVPhotoNav-') !== -1) {\r\n // // debugger;\r\n // this.bias.removeClassForElement(tempImgElems[ i ], 'smallerSelected');\r\n // }\r\n // }\r\n // }\r\n // }\r\n\r\n // second: highlight the selected element:\r\n // ---------------------------------------\r\n // if (currPageNo > 0) {\r\n // // debugger;\r\n // this.currentPageElemId = 'pagerVPhotoNav-' + currPageNo;\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.currentPageElemId = 'pagerVPhotoNav-1';\r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentPageElemId)) {\r\n // this.tempElem = document.getElementById(this.currentPageElemId);\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem.id)\r\n // && this.tempElem.id.indexOf(this.currentPageElemId) !== -1) {\r\n // // debugger;\r\n // this.bias.addClassForElement(this.tempElem, 'smallerSelected');\r\n // }\r\n // }\r\n // tempImgElems = document.querySelectorAll('img');\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempImgElems) && tempImgElems.length > 0) {\r\n // for (let i = 0; i < tempImgElems.length; i++) {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempImgElems[ i ])\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempImgElems[ i ].id)\r\n // && tempImgElems[ i ].id.indexOf(this.currentPageElemId) !== -1) {\r\n // // debugger;\r\n // this.bias.addClassForElement(tempImgElems[ i ], 'smallerSelected');\r\n // }\r\n // }\r\n // }\r\n\r\n // debugger;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // let primaryKvPhoto = new KvPhoto();\r\n // let primaryElemIdStr = '';\r\n // let primaryElem : any;\r\n\r\n // for (let i = 0; i < this.kvPhotoArr.length; i++) {\r\n // let pageNum = i + 1;\r\n\r\n // let elemIdStr = elemId + (this.kvPhotoArr[ i ].pageNum.toString());\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvPhotoArr[ i ].pageNum) || this.kvPhotoArr[ i ].pageNum < 1) {\r\n // this.kvPhotoArr[ i ].pageNum = pageNum;\r\n // if (this.kvPhotoArr[ i ].sitUserId === this.loginSuccess.signedInUserId) {\r\n // primaryKvPhoto = this.kvPhotoArr[ i ];\r\n // primaryElemIdStr = elemId + primaryKvPhoto.pageNum.toString();\r\n // primaryElem = document.getElementById(primaryElemIdStr) as HTMLElement;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // ---------------------------------------------------------------------------------\r\n","\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { ModuleComponentLoader } from '../../models/common/moduleComponentLoader.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { PagerMemberActivity } from '../../models/pagination/pagerMemberActivity.model';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { RedirectionService } from '../../services/commonServiceService/redirectionService.service';\r\nimport { DisplayProfileService } from '../../services/displayProfileServiceService/displayProfileService.service';\r\nimport { AbstractPagerVPhotoNavService } from '../../services/pagerServiceService/abstractPagerVPhotoNavService.service';\r\nimport { GlyphiconMenuService } from '../../services/GlyphiconService/glypgiconMenuService.service';\r\nimport { PagerPhotoMgmtService } from '../../services/pagerServiceService/pagerPhotoMgmtService.service';\r\nimport { PagerSupportService } from '../../services/pagerServiceService/pagerSupportService.service';\r\nimport { PhotoPrivacyService } from '../../services/photoServiceService/photoPrivacyService.service';\r\nimport { BackgroundImageAnimationService } from '../../services/rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererService } from '../../services/rendererServiceService/rendererService.service';\r\nimport { RendererServiceService } from '../../services/rendererServiceService/rendererServiceService.service';\r\nimport { EmitterSubjectService } from '../../services/staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../../services/staticServices/jsRegExpServiceStatic.service';\r\n\r\n\r\n// ------------------------------------------------------------------\r\n// This pager-service is the most recently updated one. If other\r\n// pagers need to be updated, this one should be used as a model for\r\n// them. Updated on 20220623.\r\n// ------------------------------------------------------------------\r\n\r\n// ref: http://xahlee.info/js/javascript_range_array.html\r\n// const xah_range = ((min, max, step = 1,) => (Array(Math.floor((max - min) / step) + 1).fill(min).map(((x, i) => (x + i * step)),)));\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class PagerVPhotoNavService extends AbstractPagerVPhotoNavService implements OnDestroy {\r\n // public override renderer = Renderer2;\r\n // ----------------------------------------------------------------\r\n public currentKvPhoto : KvPhoto = new KvPhoto(); \r\n public isKvData = false;\r\n public isKvFile = false;\r\n public isKvNext = false;\r\n public isKvPrev = false;\r\n public isKvUrlData = false;\r\n public isMobilevar = false;\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isStripUrl = true;\r\n public isViewMember = false;\r\n public isWithoutUrl = false; \r\n public kvPhotoArr : KvPhoto[] = [];\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public message = '';\r\n public pageSize = 6;\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public pagerVMemberActivityForPhotoMgmt : PagerMemberActivity = new PagerMemberActivity(); // for primary/private/public photo \r\n public pagerVMemberActivityForViewMember : PagerMemberActivity = new PagerMemberActivity();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public signedInUser : SitUser = new SitUser();\r\n public sitUser : SitUser = new SitUser();\r\n \r\n // ---------------------------------------------------------------\r\n constructor (\r\n public bias : BackgroundImageAnimationService,\r\n public displayProfileService : DisplayProfileService,\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public pagerPhotoMgmtService : PagerPhotoMgmtService,\r\n public pagerSupportService : PagerSupportService,\r\n public photoPrivacyService : PhotoPrivacyService,\r\n public redirectionService : RedirectionService,\r\n public rendererServiceService : RendererServiceService,\r\n public rendererService : RendererService,\r\n public router : Router,\r\n @Inject(DOCUMENT) document : any,\r\n @Inject(Window) window : any\r\n ) {\r\n super(\r\n bias,\r\n glyphiconMenuService,\r\n pagerPhotoMgmtService,\r\n pagerSupportService,\r\n photoPrivacyService,\r\n redirectionService,\r\n rendererServiceService,\r\n rendererService,\r\n router,\r\n document,\r\n window\r\n );\r\n }\r\n // ---------------------------------------------------------------\r\n //ngOnDestroy () {\r\n // // prevent memory leak when component destroyed\r\n // //this.emitterDestroyed$.next(true);\r\n // //this.emitterDestroyed$.complete();\r\n //}\r\n // ===============================================================\r\n\r\n \r\n public clearPagerVKvPhotoNavService (): void {\r\n this.kvPhotoArr = [];\r\n this.pagerVKvPhotoNav = new PagerPhotoMgmt();\r\n // debugger;\r\n }\r\n // ----------------------------------------------------------------\r\n public executeOnCurrentPictureSelection (currentKvP:KvPhoto) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvP)) {\r\n\r\n\t\t}\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getKvPhotoUrl (kvPhoto : KvPhoto) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // debugger;\r\n return 'url(\\'' + kvPhoto.value + '\\')';\r\n }\r\n }\r\n // --------------------------------------------------------------------\r\n public getKvPhotoWithoutUrl (kvPhoto : KvPhoto) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // debugger;\r\n kvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(kvPhoto.value);\r\n return kvPhoto.value;\r\n }\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public setPagerVerticalPhotoNav (value : PagerPhotoMgmt) : void {\r\n this.pagerVKvPhotoNav = value;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // ------------------------------------------------------------\r\n public isInPagedItems (kvPhoto : KvPhoto, pagerVKvPhotoNav: PagerPhotoMgmt) : boolean {\r\n let isFound = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)\r\n && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n for (let i = 0; i < pagerVKvPhotoNav.pagedItems.length; i++) {\r\n if (pagerVKvPhotoNav.pagedItems[ i ].photoBnId === kvPhoto.photoBnId) {\r\n isFound = true;\r\n break;\r\n }\r\n }\r\n }\r\n // debugger;\r\n return isFound;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvFileWithUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n this.isKvFile = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') !== -1\r\n && (kvPhoto.value.toString().toLowerCase().indexOf('.png') !== -1 || kvPhoto.value.toString().toLowerCase().indexOf('.jpg') !== -1);\r\n return this.isKvFile;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvFileWithoutUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n this.isKvFile = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') === -1\r\n && (kvPhoto.value.toString().toLowerCase().indexOf('.png') !== -1 || kvPhoto.value.toString().toLowerCase().indexOf('.jpg') !== -1);\r\n return this.isKvFile;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvDataWithUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n this.isKvUrlData = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') !== -1;\r\n //&& kvPhoto.value.toString().toLowerCase().indexOf('.png') === -1\r\n //&& kvPhoto.value.toString().toLowerCase().indexOf('.jpg') === -1;\r\n return this.isKvUrlData;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public getIsKvDataWithoutUrl (kvPhoto : KvPhoto) : boolean {\r\n // debugger;\r\n this.isKvData = kvPhoto\r\n && kvPhoto.value\r\n && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('.png') === -1\r\n && kvPhoto.value.toString().toLowerCase().indexOf('.jpg') === -1;\r\n return this.isKvData;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public isNextOrLastPage (pagerVKvPhotoNav : PagerPhotoMgmt) : boolean {\r\n this.isKvNext = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav?.endPage)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav?.nextPage)\r\n && pagerVKvPhotoNav.currentPage >= pagerVKvPhotoNav?.startPage\r\n && (pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav?.nextPage\r\n || pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav?.endPage)\r\n return this.isKvNext;\r\n }\r\n // --------------------------------------------------------------------\r\n // API:\r\n // --------------------------------------------------------------------\r\n public isPreviousOrFirstPage (pagerVKvPhotoNav : PagerPhotoMgmt) : boolean {\r\n this.isKvPrev = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.startPage)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.previousPage)\r\n && (pagerVKvPhotoNav.currentPage >= pagerVKvPhotoNav.startPage\r\n || pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav.previousPage)\r\n return this.isKvPrev;\r\n }\r\n \r\n // --------------------------------------------------------------------\r\n public getPagerVKvPhotoNavOnInit (kvPhotoArr: KvPhoto[], pageSize: number) : PagerPhotoMgmt {\r\n // debugger;\r\n let currentPageNum : number = 0;\r\n let currentItemKvPhoto : KvPhoto = new KvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n debugger;\r\n\r\n // mask the private photos if not unlocked:\r\n for (var i = 0; i < kvPhotoArr.length; i++) {\r\n if (kvPhotoArr[ i ].isPrivate && !kvPhotoArr[i].isUnlocked) {\r\n kvPhotoArr[ i ].value = 'assets/photos/private.png';\r\n }\r\n }\r\n this.pageSize = EmitterSubjectService.getPageSize();\r\n currentItemKvPhoto = this.kvPhotoArr[ 0 ];\r\n\r\n // First get the default pager for page#1:\r\n // ---------------------------------------\r\n this.pagerVKvPhotoNav = this.getPagerForVKvPhotoNav(this.kvPhotoArr, currentPageNum, pageSize); //get pager\r\n\r\n this.pagerVKvPhotoNav = this.updatePagerVPhotoNav(this.pagerVKvPhotoNav); // Note: may update the KvPhotoArr !!!important\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)\r\n && (this.pagerVKvPhotoNav.currentItem.photoBnId > 0\r\n || this.pagerVKvPhotoNav.currentItem.photoId > 0\r\n || this.pagerVKvPhotoNav.currentItem.sitUserId > 0)) {\r\n // debugger;\r\n this.executePagerVKvPhotoNavCurrentKvPhotoTasks(this.pagerVKvPhotoNav.currentItem, kvPhotoArr).subscribe(data => {\r\n // debugger;\r\n this.pagerVKvPhotoNav = data;\r\n EmitterSubjectService.setPagerPhotoMgmt(this.pagerVKvPhotoNav);\r\n\r\n // this should call the following method regarless:\r\n // ---------------------------------------------------------\r\n // this.pagerVKvPhotoNav.pagedItems = this.pagerVKvPhotoNavService.prepareKvPhotoArrForDisplay(this.pagerVKvPhotoNav.pagedItems, this.isStripUrl);\r\n // this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavWithoutUrl(this.pagerVKvPhotoNav);\r\n // debugger;\r\n return this.pagerVKvPhotoNav;\r\n });\r\n }\r\n }\r\n\r\n EmitterSubjectService.setPagerPhotoMgmt(this.pagerVKvPhotoNav);\r\n }\r\n return this.pagerVKvPhotoNav;\r\n }\r\n\r\n // --------------------------------------------------------------------\r\n setMcLoader (sitUserId?: number) {\r\n this.isMobilevar = EmitterSubjectService.getIsMobile();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n this.mcLoader.moduleName = \"memberm\";\r\n\r\n if (this.isPhotoMgmt) {\r\n this.mcLoader.componentName = \"myPhotoMgmt\";\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n }\r\n else if (this.isViewMember) {\r\n this.mcLoader.componentName = \"memberViewMgmt\";\r\n this.mcLoader.id = sitUserId > 0 ? sitUserId : this.loginSuccess.signedInUserId;\r\n }\r\n else if (this.isMyProfile) {\r\n this.mcLoader.componentName = \"myProfileViewMgmt\";\r\n this.mcLoader.id = this.loginSuccess.signedInUserId;\r\n }\r\n }\r\n // --------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { KvPhotoServiceInterface } from '../../interfaces/serviceInterfaces/photoServiceIntefaces/kvPhotoServiceInterface';\r\nimport { PhotoServiceInterface } from '../../interfaces/serviceInterfaces/photoServiceIntefaces/photoServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Counters } from '../../models/common/counters.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { ProfileImage } from '../../models/profile/profileImage.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { HttpService } from '../../services/coreServiceService/httpService.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { MemberService } from '../memberServiceService/memberService.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\n\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { PhotoPrivacyService } from './photoPrivacyService.service';\r\n\r\n@Injectable( {\r\n providedIn: 'root',\r\n} )\r\n\r\n// ------------------------------------------------------------------------------------------------\r\n// Note: DictionaryModule will populate all the dictionaries from the indexedDb if data exists.\r\n// Therefore, this service will NOT deal with indexedDb at all!\r\n// TODO: Move all indexedDb related functionalities into the DictionaryModuleComponent\r\n//\r\n// ------------------------------------------------------------------------------------------------\r\n// Disclaimer: this service accomplishes all activities regarding Photos only,\r\n// the photoBn is a model in which user's info as well as a box and nonce value of\r\n// encrypted( salted) photo.\r\n// \r\n// this service will contain all the methods for getting photoBns from indexedDb,\r\n// have them available to photoBnDictionary with photo being unsalted and ready for dsiplay.\r\n// ------------------------------------------------------------------------------------------------\r\nexport class KvPhotoService implements OnDestroy, KvPhotoServiceInterface\r\n{\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public counters: Counters = new Counters();\r\n public currentBn: BoxNonceEntity = new BoxNonceEntity();\r\n public currentKvPhoto: KvPhoto = new KvPhoto();\r\n public currentStateOfPhoto: Photo = new Photo();\r\n public emitterDestroyed$: Subject = new Subject();\r\n public filteredKvPhotoArr: KvPhoto[] = [];\r\n public isBlocked = false;\r\n public isBuddy = false;\r\n public isFriend = false;\r\n public isIndexedDbData = true;\r\n public isLiked = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isPhotoMgmt = false;\r\n public isPrivate = false;\r\n public isToggleCamera = false;\r\n public isBlockedByDictionaryData = false;\r\n public isBlockedByServerData = false;\r\n public isFriendByDictionaryData = false;\r\n public isFriendByServerData = false;\r\n public isLikedByDictionaryData = false;\r\n public isLikedByServerData = false;\r\n public isUnlockedByDictionaryData = false;\r\n public isUnlockedByServerData = false;\r\n public isViewMember = false;\r\n public isWaitingOnCurrStateOfUser = false;\r\n public kvPhotoArr: KvPhoto[] = [];\r\n public kvPhotoLock: KvPhoto = new KvPhoto();\r\n public kvPhotoUnLock: KvPhoto = new KvPhoto();\r\n public kvPhotoPrivate: KvPhoto = new KvPhoto();\r\n public kvPhotoPublic: KvPhoto = new KvPhoto();\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public primaryKvPhoto: KvPhoto = new KvPhoto();\r\n public profileImageArr: ProfileImage[] = [];\r\n public profileImageKvPhotos: KvPhoto[] = [];\r\n public profilePics: ProfilePics = new ProfilePics();\r\n public profilePicsArr: ProfilePics[] = [];\r\n public profilePicsBoxNonceArr: BoxNonceEntity[] = [];\r\n // will contain member-selection of KvPhoto as final state of currentStateOfPhoto\r\n public selectedKvPhoto: KvPhoto = new KvPhoto();\r\n public sitUser: SitUser = new SitUser();\r\n public timer: any;\r\n public timerArray: any[] = [];\r\n public unsaltedIndexedDbData: any;\r\n public userPhotoIds: number[] = [];\r\n public userPhotos : Photo[] = [];\r\n\r\n constructor (\r\n\r\n public httpService: HttpService,\r\n public memberService: MemberService,\r\n public photoPrivacyService : PhotoPrivacyService,\r\n )\r\n {\r\n this.initialize();\r\n // -----------------------------------------------------------\r\n // TODO: Move all indexedDb related functionalities into the triage...service\r\n // -----------------------------------------------------------\r\n //EmitterSubjectService.indexDbPhotoBnDictionaryEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( result =>\r\n // {\r\n // // debugger;\r\n // DictionaryServiceStatic.profileImageDictionary = result;\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( DictionaryServiceStatic.profileImageDictionary ) )\r\n // {\r\n // // debugger;\r\n // let pImageArr: ProfileImage[] = [];\r\n // // debugger;\r\n // pImageArr = DictionaryServiceStatic.profileImageDictionary.values();\r\n // // }\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pImageArr ) && pImageArr.length > 0 )\r\n // {\r\n // // debugger;\r\n // this.memberService.setProfilePics( this.memberService.profilePics );\r\n // EmitterSubjectService.emitIsPhotoMgmt( false );\r\n // EmitterSubjectService.emitIsViewMember( true );\r\n // const tpPics = this.createUserAlbumService.executeMemberViewProfilePicsTasks( this.memberService.profilePics );\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tpPics ) )\r\n // {\r\n // this.memberService.profilePics = this.profilePics = tpPics;\r\n // // debugger;\r\n // }\r\n // }\r\n // }\r\n // // this.ngAfterViewInit();\r\n // this.emitterDestroyed$.next( true );\r\n // this.emitterDestroyed$.complete();\r\n // this.emitterDestroyed$.unsubscribe();\r\n // // debugger;\r\n // } );\r\n // -----------------------------------------------------------\r\n // this indexedDb-system works. Tested 2020/August/05,\r\n // -----------------------------------------------------------\r\n // -----------------------------------------------------------\r\n // TODO: Move all indexedDb related functionalities into the DictionaryModuleComponent\r\n // -----------------------------------------------------------\r\n EmitterSubjectService.indexDbProfilePicsEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n // debugger;\r\n this.profilePics = result as ProfilePics;\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.memberService.profilePics )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.memberService.profilePics.profileImageArr ) )\r\n {\r\n if ( this.memberService.profilePics?.filteredKvPhotoArr?.length === this.memberService.profilePics?.profileImageArr?.length )\r\n {\r\n debugger;\r\n this.memberService.profilePics =\r\n this.photoPrivacyService.displayFilteredKvPhotosOfProfilePics( this.memberService.profilePics );\r\n // debugger;\r\n }\r\n else\r\n {\r\n // debugger;\r\n const pImageArr = this.memberService.profilePics.profileImageArr;\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pImageArr ) && pImageArr.length > 0 )\r\n {\r\n // debugger;\r\n this.memberService.setProfilePics(this.memberService.profilePics);\r\n // Note: this emitters are correct:\r\n // EmitterSubjectService.emitIsPhotoMgmt( false );\r\n // EmitterSubjectService.emitIsViewMember( true );\r\n const tpPics = this.photoPrivacyService.executeMemberViewProfilePicsTasks( this.memberService.profilePics );\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tpPics ) )\r\n {\r\n this.memberService.profilePics = this.profilePics = tpPics;\r\n this.profileImageKvPhotos = this.profilePics.filteredKvPhotoArr;\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n // debugger;\r\n } );\r\n\r\n // -----------------------------------------------------------\r\n // Note:this is not expected to run since we do not get userPhotoIds from indexedDb\r\n // -----------------------------------------------------------\r\n // -----------------------------------------------------------\r\n // TODO: Move all indexedDb related functionalities into the DictionaryModuleComponent\r\n // -----------------------------------------------------------\r\n // EmitterSubjectService.indexDbUserPhotoBnIdsEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( result =>\r\n // {\r\n // // debugger;\r\n // this.userPhotoBnIds = result;\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics.profileImageArr )\r\n // && this.profilePics.profileImageArr.length === 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.sitUser )\r\n // && this.sitUser.sitUserId > 0 )\r\n // {\r\n // // debugger;\r\n // // check if returned value is null\r\n // this.fetchUserPhotoBns( this.userPhotoBnIds, this.sitUser ).then( data =>\r\n // {\r\n // let tProfilePics = data;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics.profileImageArr )\r\n // && tProfilePics.profileImageArr.length > 0 )\r\n // {\r\n // this.profilePics = tProfilePics;\r\n // }\r\n // } );\r\n // }\r\n // this.emitterDestroyed$.next( true );\r\n // this.emitterDestroyed$.complete();\r\n // this.emitterDestroyed$.unsubscribe();\r\n // } );\r\n\r\n }\r\n // ------------------------------------------------------------\r\n protected initialize (): void\r\n {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n // ---------------------------------------------------------------\r\n public ngOnDestroy (): any\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.profilePics = new ProfilePics(); // clear the profilePics on exit\r\n this.profileImageArr = [];\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public clearCounters (): Promise\r\n {\r\n this.counters = new Counters();\r\n return new Promise( ( resolve ) =>\r\n {\r\n resolve( this.counters );\r\n } );\r\n }\r\n // -----------------------------------------------------------\r\n public createPhotoFromSitUser(sitUser:SitUser): Photo {\r\n // debugger;\r\n let photo = new Photo();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.primaryImage)) {\r\n photo.sitUserId = sitUser.sitUserId;\r\n photo.sitUserKey = sitUser.sitUserKey;\r\n photo.cryptUserKey = sitUser.cryptUserKey;\r\n photo.photoId = sitUser.primaryPhotoBnId;\r\n photo.imageString = sitUser.primaryImage;\r\n photo.isPrimary = true;\r\n photo.profileId = sitUser.profileId;\r\n photo.pic = sitUser.primaryImage;\r\n photo.latitude = sitUser.latitude;\r\n photo.longitude = sitUser.longitude;\r\n }\r\n return photo;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getCounters () : Counters {\r\n return this.counters;\r\n }\r\n // --------------------------------------------------------------\r\n getPrimaryImage (sitUserId : number) : Observable {\r\n // debugger;\r\n let showSpinnerComp : any;\r\n const bnComm : Communication = new Communication();\r\n\r\n bnComm.sitUserId = sitUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)) {\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n this.httpService.postObservable('/api/Photo/GetPrimaryImage',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n ).subscribe((result) => {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n subscriber.next(result); \r\n }\r\n else {\r\n subscriber.next(null); //message for result being null \r\n }\r\n subscriber.complete();\r\n })\r\n });\r\n } \r\n }\r\n // --------------------------------------------------------------\r\n getPrimaryPhoto (sitUserId : number) : Promise {\r\n // debugger;\r\n let showSpinnerComp : any;\r\n const bnComm : Communication = new Communication(); \r\n \r\n bnComm.sitUserId = sitUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)) {\r\n return new Promise((resolve, reject) => {\r\n // debugger;\r\n this.httpService.postObservable('/Photo/PostUserPrimaryPhoto',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n ).subscribe((result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n this.boxNonceEntity = new BoxNonceEntity();\r\n this.boxNonceEntity.box = result.box;\r\n this.boxNonceEntity.nonce = result.nonce;\r\n\r\n let tempPhoto : any;\r\n /*\r\n * do not directly assing to profileTile!! capture it in a let first\r\n */\r\n let unboxedPhoto = SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unboxedPhoto)) {\r\n tempPhoto = unboxedPhoto as Photo;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempPhoto)) {\r\n tempPhoto = JSON.parse(tempPhoto); // convert string to model\r\n // debugger;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempPhoto)) {\r\n resolve(tempPhoto);\r\n }\r\n }\r\n else {\r\n reject(null); //message for result being null \r\n }\r\n })\r\n });\r\n }\r\n else {\r\n return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getSitUserPhotoIds (sitUserId: number): Promise\r\n {\r\n return new Promise( ( resolve, reject ) =>\r\n {\r\n this.getUserPhotoIds( sitUserId ).then( data =>\r\n {\r\n this.userPhotoIds = data;\r\n // debugger;\r\n resolve( this.userPhotoIds );\r\n }, FrequentlyUsedFunctionsServiceStatic.nullPromise());\r\n });\r\n }\r\n\r\n // -----------------------------------------------------------\r\n async getUserPhoto (photoId : any, sitUserId : any) : Promise {\r\n //debugger;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (photoId > 0) {\r\n //debugger;\r\n\r\n // debugger; // '/api/Member/GetPhotoIds',\r\n this.httpService.postPromise('/api/Photo/GetPhotoOpenly',\r\n photoId,\r\n 'json',\r\n ).then((result) => {\r\n // debugger;\r\n let photoModel = JSON.parse(result);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoModel) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoModel.image)) {\r\n // debugger;\r\n this.userPhotos.push(photoModel as Photo); // = this.processUnsaltedPhotoIdsResult( sitUserId, result );\r\n // debugger;\r\n // --------------------------------------------------------------------\r\n // Note: while updating dictionary, it will save its data to indexedDb:\r\n // --------------------------------------------------------------------\r\n // DictionaryServiceStatic.updateDictionary( photoModel, 'photoDictionary', sitUserId );\r\n\r\n // this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt( result.toString() );\r\n // this.boxNonceEntity.box = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box );\r\n // this.boxNonceEntity.nonce = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce );\r\n // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // this.boxNonceEntity.id = sitUserId;\r\n // this.boxNonceEntity.key = this.boxNonceEntity.id.toString();\r\n // this.boxNonceEntity.entityName = 'Photo';\r\n // this.boxNonceEntity.sitUserId = sitUserId;\r\n // // debugger;\r\n // // Note: PhotoDictionary contains unsalted Photo; but PhotoBnDictionary contains (salted Photo) == PhotoBn\r\n // this.triageAllDataForIndexedDbAndDictionaryService.savePhotoDictionaryToIndexedDb( this.boxNonceEntity ); \r\n\r\n // debugger;\r\n resolve(photoModel);\r\n reject([]);\r\n }\r\n else {\r\n this.message = 'GetPhotoOpenly>result was null for (photoId:\\'' + photoId + '\\')';\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMessage( this.message );\r\n reject(this.message);\r\n }\r\n }, (error) => {\r\n this.message = 'Error occured in GetPhotoOpenly(photoId:\\'' + photoId + '\\');\\n Error message: ' + error.message;\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMessage( this.message );\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n reject(this.message);\r\n });\r\n }\r\n else {\r\n this.message = 'Error occured in GetPhotoOpenly(photoId:\\'' + photoId + '\\');\\n Error message: ';\r\n console.log(this.message);\r\n reject(this.message);\r\n }\r\n });\r\n }\r\n // -----------------------------------------------------------\r\n getUserPhotoIds (sitUserId : any ): Promise\r\n {\r\n // debugger;\r\n return new Promise( ( resolve, reject ) =>\r\n {\r\n if ( sitUserId > 0 )\r\n {\r\n // debugger;\r\n const photo : Photo = new Photo();\r\n photo.sitUserId = sitUserId;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n if ( this.loginSuccess.signedInUserId > 0 )\r\n {\r\n photo.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel( photo );\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.box )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.nonce ) )\r\n {\r\n // debugger; // '/api/Member/GetUserPhotoIds',\r\n this.httpService.postObservable( '/Photo/GetUserPhotoIds',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n },\r\n 'json2text',\r\n ).subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n {\r\n\r\n this.userPhotoIds = result as number[];\r\n // this.savePhotoIdsInDictionaryAndIndexedDb(sitUserId, this.userPhotoIds);\r\n // debugger;\r\n resolve( this.userPhotoIds);\r\n }\r\n else\r\n {\r\n this.message = 'GetUserPhotoBnIds=>result was null for (sitUserId:\\'' + sitUserId + '\\')';\r\n console.log( this.message );\r\n // EmitterSubjectService.emitMessage( this.message );\r\n }\r\n\r\n }, ( error ) =>\r\n {\r\n this.message = 'Error occured in GetProfilePics(sitUserId:\\'' + sitUserId + '\\');\\n Error message: ' + error.message;\r\n console.log( this.message );\r\n // EmitterSubjectService.emitMessage( this.message );\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n // debugger;\r\n } );\r\n }\r\n }\r\n } );\r\n }\r\n // ---------------------------------------------------------------\r\n // Usage\r\n // observable.subscribe ( value => console.log( value ));\r\n // Created on 20211010\r\n // ---------------------------------------------------------------\r\n public getUserPhotosObservable (photoIds : number[], sitUserId : any) : Observable {\r\n debugger;\r\n const observable = new Observable(observer => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoIds) && photoIds.length > 0) {\r\n debugger;\r\n for (let e of photoIds) {\r\n debugger;\r\n // will store the photoBn in dictionary and return a promise:\r\n // ----------------------------------------------------------\r\n this.getUserPhoto(e, sitUserId).then(data => {\r\n debugger;\r\n let kvP = new KvPhoto();\r\n debugger;\r\n kvP = CopyServiceStatic.copyFromPhotoToKvPhoto(data);\r\n debugger;\r\n let fkvP = this.photoPrivacyService.filterKvPhoto(kvP);\r\n debugger;\r\n observer.next(fkvP);\r\n });\r\n }\r\n }\r\n });\r\n return observable;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public setCounters (value : Counters) : any {\r\n this.counters = value;\r\n return true;\r\n }\r\n // ----------------------------------------------------------------\r\n public setCurrentPageKvPhoto (kvp : KvPhoto) : void {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n kvp.returnUrl = '/mym/photoMgmt';\r\n kvp.elemId = 'bodyId';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryImage) && this.loginSuccess.primaryPhotoBnId > 0) {\r\n let tKvp = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n kvp = CopyServiceStatic.copyKvPhotoIfExists(kvp, tKvp);\r\n }\r\n // kvp.pageNum = 1; // Note: the calling method should set the pageNum\r\n\r\n // debugger;\r\n // set the kvp's image on the background:\r\n // --------------------------------------\r\n // this.bias.setKvPhotoBackgroundImage(kvp);\r\n\r\n // OR TODO: check which is faster?\r\n\r\n EmitterSubjectService.emitCurrentPage(kvp); // bias has a listener and will set the page on the background\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public setupKvPhotoModel (kvp : KvPhoto) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n kvp.value = kvp.image;\r\n }\r\n else if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n kvp.image = kvp.value;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.pic)) {\r\n kvp.pic = kvp.image;\r\n }\r\n\r\n if (kvp.isPrimary) {\r\n kvp.key = kvp.glyphName = \"Primary\";\r\n kvp.privacy = \"Public\";\r\n }\r\n }\r\n return kvp;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public setSitUserPhotoIds (value : number[]) : any {\r\n this.userPhotoIds = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n // savePhotoIdsInDictionaryAndIndexedDb ( sitUserId: number, result: number[] ) : void\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) && result.length > 0 )\r\n // {\r\n // this.userPhotoIds = result;\r\n // EmitterSubjectService.setUserPhotoIds( this.userPhotoIds );\r\n\r\n // DictionaryServiceStatic.updateDictionary( this.userPhotoIds, 'UserPhotoId', sitUserId );\r\n\r\n // this.indexedDbToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // DictionaryServiceStatic.photoIdDictionary, 'UserPhotoId', this.loginSuccess.signedInUserId );\r\n\r\n // // since successfully unsalted UserPhotoIds, we can save the BoxNonce of it in indexedDb:\r\n // // --------------------------------------------------------------------------------------\r\n // // this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt( result.toString() );\r\n // // this.boxNonceEntity.box = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box );\r\n // // this.boxNonceEntity.nonce = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce );\r\n // // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // // this.boxNonceEntity.id = sitUserId;\r\n // // this.boxNonceEntity.key = this.boxNonceEntity.id.toString();\r\n // // this.boxNonceEntity.entityName = 'PhotoId';\r\n // // this.boxNonceEntity.sitUserId = sitUserId;\r\n // // debugger;\r\n // // this.triageAllDataForIndexedDbAndDictionaryService.savePhotoIdDictionaryToIndexedDb( this.boxNonceEntity );\r\n\r\n // // debugger; // TODO: check to see the values\r\n // // return this.userPhotoIds;\r\n // // debugger;\r\n // }\r\n // }\r\n // ==================================================================\r\n}\r\n\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { PhotoAndPrimaryPhotoMgmtServiceInterface } from '../../interfaces/serviceInterfaces/photoServiceIntefaces/photoAndPrimaryPhotoMgmtServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Counters } from '../../models/common/counters.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { PhotoBn } from '../../models/common/photoBn.model';\r\nimport { PhotoMgmtAction } from '../../models/common/photoMgmtAction.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { PagerMemberActivity } from '../../models/pagination/pagerMemberActivity.model';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfileImage } from '../../models/profile/profileImage.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { SignedInUserService } from '../commonServiceService/signedInUserService.service';\r\nimport { SitUserService } from '../commonServiceService/sitUserService.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { MemberService } from '../memberServiceService/memberService.service';\r\nimport { AbstractPagerVPhotoNavService } from '../pagerServiceService/abstractPagerVPhotoNavService.service';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\nimport { PagerSupportService } from '../pagerServiceService/pagerSupportService.service';\r\n// import { PagerVKvPhotoNavService } from '../../app/pagerModule/pagerVPhotoNav/pagerVPhotoNavService.service';\r\nimport { BackgroundImageAnimationService } from '../rendererServiceService/backgroundImageAnimationService.service';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { MessageBuilderServiceStatic } from '../staticServices/messgeBuilderServiceStatic.service';\r\nimport { KvPhotoService } from './kvPhotoService.service';\r\nimport { PhotoBnService } from './photoBnService.service';\r\nimport { PhotoPrivacyService } from './photoPrivacyService.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n// ------------------------------------------------------------------------------------------------\r\n// Disclaimer: this service accomplishes all activities regarding signedInUser's ProfilePics only,\r\n// i.e. creating the profilePics for the signedInUser (1st person user), and all of\r\n// the activities regarding managing the profilePics such as making a photo private\r\n// if it is public and vice versa, and generating the PhotoMgmtNavigation buttons.\r\n// ------------------------------------------------------------------------------------------------\r\nexport class PhotoAndPrimaryPhotoMgmtService extends PhotoBnService implements OnDestroy, PhotoAndPrimaryPhotoMgmtServiceInterface {\r\n \r\n \r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public counters : Counters = new Counters();\r\n public currentBne : BoxNonceEntity = new BoxNonceEntity();\r\n public currentKvPhoto : KvPhoto = new KvPhoto();\r\n public currentStateOfPhoto : Photo = new Photo();\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isViewMember = false;\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public memberViewGlyphNames : string[] = [];\r\n // public memberViewMenuNames: string[] = ['chat', 'email', 'note', 'buddy', 'like', 'private', 'public', 'tala', 'block', 'unblock', 'dislike'];\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public pagerVMemberActivityForPhotoMgmt : PagerMemberActivity = new PagerMemberActivity(); // for primary/private/public photo selection by signedInUser\r\n public pagerVMemberActivityForViewMember : PagerMemberActivity = new PagerMemberActivity();\r\n public photoMgmtGlyphNames : string[] = [];\r\n public photoMgmtAction : PhotoMgmtAction = new PhotoMgmtAction();\r\n public primaryKvPhoto : KvPhoto = new KvPhoto();\r\n public profileImageArr : ProfileImage[] = [];\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public signedInUser : SitUser = new SitUser();\r\n public sitUser : SitUser = new SitUser();\r\n // public timer : any;\r\n public timerArray : any[] = [];\r\n\r\n\r\n constructor (\r\n public abstractPagerVPhotoNavService : AbstractPagerVPhotoNavService,\r\n public bias : BackgroundImageAnimationService,\r\n public dictionaryService : DictionaryService,\r\n public httpService : HttpService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public photoBnService : PhotoBnService,\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public kvPhotoService : KvPhotoService,\r\n public memberService : MemberService,\r\n public pagerSupportService : PagerSupportService,\r\n // public pagerVKvPhotoNavService : PagerVKvPhotoNavService,\r\n public photoPrivacyService : PhotoPrivacyService,\r\n public sitUserService : SitUserService,\r\n public signedInUserService : SignedInUserService,\r\n ) {\r\n super(dictionaryService,\r\n httpService,\r\n dbDexieToDictionaryService,\r\n photoPrivacyService,\r\n sitUserService,);\r\n // -----------------------------------------------------------\r\n //EmitterSubjectService.photoMgmtActionEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe(result => {\r\n // debugger;\r\n // this.photoMgmtAction = result as PhotoMgmtAction;\r\n // this.sendPhotoMgmtAction(this.photoMgmtAction); //.subscribe(data => {\r\n // // let tPPics = data;\r\n // // let cPhoto = new Photo();\r\n // // cPhoto = CopyServiceStatic.copyFromPhotoBnToClientPhoto(cPhoto, data);\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cPhoto) && this.photoMgmtAction.action.toLowerCase().indexOf('primary') === -1) {\r\n // // debugger;\r\n // // let kvPhoto = CopyServiceStatic.copyFromPhotoToKvPhoto(cPhoto);\r\n\r\n // // this.executeOnNonPrimaryPhotoMgmtAction(kvPhoto).subscribe(result => {\r\n // // this.profilePics = result;\r\n // // });\r\n // // }\r\n // // else {\r\n // // debugger;\r\n // // this.executePhotoMgmtPrimaryAction();\r\n // // }\r\n // //});\r\n\r\n // });\r\n\r\n // -----------------------------------------------------------\r\n this.initialize();\r\n }\r\n // ------------------------------------------------------------\r\n initialize () : void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.profilePics = new ProfilePics(); // clear the profilePics on exit\r\n this.profileImageArr = [];\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n return true;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n clearCounters () : Promise {\r\n this.counters = new Counters();\r\n return new Promise((resolve) => {\r\n resolve(this.counters);\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n clearMemberViewGlyphNames () : any {\r\n this.memberViewGlyphNames = [];\r\n this.glyphiconMenuService.clearGlyphMenu();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n clearPhotoMgmtGlyphNames () : any {\r\n this.photoMgmtGlyphNames = [];\r\n this.glyphiconMenuService.clearGlyphMenu();\r\n return true;\r\n } \r\n // ---------------------------------------------------------------------------------\r\n getCounters () : Counters {\r\n return this.counters;\r\n }\r\n // ----------------------------------------------------------------\r\n getPrimaryKvPhotoFromArr (kvPhotoArr : KvPhoto[]) : any {\r\n let primaryKvPhoto : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n if (this.isPhotoMgmt) {\r\n this.isViewMember = false;\r\n }\r\n\r\n kvPhotoArr.map(e => {\r\n if (this.isPhotoMgmt) {\r\n if (e.sitUserId == this.loginSuccess.signedInUserId && e.photoBnId == this.loginSuccess.primaryPhotoBnId) {\r\n primaryKvPhoto = e;\r\n }\r\n }\r\n else if (this.isViewMember) {\r\n if (e.sitUserId == this.sitUser.sitUserId && e.photoBnId == this.sitUser.primaryPhotoBnId) {\r\n primaryKvPhoto = e;\r\n }\r\n }\r\n })\r\n }\r\n return primaryKvPhoto;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n getProfilePics () : ProfilePics {\r\n return this.profilePics;\r\n }\r\n\r\n // ----------------------------------------------------------------\r\n // Note: get the KvPhotoArr of the user from the KvPhotoDictionary:\r\n // ----------------------------------------------------------------\r\n getUserKvPhotosFromDictionary (sitUser : SitUser) : KvPhoto[] | any {\r\n let dKvpArr = this.dictionaryService.kvPhotoDictionary.size > 0 ? this.dictionaryService.kvPhotoDictionary.values() : [];\r\n let userKvPhotoArr : KvPhoto[] = [];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dKvpArr) && dKvpArr.length > 0) {\r\n dKvpArr.map(e => {\r\n if (e.sitUserId === sitUser.sitUserId) {\r\n userKvPhotoArr.push(e);\r\n }\r\n })\r\n }\r\n return userKvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public getPrimaryImageFromLoginSuccess () : string {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryPhotoBnJson)\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryImage)) {\r\n // debugger;\r\n var photoBn = JSON.parse(this.loginSuccess.primaryPhotoBnJson) as PhotoBn;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn)) {\r\n var pbn = this.photoBnService.unsaltPrimaryPicPhotoBnJson(JSON.parse(this.loginSuccess.primaryPhotoBnJson) as PhotoBn);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn)) {\r\n this.loginSuccess.primaryImage = this.photoBnService.getPrimaryPicFromPhotoBn(pbn);\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryImage) && this.loginSuccess.primaryImage.length > 0) {\r\n EmitterSubjectService.setLoginSuccess(this.loginSuccess);\r\n }\r\n }\r\n return this.loginSuccess.primaryImage;\r\n }\r\n // ----------------------------------------------------------------\r\n // getPrimaryPicFromPhotoBn (photoBn : PhotoBn) : any {\r\n // let pic = '';\r\n // let boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.box)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.nonce)\r\n // && photoBn.box.length > 0 && photoBn.nonce.length > 0) {\r\n // boxNonceEntity.box = photoBn.box;\r\n // boxNonceEntity.nonce = photoBn.nonce;\r\n // pic = SlakezSaltServiceStatic.boxUnsalt(boxNonceEntity)\r\n // photoBn.pic = photoBn.image = photoBn.imageString = pic\r\n \r\n // }\r\n // return photoBn.pic;\r\n // }\r\n // ----------------------------------------------------------------\r\n initializeMemberViewComponent (sitUser: any) : ProfilePics {\r\n this.profilePics = EmitterSubjectService.getProfilePics();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0) {\r\n sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics) && this.profilePics.sitUserId > 0) {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.filteredKvPhotoArr) && this.profilePics.filteredKvPhotoArr.length > 0) {\r\n debugger;\r\n this.currentKvPhoto = this.profilePics.filteredKvPhotoArr[ 0 ];\r\n this.currentKvPhoto.itemNum = 0; // Note: itemNum=fromComponentOrService === index=fromView Ref: KvPhoto model \r\n }\r\n else {\r\n debugger;\r\n this.currentKvPhoto = CopyServiceStatic.copySitUserToKvPhoto(sitUser);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto)) {\r\n this.currentKvPhoto.itemNum = 0; // Note: itemNum=fromComponentOrService === index=fromView Ref: KvPhoto model\r\n this.profilePics.filteredKvPhotoArr.push(this.currentKvPhoto);\r\n }\r\n }\r\n }\r\n debugger;\r\n // set also the pagerPhotoNav and currentKvPhoto's pagerPhotoMgmt:\r\n // ---------------------------------------------------------------\r\n this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.currentKvPhoto);\r\n this.kvPhotoService.setCurrentPageKvPhoto(this.currentKvPhoto);\r\n EmitterSubjectService.emitCurrentPage(this.currentKvPhoto);\r\n EmitterSubjectService.emitProfileImages(this.profilePics.filteredKvPhotoArr);\r\n return this.profilePics;\r\n }\r\n\r\n // ------------------------------------------------------------\r\n initializePhotoMgmtComponent () : ProfilePics {\r\n this.profilePics = EmitterSubjectService.getProfilePics();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics) && this.profilePics.sitUserId > 0) {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoArr) && this.profilePics.unFilteredKvPhotoArr.length > 0) {\r\n debugger;\r\n this.currentKvPhoto = this.profilePics.unFilteredKvPhotoArr[ 0 ];\r\n this.currentKvPhoto.itemNum = 0; // Note: itemNum=fromComponentOrService === index=fromView Ref: KvPhoto model \r\n }\r\n else {\r\n debugger;\r\n this.currentKvPhoto = CopyServiceStatic.copyFromLoginSuccessToKvPhoto(this.loginSuccess);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto)) {\r\n this.currentKvPhoto.itemNum = 0; // Note: itemNum=fromComponentOrService === index=fromView Ref: KvPhoto model\r\n this.profilePics.unFilteredKvPhotoArr.push(this.currentKvPhoto);\r\n }\r\n }\r\n }\r\n else {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) { \r\n this.signedInUser = CopyServiceStatic.copyLoginSuccessToSitUser(this.loginSuccess);\r\n\r\n this.profilePics = CopyServiceStatic.createProfilePicsModelFromSitUser(this.signedInUser);\r\n let kvp = CopyServiceStatic.copyLoginSuccessToKvPhoto(this.loginSuccess);\r\n this.profilePics.unFilteredKvPhotoArr.push(kvp); // first entry\r\n this.currentKvPhoto = this.profilePics.unFilteredKvPhotoArr[ 0 ] as KvPhoto;\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.currentKvPhoto)) {\r\n this.currentKvPhoto.itemNum = 0; // Note: itemNum=fromComponentOrService === index=fromView Ref: KvPhoto model \r\n }\r\n }\r\n }\r\n debugger;\r\n // set also the pagerPhotoNav and currentKvPhoto's pagerPhotoMgmt:\r\n // ---------------------------------------------------------------\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.currentKvPhoto);\r\n this.kvPhotoService.setCurrentPageKvPhoto(this.currentKvPhoto);\r\n EmitterSubjectService.emitCurrentPage(this.currentKvPhoto);\r\n EmitterSubjectService.emitProfileImages(this.profilePics.unFilteredKvPhotoArr);\r\n return this.profilePics;\r\n }\r\n \r\n // ---------------------------------------------------------------------------------\r\n setCounters (value : Counters) : any {\r\n this.counters = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setProfileImageArr (value : ProfileImage[]) : any {\r\n this.profileImageArr = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n setProfilePics (value : ProfilePics) : any {\r\n this.profilePics = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n updateProfilePicsWithKvPhoto (pPics : ProfilePics, kvp : KvPhoto) : any {\r\n // if any of the two array is missing, update the originals first:\r\n // ---------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr) && pPics.unFilteredKvPhotoArr.length > 0\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr) || pPics.filteredKvPhotoArr.length === 0) {\r\n pPics.filteredKvPhotoArr = this.photoPrivacyService.filterAndSortProfileKvPhotoArr(pPics.unFilteredKvPhotoArr);\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr) && pPics.filteredKvPhotoArr.length > 0) {\r\n pPics.unFilteredKvPhotoArr = pPics.filteredKvPhotoArr;\r\n pPics.unFilteredKvPhotoArr.forEach(e => {\r\n if (e.sitUserId === kvp.sitUserId && !e.isUnlocked && e.isPrivate) {\r\n e.isUnlocked = !e.isUnlocked;\r\n }\r\n })\r\n }\r\n // now update both arrays with the new kvp:\r\n // ----------------------------------------\r\n var index = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr) && pPics.filteredKvPhotoArr.length > 0) {\r\n index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdOrPhotoIdInKvPhotoArr(pPics.filteredKvPhotoArr, kvp.photoBnId, kvp.photoId);\r\n if (index > -1) {\r\n debugger;\r\n pPics.filteredKvPhotoArr[ index ] = new KvPhoto().copySourceToDestination(pPics.filteredKvPhotoArr[ index ], kvp);\r\n }\r\n else {\r\n pPics.filteredKvPhotoArr.push(kvp);\r\n\t\t\t\t}\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr) && pPics.unFilteredKvPhotoArr.length > 0) {\r\n index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdOrPhotoIdInKvPhotoArr(pPics.filteredKvPhotoArr, kvp.photoBnId, kvp.photoId);\r\n if (index > -1) {\r\n debugger;\r\n pPics.filteredKvPhotoArr[ index ] = new KvPhoto().copySourceToDestination(pPics.filteredKvPhotoArr[ index ], kvp);\r\n }\r\n else {\r\n pPics.unFilteredKvPhotoArr.push(kvp);\r\n }\r\n } \r\n }\r\n return pPics;\r\n }\r\n //\r\n // ---------------------------------------------------------------\r\n // Note: This alters the state of privacy of the photo.\r\n // Note: this should be called only after PhotoMgmtAction on 'private/public' is performed.\r\n //\r\n // ---------------------------------------------------------------\r\n // 1. get the kvPhotoDictionary's data for the user and put the values in the profilePics.unFilteredKvPhotoDictionary\r\n // 2. set the currentKvPhoto's value of isPrimary to false\r\n // 3. set the profilePics.unFilteredKvPhotoArr from it's own kvPhotoDictionary\r\n // 4. set the rest of the profilePics model's data and save it to the dictionary and indexedDb\r\n // 5. display the ProfilePics ( profileImage, KvPhotoTasks, and may pagerVKvPhotoNav)\r\n // --------------------------------------------------------------- \r\n executeOnNonPrimaryPhotoMgmtAction (currKvPhoto : KvPhoto) : Observable\r\n { \r\n return new Observable((subscriber) => {\r\n // debugger;\r\n let date = new Date();\r\n let profilePics = new ProfilePics();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n debugger;\r\n console.log('calling fetchSitUser() from photoAndPrimaryPhotoMgmtServiceService@ln425')\r\n this.sitUserService.getSitUserFromDictionaryOrServer(currKvPhoto.sitUserId).subscribe(result => {\r\n this.sitUser = result;\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)\r\n && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId === currKvPhoto.sitUserId) {\r\n profilePics = CopyServiceStatic.createProfilePicsModelFromSitUser(this.sitUser);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)) {\r\n profilePics = this.updateProfilePicsWithKvPhoto(profilePics, currKvPhoto);\r\n debugger;\r\n }\r\n }\r\n })\r\n }\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currKvPhoto) && this.dictionaryService.profilePicsDictionary.has(currKvPhoto.sitUserId)) {\r\n debugger; \r\n profilePics = this.dictionaryService.profilePicsDictionary.get(currKvPhoto.sitUserId) as ProfilePics;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics) && profilePics.sitUserId > 0) {\r\n profilePics = this.updateProfilePicsWithKvPhoto(profilePics, currKvPhoto);\r\n debugger;\r\n }\r\n } \r\n else {\r\n profilePics = EmitterSubjectService.getProfilePics();\r\n if (profilePics.sitUserId === currKvPhoto.sitUserId) {\r\n profilePics = this.updateProfilePicsWithKvPhoto(profilePics, currKvPhoto);\r\n debugger;\r\n\t\t\t\t}\r\n }\r\n subscriber.next(profilePics); \r\n })\r\n }\r\n // ------------------------------------------------------------------\r\n // 1. get the kvPhotoDictionary's data for the user and put the values in the profilePics.unFilteredKvPhotoDictionary\r\n // 2. set the currentKvPhoto's value of isPrimary to false\r\n // 3. set the profilePics.unFilteredKvPhotoArr from it's own kvPhotoDictionary\r\n // ------------------------------------------------------------------\r\n public populateProfilePicsFromKvPhotoDictionary(kvp: KvPhoto, profilePics: ProfilePics): ProfilePics {\r\n profilePics.unFilteredKvPhotoArr = this.dictionaryService.getUserKvPhotoArrFromKvPhotoDictionary(kvp.sitUserId);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.unFilteredKvPhotoArr) && profilePics.unFilteredKvPhotoArr.length > 0) {\r\n profilePics.unFilteredKvPhotoArr.forEach(e => {\r\n\r\n if (e.photoId === kvp.photoId || e.photoBnId === kvp.photoBnId) {\r\n e.isPrimary = false;\r\n e.privacy = kvp.privacy;\r\n }\r\n\r\n profilePics.unFilteredKvPhotoDictionary.set(e.photoId, e);\r\n this.photoPrivacyService.filterKvPhoto(e).subscribe(data => {\r\n let tfkvp = data;\r\n profilePics.filteredKvPhotoArr.push(tfkvp);\r\n profilePics.filteredKvPhotoDictionary.set(tfkvp.photoId, tfkvp.copy(tfkvp));\r\n });\r\n })\r\n profilePics.unFilteredKvPhotoArr = ArraySupportServiceStatic.makeArrayOfUniqElements(profilePics.unFilteredKvPhotoArr);\r\n profilePics.filteredKvPhotoArr = ArraySupportServiceStatic.makeArrayOfUniqElements(profilePics.filteredKvPhotoArr);\r\n }\r\n return profilePics;\r\n }\r\n // ------------------------------------------------------------------\r\n // set the primaryPhoto only if the signedInUser changed the primary photo: \r\n // ------------------------------------------------------------------\r\n executePhotoMgmtPrimaryAction () : void {\r\n const photoMgmtAction = EmitterSubjectService.getPhotoMgmtAction();\r\n debugger;\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.primaryKvPhoto) &&\r\n this.primaryKvPhoto.photoId > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoMgmtAction) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoMgmtAction.action) &&\r\n this.signedInUser.primaryPhotoBnId === this.primaryKvPhoto.photoId &&\r\n photoMgmtAction.action.toLowerCase().indexOf('primary') !== -1 &&\r\n this.signedInUser.sitUserId === this.loginSuccess.signedInUserId &&\r\n this.loginSuccess.primaryPhotoBnId !== this.signedInUser.primaryPhotoBnId\r\n ) {\r\n debugger;\r\n EmitterSubjectService.setPrimaryImageKvPhoto(this.primaryKvPhoto);\r\n EmitterSubjectService.emitDisplayPrimaryImage(this.primaryKvPhoto);\r\n }\r\n }\r\n // --------------------------------------------------------------- \r\n prepareKvPhotoForDisplay (kvPhoto : KvPhoto, isStripUrl : boolean) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n if (kvPhoto.value.length > 0) {\r\n kvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(kvPhoto.value);\r\n }\r\n }\r\n }\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------------\r\n // Note: This method does not check whether the value has image-prefix:\r\n // So only image-prewfixed data should call this method.\r\n // ---------------------------------------------------------------------\r\n prefixUrlToKvPhotoForDisplay (kvPhoto : KvPhoto) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n if (kvPhoto.value.length > 0 && !JsRegExpServiceStatic.photoUrlPrefixPattern.test(kvPhoto.value)) {\r\n kvPhoto.value = JsRegExpServiceStatic.prefixUrlToImageData(kvPhoto.value);\r\n }\r\n }\r\n }\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------\r\n prefixUrlToKvPhotoArrForDisplay (kvpArr : KvPhoto[]) : KvPhoto[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n kvpArr?.forEach(e => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) && e.value.length > 0) {\r\n e = this.prefixUrlToKvPhotoForDisplay(e);\r\n }\r\n });\r\n }\r\n return kvpArr;\r\n }\r\n // ---------------------------------------------------------------\r\n processPrimaryStatusOfUserAction (kvp : KvPhoto) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n let kvphoto = kvp as KvPhoto;\r\n\r\n if (kvphoto instanceof KvPhoto) {\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvPhoto(kvp);\r\n EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n\r\n // TODO: create an emitter for this:\r\n // this.pagerVKvPhotoNav = this.photoMgmtService.executePagerVKvPhotoNavKvPhotoTasks(kvPhoto);\r\n // Now update the PagerVKvPhotoNav with the updated value of KvPhoto:\r\n // ------------------------------------------------------------------\r\n this.pagerVKvPhotoNav = EmitterSubjectService.getPagerVKvPhotoNav();\r\n var index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdOrPhotoIdInKvPhotoArr(this.pagerVKvPhotoNav.kvPhotoArr, kvphoto.photoBnId, kvphoto.photoId)\r\n if (index > -1) {\r\n this.pagerVKvPhotoNav.kvPhotoArr[ index ] = new KvPhoto().copySourceToDestination(this.pagerVKvPhotoNav.kvPhotoArr[ index ], kvphoto);\r\n }\r\n else {\r\n this.pagerVKvPhotoNav.kvPhotoArr.push(kvphoto);\r\n\t\t\t\t}\r\n debugger;\r\n this.pagerVKvPhotoNav = this.abstractPagerVPhotoNavService.setupPagerVKvPhotoNav(this.pagerVKvPhotoNav.kvPhotoArr, kvphoto);\r\n this.abstractPagerVPhotoNavService.executePagerVKvPhotoNavCurrentKvPhotoTasks(kvphoto, this.pagerVKvPhotoNav.kvPhotoArr).subscribe(data => {\r\n this.pagerVKvPhotoNav = data;\r\n })\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n showGlyphiconMenu (pagerVKvPhotoNav: PagerPhotoMgmt) {\r\n // -------------------------------------------------------------------------\r\n // get the glyphicon-menu of the current-item,\r\n // this will automatically display the menu:\r\n // --------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItem)\r\n && pagerVKvPhotoNav.currentItem.photoBnId > 0) {\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvPhoto(pagerVKvPhotoNav.currentItem);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n hideGlyphiconMenu () { \r\n this.kvMemActGlyphArrForPhotoMgmt = null; \r\n }\r\n // ---------------------------------------------------------------\r\n //updatePrivatePublicStatusOfUserAction (kvp:KvPhoto) : void {\r\n //{\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n // let kvPhoto = kvp as KvPhoto;\r\n // this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.createPhotoMgmtGlyphMenuArrFromKvPhoto(kvp);\r\n // debugger;\r\n // EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVMemActGlyphForPhotoMgmt.kvGlyphArr) && pagerVMemActGlyphForPhotoMgmt.kvGlyphArr.length > 0) {\r\n // // pagerVMemActGlyphForPhotoMgmt.kvMemActGlyphArrForPhotoMgmt = pagerVMemActGlyphForPhotoMgmt.kvGlyphArr;\r\n // // debugger;\r\n // // // EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(pagerVMemActGlyphForPhotoMgmt.kvMemActGlyphArrForPhotoMgmt);\r\n // // this.kvMemActGlyphArrForPhotoMgmt = pagerVMemActGlyphForPhotoMgmt.kvMemActGlyphArrForPhotoMgmt;\r\n\t\t//\t//}\r\n\r\n // // Now update the PagerVKvPhotoNav with the updated value of KvPhoto:\r\n // // ------------------------------------------------------------------\r\n // //this.pagerVKvPhotoNav = EmitterSubjectService.getPagerVKvPhotoNav();\r\n // //var index = ArrayServiceStatic.getIndexOfItemByPhotoBnIdOrPhotoIdInKvPhotoArr(this.pagerVKvPhotoNav.kvPhotoArr, kvPhoto.photoBnId, kvPhoto.photoId)\r\n // //if (index > -1) {\r\n // // this.pagerVKvPhotoNav.kvPhotoArr[ index ] = new KvPhoto().copySourceToDestination(this.pagerVKvPhotoNav.kvPhotoArr[ index ], kvPhoto);\r\n\r\n // // // now set the pager for the new currentItem:\r\n // // // ------------------------------------------\r\n // // this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.setupPagerVKvPhotoNav(this.pagerVKvPhotoNav.kvPhotoArr, this.pagerVKvPhotoNav.kvPhotoArr[ index ]);\r\n // //}\r\n // //else {\r\n // // this.pagerVKvPhotoNav.kvPhotoArr.push(kvPhoto);\r\n\r\n // // // now set the pager for the new currentItem:\r\n // // // ------------------------------------------\r\n // // this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.setupPagerVKvPhotoNav(this.pagerVKvPhotoNav.kvPhotoArr, kvPhoto);\r\n // //}\r\n // // this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt; // Important!\r\n // // debugger;\r\n // // EmitterSubjectService.setPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n // // EmitterSubjectService.emitDisplayMyPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n // }\r\n // }\r\n\t// }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : Important!!\r\n * For member's action on a photo's primary/privacy status server-db's 'SITUser' is the single-point-of-trurh!\r\n * Therefore, a copy of the SITUser of the user must be obtained on 'primary' action before and after,\r\n * and make appropriate decision for the updated state of the data.\r\n *\r\n * Also note that this method can effect up to two (2) images.\r\n * This happens when user acts on 'primary' button.\r\n * In this case the former primary image will become public and the new primary image.\r\n *\r\n * When the user acts on 'private/public' button, it effects only that image.\r\n *\r\n * ---------------------------------------------------------------\r\n */\r\n sendPhotoMgmtAction(photoMgmtAction: PhotoMgmtAction): Observable {\r\n // debugger;\r\n return new Observable(subscriber => {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoMgmtAction) &&\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoMgmtAction.action) || photoMgmtAction.photoBnId > 0 || photoMgmtAction.photoId > 0)) {\r\n // debugger;\r\n this.photoMgmtAction = JSON.parse(JSON.stringify(photoMgmtAction));\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.loginSuccess.signedInUserId > 0 && (photoMgmtAction.photoBnId > 0)) {\r\n photoMgmtAction.kvg = null;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(photoMgmtAction);\r\n\r\n let url = '';\r\n\r\n if (this.photoMgmtAction.action.toLowerCase().indexOf('primary') !== -1) {\r\n url = '/Photo/SetPrimaryPhoto';\r\n } else {\r\n url = '/Photo/AltPhotoPrivacy';\r\n }\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n url,\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe(result => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n var kvp = this.processPhotoMgmtActionResult(result); // Note: result == photoBn\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n // debugger;\r\n EmitterSubjectService.setCurrentKvPhoto(JSON.parse(JSON.stringify(kvp)));\r\n subscriber.next(kvp);\r\n }\r\n else {\r\n subscriber.next(result);\r\n }\r\n }\r\n else {\r\n this.message = 'Observable of sendPhotoMgmtAction(photoId:\\'' + this.photoMgmtAction.photoId;\r\n this.message += '\\');\\n returned null value';\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n MessageBuilderServiceStatic.printMessage(this.photoMgmtAction.sitUserId, this.message);\r\n }\r\n },\r\n (error) => {\r\n this.message = 'Error occured in observable of sendPhotoMgmtAction(photoId:\\'' + this.photoMgmtAction.photoId;\r\n this.message += '\\');\\n Error message : ' + error.message;\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n MessageBuilderServiceStatic.printMessage(this.photoMgmtAction.sitUserId, this.message);\r\n });\r\n }\r\n }\r\n }\r\n })\r\n }\r\n // -----------------------------------------------------------\r\n // Note: The newly uploded PhotoBn contains the photo as fileBytes.\r\n // but the previously uploaded/converted PhotoBn does not.\r\n // Therefore, has to account for both scenarios.\r\n // -------------------------------------------------------------\r\n processPhotoMgmtActionResult (result : any) : KvPhoto\r\n {\r\n // debugger;\r\n var photoBn : PhotoBn = new PhotoBn();\r\n var pic : any;\r\n var kvp : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.fileBytes)) {\r\n pic = JsRegExpServiceStatic.prefixPngToImageData(result.fileBytes);\r\n photoBn = result;\r\n photoBn.pic = photoBn.imageString = photoBn.image = pic;\r\n kvp = new PhotoBn().cloneToKvPhoto(photoBn);\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.box)) {\r\n this.currentBne = new BoxNonceEntity();\r\n this.currentBne.box = result.box;\r\n this.currentBne.nonce = result.nonce;\r\n // debugger;\r\n var tPhotoBn = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(this.currentBne)) as PhotoBn;\r\n // debugger;\r\n var camelPhotoBn = new PhotoBn().toCamelCase(tPhotoBn);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelPhotoBn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelPhotoBn.fileBytes)\r\n && camelPhotoBn.fileBytes.length > 0) {\r\n pic = JsRegExpServiceStatic.prefixPngToImageData(camelPhotoBn.fileBytes);\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.pic)) {\r\n // debugger;\r\n photoBn = new PhotoBn().copySourceToDestination(photoBn, camelPhotoBn);\r\n photoBn.pic = photoBn.image = photoBn.imageString = pic;\r\n }\r\n kvp = new PhotoBn().cloneToKvPhoto(photoBn);\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n // debugger;\r\n EmitterSubjectService.setCurrentKvPhoto(kvp);\r\n // debugger;\r\n return kvp;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n \r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: This method will search all the arrays in ProfilePics model\r\n * for the target KvPhotos (previous and current PrimaryKvPhoto)\r\n * and update previous-primary-photo's status to 'public and non-primary'\r\n * and current-primary-photo's status to 'primary and public'.\r\n *\r\n * It is the most comprehensive and complete search on the model ProfilePics.\r\n * ---------------------------------------------------------------\r\n */\r\n updateProfilePicsArraysOnPrimaryAction (currSitUser : SitUser, pMgmtAction : PhotoMgmtAction) : any {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currSitUser)) {\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n } else {\r\n this.signedInUser = currSitUser;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pMgmtAction)) {\r\n this.photoMgmtAction = EmitterSubjectService.getPhotoMgmtAction();\r\n } else {\r\n this.photoMgmtAction = pMgmtAction;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currSitUser) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pMgmtAction)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)) {\r\n /*\r\n * ----------------------------------------------------\r\n * update filteredKvPhotoArr:\r\n * ----------------------------------------------------\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.filteredKvPhotoArr) && this.profilePics.filteredKvPhotoArr.length > 0) {\r\n this.profilePics.filteredKvPhotoArr.map((e) => {\r\n const elem = e;\r\n\r\n if (elem.photoId !== this.currentStateOfPhoto.photoId) {\r\n if (elem.isPrimary === true) {\r\n // the previous-primary-photo\r\n elem.isPrimary = false;\r\n elem.privacy = 'public';\r\n // debugger;\r\n }\r\n // else we do not change the previous-non-primary-photo's status\r\n }\r\n // a second verification that it is the current-primary-photo\r\n else if (elem.photoId === this.currentStateOfPhoto.photoId) {\r\n elem.isPrimary = true;\r\n /*\r\n * if the current-primary-image were private.\r\n * (this will happen when user makes a private-nonPrimary-photo a primaryPhoto)\r\n */\r\n if (elem.privacy.toLowerCase().indexOf('private') !== -1) {\r\n elem.privacy = 'public';\r\n }\r\n // debugger;\r\n }\r\n this.currentKvPhoto = elem;\r\n });\r\n }\r\n /*\r\n * ----------------------------------------------------\r\n * update profileKvPhotoArr:\r\n * ----------------------------------------------------\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.profileKvPhotoArr) && this.profilePics.profileKvPhotoArr.length > 0) {\r\n this.profilePics.profileKvPhotoArr.map((e) => {\r\n const elem = e;\r\n\r\n if (elem.photoId !== this.currentStateOfPhoto.photoId) {\r\n if (elem.isPrimary === true) {\r\n // the previous-primary-photo\r\n elem.isPrimary = false;\r\n elem.privacy = 'public';\r\n // debugger;\r\n }\r\n // else we do not change the previous-non-primary-photo's status\r\n } else if (elem.photoId === this.currentStateOfPhoto.photoId) {\r\n elem.isPrimary = true;\r\n /*\r\n * if the current-primary-image were private.\r\n * (this will happen when user makes a private-nonPrimary-photo a primaryPhoto)\r\n */\r\n if (elem.privacy.toLowerCase().indexOf('private') !== -1) {\r\n elem.privacy = 'public';\r\n }\r\n // debugger;\r\n }\r\n\r\n this.currentKvPhoto = elem;\r\n });\r\n }\r\n /*\r\n * ----------------------------------------------------\r\n * update profileImageArr:\r\n * ----------------------------------------------------\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.profileImageArr) && this.profilePics.profileImageArr.length > 0) {\r\n this.profilePics.profileImageArr.map((e) => {\r\n const elem = e;\r\n\r\n if (elem.photoId !== this.currentStateOfPhoto.photoId) {\r\n if (elem.isPrimary === true) {\r\n // the previous-primary-photo\r\n elem.isPrimary = false;\r\n elem.privacy = 'public';\r\n // debugger;\r\n }\r\n // else we do not change the previous-non-primary-photo's status\r\n } else if (elem.photoId === this.currentStateOfPhoto.photoId) {\r\n elem.isPrimary = true;\r\n const ckvp = EmitterSubjectService.getCurrentKvPhoto();\r\n\r\n // if the current-primary-image were private. (this will happen when user makes a private-nonPrimary-photo a primaryPhoto)\r\n if (elem.privacy.toLowerCase().indexOf('private') !== -1) {\r\n elem.privacy = 'public';\r\n }\r\n // debugger;\r\n if (ckvp.photoId === elem.photoId) {\r\n this.currentKvPhoto = ckvp;\r\n } else {\r\n // create a KvPhoto from photo\r\n const tckvp = CopyServiceStatic.copyFromProfileImageToKvPhoto(elem);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tckvp)) {\r\n this.currentKvPhoto = tckvp;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n EmitterSubjectService.setCurrentKvPhoto(this.currentKvPhoto);\r\n return this.profilePics;\r\n }\r\n }\r\n return null;\r\n }\r\n // ==================================================================\r\n}\r\n\r\n// ====================================================================\r\n \r\n // ---------------------------------------------------------------------------------\r\n //executePagerVKvPhotoNavTasks (pagerVKvPhotoNav : PagerPhotoMgmt) : Promise {\r\n // return new Promise((resolve, reject) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItem)) {\r\n // debugger;\r\n // resolve(this.executePagerVKvPhotoNavKvPhotoTasks(pagerVKvPhotoNav.currentItem, pagerVKvPhotoNav.kvPhotoArr));\r\n // }\r\n // else {\r\n // reject(null);\r\n // }\r\n // })\r\n //}\r\n\r\n // ----------------------------------------------------------------\r\n // ----------------------------------------------------------------\r\n // API: !!!!!!\r\n // ----------------------------------------------------------------\r\n // 1) This method will simply print the pagerVKvPhotoNav.currentItem/currentKvPhoto\r\n // and select the currentKvPhoto, and deselct others.\r\n // 2) This will set the KvPhoto as background-image.\r\n // 3) This will get the pagerVKvPhotoNav from Emitter and match with currentKvPhoto with pagerVKvPhotoNad.currentItem,\r\n // and if they don't match, it will create a new pagerVKvPhotoNav on the basis of CurrentKvPhoto.\r\n // 4) this will also cover for the primaryImage case for pagerVKvPhotoNav.\r\n // 5) This will print the currentKvPhoto respective glyphMenu.\r\n // 6) This will highlight primaryImage if it finds it.\r\n // ---------------------------------------------------------------------------------\r\n // executePagerVKvPhotoNavKvPhotoTasks (currentKvPhoto : KvPhoto, kvpArr : KvPhoto[]) : Promise {\r\n // return new Promise((resolve, reject) => {\r\n // // debugger;\r\n // let pagerVKvPhotoNav = new PagerPhotoMgmt();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto) && currentKvPhoto.itemNum >= 0 &&\r\n // (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto.value) && currentKvPhoto.value.length > 0)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentKvPhoto.image) && currentKvPhoto.image.length > 0)) {\r\n // // debugger;\r\n // pagerVKvPhotoNav = EmitterSubjectService.getPagerPhotoMgmt();\r\n\r\n // // check to see that the Emitter's pagerPhotoMgmt is same as currentKvPhoto's pagerPhotoMgmt,\r\n // // otherwise create a new pagerPhotoMgmt for currentKvPhoto:\r\n // // Note: PhotoId or PhotoBnId or both may be 0, so need to check for currentKvPhoto.image:\r\n // // -------------------------------------------------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItem)\r\n // && (pagerVKvPhotoNav.currentItem.photoId !== currentKvPhoto.photoId\r\n // || pagerVKvPhotoNav.currentItem.photoBnId !== currentKvPhoto.photoBnId)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem.image)\r\n // && this.pagerVKvPhotoNav.currentItem.image.length > 0)) {\r\n // // debugger;\r\n // pagerVKvPhotoNav = this.pagerVKvPhotoPhotoNavService.getPagerVKvPhotoForCurrentPageInKvPhotoArr(currentKvPhoto, kvpArr);\r\n // }\r\n\r\n // // debugger;\r\n // // kvPhoto's image as background:\r\n // // ------------------------------\r\n // this.bias.updateBackgroundImageOutsideAngular(pagerVKvPhotoNav.currentItem.value);\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n // this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n // // Note: disply the glyphMenu for currentKvPhoto:\r\n // // ----------------------------------------------\r\n // if (this.isPhotoMgmt || this.isMyProfile) {\r\n // // debugger;\r\n // // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // // --------------------------------------- \r\n // this.pagerVMemberActivityForPhotoMgmt = this.glyphiconMenuService.getPagerVMemActGlyphMenuForPhotoMgmt(pagerVKvPhotoNav.currentItem);\r\n // // debugger;\r\n // pagerVKvPhotoNav.pagerVMemberActivityForPhotoMgmt = this.pagerVMemberActivityForPhotoMgmt;\r\n // // debugger;\r\n // this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(pagerVKvPhotoNav.currentItem); // will display photo primary/private/public glyphs\r\n // pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n // this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, pagerVKvPhotoNav.currentItem);\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForPhotoMgmt)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForPhotoMgmt.pagedItems)\r\n // && this.pagerVMemberActivityForPhotoMgmt.pagedItems.length > 0) {\r\n // // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // // ---------------------------------------\r\n // // debugger;\r\n // this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.pagerVMemberActivityForPhotoMgmt.pagedItems, this.pagerVMemberActivityForPhotoMgmt.currentItem, \"pagerVGlyphMgmt-\");\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvMemActGlyphArrForPhotoMgmt) && this.kvMemActGlyphArrForPhotoMgmt.length > 0) {\r\n // // glyphMenu for PhotoMgmt.currentKvPhoto:\r\n // // ---------------------------------------\r\n // // debugger;\r\n // this.bias.selectCurrentElemDeselctOthersForKvMAGlyph(this.kvMemActGlyphArrForPhotoMgmt, this.kvMemActGlyphArrForPhotoMgmt[ 0 ], \"pagerVGlyphMgmt-\");\r\n // }\r\n // }\r\n // else if (this.isViewMember) {\r\n // this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, pagerVKvPhotoNav.currentItem);\r\n // // debugger;\r\n // if (this.sitUser.sitUserId > 0) {\r\n // pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.displayViewMemberGlyphMenu(this.sitUser.sitUserId);\r\n // }\r\n // this.pagerVMemberActivityForViewMember = this.glyphiconMenuService.getPagerVMemActGlyphMenuForViewMember(currentKvPhoto.pageNum > 0 ? currentKvPhoto.pageNum : 1, this.sitUser);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVMemberActivityForViewMember)) {\r\n // pagerVKvPhotoNav.pagerVMemberActivityForViewMember = this.pagerVMemberActivityForViewMember;\r\n // // debugger;\r\n // }\r\n // }\r\n // EmitterSubjectService.setPagerPhotoMgmt(pagerVKvPhotoNav);\r\n // }\r\n // // debugger;\r\n // resolve(pagerVKvPhotoNav);\r\n // })\r\n // }\r\n // ----------------------------------------------------------------\r\n // This method will simply print the pagerVKvPhotoNav.pagedItems\r\n // and select the currentKvPhoto, and deselct others:\r\n // Will also cover for the primaryImage case for pagerVKvPhotoNav.\r\n // ----------------------------------------------------------------\r\n // executePagerVKvPhotoNavPagedItems (pagerVKvPhotoNav : PagerPhotoMgmt) : Promise {\r\n // return new Promise((resolve, reject) => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems) && pagerVKvPhotoNav.pagedItems.length > 0) {\r\n\r\n // this.pagerVKvPhotoNav = pagerVKvPhotoNav;\r\n // // debugger;\r\n // this.pagerVKvPhotoNav.pagedItems.forEach(e => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value)) {\r\n // // debugger;\r\n // this.bias.setPagerVNavKvPhotoImage(e);\r\n // }\r\n // });\r\n // // debugger;\r\n // }\r\n // resolve(this.pagerVKvPhotoNav);\r\n // });\r\n // }\r\n\r\n //// ----------------------------------------------------------------\r\n //getKvPhotoUrl (kvPhoto : KvPhoto) : any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // // debugger;\r\n // return 'url(\\'' + kvPhoto.value + '\\')';\r\n // }\r\n //}\r\n //// ----------------------------------------------------------------\r\n //getKvPhotoWithoutUrl (kvPhoto : KvPhoto) : any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n // // debugger;\r\n // kvPhoto.value = JsRegExpServiceStatic.normalizeImageDataWithRegExp(kvPhoto.value);\r\n // return kvPhoto.value;\r\n // }\r\n //}\r\n //// ------------------------------------------------------------\r\n //isInPagedItems (pagerVKvPhotoNav : PagerPhotoMgmt, kvPhoto : KvPhoto) : boolean {\r\n // let isFound = false;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n // for (let i = 0; i < pagerVKvPhotoNav.pagedItems.length; i++) {\r\n // if (pagerVKvPhotoNav.pagedItems[ i ].photoBnId === kvPhoto.photoBnId) {\r\n // isFound = true;\r\n // break;\r\n // }\r\n // }\r\n // }\r\n // return isFound;\r\n //}\r\n\r\n //// ------------------------------------------------------------\r\n //getIsKvData (kvPhoto : KvPhoto) : boolean {\r\n // this.isKvData = kvPhoto\r\n // && kvPhoto.value\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') === -1\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('.png') === -1\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('.jpg') === -1;\r\n // return this.isKvData;\r\n //}\r\n //// ------------------------------------------------------------\r\n //getIsKvFile (kvPhoto : KvPhoto) : boolean {\r\n // this.isKvFile = kvPhoto\r\n // && kvPhoto.value\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') === -1\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') === -1\r\n // && (kvPhoto.value.toString().toLowerCase().indexOf('.png') !== -1 || kvPhoto.value.toString().toLowerCase().indexOf('.jpg') !== -1);\r\n // return this.isKvFile;\r\n //}\r\n //// ------------------------------------------------------------\r\n //getIsKvUrlData (kvPhoto : KvPhoto) : boolean {\r\n // this.isKvUrlData = kvPhoto\r\n // && kvPhoto.value\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('url(\\'') !== -1\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('.png') === -1\r\n // && kvPhoto.value.toString().toLowerCase().indexOf('.jpg') === -1;\r\n // return this.isKvUrlData;\r\n //}\r\n\r\n\r\n //// ------------------------------------------------------------\r\n //isNextOrLastPage (pagerVKvPhotoNav : PagerPhotoMgmt) : boolean {\r\n // this.isKvNext = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav?.lastPage)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav?.nextPage)\r\n // && pagerVKvPhotoNav.currentPage >= pagerVKvPhotoNav?.firstPage\r\n // && (pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav?.nextPage\r\n // || pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav?.lastPage)\r\n // return this.isKvNext;\r\n //}\r\n //// ------------------------------------------------------------\r\n //isPreviousOrFirstPage (pagerVKvPhotoNav : PagerPhotoMgmt) : boolean {\r\n // this.isKvPrev = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.firstPage)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.previousPage)\r\n // && (pagerVKvPhotoNav.currentPage >= pagerVKvPhotoNav.firstPage\r\n // || pagerVKvPhotoNav.currentPage <= pagerVKvPhotoNav.previousPage)\r\n // return this.isKvPrev;\r\n //}\r\n // ------------------------------------------------------------\r\n // Note: This should be called when a pager is needed.\r\n // ------------------------------------------------------------\r\n // setPageOfPhotoNav (pageNum : number, kvPhotoArr : KvPhoto[]) : any {\r\n // // debugger;\r\n // let currentPageNum = 1;\r\n // let pageSize = 3;\r\n // if (pageNum >= 1) {\r\n // currentPageNum = pageNum;\r\n // }\r\n // else {\r\n // currentPageNum = 1;\r\n // }\r\n // if (pageSize <= 0) {\r\n // pageSize = EmitterSubjectService.getPageSize();\r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n\r\n // this.pagerVKvPhotoNav = (this.pagerPhotoMgmtService as PagerPhotoMgmtService).getPagerUpTo10(kvPhotoArr, currentPageNum, pageSize); //get pager\r\n\r\n // // Note: since the primaryImage can be created from sitUser/signedInUser/loginSuccess,\r\n // // and they may lack either or both PhotoBnId and PhotoId, we also need to check\r\n // // for image value for this segment of code to execute properly.\r\n // // ------------------------------------------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem)\r\n // && (this.pagerVKvPhotoNav.currentItem.photoBnId > 0\r\n // || this.pagerVKvPhotoNav.currentItem.photoId > 0\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.currentItem.image) \r\n // && this.pagerVKvPhotoNav.currentItem.image.length > 0)\r\n // )\r\n // ) {\r\n // debugger;\r\n\r\n // this.executePagerVKvPhotoNavKvPhotoTasks(this.pagerVKvPhotoNav.currentItem, kvPhotoArr).then(data => {\r\n // this.pagerVKvPhotoNav = data;\r\n // debugger;\r\n\r\n // this.executePagerVKvPhotoNavPagedItems(this.pagerVKvPhotoNav).then(data1 => {\r\n // // debugger;\r\n // this.pagerVKvPhotoNav = data1; EmitterSubjectService.setPagerPhotoMgmt(this.pagerVKvPhotoNav);\r\n // EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n // return this.pagerVKvPhotoNav\r\n // })\r\n // }) \r\n // }\r\n // else return null;\r\n // }\r\n // else return null;\r\n // }\r\n // ----------------------------------------------------------------\r\n // setupDictionaryProfilePicsForPhotoMgmt()\r\n //setupProfilePicsForPhotoMgmt (data : any) : ProfilePics {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUser) && this.signedInUser.sitUserId > 0) {\r\n // this.profilePics = CopyServiceStatic.createProfilePicsModelFromSitUser(this.signedInUser);\r\n // }\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // if (data instanceof ProfilePics && data.sitUserId > 0 && !data.isModelKvPhotoArrEmpty()\r\n // //&& ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.filteredKvPhotoArr) && data.filteredKvPhotoArr.length === 0)\r\n // // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.unFilteredKvPhotoArr) && data.unFilteredKvPhotoArr.length === 0)\r\n // ) {\r\n // // debugger;\r\n // if (data.sitUserId > 0) {\r\n // // debugger;\r\n // this.profilePics = data;\r\n // // debugger;\r\n // }\r\n // }\r\n // else if (StringServiceStatic.typeCheck(data).indexOf('Array') !== -1) {\r\n // // debugger;\r\n // this.profilePics.unFilteredKvPhotoArr = data;\r\n // }\r\n // else if (data instanceof KvPhoto && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.value) && data.photoBnId > 0) {\r\n // if (this.profilePics.unFilteredKvPhotoDictionary.containsKey(data.photoBnId)) {\r\n // let dictionaryKvPhoto = this.profilePics.unFilteredKvPhotoDictionary.remove(data.photoBnId) as KvPhoto;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryKvPhoto)) {\r\n // // -----------------------------------------------------------------------------------------------\r\n // // Note: there is a chance that some unexpected result may be copied into the destination such as\r\n // // dictionaryKvPhoto.photoId = 0, and data.photoId = 1; then after copyIfExists will result\r\n // // in dictionaryKvPhoto.photoId = 1.\r\n // // -----------------------------------------------------------------------------------------------\r\n // dictionaryKvPhoto = dictionaryKvPhoto.copy(data);\r\n // this.profilePics.unFilteredKvPhotoDictionary.setValue(dictionaryKvPhoto.photoBnId, dictionaryKvPhoto);\r\n // }\r\n // }\r\n // // debugger;\r\n // this.profilePics.unFilteredKvPhotoDictionary.setValue(data.photoBnId, data);\r\n // }\r\n // }\r\n\r\n // // debugger;\r\n // // this.profilePics = this.pagerSupportService.updateProfilePicsPrimaryKvPhotoIfMissing(this.profilePics); // will update both filteredKvPhotoArr and unFilteredKvPhotoArr\r\n // this.profilePics = this.pagerSupportService.updatePrimaryKvPhotoIfMissingOnProfilePics(this.profilePics); // will update unFilteredKvPhotoArr on isPhotoMgmt==true\r\n // // debugger; // watch--\r\n // return this.profilePics;\r\n //}\r\n\r\n // ----------------------------------------------------------------\r\n // executeDuringNgAfterViewInitForPagerVKvPhotoNav (pagerVKvPhotoNav : PagerPhotoMgmt) : any {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.currentItemKvPhoto)) {\r\n // this.bias.updateBackgroundImageOutsideAngular(pagerVKvPhotoNav.currentItemKvPhoto.value);\r\n // // debugger;\r\n // EmitterSubjectService.emitCurrentPage(pagerVKvPhotoNav.currentItemKvPhoto); // bias has a listener and will set the page on the background\r\n\r\n // this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.kvPhotoArr, pagerVKvPhotoNav.currentItemKvPhoto);\r\n // this.glyphiconMenuService.displayPhotoMgmtGlyphMenu(pagerVKvPhotoNav.currentItemKvPhoto); // will display photo primary/private/public glyphs\r\n // return pagerVKvPhotoNav;\r\n // }\r\n // }\r\n // ----------------------------------------------------------------\r\n // executeDuringNgAfterViewInitForKvPhoto (kvp : KvPhoto) : any {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n // this.bias.updateBackgroundImageOutsideAngular(kvp.value);\r\n // // debugger;\r\n // EmitterSubjectService.emitCurrentPage(kvp); // bias has a listener and will set the page on the background\r\n // let pagerVKvPhotoNav = this.pagerServicePhotoMgmt.getPagerVPhotoMgmtForCurrentPage(kvp);\r\n // this.bias.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.kvPhotoArr, kvp);\r\n // this.glyphiconMenuService.displayPhotoMgmtGlyphMenu(kvp); // will display photo primary/private/public glyphs\r\n // return pagerVKvPhotoNav;\r\n // }\r\n // }\r\n// ----------------------------------------------------------------\r\n //executeProfilePicsTasks (pPics) : ProfilePics {\r\n // // check first if the filtered/unfiltered kvPhotoArr exists or not:\r\n // // -----------------------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)) {\r\n // // debugger;\r\n // this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // let kvPhotoArr : KvPhoto[] = [];\r\n // if (this.isPhotoMgmt) {\r\n // // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr)\r\n // || pPics.unFilteredKvPhotoArr.length === 0) {\r\n // pPics.unFilteredKvPhotoArr = this.getUserKvPhotosFromDictionary(this.signedInUser);\r\n // // debugger; \r\n // }\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr)\r\n // && pPics.unFilteredKvPhotoArr.length > 0\r\n // && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr[ 0 ].elemId)) {\r\n // // debugger;\r\n\r\n // pPics = this.setupDictionaryProfilePicsForPhotoMgmt(pPics);\r\n // this.bias.setProfilePicsBackgroundImage(pPics);\r\n // // debugger; \r\n // // EmitterSubjectService.emitProfileImages(this.profilePics.unFilteredKvPhotoArr);\r\n // // debugger;\r\n // }\r\n // }\r\n // else if (this.isViewMember) {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr)\r\n // || pPics.filteredKvPhotoArr.length === 0) {\r\n // kvPhotoArr = this.getUserKvPhotosFromDictionary(this.sitUser);\r\n // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n // debugger;\r\n // pPics.filteredKvPhotoArr = this.photoPrivacyService.filterAndSortProfileKvPhotoArr(kvPhotoArr);\r\n // }\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr)\r\n // && pPics.filteredKvPhotoArr.length > 0\r\n // && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr[ 0 ].elemId)) {\r\n // debugger;\r\n\r\n // pPics = this.setupDictionaryProfilePicsForViewMember(pPics, this.sitUser);\r\n // this.bias.setProfilePicsBackgroundImage(pPics);\r\n // debugger;\r\n // EmitterSubjectService.emitProfileImages(pPics.filteredKvPhotoArr);\r\n // debugger;\r\n // }\r\n // }\r\n // }\r\n // return pPics;\r\n //}\r\n// ----------------------------------------------------------------\r\n // TODO: remove this temp holder of this method:\r\n // pgrVPhotoNav.kvPhotoArr = this.setIndexAndPageNumAndElemId(pgrVPhotoNav, \"pagerVPhotoNav-\");\r\n // ----------------------------------------------------------------\r\n //setupProfilePicsForViewMember (data : any, sitUser: SitUser) : ProfilePics {\r\n // // EmitterSubjectService.emitIsPhotoMgmt(true);\r\n // this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n // if (this.isViewMember) {\r\n // this.isPhotoMgmt = false;\r\n // }\r\n // let isFiltered = true;\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // if (data instanceof ProfilePics) {\r\n // // debugger;\r\n // if (data.sitUserId > 0) {\r\n // // debugger;\r\n // this.profilePics = data;\r\n // // debugger;\r\n // }\r\n // }\r\n // else if (StringServiceStatic.typeCheck(data).indexOf('Array') !== -1) {\r\n // // debugger;\r\n // this.profilePics.filteredKvPhotoArr = data;\r\n // }\r\n // else if (data instanceof KvPhoto && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.value) && data.photoBnId > 0) {\r\n // this.profilePics.filteredKvPhotoArr = ArraySupportServiceStatic.mergeArraysUniq(this.profilePics.filteredKvPhotoArr, [ data ]);\r\n // }\r\n // }\r\n // this.profilePics = this.pagerSupportService.updateProfilePicsPrimaryKvPhotoIfMissing(this.profilePics);\r\n // debugger;// watch-\r\n // return this.profilePics;\r\n //}\r\n// ----------------------------------------------------------------\r\n //setupDictionaryProfilePicsForPhotoMgmt (pPics : ProfilePics) : ProfilePics | any {\r\n // // this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) || pPics.sitUserId === 0) {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUser) || this.signedInUser.sitUserId === 0) {\r\n // this.signedInUser = CopyServiceStatic.copyLoginSuccessToSitUser(this.loginSuccess);\r\n // }\r\n // this.profilePics = CopyServiceStatic.createProfilePicsModelFromSitUser(this.signedInUser);\r\n // }\r\n // else this.profilePics = pPics;\r\n\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)) { \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.unFilteredKvPhotoArr) && this.profilePics.unFilteredKvPhotoArr.length === 0) { \r\n // this.profilePics.unFilteredKvPhotoArr = this.getUserKvPhotosFromDictionary(this.signedInUser);\r\n // }\r\n // }\r\n\r\n // DictionaryServiceStatic.updateDictionary(this.profilePics, \"ProfilePics\", this.loginSuccess.signedInUserId);\r\n\r\n // // if primaryPhotoBnId was not found on KvPhotoArr, so add it:\r\n // // -----------------------------------------------------------\r\n // // debugger;\r\n // this.profilePics = this.pagerSupportService.updateProfilePicsPrimaryKvPhotoIfMissing(this.profilePics);\r\n\r\n // return this.profilePics;\r\n //}\r\n // ----------------------------------------------------------------\r\n //setupDictionaryProfilePicsForViewMember (pPics : ProfilePics, sitUser : SitUser) : ProfilePics | any {\r\n // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) || pPics.sitUserId === 0) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) || sitUser.sitUserId > 0) {\r\n // this.profilePics = CopyServiceStatic.createProfilePicsModelFromSitUser(sitUser);\r\n // }\r\n // }\r\n // else this.profilePics = pPics;\r\n\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)) {\r\n // let dKvPhotoArr = this.getUserKvPhotosFromDictionary(sitUser);\r\n // debugger;\r\n\r\n // // filter the unFiltered kvPhotoArr:\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dKvPhotoArr) && dKvPhotoArr.length > 0) {\r\n // let tFilteredKvPhotoArr = this.photoPrivacyService.filterAndSortProfileKvPhotoArr(dKvPhotoArr);\r\n // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tFilteredKvPhotoArr) && tFilteredKvPhotoArr.length > 0) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.filteredKvPhotoArr) && this.profilePics.filteredKvPhotoArr.length === 0) {\r\n // this.profilePics.filteredKvPhotoArr = tFilteredKvPhotoArr;\r\n // debugger;\r\n // }\r\n // else {\r\n // debugger;\r\n // this.profilePics.filteredKvPhotoArr = [ this.profilePics.filteredKvPhotoArr, ...tFilteredKvPhotoArr ];\r\n // debugger;\r\n // this.profilePics.filteredKvPhotoArr = ArraySupportServiceStatic.makeUniq(this.profilePics.filteredKvPhotoArr);\r\n // debugger;\r\n // }\r\n\r\n // debugger;\r\n // DictionaryServiceStatic.updateDictionary(this.profilePics, \"ProfilePics\", this.loginSuccess.signedInUserId);\r\n // // if primaryPhotoBnId was not found on KvPhotoArr, so add it:\r\n // // -----------------------------------------------------------\r\n // debugger;\r\n // this.profilePics = this.pagerSupportService.updateProfilePicsPrimaryKvPhotoIfMissing(this.profilePics);\r\n // debugger;// watch-\r\n // }\r\n // }\r\n // }\r\n // return this.profilePics;\r\n //}\r\n// ------------------------------------------------------------------------\r\n // Note: will setup the ProfilePics with filtered data and unfiltered data:\r\n // TODO: remove after testing/before deployment\r\n // ------------------------------------------------------------------------\r\n //setupProfilePicsFromUnfilteredKvPhotoMap (pPics : ProfilePics, unfilteredKvPhotoMap: Map) : ProfilePics {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unfilteredKvPhotoMap) && unfilteredKvPhotoMap.size > 0) {\r\n // debugger;\r\n // pPics.unFilteredKvPhotoMap = ArrayServiceStatic.sortMapByPhotoBnId(pPics.unFilteredKvPhotoMap);\r\n // debugger;\r\n // //for (let e of pPics.unFilteredKvPhotoArr) {\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n // // if (e.value.photoBnId > 0 && e.value.photoId >= 0) {\r\n // // pPics.unFilteredKvPhotoDictionary.setValue(e.value.photoBnId, e);\r\n // // // let dKv = pPics.unFilteredKvPhotoDictionary.getValue(parseInt(e.key)) as KvPhoto;\r\n // // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dKv) && dKv.value.photoBnId !== e.value.photoBnId) {\r\n // // // pPics.unFilteredKvPhotoDictionary.setValue(e.value.photoBnId, e);\r\n // // // }\r\n // // debugger;\r\n // // }\r\n // // else if (e.value.photoId > 0 && e.value.photoBnId === 0) {\r\n // // pPics.profileKvPhotoArr.push(e);\r\n // // debugger;\r\n // // }\r\n // // }\r\n // //}\r\n // };\r\n\r\n // pPics.unFilteredKvPhotoArr = pPics.unFilteredKvPhotoArr.sort((a, b) =>\r\n // b.photoBnId = a.photoBnId\r\n // );\r\n // return pPics;\r\n //}\r\n\r\n\r\n","'use strict'\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Counters } from '../../models/common/counters.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { PhotoBn } from '../../models/common/photoBn.model';\r\nimport { PhotoOmniModel } from '../../models/common/photoOmni.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { ProfileImage } from '../../models/profile/profileImage.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { SignedInUserService } from '../commonServiceService/signedInUserService.service';\r\nimport { SitUserService } from '../commonServiceService/sitUserService.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { PhotoPrivacyService } from './photoPrivacyService.service';\r\nimport { camelCase } from 'lodash';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n// ------------------------------------------------------------------------------------------------\r\n// Disclaimer: this service accomplishes all activities regarding PhotoBns only,\r\n// the photoBn is a model in which user's info as well as a box and nonce value of\r\n// encrypted( salted) photo.\r\n// \r\n// this service will contain all the methods for getting photoBns from indexedDb,\r\n// have them available to photoBnDictionary with photo being unsalted and ready for display.\r\n// ------------------------------------------------------------------------------------------------\r\nexport class PhotoBnService implements OnDestroy {\r\n public signedInUserService! : SignedInUserService;\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public counters : Counters = new Counters();\r\n public currentBn : BoxNonceEntity = new BoxNonceEntity();\r\n public currentKvPhoto : KvPhoto = new KvPhoto();\r\n public currentStateOfPhoto : Photo = new Photo();\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public filteredKvPhotoArr : KvPhoto[] = [];\r\n public isBlocked = false;\r\n public isBuddy = false;\r\n public isFriend = false;\r\n public isIndexedDbData = true;\r\n public isLiked = false;\r\n public isMobilevar = false;\r\n public isMyProfile = false;\r\n public isOnLine = false;\r\n public isPhotoMgmt = false;\r\n public isPrivate = false;\r\n public isToggleCamera = false;\r\n public isBlockedByDictionaryData = false;\r\n public isBlockedByServerData = false;\r\n public isFriendByDictionaryData = false;\r\n public isFriendByServerData = false;\r\n public isLikedByDictionaryData = false;\r\n public isLikedByServerData = false;\r\n public isUnlockedByDictionaryData = false;\r\n public isUnlockedByServerData = false;\r\n public isViewMember = false;\r\n public isWaitingOnCurrStateOfUser = false;\r\n public kvPhoto : KvPhoto = new KvPhoto();\r\n public fKvPhoto : KvPhoto = new KvPhoto();\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public kvPhotoLock : KvPhoto = new KvPhoto();\r\n public kvPhotoUnLock : KvPhoto = new KvPhoto();\r\n public kvPhotoPrivate : KvPhoto = new KvPhoto();\r\n public kvPhotoPublic : KvPhoto = new KvPhoto();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public photoOmni : PhotoOmniModel = new PhotoOmniModel();\r\n public primaryKvPhoto : KvPhoto = new KvPhoto();\r\n public profileImageArr : ProfileImage[] = [];\r\n public profileImageKvPhotos : KvPhoto[] = [];\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public profilePicsArr : ProfilePics[] = [];\r\n public profilePicsBoxNonceArr : BoxNonceEntity[] = [];\r\n // will contain member-selection of KvPhoto as final state of currentStateOfPhoto\r\n public selectedKvPhoto : KvPhoto = new KvPhoto();\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public unsaltedIndexedDbData : any;\r\n public userPhotoBnIds : number[] = [];\r\n public userPhotos : Photo[] = [];\r\n public unFilteredKvPhotoArr : KvPhoto[] = [];\r\n\r\n constructor (\r\n public dictionaryService : DictionaryService,\r\n public httpService : HttpService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public photoPrivacyService : PhotoPrivacyService,\r\n public sitUserService : SitUserService,\r\n ) {\r\n this.initialize();\r\n }\r\n // ------------------------------------------------------------\r\n protected initialize () : void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n this.getSingedInAndNonSignedInSitUsers(0);\r\n }\r\n // ---------------------------------------------------------------\r\n public ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.profilePics = new ProfilePics(); // clear the profilePics on exit\r\n this.profileImageArr = [];\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public clearCounters () : Promise {\r\n this.counters = new Counters();\r\n return new Promise((resolve) => {\r\n resolve(this.counters);\r\n });\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // remove before deployment\r\n // ---------------------------------------------------------------------------------\r\n // public createPhotoDictionaryFromPhotoBnDictionary () : any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dictionaryService.photoBnDictionary)) {\r\n // if (this.dictionaryService.photoBnDictionary.size() > 0) {\r\n // let photoBnArr = this.dictionaryService.photoBnDictionary.values();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBnArr) && photoBnArr.length > 0) {\r\n\r\n // for (var pbn of photoBnArr) {\r\n // if (pbn.sitUserId > 0 && pbn.photoBnId > 0) {\r\n // this.photoOmni.kvPhoto = this.processPhotoBnResult(pbn.sitUserId, pbn, pbn.photoBnId);\r\n // // TODO: finish this !!!\r\n // }\r\n // }\r\n // return true;\r\n // }\r\n // else return false;\r\n // }\r\n // else return false;\r\n // }\r\n // else return false;\r\n // }\r\n // ---------------------------------------------------------------\r\n public creteProfilePicsUsingPhotoBnIdsFromDictionary (sitUserId : number) : any {\r\n this.profilePics = this.dictionaryService.profilePicsDictionary.get(sitUserId) as ProfilePics;\r\n let pbnArr : any[]\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)) {\r\n let profileImageArr = this.processServerSentPhotoBnArr(sitUserId, pbnArr)\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr) && profileImageArr.length > 0) {\r\n this.profilePics = CopyServiceStatic.createProfilePicsFromProfileImageArr(profileImageArr);\r\n // debugger;\r\n\r\n // NOTE: since we cannot inject services,\r\n // the caller of this method need to filter profileKvPhotoArr\r\n // -----------------------------------------------------------------\r\n // this.profilePics.filteredKvPhotoArr = this.photoPrivacyService.filterKvPhotoArr(this.profilePics.profileKvPhotoArr);\r\n }\r\n this.dictionaryService.profilePicsDictionary.set(sitUserId, this.profilePics);\r\n }\r\n return this.profilePics;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n //public createProfilePicsFromTupleKeyPhotoBnIdValuePhoto (kvAnyArr : KvAny[]) : any {\r\n // let photoBn : PhotoBn = new PhotoBn();\r\n // let profilePics = EmitterSubjectService.getProfilePics();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAnyArr) && kvAnyArr.length > 0) {\r\n // for (var kv of kvAnyArr) {\r\n // let index = ArrayServiceStatic.getIndexOfKvPhotoInKvPhotoArr(profilePics.profileKvPhotoArr, kv.value);\r\n // if (index > -1) {\r\n // let pPicsKvPhoto = profilePics.profileKvPhotoArr[ index ];\r\n\r\n // profilePics.profileImageArr = this.memberService.addPhotoToProfileImageArr(pPicsKvPhoto.value, profilePics.profileImageArr);\r\n\r\n // // Note: filter kvPhoto and filteredKvPhotoArr:\r\n // // --------------------------------------------\r\n // let fKvPhoto : any;\r\n // this.photoPrivacyService.filterKvPhoto(pPicsKvPhoto).then(data => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // if (typeof data === 'object') { \r\n // fKvPhoto = data\r\n // profilePics.filteredKvPhotoArr.push(fKvPhoto);\r\n // }\r\n // else {\r\n // console.log(data);\r\n // }\r\n // }\r\n // }); \r\n // }\r\n // }\r\n // EmitterSubjectService.setProfilePics(profilePics);\r\n // return profilePics;\r\n // }\r\n // else return null;\r\n //}\r\n // ---------------------------------------------------------------\r\n public escapeQuoteFromPic (picData : string) : string {\r\n if (JsRegExpServiceStatic.escapeQuotePattern.test(picData)) {\r\n // debugger;\r\n picData = picData.replace(/\\\"/, '');\r\n // debugger;\r\n }\r\n return picData;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public extractPhotoModelDataFromUnsalted (unsalted : any) : any {\r\n let tServerPhotoResult = unsalted; // JSON.parse(unsalted) as any;\r\n let pbnResult : PhotoBn = new PhotoBn();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tServerPhotoResult)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tServerPhotoResult.Image) && tServerPhotoResult.Image.length > 0) {\r\n pbnResult.image = tServerPhotoResult.Image; // original server-sent-data\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tServerPhotoResult.pic) && tServerPhotoResult.pic.length > 0) {\r\n // debugger;\r\n // tServerPhotoResult.pic may need to use normalizeImage... methods instead:\r\n // -------------------------------------------------------------------------\r\n // pbnResult.pic = JsRegExpServiceStatic.normalizeImageData(tServerPhotoResult.pic);\r\n\r\n pbnResult.pic = JsRegExpServiceStatic.normalizeImageDataWithRegExp(tServerPhotoResult.pic);\r\n // debugger;\r\n // Note: Experimantal: 20220527 : remove url from the pic:\r\n pbnResult.pic = JsRegExpServiceStatic.stripUrlForImageData(pbnResult.pic);\r\n }\r\n // may be necessary later on:\r\n // --------------------------\r\n if (pbnResult.photoId === 0 && tServerPhotoResult.photoId > 0) {\r\n pbnResult.photoId = tServerPhotoResult.photoId;\r\n }\r\n if (pbnResult.photoBnId === 0 && tServerPhotoResult.photoBnId > 0) {\r\n pbnResult.photoBnId = tServerPhotoResult.photoBnId;\r\n }\r\n }\r\n return pbnResult;\r\n }\r\n // -----------------------------------------------------------\r\n //public filterAndSortProfilePics (pPics : ProfilePics) : Promise {\r\n // let fKvPhoto : any;\r\n // return new Promise((resolve, reject) => { \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.profileImageArr)\r\n // && pPics.profileImageArr.length > 0) {\r\n // pPics.profileKvPhotoArr = CopyServiceStatic.copyFromProfileImageArrToKvPhotoArr(pPics.profileImageArr);\r\n // pPics.profileKvPhotoArr.map(pKv => {\r\n // this.photoPrivacyService.filterKvPhoto(pKv).subscribe(data => {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n // if (typeof data === 'object') {\r\n // fKvPhoto = data\r\n // pPics.filteredKvPhotoArr.push(fKvPhoto);\r\n\r\n // resolve( pPics);\r\n // }\r\n // else {\r\n // console.log(data);\r\n // reject(data);\r\n // }\r\n // }\r\n // })\r\n // })\r\n // }\r\n // })\r\n //}\r\n // ----------------------------------------------------------------\r\n isPrivateAndUnlocked (kvp : KvPhoto) {\r\n var isPrivate = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n if (kvp.privacy.toLowerCase().indexOf('private') !== -1) {\r\n isPrivate = true;\r\n }\r\n return isPrivate && kvp.isUnlocked;\r\n }\r\n else return false;\r\n }\r\n // ----------------------------------------------------------------\r\n getPrimaryPicFromPhotoBn (pBn : PhotoBn) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.image) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.pic)) {\r\n pBn.pic = pBn.image;\r\n this.loginSuccess.primaryImage = pBn.image;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.imageString)) {\r\n pBn.imageString = pBn.image\r\n // debugger;\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.imageString) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.pic)) {\r\n pBn.pic = pBn.imageString;\r\n this.loginSuccess.primaryImage = pBn.imageString;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.image)) {\r\n pBn.image = pBn.pic\r\n // debugger;\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.pic) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.image)) {\r\n pBn.image = pBn.pic;\r\n this.loginSuccess.primaryImage = pBn.pic;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.imageString)) {\r\n pBn.imageString = pBn.pic\r\n // debugger;\r\n }\r\n }\r\n }\r\n // debugger;\r\n return pBn.pic;\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n unsaltPrimaryPicPhotoBnJson (photoBn : PhotoBn) : any {\r\n let pic = '';\r\n var tPhotoBn : PhotoBn = new PhotoBn;\r\n var tPhotoBnJson : any;\r\n var kvPhoto : KvPhoto = null;\r\n let boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.nonce)\r\n && photoBn.box.length > 0 && photoBn.nonce.length > 0) {\r\n\r\n boxNonceEntity.box = photoBn.box;\r\n boxNonceEntity.nonce = photoBn.nonce;\r\n tPhotoBnJson = SlakezSaltServiceStatic.boxUnsalt(boxNonceEntity);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBnJson)) {\r\n\r\n tPhotoBn = JSON.parse(tPhotoBnJson);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBn)\r\n && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBn.image)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBn.imageString)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBn.pic))) {\r\n kvPhoto = new PhotoBn().cloneToCamelCasedKvPhoto(tPhotoBn);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n photoBn.pic = photoBn.image = photoBn.imageString = kvPhoto.value;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.pic)) {\r\n photoBn.pic = photoBn.image = photoBn.imageString = kvPhoto.pic;\r\n }\r\n return photoBn;\r\n }\r\n else return null;\r\n }\r\n // debugger;\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n public unsaltPhotoBnArr (pbnArr : any[]) : PhotoBn[] {\r\n var outPhotoBnArr : PhotoBn[] = [];\r\n let tPhotoBn : PhotoBn = new PhotoBn();\r\n try {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbnArr)) {\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbnArr) && pbnArr.length > 0) {\r\n let i = 0;\r\n pbnArr.forEach(e => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n // debugger;\r\n var bne = new BoxNonceEntity();\r\n bne.box = e.box;\r\n bne.nonce = e.nonce;\r\n try {\r\n var unsaltedUnknown = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bne as BoxNonceEntity)) as unknown;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsaltedUnknown)) {\r\n // debugger;\r\n tPhotoBn = new PhotoBn().toCamelCase(unsaltedUnknown);\r\n tPhotoBn.photoBnId = e.photoBnId > 0 ? e.photoBnId : tPhotoBn.photoBnId;\r\n tPhotoBn.photoId = e.photoId > 0 ? e.photoId : tPhotoBn.photoId;\r\n outPhotoBnArr.push(tPhotoBn);\r\n }\r\n }\r\n catch {\r\n this.message = 'timestamp: ' + new Date().getTime() + ' : in unsaltPhotoBnAr(pbnArr)-> pbnArr.index=' + i + ' has some corrupt box-data or nonce-data';\r\n console.log(this.message);\r\n }\r\n finally { }\r\n // debugger;\r\n i++;\r\n }\r\n })\r\n }\r\n }\r\n } catch (err) {\r\n // debugger;\r\n console.log(err)\r\n } finally {\r\n // debugger;\r\n //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBns) || tPhotoBns.length === 0) {\r\n // tPhotoBns = JSON.parse(result) as PhotoBn[];\r\n //}\r\n }\r\n return outPhotoBnArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public unsaltDelimiteredData (data : any) : PhotoBn[] {\r\n var outPhotoBnArr : PhotoBn[] = [];\r\n let tPhotoBn : PhotoBn = new PhotoBn();\r\n try {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n debugger;\r\n var pbnStrArr = data.split('%#%');\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbnStrArr) && pbnStrArr.length > 0) {\r\n let i = 0;\r\n pbnStrArr.forEach(e => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e) && e.length > 1) {\r\n debugger;\r\n tPhotoBn = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(JSON.parse(e) as BoxNonceEntity)) as PhotoBn;\r\n\r\n debugger;\r\n outPhotoBnArr.push(tPhotoBn);\r\n i++;\r\n }\r\n })\r\n }\r\n }\r\n } catch (err) {\r\n // debugger;\r\n console.log(err)\r\n } finally {\r\n // debugger;\r\n //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBns) || tPhotoBns.length === 0) {\r\n // tPhotoBns = JSON.parse(result) as PhotoBn[];\r\n //}\r\n }\r\n return outPhotoBnArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This method is part of the preparing member view (pics and data)\r\n // that gets the pictures of a user all at once as opposed to individually.\r\n // ---------------------------------------------------------------\r\n public getAllPhotosOfUser (sitUser : SitUser) : Observable {\r\n // let clonedArr : any;\r\n // let index = 0;\r\n // let pPics = new ProfilePics();\r\n // let filteredKvPhotoArr : KvPhoto[] = [];\r\n // let unFilteredKvPhotoArr : KvPhoto[] = [];\r\n\r\n // this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n // this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n\r\n let date = new Date();\r\n return new Observable((subscriber) => {\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0) {\r\n // pPics = CopyServicestatic.createProfilePicsModelFromSitUser(sitUser);\r\n debugger;\r\n this.getAllPhotosOfUserBySitUserIdObservable(sitUser.sitUserId).subscribe(result => {\r\n debugger;\r\n subscriber.next(result);\r\n subscriber.complete();\r\n })\r\n }\r\n else {\r\n console.log('getAllPhotosOfUser (sitUser.sitUserId: ' + sitUser.sitUserId + ') sitUser was null or sitUserId == 0.');\r\n }\r\n })//.catch((error) => {\r\n // console.log(date.getTime() + ' getAllPhotosOfUser (sitUser.sitUserId: ' + sitUser.sitUserId + ') retrned a null promise.');\r\n //})\r\n }\r\n // -----------------------------------------------------------\r\n public getPrimaryPhoto (sitUserId : number) : Promise {\r\n // debugger;\r\n let showSpinnerComp : any;\r\n const bnComm : Communication = new Communication();\r\n\r\n bnComm.sitUserId = sitUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)) {\r\n return new Promise((resolve, reject) => {\r\n // debugger;\r\n this.httpService.postObservable('/api/Photo/PostUserPrimaryPhoto',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n ).subscribe((result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n this.boxNonceEntity = new BoxNonceEntity();\r\n this.boxNonceEntity.box = result.box;\r\n this.boxNonceEntity.nonce = result.nonce;\r\n\r\n let tempPhoto : any;\r\n /*\r\n * do not directly assing to profileTile!! capture it in a let first\r\n */\r\n let unboxedPhoto = SlakezSaltServiceStatic.boxUnsalt(result as BoxNonceEntity);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unboxedPhoto)) {\r\n tempPhoto = unboxedPhoto as Photo;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempPhoto)) {\r\n tempPhoto = JSON.parse(tempPhoto); // convert string to model\r\n // debugger;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempPhoto)) {\r\n resolve(tempPhoto);\r\n }\r\n }\r\n else {\r\n reject(null); //message for result being null \r\n }\r\n })\r\n });\r\n }\r\n else {\r\n return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this method is used by PhotoMgmtComponent:\r\n // Option: observable-to-promise\r\n //\r\n // Important!!\r\n // -----------\r\n // There are two ways the server can send the data to the client here:\r\n // 1. an Array of PhotoBn is directly sent to the client.\r\n // 2. the array/list of PhotoBn is encrypted and then sent (double encryption)\r\n // \r\n // This version is transformed for the former, i.e. (1) \r\n // The previous version (0.8.6) is transformed for latter (2)\r\n // ---------------------------------------------------------------\r\n public getAllPhotosOfUserBySitUserIdObservable (siTUserId : number) : Observable {\r\n\r\n let scopedDictionaryService = this.dictionaryService;\r\n let sitUserId : number = siTUserId;\r\n this.profilePics = new ProfilePics();\r\n this.profilePics.sitUserId = siTUserId;\r\n let tSitUserId = siTUserId;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (sitUserId > 0) {\r\n this.sitUser = scopedDictionaryService.sitUserDictionary.get(sitUserId) as SitUser;\r\n this.profilePics.sitUserId = sitUserId;\r\n }\r\n return new Observable((subscriber) => {\r\n let userPhotoBnCount = 0;\r\n let filteredKvPhotoArr : any[] = [];\r\n let unFilteredKvPhotoArr : any[] = [];\r\n let tPhotoBns : PhotoBn[] = []\r\n\r\n // debugger;\r\n this.boxNonceEntity = this.prepareToBeSentModelForGetAllPhotoBnOfUser(sitUserId);\r\n EmitterSubjectService.emitShowSpinner('Loading pics....');\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService.postObservable('/api/Photo/GetAllPhotoBnOfUser',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n ).subscribe((result) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger; \r\n try {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n tPhotoBns = result as [ PhotoBn ]\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBns) && tPhotoBns.length > 0)\r\n {\r\n // debugger;\r\n\r\n scopedDictionaryService.resetDictionary('unFilteredKvPhoto');\r\n\r\n for (var i = 0; i < tPhotoBns.length; i++)\r\n {\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBns[ i ])) {\r\n // debugger;\r\n let tPhotoBn = tPhotoBns[ i ];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPhotoBn)) {\r\n this.photoOmni = this.processPhotoBnResult(sitUserId, tPhotoBn, tPhotoBn.photoBnId) as PhotoOmniModel;\r\n\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoOmni)) {\r\n if (tPhotoBn.photoBnId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoOmni.photoBn)) {\r\n if ((FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoOmni.photoBn.photoBnId) || this.photoOmni.photoBn.photoBnId === 0)\r\n || (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoOmni.kvPhoto.photoBnId) || this.photoOmni.kvPhoto.photoBnId === 0)) {\r\n this.photoOmni.photoBn.photoBnId = tPhotoBn.photoBnId;\r\n this.photoOmni.kvPhoto.photoBnId = tPhotoBn.photoBnId;\r\n }\r\n if ((FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoOmni.photoBn.photoId) || this.photoOmni.photoBn.photoId === 0)\r\n || (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoOmni.kvPhoto.photoId) || this.photoOmni.kvPhoto.photoId === 0)) {\r\n this.photoOmni.photoBn.photoId = tPhotoBn.photoId;\r\n this.photoOmni.kvPhoto.photoId = tPhotoBn.photoId;\r\n // debugger;\r\n }\r\n }\r\n this.saveKvPhoto(this.photoOmni);\r\n // debugger;\r\n this.profilePics.unFilteredKvPhotoArr.push(this.photoOmni.kvPhoto);\r\n }\r\n } // end of if this.photoOmni != null)\r\n }\r\n } // end of for-loop\r\n // debugger; \r\n }\r\n else {\r\n // debugger;\r\n console.log(\"error occured while getting data for 'getAllPhotosOfUserBySitUserIdObservable.GetAllPhotoBnOfUser' of sitUserId: \");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // debugger;\r\n console.log(e)\r\n }\r\n finally {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n // debugger;\r\n this.profilePics.populateDictionaries();\r\n this.dictionaryService.updateDictionary(this.profilePics, 'profilePics', this.profilePics.sitUserId);\r\n // debugger;\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.profilePicsDictionary, 'profilePics', this.loginSuccess.signedInUserId);\r\n\r\n // debugger;\r\n \r\n //if (this.dictionaryService.kvPhotoDictionary.size > 0) {\r\n // // debugger;\r\n // this.dbDexieToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // scopedDictionaryService.kvPhotoDictionary,\r\n // \"kvPhoto\",\r\n // this.loginSuccess.signedInUserId);\r\n // // debugger;\r\n\r\n //}\r\n // save to dictioanry and indexedDb:\r\n // ---------------------------------\r\n if (this.dictionaryService.userPhotoBnIdDictionary.size > 0) {\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n scopedDictionaryService.userPhotoBnIdDictionary,\r\n \"photoBnId\",\r\n this.loginSuccess.signedInUserId);\r\n // debugger;\r\n }\r\n //if (this.dictionaryService.photoBnDictionary.size > 0) {\r\n // this.dbDexieToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // scopedDictionaryService.photoBnDictionary,\r\n // \"photoBn\",\r\n // this.loginSuccess.signedInUserId);\r\n // // debugger;\r\n //}\r\n }\r\n subscriber.next(this.profilePics);\r\n\r\n subscriber.complete();\r\n EmitterSubjectService.emitHideSpinner('');\r\n }\r\n \r\n })\r\n }\r\n else {\r\n console.log(\"error occured before sending data for 'GgetAllPhotosOfUserBySitUserIdObservable.getAllPhotoBnOfUser' of sitUserId: \");\r\n return null;\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public saveKvPhoto (pom : PhotoOmniModel) : any {\r\n let scopedDictionaryService = this.dictionaryService;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pom)) {\r\n scopedDictionaryService.updateDictionary(pom.kvPhoto, 'unFilteredKvPhoto', pom.kvPhoto.photoBnId);\r\n // debugger;\r\n\r\n //if (!this.dictionaryService.kvPhotoDictionary.has(pom.kvPhoto.photoBnId)) {\r\n // scopedDictionaryService.updateDictionary(pom.kvPhoto, \"kvPhoto\", pom.kvPhoto.photoBnId);\r\n // // debugger;\r\n //}\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pom.photoBn) && pom.photoBn.photoBnId > 0) {\r\n // debugger;\r\n if (!this.dictionaryService.photoBnDictionary.has(pom.kvPhoto.photoBnId)) {\r\n scopedDictionaryService.updateDictionary(pom.photoBn, 'photoBn', pom.photoBn.photoBnId);\r\n }\r\n if (!this.dictionaryService.userPhotoBnIdDictionary.has(pom.kvPhoto.photoBnId)) {\r\n scopedDictionaryService.updateDictionary(pom.photoBn.photoBnId, 'photoBnId', pom.photoBn.photoBnId);\r\n }\r\n } \r\n return true;\r\n }\r\n else return false;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getCounters () : Counters {\r\n return this.counters;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getProfilePics () : ProfilePics {\r\n return this.profilePics;\r\n }\r\n // ---------------------------------------------------------------\r\n public getSingedInAndNonSignedInSitUsers (sitUserId : number) : void {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserId)\r\n && sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)\r\n && this.sitUser.sitUserId > 0\r\n && this.sitUser.sitUserId !== sitUserId) {\r\n debugger;\r\n console.log('calling fetchSitUser() from photoBnService@ln726')\r\n this.sitUserService.getSitUserFromDictionaryOrServer(sitUserId).subscribe(data => {\r\n this.sitUser = data;\r\n debugger;\r\n })\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUserService)) {\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.signedInUser)\r\n || this.signedInUser.sitUserId === 0\r\n || (this.signedInUser.sitUserId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.signedInUser.sitUserId !== this.loginSuccess.signedInUserId)) {\r\n this.signedInUserService?.getSingedInSitUser()?.subscribe(data => {\r\n this.signedInUser = data;\r\n })\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: Tested, works! 2020/September/30.\r\n * Note: New Scheme for generating ProfilePics of a user:\r\n * 1) Get user photoIds and save to indexedDb\r\n * 2) Get photoBn with each photoId\r\n * 3) Accumulate photoBns\r\n * 4) After getting all photoBns of the user, create a ProfilePics model\r\n * with the photoBns and save to indexedDb like previous scheme of saving ProfilePics\r\n * ---------------------------------------------------------------\r\n */\r\n // ---------------------------------------------------------------\r\n public getUserPhotoBnIds (sitUserId : any) : Promise {\r\n // debugger;\r\n return new Promise((resolve, reject) => {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n const photoBn : PhotoBn = new PhotoBn();\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n photoBn.signedInUserId = this.loginSuccess.signedInUserId;\r\n if (this.loginSuccess.signedInUserId == sitUserId) {\r\n photoBn.sitUserId = this.loginSuccess.signedInUserId;\r\n }\r\n }\r\n else photoBn.sitUserId = sitUserId;\r\n\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(photoBn);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger; // '/api/Member/GetUserPhotoIds',\r\n this.httpService.postObservable('/api/Member/GetUserPhotoBnIds',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n ).subscribe((result) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n this.userPhotoBnIds = result;\r\n\r\n // save to dictioanry and indexedDb:\r\n // ---------------------------------\r\n this.dictionaryService.updateDictionary(this.userPhotoBnIds, 'photoBnId', sitUserId);\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.userPhotoBnIdDictionary,\r\n \"photoBnId\",\r\n this.loginSuccess.signedInUserId);\r\n\r\n // debugger;\r\n EmitterSubjectService.setUserPhotoBnIds(this.userPhotoBnIds);\r\n // debugger;\r\n resolve(this.userPhotoBnIds);\r\n }\r\n else {\r\n this.message = 'GetUserPhotoBnIds=>result was null for (sitUserId:\\'' + sitUserId + '\\')';\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMessage( this.message );\r\n reject(this.message);\r\n }\r\n }, (error) => {\r\n this.message = 'Error occured in GetUserPhotoBnIds(sitUserId:\\'' + sitUserId + '\\');\\n Error message: ' + error.message;\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMessage( this.message );\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n reject(this.message);\r\n });\r\n }\r\n else {\r\n reject('Error occured in GetUserPhotoBnIds. boxNonce was null');\r\n }\r\n }\r\n else {\r\n reject('Error occured in GetUserPhotoBnIds.sitUserId = 0');\r\n }\r\n });\r\n }\r\n // ===============================================================\r\n // This method gets a backend's PhotoBn model.\r\n // This method unsalts the model's box and nonce only.\r\n // The rest of the data is unsalted.\r\n // ===============================================================\r\n public getUserPhotoByPhotoBnId (photoBnId : number, sitUserId : number) : Promise {\r\n // debugger;\r\n let tpPics : any;\r\n const photoBn : PhotoBn = new PhotoBn();\r\n debugger; // TODO: check if in use?\r\n\r\n return new Promise((resolve, reject) => {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (sitUserId > 0) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)) {\r\n this.sitUser = new SitUser();\r\n }\r\n this.sitUser.sitUserId = sitUserId; // Note: important!\r\n }\r\n if (photoBnId > 0) {\r\n photoBn.photoBnId = photoBnId;\r\n }\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n photoBn.signedInUserId = this.loginSuccess.signedInUserId;\r\n if (this.loginSuccess.signedInUserId === sitUserId) {\r\n this.sitUser.sitUserId = this.loginSuccess.signedInUserId;\r\n photoBn.sitUserId = this.loginSuccess.signedInUserId;\r\n }\r\n }\r\n else {\r\n photoBn.sitUserId = sitUserId;\r\n }\r\n\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(photoBn);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService\r\n .postObservable(\r\n '/api/Photo/GetUserPhotoBn',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe(\r\n (result) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n // debugger;\r\n let tPhotoBn = JSON.parse(result);\r\n // debugger;\r\n // tPhotoBn = StringServiceStatic.toCamelCase(tPhotoBn);\r\n // debugger;\r\n // let photo = this.processPhotoBnResult(this.sitUser.sitUserId, tPhotoBn, photoBnId) as Photo;\r\n this.photoOmni = this.processPhotoBnResult(this.sitUser.sitUserId, tPhotoBn, photoBnId) as PhotoOmniModel;\r\n // debugger;\r\n\r\n // save it in dictionary and indexedDb:\r\n // ------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoOmni)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.photoOmni.kvPhoto)) {\r\n // debugger;\r\n resolve(this.photoOmni.kvPhoto);\r\n }\r\n else {\r\n this.message = 'image was null for getPhotoBn(sitUserId:' + this.sitUser.sitUserId + ', photoBnId:' + photoBnId + ');';\r\n console.log(this.message);\r\n reject(this.message);\r\n }\r\n }\r\n else {\r\n this.message = 'result was null for getPhotoBn(sitUserId:' + this.sitUser.sitUserId + ');';\r\n console.log(this.message);\r\n reject(this.message);\r\n }\r\n },\r\n (error) => {\r\n this.message = 'Error occured in getPhotoBn(sitUserId:' + this.sitUser.sitUserId + ');\\n Error message: ' + error.message;\r\n console.log(this.message);\r\n reject(this.message);\r\n },\r\n );\r\n } else {\r\n this.message = 'The data-to-be-sent \\'boxNonceEntity\\' is null or its box/nonce are null for (signedInUserId:';\r\n this.message += this.loginSuccess.signedInUserId + '; sitUserId:' + this.sitUser.sitUserId + '; photoId:' + photoBnId + ').';\r\n console.log(this.message);\r\n reject(this.message);\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // Usage\r\n // observable.subscribe ( value => console.log( value ));\r\n // Created on 20211010\r\n // ---------------------------------------------------------------\r\n public getUserPhotosByPhotoBnIds (photoBnIds : number[], sitUserId : any) : Observable {\r\n // debugger;\r\n const observable = new Observable(observer => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBnIds) && photoBnIds.length > 0) {\r\n // debugger;\r\n photoBnIds.map(e => {\r\n // debugger;\r\n // will store the photoBn in dictionary and return a promise:\r\n // ----------------------------------------------------------\r\n this.getUserPhotoByPhotoBnId(e, sitUserId).then(data => {\r\n // debugger;\r\n // TODO: accumulate here before sending\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n observer.next(data);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n return observable;\r\n }\r\n // ---------------------------------------------------------------\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: Tested, works! 2020/September/30.\r\n * Note: UserPhotoBn is unsalted twice:\r\n * 1) Unsalt to get the PhotoBn that is obtained from the server DB\r\n * 2) Take the Box and Nonce of the unsalted PhotoBn and create a BoxNonceEntity\r\n * 3) Use the BoxNonceEntity and Unsalt to get the Photo model\r\n * 4) After getting all photos of the user, create a ProfilePics model:\r\n * 4.1) Create a ProfileImageArray\r\n * 4.2) User the ProfileImageArray to Create the desired ProfilePics model\r\n * 4.3) Salt the ProfilePics Model and save it in the indexedDb like previous Scheme\r\n * 4.4) Now we can use the existing code to render the ProfilePics as usual.\r\n * ---------------------------------------------------------------\r\n */\r\n // ---------------------------------------------------------------\r\n public getUserSaltedPhotoBn (photoBnId : number, sitUserId : number) : Promise {\r\n // debugger;\r\n let tpPics : any;\r\n return new Promise((resolve, reject) => {\r\n if (photoBnId > 0) {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (sitUserId > 0) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)) {\r\n this.sitUser = new SitUser();\r\n }\r\n this.sitUser.sitUserId = sitUserId; // Note: important!\r\n }\r\n if (/*this.isOnLine && */!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n const photoBn : PhotoBn = new PhotoBn();\r\n\r\n photoBn.photoBnId = photoBnId;\r\n photoBn.sitUserId = sitUserId;\r\n photoBn.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(photoBn);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService\r\n .post(\r\n '/api/Member/GetUserSaltedPhotoBn',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe(\r\n (result) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n let tProfileImage = this.processSaltedPhotoBnResult(this.sitUser.sitUserId, result, photoBnId);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tProfileImage)) {\r\n resolve(tProfileImage);\r\n }\r\n else {\r\n this.message = 'image was null for getSaltedPhotoBn(sitUserId:' + this.sitUser.sitUserId + ', photoBnId:' + photoBnId + ');';\r\n console.log(this.message);\r\n return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n }\r\n }\r\n else {\r\n this.message = 'result was null for getSaltedPhotoBn(sitUserId:' + this.sitUser.sitUserId + ');';\r\n console.log(this.message);\r\n return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n }\r\n },\r\n (error) => {\r\n this.message = 'Error occured in getSaltedPhotoBn(sitUserId:' + this.sitUser.sitUserId + ');\\n Error message: ' + error.message;\r\n console.log(this.message);\r\n return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n },\r\n );\r\n } else {\r\n this.message = 'The data-to-be-sent \\'boxNonceEntity\\' is null or its box/nonce are null for (signedInUserId:';\r\n this.message += this.loginSuccess.signedInUserId + '; sitUserId:' + this.sitUser.sitUserId + '; photoId:' + photoBnId + ').';\r\n console.log(this.message);\r\n return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n }\r\n } else {\r\n this.message = 'The user in getSaltedPhotoBn(' + this.loginSuccess.signedInUserId + ') is not online.';\r\n console.log(this.message);\r\n return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n }\r\n } else {\r\n this.message = 'could not send data in getSaltedPhotoBn(photoId:' + photoBnId + ');\\n';\r\n console.log(this.message);\r\n return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n public prepareToBeSentModelForGetAllPhotoBnOfUser (sitUserId : any) : BoxNonceEntity | any {\r\n let photoBn : PhotoBn = new PhotoBn();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.loginSuccess && this.loginSuccess.signedInUserId > 0) {\r\n photoBn.signedInUserId = this.loginSuccess.signedInUserId;\r\n }\r\n if (sitUserId > 0) {\r\n // debugger;\r\n photoBn.sitUserId = sitUserId;\r\n }\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(photoBn);\r\n return this.boxNonceEntity;\r\n }\r\n // ---------------------------------------------------------------\r\n public processUnsaltedImageData (pbnResult : PhotoBn, unsalted : string) : any {\r\n // --------------------------------------------------------------------------------\r\n // checks if the data contians raw-image-data then will prefix \"url('\" to the data:\r\n // --------------------------------------------------------------------------------\r\n // pbnResult.pic = JsRegExpServiceStatic.normalizeImageData(camelCasedUnsalted);\r\n\r\n // this will strip the \"url('\" && \"')\", producing the normalized-image-data:\r\n // -------------------------------------------------------------------------\r\n // pbnResult.pic = JsRegExpServiceStatic.stripUrlForImageData(pbnResult.pic);\r\n\r\n // OR // Testing complete:\r\n // pbnResult.pic = JsRegExpServiceStatic.normalizeImageData(camelCasedUnsalted); // tested & works!\r\n\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbnResult)) {\r\n pbnResult = new PhotoBn()\r\n }\r\n // debugger;\r\n // pbnResult.pic = JsRegExpServiceStatic.normalizeImageDataWithRegExp(unsalted);\r\n // pbnResult.pic = JsRegExpServiceStatic.normalizeImageData(unsalted);\r\n // debugger;\r\n // Note: Experimantal: 20220527 : remove url from the pic:\r\n pbnResult.pic = JsRegExpServiceStatic.stripUrlForImageData(pbnResult.pic);\r\n\r\n // debugger;\r\n if (JsRegExpServiceStatic.escapeQuotePattern.test(pbnResult.pic)) {\r\n // debugger;\r\n pbnResult.pic = pbnResult.pic.replace(/\\\"/, '');\r\n\r\n }\r\n\r\n if (unsalted.indexOf('\\\"') === -1) {\r\n pbnResult.image = unsalted; // original server sent data\r\n }\r\n else {\r\n pbnResult.image = unsalted.replace(/\\\"/, '');\r\n }\r\n // debugger;\r\n return pbnResult;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n // Note: this needs to send profileImage only, not profilePics.\r\n // this method unsalts the received data only once.\r\n // ---------------------------------------------------------------------------------\r\n public processUnsaltedObject (unsalted : string) : any {\r\n let pbnResult : PhotoBn = new PhotoBn();\r\n let tPbnResult : PhotoBn = new PhotoBn();\r\n let camelCasedPhotoBn = new PhotoBn();\r\n let mcLoader = EmitterSubjectService.getMCLoader();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // try geting the photo model if exists:\r\n // -------------------------------------\r\n // debugger;\r\n let unsaltedPhotoBn = JSON.parse(unsalted) as PhotoBn;\r\n // debugger;\r\n // extract pic and image data from the unsaltedPhoto model:\r\n // after the Photo model is unsalted successfully: (tested & works!)\r\n // -----------------------------------------------------------------\r\n // debugger;\r\n camelCasedPhotoBn = CopyServiceStatic.copyFromServerPhotoBnToClientPhotoBn(camelCasedPhotoBn, unsaltedPhotoBn);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelCasedPhotoBn) && (camelCasedPhotoBn.photoId > 0 || camelCasedPhotoBn.photoBnId > 0)) {\r\n\r\n // important to use camerCasedPhoto for extracting data:\r\n // -----------------------------------------------------\r\n // debugger;\r\n pbnResult = pbnResult.copy(camelCasedPhotoBn as PhotoBn);\r\n // debugger;\r\n // important to use camerCasedUnsalted for extracting data:\r\n // --------------------------------------------------------\r\n let tPic : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelCasedPhotoBn.pic) /*&& JsRegExpServiceStatic.photoUrlPrefixPattern.test(pbnResult.pic)*/) {\r\n if (mcLoader.url.toLowerCase().indexOf('memberscroll') === -1) {\r\n // debugger;\r\n }\r\n tPic = JsRegExpServiceStatic.normalizeImageDataWithRegExp(camelCasedPhotoBn.pic);\r\n // tPic = JsRegExpServiceStatic.normalizeImageData(camelCasedPhotoBn.pic);\r\n // debugger;\r\n // Note: Experimantal: 20220527 : remove url from the pic:\r\n tPic = JsRegExpServiceStatic.stripUrlForImageData(tPic);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPic) && tPic.length > 5) {\r\n pbnResult.pic = tPic;\r\n // debugger;\r\n }\r\n // debugger;\r\n // pbnResult.pic = this.escapeQuoteFromPic(pbnResult.pic);\r\n }\r\n }\r\n // debugger;\r\n return pbnResult;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: this needs to send profileImage only, not profilePics.\r\n // this method unsalts the received data only once.\r\n // ---------------------------------------------------------------------------------\r\n public processPhotoBnResult (sitUserId : number, inPbnResult : any, photoBnId : number) : any {\r\n let tPbnResult : PhotoBn = new PhotoBn();\r\n let photoOmni : PhotoOmniModel = new PhotoOmniModel();\r\n let camelCasedPhotoBn = new PhotoBn();\r\n let unsalted : PhotoBn = new PhotoBn();\r\n // debugger;\r\n // Note: for testing purpose only, we check the value of mcLoader.url if it is not members page:\r\n // ---------------------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inPbnResult)) {\r\n try {\r\n /* tPbnResult = new PhotoBn().toCamelCase(inPbnResult);*/\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inPbnResult)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inPbnResult.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inPbnResult.nonce)\r\n && inPbnResult.box.length > 0 && inPbnResult.nonce.length > 0) {\r\n // debugger; \r\n\r\n // Note: Single Decryption scheme:\r\n // -------------------------------\r\n let tBn = new BoxNonceEntity();\r\n tBn.box = inPbnResult.box;\r\n tBn.nonce = inPbnResult.nonce;\r\n // debugger;\r\n\r\n unsalted = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(tBn)) as PhotoBn | undefined;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n camelCasedPhotoBn = new PhotoBn().toCamelCase(unsalted);\r\n // debugger;\r\n \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelCasedPhotoBn.fileBytes) && camelCasedPhotoBn.fileBytes.length > 0) {\r\n camelCasedPhotoBn.pic = JsRegExpServiceStatic.prefixPngToImageData(camelCasedPhotoBn.fileBytes);\r\n camelCasedPhotoBn.image = camelCasedPhotoBn.pic;\r\n // debugger;\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inPbnResult.photoBnId) && inPbnResult.photoBnId > 0\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelCasedPhotoBn.photoBnId)\r\n || camelCasedPhotoBn.photoBnId === 0) {\r\n camelCasedPhotoBn.photoBnId = inPbnResult.photoBnId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inPbnResult.photoId) && inPbnResult.photoId > 0\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelCasedPhotoBn.photoId)\r\n || camelCasedPhotoBn.photoId === 0) {\r\n camelCasedPhotoBn.photoId = inPbnResult.photoId;\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelCasedPhotoBn)) {\r\n camelCasedPhotoBn.privacy = inPbnResult.privacy; //important!!\r\n if (camelCasedPhotoBn.privacy.toLocaleLowerCase().indexOf('primary') !== -1) {\r\n camelCasedPhotoBn.isPrimary = true;\r\n }\r\n else {\r\n camelCasedPhotoBn.isPrimary = false;\r\n }\r\n photoOmni.kvPhoto = new PhotoBn().cloneToKvPhoto(camelCasedPhotoBn);\r\n photoOmni.photoBn = JSON.parse(JSON.stringify(camelCasedPhotoBn)); // deep clone\r\n // debugger;\r\n }\r\n\r\n // debugger;\r\n return photoOmni;\r\n }\r\n }\r\n else {\r\n // debugger;\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n // debugger;\r\n console.log(e)\r\n }\r\n finally {\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: this needs to send profileImage only, not profilePics.\r\n // this method unsalts the received data twice.\r\n // ---------------------------------------------------------------------------------\r\n public processSaltedPhotoBnResult (sitUserId : number, result : any, photoBnId : number) : any {\r\n let tpPics : any;\r\n let userPhoto : any;\r\n\r\n if (sitUserId > 0) {\r\n this.sitUser.sitUserId = sitUserId;\r\n }\r\n\r\n if (result) {\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.box.length > 0 && result.nonce.length > 0) {\r\n // Note: Double Encrypted scheme:\r\n // ------------------------------\r\n const pBn = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(result));\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.Box)\r\n && pBn.Box.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.Nonce)\r\n && pBn.Nonce.length > 0) {\r\n let tBn = new BoxNonceEntity();\r\n tBn.box = pBn.Box;\r\n tBn.nonce = pBn.Nonce;\r\n\r\n const pbn = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(tBn));\r\n // debugger;\r\n pBn.ImageString = JsRegExpServiceStatic.normalizeImageData(pbn.Image);\r\n // debugger;\r\n // Experimental: 20220527\r\n pBn.ImageString = JsRegExpServiceStatic.stripUrlForImageData(pBn.ImageString);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBn.ImageString)) {\r\n // We create the photo inorder to creat ProfileImage:\r\n // --------------------------------------------------\r\n let photo = new Photo();\r\n\r\n // save in dictionary and indexedDb:\r\n // ---------------------------------\r\n this.dictionaryService.updateDictionary(photo, 'photo', photo.photoId);\r\n\r\n // -------------------------------------------------\r\n // Note: we do not presist photo in indexedDb.\r\n // If that changes, uncomment the below code:\r\n // -------------------------------------------------\r\n // this.indexedDbToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // this.dictionaryService.photoDictionary,\r\n // \"Photo\",\r\n // this.loginSuccess.signedInUserId);\r\n // -------------------------------------------------\r\n\r\n photo = CopyServiceStatic.copyFromPhotoBnToClientPhoto(photo, pBn);\r\n // debugger;\r\n let pImage = CopyServiceStatic.convertUserPhotoToProfileImage(photo) as ProfileImage;\r\n // debugger;\r\n pImage.sitUserId = pImage.sitUserId > 0 ? pImage.sitUserId : this.sitUser.sitUserId; // Note: important!\r\n return pImage;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n public processUnsaltedPhotoBnIdResult (sitUserId : number, result : number[]) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result) && result.length > 0) {\r\n this.userPhotoBnIds = result;\r\n\r\n // save in the dictionary and indexedDb:\r\n // -------------------------------------\r\n this.dictionaryService.updateDictionary(this.userPhotoBnIds, 'photoBnId', sitUserId);\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.userPhotoBnIdDictionary, 'photoBnId', this.loginSuccess.signedInUserId);\r\n\r\n EmitterSubjectService.setUserPhotoBnIds(this.userPhotoBnIds);\r\n\r\n // debugger; // TODO: check to see the values\r\n return this.userPhotoBnIds;\r\n // debugger;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public processPhotoBnIdResult (sitUserId : number, result : any) : any {\r\n if (sitUserId > 0) {\r\n this.sitUser.sitUserId = sitUserId;\r\n }\r\n\r\n if (result) {\r\n const bn = result as BoxNonceEntity;\r\n\r\n // debugger;\r\n\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n // debugger;\r\n this.userPhotoBnIds = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as number[];\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.userPhotoBnIds) && this.userPhotoBnIds.length > 0) {\r\n EmitterSubjectService.setUserPhotoBnIds(this.userPhotoBnIds);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) || this.sitUser.sitUserId === 0) {\r\n // debugger;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n // save it to dictionary and indexedDb\r\n this.dictionaryService.updateDictionary(this.userPhotoBnIds, 'photoBnId', sitUserId);\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.userPhotoBnIdDictionary, 'photoBnId', this.loginSuccess.signedInUserId);\r\n\r\n // debugger; // TODO: check to see the values\r\n return this.userPhotoBnIds;\r\n // debugger;\r\n }\r\n }\r\n else {\r\n // debugger;\r\n return null;\r\n }\r\n }\r\n else {\r\n // debugger;\r\n return null;\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public processServerSentPhotoBnArr (sitUserId : number, pbnArr : any[]) : any {\r\n let profileImageArr : ProfileImage[] = [];\r\n let tPi : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbnArr) && pbnArr.length > 0) {\r\n pbnArr.map(e => {\r\n tPi = this.processSaltedPhotoBnResult(sitUserId, e, e.photoBnId);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPi) && tPi.image.length > 0) {\r\n profileImageArr.push(tPi);\r\n }\r\n });\r\n }\r\n return profileImageArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public savePhotoBnToDictionary (pbn : PhotoBn) : void {\r\n this.dictionaryService.updateDictionary(pbn, 'photoBn', pbn.photoBnId);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setCounters (value : Counters) : any {\r\n this.counters = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setProfilePics (value : ProfilePics) : void {\r\n this.profilePics = value;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setUserPhotoBnIds (value : number[]) : any {\r\n this.userPhotoBnIds = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public unsaltPhotoBn (pbn : PhotoBn) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn.box)\r\n && pbn.box.length > 0) {\r\n this.boxNonceEntity = new BoxNonceEntity();\r\n this.boxNonceEntity.box = pbn.box;\r\n this.boxNonceEntity.nonce = pbn.nonce;\r\n\r\n let tPbn = SlakezSaltServiceStatic.boxUnsalt(this.boxNonceEntity);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPbn)) {\r\n tPbn = CopyServiceStatic.copyFromPhotoBnToClientPhoto(pbn, tPbn);\r\n return tPbn;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { Observable, Subject } from 'rxjs';\r\n// import * as Collections from 'typescript-collections';\r\nimport { PhotoPrivacyServiceInterface } from '../../interfaces/serviceInterfaces/photoServiceIntefaces/photoPrivacyServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { KvAction } from '../../models/keyValue/kvAction.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { MemberActivity } from '../../models/member/memberActivity.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PhotoPrivacyService implements OnDestroy, PhotoPrivacyServiceInterface {\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public isOnLine = false;\r\n public kvPhotoArr : KvPhoto[] = [];\r\n public kvPhotoLock : KvPhoto = new KvPhoto();\r\n public kvPhotoUnLock : KvPhoto = new KvPhoto();\r\n public kvPhotoPrivate : KvPhoto = new KvPhoto();\r\n public kvPhotoPublic : KvPhoto = new KvPhoto();\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public memberActivity : CommunicationActivity = new CommunicationActivity();\r\n public message = '';\r\n public profilePics : ProfilePics = new ProfilePics();\r\n public sitUser : SitUser = new SitUser();\r\n\r\n constructor (\r\n public dictionaryService : DictionaryService,\r\n private httpService : HttpService,\r\n ) {\r\n // if ( this.coreServiceService ) this.httpService = this.coreServiceService.getHttpService();\r\n this.initialize();\r\n }\r\n\r\n // ------------------------------------------------------------\r\n initialize () : void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // -----------------------------------------------------------\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n displayUnFilteredKvPhotosOfProfilePics (pPics : ProfilePics) : any {\r\n let anyKvPhoto = new KvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoArr)\r\n && pPics.unFilteredKvPhotoArr.length > 0) {\r\n\r\n pPics.unFilteredKvPhotoArr.map((e) => {\r\n anyKvPhoto = e;\r\n\r\n if (e.photoId === this.sitUser.primaryPhotoBnId\r\n && this.sitUser.sitUserId === this.loginSuccess.signedInUserId\r\n && this.loginSuccess.primaryPhotoBnId !== e.photoId) {\r\n // debugger;\r\n EmitterSubjectService.emitDisplayPrimaryImage(e);\r\n }\r\n });\r\n\r\n // debugger;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (pPics.sitUserId === 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(anyKvPhoto)) {\r\n pPics.sitUserId = anyKvPhoto.sitUserId;\r\n }\r\n }\r\n // debugger;\r\n // EmitterSubjectService.emitIsPhotoMgmt(true);// TODO: isPhotoNav\r\n // EmitterSubjectService.emitIsViewMember(false);\r\n // EmitterSubjectService.emitProfileImages(pPics.unFilteredKvPhotoArr);\r\n return pPics;\r\n }\r\n // ============================================================\r\n // ---------------------------------------------------------------------------------\r\n // Note: For all profilePics related rendering (view), only this method should be used\r\n // ---------------------------------------------------------------------------------\r\n // TODO: intend to deprecate\r\n // ---------------------------------------------------------------------------------\r\n\r\n displayFilteredKvPhotosOfProfilePics (pPics : ProfilePics) : any {\r\n let anyKvPhoto = new KvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr)\r\n && pPics.filteredKvPhotoArr.length === 0) {\r\n const filteredPPics = this.filterAndSortProfilePics(pPics);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filteredPPics)) {\r\n pPics = filteredPPics;\r\n }\r\n }\r\n EmitterSubjectService.setProfilePics(pPics);\r\n\r\n pPics.filteredKvPhotoArr.map((e) => {\r\n anyKvPhoto = e;\r\n\r\n if (e.photoId === this.sitUser.primaryPhotoBnId\r\n && this.sitUser.sitUserId === this.loginSuccess.signedInUserId\r\n && this.loginSuccess.primaryPhotoBnId !== e.photoId) {\r\n // debugger;\r\n EmitterSubjectService.emitDisplayPrimaryImage(e);\r\n }\r\n });\r\n\r\n // debugger;\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (pPics.sitUserId === 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(anyKvPhoto)) {\r\n pPics.sitUserId = anyKvPhoto.sitUserId;\r\n }\r\n\r\n // debugger;\r\n // EmitterSubjectService.emitIsPhotoMgmt(false);// TODO: isPhotoNav\r\n // EmitterSubjectService.emitIsViewMember(true);\r\n // EmitterSubjectService.emitProfileImages(pPics.filteredKvPhotoArr);\r\n return pPics;\r\n }\r\n /* ------------------------------------------------------------\r\n * BEGIN of KvPhoto-Privacy-System:\r\n * ------------------------------------------------------------\r\n * ============================================================\r\n * NOTE : 1) This should be the only place where raw image-data of an image should be transformed for display\r\n * 2) This is where also the 'privacy' status of an image is determined.\r\n * ------------------------------------------------------------\r\n * Note : SOLID principal : single-responsibility! Do not displayPrimaryImage!\r\n * ------------------------------------------------------------\r\n * Note : For a complete and up-to-date filtering of data, filtration\r\n * shoult be done not only by MemberLockingAcivity of DictionaryData,\r\n * but also by MemberLockingAcivity of server-data.\r\n * ============================================================\r\n * Note : 1) This method returns a promise:\r\n * 2) We never change the Photo.isUnlocked value,\r\n * that is why the KvPhoto is used to render so that\r\n * we change the KvPhoto.isUnlocked value. important!\r\n * ------------------------------------------------------------\r\n */\r\n determineKvPhotoPrivacy (kvPhoto : KvPhoto, memberActivity : CommunicationActivity) : KvPhoto {\r\n // Filter out the private-images on the basis of unlocked-activity\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.privacy)) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n const today = DateStringServiceStatic.getTicks(new Date());\r\n debugger;\r\n // we DO NOT change privacy here at all. Only signedInUser changes it. important!!\r\n if (kvPhoto.privacy.toLowerCase().indexOf('private') !== -1)\r\n {\r\n /*\r\n * debugger;\r\n * if the isUnlocked for the user or if it is signedInUser, display the image\r\n * and make it public on filteredKvPhoto(not the profileImgeArr).\r\n * \r\n * important!:\r\n * filteredPhotoCondition: isUnlocked === true && isPrivate === false \r\n * ------------------------------------------------------------------------------\r\n */\r\n // if signedInUser because he should be able to see all of his pics:\r\n if (kvPhoto.sitUserId === this.loginSuccess.signedInUserId) {\r\n // debugger;\r\n kvPhoto.isUnlocked = true;\r\n kvPhoto.isPrivate = false;\r\n }\r\n // if unlocked in memberActivity and has not expired:\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberActivity)) {\r\n if (memberActivity?.isUnlocked === true) {\r\n // it was unlocked, hence check expiry. if still unexpired, then make it unlockd==true and isPrivte==false \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberActivity?.expiryDate) && parseInt(memberActivity.expiryDate, 10) - today >= 0) {\r\n // debugger;\r\n kvPhoto.isUnlocked = true;\r\n kvPhoto.isPrivate = false;\r\n }\r\n // was unlocked, but expired. make it unlockd==false and isPrivte==true \r\n else {\r\n /*\r\n * was unlocked but expired\r\n * display the lock-image:\r\n * -----------------------\r\n * debugger;\r\n */\r\n kvPhoto.glyphName = 'private';\r\n kvPhoto.isPrivate = true;\r\n kvPhoto.isUnlocked = false; // if expired, we automatically lock the pic. important!!\r\n kvPhoto.value = this.kvPhotoPrivate?.value?.length > 0 ? this.kvPhotoPrivate?.value : 'photos/private.png';\r\n // debugger;\r\n }\r\n }\r\n // it was locked, hence check expiry. if still unexpired, then make it unlockd==true and isPrivte==false \r\n //else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberActivity?.expiryDate) && parseInt(memberActivity.expiryDate, 10) - today >= 0) {\r\n // // debugger;\r\n // kvPhoto.isUnlocked = true;\r\n // kvPhoto.isPrivate = false;\r\n //}\r\n // was locked, and expired. so make it unlockd==false and isPrivte==true \r\n else {\r\n // display the lock-image:\r\n // -----------------------\r\n debugger;\r\n kvPhoto.glyphName = 'private';\r\n kvPhoto.isPrivate = true;\r\n kvPhoto.isUnlocked = false; // if expired, we automatically lock the pic. important!!\r\n kvPhoto.value = 'photos/private.png';\r\n // debugger;\r\n }\r\n }\r\n else {\r\n debugger;\r\n kvPhoto.glyphName = 'private';\r\n kvPhoto.isPrivate = true;\r\n kvPhoto.isUnlocked = false; // if expired, we automatically lock the pic. important!!\r\n kvPhoto.value = 'photos/private.png';\r\n }\r\n }\r\n else if (kvPhoto?.privacy?.toLowerCase().indexOf('public') !== -1) {\r\n // debugger;\r\n kvPhoto.isPrivate = false;\r\n // isUnlocked should be false, so we check it here and set it to false:\r\n if (kvPhoto.isUnlocked) {\r\n kvPhoto.isUnlocked = false;\r\n }\r\n // kvPhoto.glyphName == no glyph image.\r\n // kvPhoto.value == actual image data.\r\n }\r\n }\r\n // default case:\r\n else {\r\n /*\r\n * send the kvPhoto with defaultemoji.jpg\r\n * debugger;\r\n */\r\n kvPhoto.glyphName = 'private';\r\n kvPhoto.isPrimary = false;\r\n kvPhoto.isPrivate = false;\r\n kvPhoto.value = 'photos/private.png';\r\n }\r\n }\r\n /*\r\n * retur nnew Promise((resolve) => {\r\n * resolve(kvPhoto);\r\n * });\r\n */\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------\r\n executeMemberViewProfilePicsTasks (profilePics : ProfilePics) : ProfilePics {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.profileImageArr)\r\n && profilePics.profileImageArr.length > 0) {\r\n // debugger;\r\n\r\n /*\r\n * if filteredKvPhoto is not present, create them:\r\n * -----------------------------------------------\r\n */\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.filteredKvPhotoArr)\r\n || profilePics.filteredKvPhotoArr.length === 0\r\n || profilePics.filteredKvPhotoArr.length !== profilePics.profileImageArr.length) {\r\n // debugger;\r\n const filteredPPics = this.filterAndSortProfilePics(profilePics);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filteredPPics)) {\r\n this.profilePics = filteredPPics;\r\n return this.profilePics;\r\n }\r\n }\r\n else {\r\n this.profilePics = profilePics;\r\n }\r\n // debugger;\r\n return this.executeMemberViewProfilePicsAfterFiltration(this.profilePics);\r\n }\r\n else {\r\n return new ProfilePics();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n executeMemberViewProfilePicsAfterFiltration (profilePics : ProfilePics) : ProfilePics {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)) {\r\n EmitterSubjectService.setProfilePics(this.profilePics);\r\n\r\n /*\r\n * if sitUserId is missing or different:\r\n * -------------------------------------\r\n */\r\n if (this.profilePics.filteredKvPhotoArr\r\n && this.profilePics.filteredKvPhotoArr.length > 0\r\n && (this.profilePics.sitUserId === 0\r\n || this.profilePics.sitUserId !== this.profilePics.filteredKvPhotoArr[ 0 ].sitUserId)) {\r\n // debugger;\r\n this.profilePics.sitUserId = this.profilePics.filteredKvPhotoArr[ 0 ].sitUserId;\r\n }\r\n\r\n debugger;\r\n return this.displayFilteredKvPhotosOfProfilePics(this.profilePics);\r\n }\r\n return profilePics;\r\n }\r\n /*\r\n * ------------------------------------------------------------\r\n * API for KvPhoto-Privacy-System:\r\n * ------------------------------------------------------------\r\n */\r\n\r\n // ------------------------------------------------------------\r\n filterAfterGettingMemberLockingActivitiesFromServer (kvP : KvPhoto, memActArr : CommunicationActivity[]) : KvPhoto {\r\n let filteredKvPhotoArr : any = [];\r\n let mActArr : any = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActArr) && mActArr.length > 0) {\r\n mActArr.map((e : any) => {\r\n filteredKvPhotoArr = this.filterKvPhotoArrayByServerData([ kvP ], e as CommunicationActivity);\r\n });\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filteredKvPhotoArr) && filteredKvPhotoArr.length > 0) {\r\n filteredKvPhotoArr = this.filterKvPhotoArrayByMemberLockingActivityDictionaryData(filteredKvPhotoArr);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filteredKvPhotoArr) && filteredKvPhotoArr.length > 0) {\r\n let index = ArrayServiceStatic.getIndexOfKvPhotoInKvPhotoArr(filteredKvPhotoArr, kvP);\r\n if (index > -1)\r\n kvP = filteredKvPhotoArr[ index ];\r\n }\r\n return kvP;\r\n }\r\n\r\n // ------------------------------------------------------------\r\n filterKvPhoto (kvP : KvPhoto) : Observable\r\n {\r\n let mActArr = [];\r\n let filteredKvPhotoArr = [];\r\n let kvp = kvP;\r\n // Filter-by-Server-Data:\r\n // ----------------------\r\n // Call to get the memberLockingAcvitiy from the server:\r\n // Note: also listen to 'dictionariesUpdatedEmitter' and filter it again.\r\n // ---------------------------------------------------------------------\r\n return new Observable((subscriber) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n let memAct = this.dictionaryService.myMemberActivityDictionary.get(parseInt(kvp.key)) as CommunicationActivity;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memAct)) {\r\n kvp = this.determineKvPhotoPrivacy(kvp, memAct);\r\n subscriber.next(kvp);\r\n subscriber.complete();\r\n }\r\n else {\r\n // debugger;\r\n this.getMemberLockingActivitiesFromServer(kvp).subscribe(data => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n mActArr = data;\r\n // debugger;\r\n kvp = this.filterAfterGettingMemberLockingActivitiesFromServer(kvp, mActArr);\r\n // debugger;\r\n }\r\n else {\r\n kvp = this.determineKvPhotoPrivacy(kvp, new CommunicationActivity());\r\n // debugger;\r\n }\r\n subscriber.next(kvp);\r\n subscriber.complete();\r\n });\r\n } \r\n } \r\n })\r\n }\r\n // ------------------------------------------------------------\r\n filterKvPhotoArr (kvPArr : KvPhoto[]) : Observable {\r\n let filteredKvPhotoArr : KvPhoto[] = [];\r\n let fkvp : KvPhoto = new KvPhoto();\r\n return new Observable(subscriber => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPArr) && kvPArr.length > 0) {\r\n for (var kvp of kvPArr) {\r\n this.filterKvPhoto(kvp).subscribe(data => {\r\n if (typeof data == 'object') {\r\n fkvp = data;\r\n debugger;\r\n filteredKvPhotoArr.push(fkvp);\r\n }\r\n else {\r\n console.log(data);\r\n }\r\n });\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filteredKvPhotoArr) && filteredKvPhotoArr.length > 0) {\r\n subscriber.next(filteredKvPhotoArr);\r\n } \r\n }\r\n });\r\n }\r\n /*\r\n * ------------------------------------------------------------\r\n * Note : This should NOT be used for and array of KvPhotos[]\r\n * because it will get memberLockingActivity multiple times,\r\n * (once per array element) where as to filter an array\r\n * only one memberLockingActivity is used/required.\r\n * ---------------------------------------------------------------\r\n */\r\n // filterKvPhotoByDictionaryData(kvPhoto: KvPhoto): Promise {\r\n // this.setAndGetLocks();\r\n // const today = new Date();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n // const mActs = this.getMemberLockingActivitiesFromYourDictionary(kvPhoto);\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mActs) && mActs.length > 0) {\r\n // mActs.map((e) => {\r\n // // debugger;\r\n // if (DateStringServiceStatic.compareDate(e.expiryDate, today.toLocaleString()) >= 0) {\r\n // kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, e);\r\n // }\r\n // });\r\n // }\r\n // }\r\n // return new Promise((resolve) => {\r\n // resolve(kvPhoto);\r\n // });\r\n // }\r\n\r\n // ---------------------------------------------------------------\r\n filterKvPhotoDictionaryByMemberLockingActivityDictionaryData(kvPhotos: Dictionary): any {\r\n let kvPhoto: KvPhoto = new KvPhoto();\r\n let filteredKvPhotoDictionary: Dictionary = new Dictionary();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotos) && kvPhotos.size > 0) {\r\n const dictionaryLockingActivities = this.getMemberLockingActivitiesFromYourDictionary(kvPhotos.get(1) as KvPhoto);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryLockingActivities) && dictionaryLockingActivities.length > 0) {\r\n // debugger;\r\n dictionaryLockingActivities.map((e) => {\r\n for (let i = 0; i < kvPhotos.size; i++) {\r\n kvPhoto = new KvPhoto();\r\n kvPhoto = CopyServiceStatic.copyKvPhotoIfExists(kvPhoto, kvPhotos.get(i) as KvPhoto);\r\n kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, e);\r\n kvPhoto.index = i;\r\n kvPhoto.itemNum = i + 1;\r\n filteredKvPhotoDictionary.set(kvPhoto.photoId, kvPhoto);\r\n }\r\n });\r\n } else {\r\n // debugger;\r\n for (let i = 0; i < kvPhotos.size; i++) {\r\n kvPhoto = new KvPhoto();\r\n kvPhoto = CopyServiceStatic.copyKvPhotoIfExists(kvPhoto, kvPhotos.get(i) as KvPhoto);\r\n kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, new CommunicationActivity());\r\n kvPhoto.index = i;\r\n kvPhoto.itemNum = i + 1;\r\n filteredKvPhotoDictionary.set(kvPhoto.photoId, kvPhoto);\r\n }\r\n }\r\n } else {\r\n filteredKvPhotoDictionary = kvPhotos;\r\n }\r\n return filteredKvPhotoDictionary;\r\n /*\r\n * debugger;\r\n * returnnew Promise((resolve) => {\r\n * resolve(filteredKvPhotoDictionary);\r\n * });\r\n */\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n filterKvPhotoArrayByMemberLockingActivityDictionaryData(kvPhotos: KvPhoto[]): any {\r\n let kvPhoto: KvPhoto = new KvPhoto();\r\n let filteredKvPhotoArray: KvPhoto[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotos) && kvPhotos.length > 0) {\r\n const dictionaryLockingActivities = this.getMemberLockingActivitiesFromYourDictionary(kvPhotos[0]);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryLockingActivities) && dictionaryLockingActivities.length > 0) {\r\n // debugger;\r\n dictionaryLockingActivities.map((e) => {\r\n for (let i = 0; i < kvPhotos.length; i++) {\r\n kvPhoto = new KvPhoto();\r\n kvPhoto = CopyServiceStatic.copyKvPhotoIfExists(kvPhoto, kvPhotos[i]);\r\n kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, e);\r\n kvPhoto.index = i;\r\n kvPhoto.itemNum = i + 1;\r\n filteredKvPhotoArray.push(kvPhoto);\r\n // debugger;\r\n }\r\n });\r\n } else {\r\n // debugger;\r\n for (let i = 0; i < kvPhotos.length; i++) {\r\n kvPhoto = new KvPhoto();\r\n kvPhoto = CopyServiceStatic.copyKvPhotoIfExists(kvPhoto, kvPhotos[i]);\r\n // debugger;\r\n kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, new CommunicationActivity());\r\n kvPhoto.index = i;\r\n kvPhoto.itemNum = i + 1;\r\n // debugger;\r\n filteredKvPhotoArray.push(kvPhoto);\r\n // debugger;\r\n }\r\n }\r\n } else {\r\n // debugger;\r\n filteredKvPhotoArray = kvPhotos;\r\n }\r\n return filteredKvPhotoArray;\r\n /*\r\n * debugger;\r\n * returnnew Promise((resolve) => {\r\n * resolve(filteredKvPhotoArray);\r\n * });\r\n */\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : get the locking activity from the server first (which takes time to arrive),\r\n * and then call this method from 'dictionariesUpdatedEmitter'.\r\n * ---------------------------------------------------------------\r\n */\r\n filterKvPhotoDictionaryByServerData (kvPhotos : Dictionary, lockingActivity : CommunicationActivity): any {\r\n let kvPhoto: KvPhoto = new KvPhoto();\r\n const filteredKvPhotos: Dictionary = new Dictionary();\r\n\r\n const inKvPhotoValues = kvPhotos.values();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inKvPhotoValues) && inKvPhotoValues.length > 0) {\r\n /*\r\n * debugger;\r\n * No need to check if null, because 'determineKvPhotoPrivacy()' handles this scenario\r\n */\r\n for (let i = 0; i < inKvPhotoValues.length; i++) {\r\n kvPhoto = new KvPhoto();\r\n kvPhoto = CopyServiceStatic.copyKvPhotoIfExists(kvPhoto, inKvPhotoValues[i]);\r\n\r\n kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, lockingActivity);\r\n\r\n kvPhoto.index = i;\r\n kvPhoto.itemNum = i + 1;\r\n\r\n filteredKvPhotos.set(kvPhoto.sitUserId, kvPhoto);\r\n }\r\n }\r\n return filteredKvPhotos; // new Promise((resolve) => resolve(filteredKvPhotos));\r\n }\r\n /*\r\n * ===============================================================\r\n * ---------------------------------------------------------------\r\n */\r\n filterKvPhotoArrayByDictionaryData(kvPhotos: KvPhoto[]): KvPhoto[] {\r\n let kvPhoto: KvPhoto = new KvPhoto();\r\n let filteredKvPhotoArr :KvPhoto[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotos) && kvPhotos.length > 0) {\r\n const dictionaryLockingActivities = this.getMemberLockingActivitiesFromYourDictionary(kvPhotos[0]);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryLockingActivities) && dictionaryLockingActivities.length > 0) {\r\n // debugger;\r\n dictionaryLockingActivities.map((e) => {\r\n for (let i = 0; i < kvPhotos.length; i++) {\r\n kvPhoto = new KvPhoto();\r\n kvPhoto = CopyServiceStatic.copyKvPhotoIfExists(kvPhoto, kvPhotos[i]);\r\n kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, e);\r\n kvPhoto.index = i;\r\n kvPhoto.itemNum = i + 1;\r\n filteredKvPhotoArr.push(kvPhoto);\r\n }\r\n });\r\n } else {\r\n // debugger;\r\n for (let i = 0; i < kvPhotos.length; i++) {\r\n kvPhoto = new KvPhoto();\r\n kvPhoto = CopyServiceStatic.copyKvPhotoIfExists(kvPhoto, kvPhotos[i]);\r\n kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, new CommunicationActivity());\r\n kvPhoto.index = i;\r\n kvPhoto.itemNum = i + 1;\r\n filteredKvPhotoArr.push(kvPhoto);\r\n }\r\n }\r\n } else {\r\n filteredKvPhotoArr = kvPhotos;\r\n }\r\n return filteredKvPhotoArr;\r\n /*\r\n * debugger;\r\n * returnnew Promise((resolve) => {\r\n * resolve(filteredKvPhoto);\r\n * });\r\n */\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note : get the locking activity from the server first (which takes time to arrive),\r\n * and then call this method from 'dictionariesUpdatedEmitter'.\r\n * ---------------------------------------------------------------\r\n */\r\n filterKvPhotoArrayByServerData (kvPhotos : KvPhoto[], lockingActivity : CommunicationActivity): any {\r\n let kvPhoto: KvPhoto = new KvPhoto();\r\n const filteredKvPhotos : KvPhoto[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotos) && kvPhotos.length > 0) {\r\n /*\r\n * debugger;\r\n * No need to check if null, because 'determineKvPhotoPrivacy()' handles this scenario\r\n */\r\n for (let i = 0; i < kvPhotos.length; i++) {\r\n kvPhoto = new KvPhoto();\r\n kvPhoto = CopyServiceStatic.copyKvPhotoIfExists(kvPhoto, kvPhotos[i]);\r\n\r\n kvPhoto = this.determineKvPhotoPrivacy(kvPhoto, lockingActivity);\r\n\r\n kvPhoto.index = i;\r\n kvPhoto.itemNum = i + 1;\r\n filteredKvPhotos.push(kvPhoto);\r\n }\r\n }\r\n return filteredKvPhotos; // new Promise((resolve)=> resolve(filteredKvPhotos));\r\n }\r\n // ------------------------------------------------------------\r\n filterAndSortProfileKvPhotoArr (kvpArr : KvPhoto[]) : any[] {\r\n let mActArr : any;\r\n let pKvPhoto : any;\r\n let memAct : any;\r\n let filteredKvPhotoArr : KvPhoto[] = [];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n /*\r\n * Filter-by-Server-Data:\r\n * ----------------------\r\n * Call to get the memberLockingAcvitiy from the server:\r\n * Note: also listen to 'dictionariesUpdatedEmitter' and filter it again.\r\n */\r\n\r\n // mActArr = this.getMemberLockingActivitiesFromServer(kvpArr[0]);\r\n memAct = this.dictionaryService.myMemberActivityDictionary.get(kvpArr[0].photoId);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memAct)) { \r\n // mActArr = this.memberActivityService.getYourActivities( pKvPhoto.sitUserId, 'UnLock' ); //TODO: Check if it is your or my activity getter\r\n filteredKvPhotoArr = this.filterKvPhotoArrayByServerData(filteredKvPhotoArr, memAct);\r\n // debugger;\r\n }\r\n else {\r\n for (let kvP of kvpArr) {\r\n // debugger;\r\n let fkvp = this.determineKvPhotoPrivacy(kvP, new CommunicationActivity());\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(fkvp)) {\r\n // debugger;\r\n filteredKvPhotoArr.push(fkvp);\r\n }\r\n }\r\n }\r\n // debugger;\r\n // Note: 1) this section wipes out all data of each KvPhoto. DO NOT USE THIS or fix it!\r\n // 2) chjeck if MemberLockingActivity can be obtained or if missing return the un-altered-filterKvPhotoArr.\r\n // ----------------------------------------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filteredKvPhotoArr) && filteredKvPhotoArr.length > 0) {\r\n // filteredKvPhotoArr = this.filterKvPhotoArrayByMemberLockingActivityDictionaryData(filteredKvPhotoArr);\r\n // }\r\n // else {\r\n // debugger;\r\n // filteredKvPhotoArr = this.filterKvPhotoArrayByMemberLockingActivityDictionaryData(kvpArr);\r\n // }\r\n // debugger;\r\n return filteredKvPhotoArr;\r\n }\r\n else return kvpArr;\r\n }\r\n // ------------------------------------------------------------\r\n filterAndSortProfilePics (profilePics : ProfilePics) : any {\r\n \r\n let pKvPhoto : any;\r\n debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics) || this.profilePics.profileImageArr.length === 0) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.profileImageArr)\r\n // && profilePics.profileImageArr.length > 0 ) {\r\n // this.profilePics = CopyServiceStatic.createProfilePicsFromProfileImageArr(profilePics.profileImageArr);\r\n // } else {\r\n // debugger;\r\n // this.profilePics = CopyServiceStatic.copyProfilePicsIfExists(this.profilePics, profilePics);\r\n // }\r\n // debugger;\r\n // }\r\n \r\n // Filter-by-Server-Data:\r\n // ----------------------\r\n // Call to get the memberLockingAcvitiy from the server:\r\n // Note: also listen to 'dictionariesUpdatedEmitter' and filter it again.\r\n // ----------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.profileKvPhotoArr) && profilePics.profileKvPhotoArr.length > 0) {\r\n\r\n pKvPhoto = this.profilePics.profileKvPhotoArr[ 0 ];\r\n let tpPics = this.filterAndSortByMemberActicvities(pKvPhoto, profilePics);\r\n profilePics = CopyServiceStatic.copyProfilePicsIfExists(profilePics, tpPics);\r\n debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.unFilteredKvPhotoArr) && profilePics.unFilteredKvPhotoArr.length > 0) {\r\n debugger;\r\n pKvPhoto = profilePics.unFilteredKvPhotoArr[0];\r\n let tpPics = this.filterAndSortByMemberActicvities(pKvPhoto, profilePics);\r\n debugger;\r\n profilePics = CopyServiceStatic.copyProfilePicsIfExists(profilePics, tpPics);\r\n debugger;\r\n }\r\n debugger;\r\n return profilePics;\r\n }\r\n // ------------------------------------------------------------\r\n filterAndSortByMemberActicvities (kvp : KvPhoto, pPics : ProfilePics) : ProfilePics {\r\n let memAct : any;\r\n let mActArr : any;\r\n let pKvPhoto : any;\r\n\r\n memAct = this.dictionaryService.myMemberActivityDictionary.get(pKvPhoto.key);\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memAct)) {\r\n let mActArr = this.getMemberLockingActivitiesFromServer(pKvPhoto);\r\n // mActArr = this.memberActivityService.getYourActivities( pKvPhoto.sitUserId, 'UnLock' ); //TODO: Check if it is your or my activity getter\r\n // debugger;\r\n\r\n pPics.filteredKvPhotoArr = this.filterKvPhotoArrayByMemberLockingActivityDictionaryData(pPics.profileKvPhotoArr);\r\n // debugger;\r\n } else {\r\n pPics.filteredKvPhotoArr = this.filterKvPhotoArrayByMemberLockingActivityDictionaryData(pPics.profileKvPhotoArr);\r\n // debugger;\r\n pPics.filteredKvPhotoArr = this.filterKvPhotoArrayByServerData(pPics.profileKvPhotoArr, memAct);\r\n }\r\n\r\n \r\n pPics.filteredKvPhotoArr = pPics.filteredKvPhotoArr.sort((a, b) =>\r\n b.photoBnId = a.photoBnId\r\n );\r\n EmitterSubjectService.setProfilePics(pPics);\r\n return pPics;\r\n }\r\n // ------------------------------------------------------------\r\n filterAndSortProfilePicsOld (profilePics : ProfilePics) : any {\r\n let memAct : any;\r\n let mActArr : any;\r\n let pKvPhoto : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.profileImageArr)\r\n && profilePics.profileImageArr.length > 0) {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)) {\r\n this.profilePics = CopyServiceStatic.createProfilePicsFromProfileImageArr(profilePics.profileImageArr);\r\n } else {\r\n this.profilePics = profilePics;\r\n }\r\n\r\n /*\r\n * extract images here\r\n */\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.profileKvPhotoArr) || this.profilePics.profileKvPhotoArr.length !== this.profilePics.profileImageArr.length) {\r\n this.profilePics.profileKvPhotoArr = CopyServiceStatic.copyFromProfileImageArrToKvPhotoArr(this.profilePics.profileImageArr);\r\n }\r\n\r\n /*\r\n * Filter-by-Server-Data:\r\n * ----------------------\r\n * Call to get the memberLockingAcvitiy from the server:\r\n * Note: also listen to 'dictionariesUpdatedEmitter' and filter it again.\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.profileKvPhotoArr) && this.profilePics.profileKvPhotoArr.length > 0) {\r\n pKvPhoto = this.profilePics.profileKvPhotoArr[ 0 ];\r\n memAct = this.dictionaryService.myMemberActivityDictionary.get(pKvPhoto.key);\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memAct)) {\r\n mActArr = this.getMemberLockingActivitiesFromServer(pKvPhoto);\r\n // mActArr = this.memberActivityService.getYourActivities( pKvPhoto.sitUserId, 'UnLock' ); //TODO: Check if it is your or my activity getter\r\n // debugger;\r\n\r\n this.profilePics.filteredKvPhotoArr = this.filterKvPhotoArrayByMemberLockingActivityDictionaryData(this.profilePics.profileKvPhotoArr);\r\n // debugger;\r\n } else {\r\n this.profilePics.filteredKvPhotoArr = this.filterKvPhotoArrayByMemberLockingActivityDictionaryData(this.profilePics.profileKvPhotoArr);\r\n // debugger;\r\n this.profilePics.filteredKvPhotoArr = this.filterKvPhotoArrayByServerData(this.profilePics.profileKvPhotoArr, memAct);\r\n }\r\n\r\n EmitterSubjectService.setProfilePics(this.profilePics);\r\n return this.profilePics;\r\n }\r\n }\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n getPrimaryKvPhotoFromFilteredKvPhotoArr (fKvPhotoArr : KvPhoto[]) : any\r\n {\r\n let anyKvPhoto;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(fKvPhotoArr) || fKvPhotoArr.length > 0)\r\n {\r\n for (var e of fKvPhotoArr)\r\n {\r\n anyKvPhoto = e;\r\n\r\n if (e.photoId === this.sitUser.primaryPhotoBnId\r\n && this.sitUser.sitUserId === this.loginSuccess.signedInUserId\r\n && this.loginSuccess.primaryPhotoBnId !== e.photoId) {\r\n debugger;\r\n return e;\r\n }\r\n };\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getIsUnlocked(signedInUserId: number, sitUserId: number): any {\r\n let kvAction = new KvAction();\r\n\r\n if (signedInUserId > 0 && sitUserId > 0) {\r\n let bnComm: Communication = new Communication();\r\n\r\n bnComm.sitUserId = sitUserId;\r\n bnComm.signedInUserId = signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService\r\n .postObservable(\r\n '/Member/IsUnlocked',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe(\r\n (result) => this.processIsUnlockedResult(result),\r\n // debugger;\r\n (error) => {\r\n EmitterSubjectService.emitMyErrorLog('Error occured in IsUnlocked();\\n Error-mag : ' + error);\r\n },\r\n );\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n processIsUnlockedResult(result: any): any {\r\n let kvAction = new KvAction();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n\r\n if (bn && bn.box && bn.box.length > 0 && bn.nonce && bn.nonce.length > 0) {\r\n kvAction = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as KvAction;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAction)) {\r\n return new Promise((resolve) => resolve(kvAction));\r\n }\r\n return null;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n getMemberLockingActivitiesFromMyDictionary (kvPhoto : KvPhoto) : Promise {\r\n let memberActions : CommunicationActivity[] = [];\r\n const lockingActivities : CommunicationActivity[] = [];\r\n\r\n memberActions = this.dictionaryService.myUnlockDictionary.size > 0 ? this.dictionaryService.myUnlockDictionary.values() : [];\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberActions) && memberActions.length > 0) {\r\n memberActions.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e) && e.receiverSitUserId === kvPhoto.sitUserId && e.senderSitUserId === this.loginSuccess.signedInUserId) {\r\n lockingActivities.push(e);\r\n }\r\n });\r\n }\r\n return new Promise((resolve) => resolve(lockingActivities));\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n getMemberLockingActivitiesFromYourDictionary (kvPhoto : KvPhoto) : CommunicationActivity[] {\r\n let memberActions : CommunicationActivity[] = [];\r\n const lockingActivities : CommunicationActivity[] = [];\r\n\r\n memberActions = this.dictionaryService.yourUnlockDictionary.size > 0 ? this.dictionaryService.yourUnlockDictionary.values() : [];\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(memberActions) && memberActions.length > 0) {\r\n memberActions.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e) && e.senderSitUserId === kvPhoto.sitUserId && e.receiverSitUserId === this.loginSuccess.signedInUserId) {\r\n lockingActivities.push(e);\r\n }\r\n });\r\n }\r\n return lockingActivities;\r\n }\r\n /*\r\n // ---------------------------------------------------------------\r\n // Note : This method shold be called before listening to the\r\n // 'dictionariesUpdatedEmitter' for memberLockingActivity\r\n // to filter kvPhotoArray\r\n // ---------------------------------------------------------------\r\n */\r\n getMemberLockingActivitiesFromServer (kvPhoto : KvPhoto) : Observable {\r\n let kvp : KvPhoto = kvPhoto;\r\n return new Observable((subscriber) => {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp) && kvp.sitUserId > 0) {\r\n // debugger;\r\n this.memberActivity.action = 'UnLock';\r\n this.memberActivity.senderSitUserId = kvp.sitUserId;\r\n this.getMemberActivitiesForPhotoPrivacy(this.memberActivity, kvp.sitUserId).subscribe(data => {\r\n subscriber.next(data);\r\n });\r\n // debugger;\r\n }\r\n })\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Caution! TODO: check if any caller's sitUserId === signedInSitUserId.\r\n // the previous version allowed the above, but\r\n // this new version does not allow the above.\r\n // ---------------------------------------------------------------\r\n getMemberActivitiesForPhotoPrivacy (mActivity : CommunicationActivity, sitUserId: number ): Observable\r\n {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mActivity ) && sitUserId > 0 )\r\n {\r\n this.memberActivity = mActivity;\r\n let action = mActivity.action;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel( this.memberActivity );\r\n return new Observable( ( subscriber ) =>\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.box ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity.nonce ) )\r\n {\r\n // debugger;\r\n\r\n this.httpService.postObservable( '/Member/GetMemberActivities',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n }, 'json2text' )\r\n .subscribe( ( result ) =>\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n {\r\n // debugger;\r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( bn ) && bn.box.length > 0 && bn.nonce.length > 0 )\r\n {\r\n // debugger;\r\n const mActs = JSON.parse( SlakezSaltServiceStatic.boxUnsalt( bn ) ) as MemberActivity[];\r\n // debugger;\r\n /*\r\n * ------------------------------------------------------------------------\r\n * Note: dictionariesUpdatedEmitter will act on the three following values:\r\n * 1. MemberActivity[]\r\n * 2. True: to trigger filtration of ProfileKvPhotoArr\r\n * 3. False: to display the MemberView glyphion menu only\r\n * ------------------------------------------------------------------------\r\n */\r\n EmitterSubjectService.emitDictionariesUpdated( mActs );\r\n // debugger;\r\n subscriber.next( mActs );\r\n\r\n } else\r\n {\r\n this.message = 'Result is null/undefined in getMemberActivities(doerSitUserId:' + this.memberActivity.senderSitUserId;\r\n this.message += '; doeeSitUserId:' + this.memberActivity.receiverSitUserId + '; action: ' + action + ');\\n result: ' + result;\r\n }\r\n }\r\n },\r\n ( error ) =>\r\n {\r\n // debugger;\r\n this.message = 'Error occured in getMemberActivities(doerSitUserId:' + this.memberActivity.senderSitUserId;\r\n this.message += '; doeeSitUserId:' + this.memberActivity.receiverSitUserId + '; action: ' + action;\r\n this.message += ');\\n Error message: ' + error.message;\r\n },\r\n );\r\n }\r\n if ( this.message.length > 10 )\r\n {\r\n console.log( this.message );\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n }\r\n } );\r\n } else\r\n {\r\n // debugger;\r\n this.message = 'Could not sent method getMemberActivities(doerSitUserId:' + this.memberActivity.senderSitUserId;\r\n this.message += '; doeeSitUserId:' + sitUserId + '; action: ' + this.memberActivity.action + ');\\n';\r\n if ( this.message.length > 10 )\r\n {\r\n console.log( this.message );\r\n // EmitterSubjectService.emitMyErrorLog( this.message );\r\n }\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------\r\n nullPromise ( data : any ) : any\r\n {\r\n let timer = setTimeout( () =>\r\n {\r\n // debugger;\r\n return data;\r\n }, 500);\r\n clearTimeout(timer);\r\n if ( timer )\r\n {\r\n () => clearInterval(timer );\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // --------------------------------------------------------------------------------\r\n // Note: This method removes the very first image on ProfileImageArr of ProfilePics\r\n // if it is created from ProfileTile to quicky show the user's primary-pic\r\n // and the server sent ProfilePics already contains the primary-pic\r\n // --------------------------------------------------------------------------------\r\n removeProfileTileImageFromProfileImageArr (pPics : ProfilePics, pTile: ProfileTile) : ProfilePics {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.profileImageArr)\r\n && pPics.profileImageArr.length > 1) // Note: there has to be at least 2 pics to start\r\n {\r\n let index = 0;\r\n pPics.profileImageArr.map(e => {\r\n if ((FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.sitUserKey) || e.sitUserId === 0) && e.sitUserId == pTile.sitUserId) // Note: this criteria was used because ProfileImage created from ProfileTile lacks sitUserKey\r\n {\r\n // debugger;\r\n pPics.profileImageArr.splice(index, 1);\r\n }\r\n index++;\r\n });\r\n }\r\n return pPics;\r\n }\r\n // ---------------------------------------------------------------\r\n setAndGetLocks(): any {\r\n EmitterSubjectService.setupLockPhotos();\r\n /*\r\n * --------------------------------------------------------\r\n * debugger;\r\n */\r\n this.kvPhotoLock = EmitterSubjectService.getPhotoLock();\r\n this.kvPhotoUnLock = EmitterSubjectService.getPhotoUnLock();\r\n // --------------------------------------------------------\r\n this.kvPhotoPrivate = EmitterSubjectService.getPhotoPrivate();\r\n this.kvPhotoPublic = EmitterSubjectService.getPhotoPublic();\r\n return true;\r\n }\r\n /*\r\n * ============================================================\r\n * ------------------------------------------------------------\r\n * END of KvPhoto-Privacy-System:\r\n * ------------------------------------------------------------\r\n * ============================================================\r\n */\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { KvPhotoService } from './kvPhotoService.service';\r\nimport { PhotoAndPrimaryPhotoMgmtService } from './photoAndPrimaryPhotoMgmtService.service';\r\nimport { PhotoBnService } from './photoBnService.service';\r\nimport { PhotoPrivacyService } from './photoPrivacyService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PhotoServiceService {\r\n constructor (\r\n private kvPhotoService: KvPhotoService,\r\n private photoAndPrimaryPhotoMgmtService : PhotoAndPrimaryPhotoMgmtService,\r\n private photoPrivacyService : PhotoPrivacyService,\r\n private photoBnService: PhotoBnService,\r\n ) { }\r\n // ------------------------------------------------------------------\r\n setKvPhotoService (kps : KvPhotoService) : void {\r\n this.kvPhotoService = kps;\r\n }\r\n getKvPhotoService () : KvPhotoService {\r\n return this.kvPhotoService;\r\n }\r\n // ------------------------------------------------------------------\r\n setPhotoBnService (ps : PhotoBnService) : void {\r\n this.photoBnService= ps;\r\n }\r\n getPhotoBnService () : PhotoBnService {\r\n return this.photoBnService;\r\n }\r\n // ------------------------------------------------------------------\r\n setPhotoAndPrimaryPhotoMgmtService (pmgs : PhotoAndPrimaryPhotoMgmtService) : void {\r\n this.photoAndPrimaryPhotoMgmtService = pmgs;\r\n }\r\n getPhotoAndPrimaryPhotoMgmtService () : PhotoAndPrimaryPhotoMgmtService {\r\n return this.photoAndPrimaryPhotoMgmtService;\r\n }\r\n // ------------------------------------------------------------------\r\n setPhotoPrivacyService (pss : PhotoPrivacyService) : void {\r\n this.photoPrivacyService = pss;\r\n }\r\n getPhotoPrivacyService () : PhotoPrivacyService {\r\n return this.photoPrivacyService;\r\n }\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Content } from '../../models/common/content.model';\r\nimport { EmitOffOnResult } from '../../models/common/emitOffOnResult.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { ModuleComponentLoader } from '../../models/common/moduleComponentLoader.model';\r\nimport { Unit } from '../../models/common/unit.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { RemoteDataModel } from '../../models/data/remoteDataModel.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { MemberViewMgmtModel } from '../../models/member/memberViewMgmtModel.model';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\nimport { CoreServiceService } from '../coreServiceService/coreServiceService.service';\r\nimport { HeartbeatService } from '../coreServiceService/heartbeatService.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { KvArrayService } from '../coreServiceService/kvArrayService.service';\r\nimport { LiaisonService } from '../coreServiceService/liaisonService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DbServiceService } from '../dbServiceService/dbServiceService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { DisplayProfileService } from '../displayProfileServiceService/displayProfileService.service';\r\nimport { MemberService } from '../memberServiceService/memberService.service';\r\nimport { MemberServiceService } from '../memberServiceService/memberServiceService.service';\r\nimport { AbstractPagerVPhotoNavService } from '../pagerServiceService/abstractPagerVPhotoNavService.service';\r\nimport { PagerServiceService } from '../pagerServiceService/pagerServiceService.service';\r\nimport { PagerSupportService } from '../pagerServiceService/pagerSupportService.service';\r\n// import { PagerVKvPhotoNavService } from '../../app/pagerModule/pagerVPhotoNav/pagerVPhotoNavService.service';\r\nimport { PhotoBnService } from '../photoServiceService/photoBnService.service';\r\nimport { PhotoServiceService } from '../photoServiceService/photoServiceService.service';\r\nimport { PreferenceService } from '../profileServiceService/preferenceService.service';\r\nimport { ProfileContentService } from '../profileServiceService/profileContentService.service';\r\nimport { BackgroundImageAnimationService } from '../rendererServiceService/backgroundImageAnimationService.service';\r\nimport { RendererServiceService } from '../rendererServiceService/rendererServiceService.service';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbstractProfileService implements OnDestroy {\r\n public bias! : BackgroundImageAnimationService;\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService;\r\n public displayProfileService! : DisplayProfileService;\r\n public httpService! : HttpService;\r\n public heartbeatService! : HeartbeatService;\r\n public kvArrayService! : KvArrayService;\r\n public liaisonService! : LiaisonService;\r\n public memberService! : MemberService;\r\n // public pagerSupportService! : PagerSupportService;\r\n // public pagerVKvPhotoNavService! : PagerVKvPhotoNavService;\r\n public photoBnService! : PhotoBnService;\r\n \r\n // -----------------------------------------------------------\r\n public batchOfIds : number[] = [];\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public emitterDestroyed$ : Subject = new Subject();\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isSingletonUsed = false;\r\n public isViewMember = false;\r\n // public isProfileTileDictionaryCreatedFromIndexDb = false;\r\n public incompleteTilesArr : ProfileTile[] = [];\r\n public kvAnyArr : KvAny[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public memberViewMgmtModel : MemberViewMgmtModel = new MemberViewMgmtModel();\r\n public message = '';\r\n public offOnArr : string[] = [ '0' ];\r\n public offOnResult : EmitOffOnResult = new EmitOffOnResult();\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public preference : Preference = new Preference();\r\n public preferenceKvAnyArr : KvAny[] = [];\r\n public profileContent : Content = new Content();\r\n public profileContentKvAnyArr : KvAny[] = [];\r\n public profileInfo : ProfileInfo = new ProfileInfo();\r\n // Note: to be used to accumulate data from 1. profileTile, 2. profileInfo to 3.profileInfoView\r\n // Note: there could be multiple passes of 1, and 2 on profileInfoPreView before final copy to profileInfoView\r\n public profileInfoView : ProfileInfo = new ProfileInfo();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profileTilesArr : ProfileTile[] = [];\r\n public rdm : RemoteDataModel = new RemoteDataModel()\r\n public sitUser : SitUser = new SitUser(); // for sending data to the server\r\n // public timer : any;\r\n public timerArray : any[] = [];\r\n public unit = '';\r\n\r\n\r\n // --------------------------------------------------------------- \r\n constructor (\r\n public abstractPagerVPhotoNavService : AbstractPagerVPhotoNavService,\r\n public coreServiceService : CoreServiceService,\r\n public dbServiceService : DbServiceService,\r\n public dictionaryService : DictionaryService,\r\n public glyphiconMenuService: GlyphiconMenuService,\r\n public memberServiceService : MemberServiceService,\r\n public photoServiceService : PhotoServiceService,\r\n public preferenceService : PreferenceService,\r\n public profileContentService : ProfileContentService,\r\n public rendererServiceService : RendererServiceService,\r\n public router : Router,\r\n ) { \r\n this.bias = rendererServiceService.getBackgroundImageAnimationService();\r\n this.heartbeatService = this.coreServiceService.getHeartbeatService();\r\n this.httpService = this.coreServiceService.getHttpService();\r\n this.kvArrayService = this.coreServiceService.getKvArrayService();\r\n this.liaisonService = this.coreServiceService.getLiaisonService();\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n this.memberService = memberServiceService.getMemberService();\r\n \r\n // this.pagerVKvPhotoNavService = pagerServiceService.getPagerVKvPhotoNavService(); \r\n this.photoBnService = photoServiceService.getPhotoBnService();\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n return true;\r\n }\r\n // --------------------------------------------------------------\r\n public createProfileTileShellArr (sitIdArr : number[]) : ProfileTile[] {\r\n const pTiles : ProfileTile[] = [];\r\n let i = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitIdArr) && sitIdArr.length > 0) {\r\n let pTile : any;\r\n\r\n for (let e of sitIdArr) {\r\n pTile = this.createProfileTileShell(e) as ProfileTile;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTiles.push(pTile);\r\n if (i === sitIdArr.length) {\r\n return pTiles;\r\n }\r\n }\r\n i++;\r\n };\r\n }\r\n return pTiles;\r\n }\r\n // ---------------------------------------------------------------\r\n public createProfileTileShell (sitId : number) : ProfileTile {\r\n if (sitId > 0) {\r\n const pTile = new ProfileTile();\r\n\r\n pTile.sitUserId = sitId;\r\n pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n return pTile;\r\n }\r\n else {\r\n return new ProfileTile();\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n checkAndSetProfileTileImage (inTile : ProfileTile) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inTile)) {\r\n if (inTile.sitUserId > 0) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inTile.primaryImage) || inTile.primaryImage.length < 5) {\r\n this.photoBnService.getPrimaryPhoto(inTile.sitUserId).then(p => {\r\n // debugger;\r\n if (p && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p.image)) {\r\n inTile.primaryImage = JsRegExpServiceStatic.normalizeImageData(p.image);\r\n // debugger;\r\n }\r\n else {\r\n inTile.primaryImage = \"url('/assets/photos/DefaultImageMale.jpg')\";\r\n }\r\n }, (err) => {\r\n console.log('GetUserPrimaryPhoto failed! @ checkAndSerProfileTimeImage in memberService.');\r\n inTile.primaryImage = \"url('/assets/photos/DefaultImageMale.jpg')\";\r\n // debugger;\r\n })\r\n }\r\n else {\r\n inTile.primaryImage = JsRegExpServiceStatic.normalizeImageData(inTile.primaryImage);\r\n }\r\n }\r\n else {\r\n inTile.primaryImage = \"url('/assets/photos/DefaultImageMale.jpg')\";\r\n // debugger;\r\n }\r\n }\r\n return inTile;\r\n }\r\n // ---------------------------------------------------------------\r\n // create KVAny[] for the child component ProfileInfokeyValueArrComponent,\r\n // and emit it as well.\r\n // ---------------------------------------------------------------\r\n\r\n public createKVModelArrFromProfileInfoView (pInfoView : ProfileInfo) : any {\r\n let tArrKvAny : any;\r\n let unit : any;\r\n let index = -1;\r\n let i = 0;\r\n let distanceUnit = {\r\n distance: 0,\r\n dUnit: 'meter',\r\n };\r\n let model : any;\r\n\r\n // BEGIN of #2 !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfoView)) {\r\n this.profileInfoView = pInfoView;\r\n // debugger;\r\n tArrKvAny = this.kvArrayService.getObjectModelToArrKvAny(this.profileInfoView);\r\n // debugger;\r\n this.kvAnyArr = this.kvArrayService.sortArrKvAnyForView(tArrKvAny);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvAnyArr)) {\r\n for (let e of this.kvAnyArr) {\r\n /*this.arrKvAny.map(e => {*/\r\n if (e.key.toLowerCase().toString().indexOf('distance') !== -1) {\r\n index = i;\r\n distanceUnit.distance = e.value;\r\n }\r\n // debugger;\r\n if (e.key.toLowerCase().toString().indexOf('unit') !== -1) {\r\n distanceUnit.dUnit = e.value;\r\n switch (e.value.toLowerCase().toString()) {\r\n case 'Meters': case 'Meter': case 'M':\r\n unit = 'meters';\r\n break;\r\n case 'Mile': case 'Miles':\r\n unit = 'miles';\r\n break;\r\n case 'KM': case 'KiloMeters': case 'KiloMeter':\r\n unit = 'km';\r\n break;\r\n case 'Foot':\r\n unit = 'foot';\r\n break;\r\n case 'Feet':\r\n unit = 'feet';\r\n break;\r\n }\r\n }\r\n i++;\r\n }\r\n // debugger;\r\n if (this.kvAnyArr.length > index && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvAnyArr[ index ])) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unit)) {\r\n // debugger;\r\n this.kvAnyArr[ index ].value = this.kvAnyArr[ index ].value.toString() + ' ' + unit;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit) && (distanceUnit.distance >= 0 || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.dUnit))) {\r\n // debugger;\r\n this.kvAnyArr[ index ].value = distanceUnit.distance.toString() + ' ' + distanceUnit.dUnit.toLowerCase();\r\n }\r\n }\r\n }\r\n\r\n // END of #2 !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n\r\n model = {\r\n model: this.profileInfo,\r\n name: 'profileInfo',\r\n kvAnyArr: this.kvAnyArr,\r\n };\r\n EmitterSubjectService.emitModel(model);\r\n // this.memberViewMgmtModel.populateModelData(this.kvAnyArr);\r\n // EmitterSubjectService.setMemberViewMgmtModel(this);\r\n return this.kvAnyArr;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // create ProfileInfoView from both ProfileTile | ProfileInfo,\r\n // and create profileContentArrKvAny from ProfileInfo.\r\n // ---------------------------------------------------------------\r\n // the following function cover all cases of UserData (not pics) capture including offOn and distance indicators\r\n // and sets all the required UserData into the MemberViewMgmtModel, that is used to populate View.html\r\n // ---------------------------------------------------------------------------------------------------\r\n public createProfileInfoViewAndUpdateProfileTile (pInfo ?: ProfileInfo | any, pTile ?: ProfileTile | any) : any {\r\n let hb : any;\r\n let unit : any;\r\n let index = -1;\r\n let i = 0;\r\n let distanceUnit = new Unit();\r\n this.profileInfo = new ProfileInfo();\r\n this.profileTile = new ProfileTile();\r\n\r\n let model : any;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n pInfo = new ProfileInfo();\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.signedInUserId === 0) {\r\n pInfo.signedInUserId = this.loginSuccess.signedInUserId;\r\n pInfo.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.signedInUserId === 0) {\r\n pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n pTile.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n }\r\n }\r\n // debugger;\r\n // Case: Both ProfileInfo & ProfileTile are present:\r\n // -------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pInfo.sitUserId);\r\n // debugger;\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && pTile.sitUserId > 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pTile.sitUserId);\r\n // debugger;\r\n }\r\n pTile = this.captureHeartbeatDataInProfileTile(hb, pTile);\r\n // debugger;\r\n \r\n this.profileTile.copySourceToDestination(this.profileTile, pTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n this.profileInfo.copySourceToDestination(this.profileInfo, pInfo);\r\n }\r\n\r\n // Case: only ProfileInfo is present:\r\n // ----------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId == 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pInfo.sitUserId);\r\n // debugger;\r\n pTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(pInfo);\r\n pTile = this.captureHeartbeatDataInProfileTile(hb, pTile);\r\n\r\n\r\n // debugger;\r\n this.profileTile = this.profileTile.copySourceToDestination(this.profileTile, pTile);\r\n this.profileInfo = this.profileInfo.copySourceToDestination(this.profileInfo, pInfo);\r\n }\r\n\r\n // Case: only ProfileTile is present:\r\n // --------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId === 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pTile.sitUserId);\r\n // for the offOn indicator:\r\n pTile = this.captureHeartbeatDataInProfileTile(hb, pTile);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n this.profileTile.copySourceToDestination(this.profileTile, pTile);\r\n\r\n pInfo = new ProfileTile().copyToProfileInfo(this.profileTile); // CopyServiceStatic.copyFromProfileTileToProfileInfo(pTile);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n this.profileInfo.copySourceToDestination(this.profileInfo, pInfo);\r\n // debugger;\r\n }\r\n }\r\n }\r\n\r\n // For any of the above cases:\r\n // ===========================\r\n\r\n // we need the profile tile for OffOnComponent.\r\n // So if it is not created or empty, create it from profileInfo:\r\n // -------------------------------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) || this.profileTile.sitUserId === 0) {\r\n this.profileTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(this.profileInfo);\r\n // debugger;\r\n\r\n // update ProfileTile's distance and unit:\r\n // ----------------------------------------\r\n this.profileTile = this.captureDistanceUnitInProfileTile(hb, this.profileTile);\r\n // debugger;\r\n this.profileTile = this.executeBeforeViewInit(this.profileTile, 'profileTile-');\r\n }\r\n\r\n // if Heartbeat's distance is not already calculated:\r\n // --------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n // debugger;\r\n this.profileTile = this.captureDistanceUnitInProfileTile(hb, this.profileTile);\r\n }\r\n\r\n // for the offOn indicator, profileContentArrKvAny, & create profileInfoView:\r\n // --------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n\r\n this.kvAnyArr = this.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n // debugger;\r\n // create profileContentArrKvAny for ContentKeyValueArrComponent:\r\n // --------------------------------------------------------------\r\n this.profileContent = CopyServiceStatic.copyFromProfileInfoToContent(this.profileInfo);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)) {\r\n // debugger;\r\n this.profileContentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent); // TODO: restore\r\n }\r\n }\r\n\r\n // capture data for the preference only from the dictionary!\r\n // we do not get any data from the backend-server in this function.\r\n // ----------------------------------------------------------------\r\n this.preference = this.dictionaryService.preferenceDictionary.get(this.profileInfo.sitUserId) as Preference;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n // debugger;\r\n // isPreferenceSuccess = true;\r\n this.memberService.setPreference(this.preference);\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n }\r\n\r\n // capture data for the profileInfoView:\r\n // ------------------------------------- \r\n this.profileInfoView = this.profileInfoView.copySourceToDestination(this.profileInfoView, pInfo);\r\n // or\r\n // uncomment the line below if a subset of profileInfo is required to be displayed:\r\n // --------------------------------------------------------------------------------\r\n // this.profileInfoView = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n\r\n let tSitUser = EmitterSubjectService.getSitUserModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tSitUser)\r\n && tSitUser.sitUserId === this.profileTile.sitUserId) {\r\n // debugger;\r\n this.sitUser = tSitUser;\r\n this.sitUser.heartbeat = hb;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId === 0) {\r\n this.sitUser = CopyServiceStatic.copyProfileTileToSitUser(this.profileTile);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && this.sitUser.sitUserId == hb.sitUserId\r\n && this.sitUser.heartbeat instanceof Heartbeat\r\n && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser.heartbeat) && this.sitUser.heartbeat.sitUserId === 0)) {\r\n // debugger;\r\n this.sitUser.heartbeat = hb;\r\n }\r\n \r\n // store the computed values into the memberViewMgmtModel:\r\n // -------------------------------------------------------\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel) || this.memberViewMgmtModel.sitUserId == 0) {\r\n // debugger;\r\n this.memberViewMgmtModel = new MemberViewMgmtModel();\r\n }\r\n this.memberViewMgmtModel.populateModelData(this.profileContent, this.preference, this.profileInfo, this.profileInfoView, this.profileTile, this.sitUser, this.preferenceKvAnyArr, this.profileContentKvAnyArr, this.kvAnyArr);\r\n\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel(); \r\n // debugger;\r\n return this.memberViewMgmtModel;\r\n }\r\n // ---------------------------------------------------------------\r\n public captureDataToProfileInfoView (hb : Heartbeat, pTile : ProfileTile, pInfoView : ProfileInfo) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfoView)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n pInfoView.distance = hb.distance.toFixed(2);\r\n pInfoView.unit = hb.unit.length > 0 ? hb.unit : 'm'; // meter\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.signedInUserId > 0) {\r\n pInfoView.signedInUserId = pTile.signedInUserId;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.signedInUserKey)) {\r\n pInfoView.signedInUserKey = pTile.signedInUserKey;\r\n }\r\n\r\n pTile.distance = pInfoView.distance;\r\n pTile.distanceStr = pInfoView.distance + ' ' + pInfoView.unit;\r\n }\r\n }\r\n return pInfoView;\r\n }\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeatTime) && pTile.heartbeatTime === 0)\r\n // ---------------------------------------------------------------\r\n public captureHeartbeatDataInProfileTile (hb : Heartbeat, pTile : ProfileTile) : any {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n\r\n // copy only when heartbeat is a model, not a timestamp:\r\n // -----------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat) && StringServiceStatic.typeCheck(pTile.heartbeatTime) === 'object') {\r\n pTile.heartbeat = CopyServiceStatic.copyHeartbeatIfExists(pTile.heartbeat, hb);\r\n // debugger;\r\n }\r\n\r\n // copy the heartbeatTime if old:\r\n // ------------------------------\r\n if (pTile.heartbeatTime >= 0 && hb?.heartbeatTime >= 0\r\n && pTile.heartbeatTime < hb?.heartbeatTime) {\r\n pTile.heartbeatTime = hb?.heartbeatTime;\r\n }\r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public captureDistanceUnitInProfileTile (hb : Heartbeat, pTile : ProfileTile) : any {\r\n // debugger;\r\n let distanceUnit = new Unit();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n pTile = this.captureHeartbeatDataInProfileTile(hb, pTile);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distance) && hb.distance === 0) {\r\n // compute distance and unit:\r\n distanceUnit = this.heartbeatService.calculateDistance(hb, this.loginSuccess.heartbeat, true); // (dest, origin, isKm)\r\n\r\n pTile.distanceUnit = distanceUnit;\r\n\r\n // debugger;\r\n this.processDistanceUnitForProfileTileAndProfileInfoView(distanceUnit);\r\n\r\n hb.distance = distanceUnit.distance;\r\n distanceUnit.distanceStr = hb.distanceStr = hb.distance.toFixed(2) + ' ' + distanceUnit.unit;\r\n hb.unit = distanceUnit.unit;\r\n }\r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public computeDistanceUnitFromHeartbeatForAfterViewInit (pTile : ProfileTile) : any {\r\n let distanceUnit : Unit = new Unit();\r\n let heartbeat : Heartbeat = new Heartbeat();\r\n\r\n // get the heartbeat of pTile or loginSuccess:\r\n // -------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.heartbeatService)) {\r\n heartbeat = pTile.heartbeat;\r\n }\r\n else if (pTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.heartbeat)\r\n && this.loginSuccess.heartbeat.heartbeatTime > 0) {\r\n heartbeat = this.loginSuccess.heartbeat;\r\n }\r\n }\r\n // debugger;\r\n\r\n distanceUnit = this.heartbeatService.computeDistanceAndUnit(heartbeat);\r\n\r\n // TODO: experimental\r\n pTile.distanceUnit = distanceUnit;\r\n\r\n // if heartbeat is taken from loginSuccess.heartbeat:\r\n // --------------------------------------------------\r\n if (pTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n this.loginSuccess.heartbeat = pTile.heartbeat;\r\n }\r\n\r\n // debugger;\r\n\r\n this.processDistanceUnitForProfileTileAndProfileInfoView(pTile.distanceUnit);\r\n\r\n // debugger;\r\n // Note: update the offOn-indicator and distance for accordionComponent:\r\n EmitterSubjectService.emitUpdateDistanceAndProfileNameAndOffOn(pTile);\r\n\r\n return pTile;\r\n }\r\n else return null;\r\n }\r\n // ===============================================================\r\n // End of All ProfileTile/ProfileInfo methods related to:\r\n // 1) memberViewMgmtComponent\r\n // 2) myProfileViewMgmtComponent\r\n // ===============================================================\r\n // ---------------------------------------------------------------\r\n // create ProfileInfoView from both ProfileTile | ProfileInfo,\r\n // and create profileContentArrKvAny from ProfileInfo.\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // NOT in user now, but DO NOT DELETE THIS.\r\n // ---------------------------------------------------------------\r\n public createProfileInfoViewAndUpdateProfileTile3 (pInfo : ProfileInfo, pTile : ProfileTile) : any {\r\n let hb : any;\r\n let unit : any;\r\n let index = -1;\r\n let i = 0;\r\n let distanceUnit = new Unit();\r\n\r\n let model : any;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n if (pInfo.signedInUserId === 0) {\r\n pInfo.signedInUserId = this.loginSuccess.signedInUserId;\r\n pInfo.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n }\r\n if (pTile.signedInUserId === 0) {\r\n pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n pTile.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n }\r\n }\r\n\r\n // Case: Both ProfileInfo & ProfileTile are present:\r\n // -------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n\r\n hb = this.dictionaryService.heartbeatDictionary.get(pInfo.sitUserId);\r\n // debugger;\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && pTile.sitUserId > 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pTile.sitUserId);\r\n // debugger;\r\n }\r\n this.profileInfoView.copy(pInfo); // = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n this.profileTile = this.profileTile.copy(pTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n }\r\n\r\n // Case: only ProfileInfo is present:\r\n // ----------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId == 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pInfo.sitUserId);\r\n // debugger;\r\n this.profileTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(pInfo);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n this.profileTile.heartbeat = CopyServiceStatic.copyHeartbeatIfExists(this.profileTile.heartbeat, hb);\r\n if (this.profileTile.heartbeat.prevHeartbeat >= 0 && hb?.heartbeatTime >= 0\r\n && this.profileTile.heartbeat.prevHeartbeat < hb?.heartbeatTime) {\r\n this.profileTile.heartbeat.prevHeartbeat = hb?.heartbeatTime;\r\n }\r\n }\r\n this.profileTile.signedInUserId = pTile.signedInUserId;\r\n this.profileTile.signedInUserKey = pTile.signedInUserKey;\r\n\r\n this.profileInfoView.copy(pInfo); // = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n }\r\n\r\n // Case: only ProfileTile is present:\r\n // --------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo ) && pInfo.sitUserId === 0 \r\n {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pTile.sitUserId);\r\n // for the offOn indicator:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n if (pTile.heartbeat.prevHeartbeat >= 0 && hb.heartbeatTime >= 0 && pTile.heartbeat.prevHeartbeat < hb.heartbeatTime) {\r\n pTile.heartbeat.prevHeartbeat = hb.heartbeatTime;\r\n }\r\n }\r\n // debugger;\r\n pInfo = new ProfileTile().copyToProfileInfo(this.profileTile); // CopyServiceStatic.copyFromProfileTileToProfileInfo(pTile);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n this.profileInfoView.copy(pInfo); // = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n }\r\n this.profileTile = this.profileTile.copy(pTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n\r\n if (pTile.signedInUserId > 0) {\r\n this.profileTile.signedInUserId = pInfo.signedInUserId = this.profileInfoView.signedInUserId = pTile.signedInUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.signedInUserKey)) {\r\n this.profileTile.signedInUserKey = pInfo.signedInUserKey = this.profileInfoView.signedInUserKey = pTile.signedInUserKey;\r\n }\r\n }\r\n\r\n // for the offOn indicator, profileContentArrKvAny, & create profileInfoView:\r\n // TODO: Check if the pInfo is valid()?\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0) {\r\n // create profileContentArrKvAny for ContentKeyValueArrComponent:\r\n // --------------------------------------------------------------\r\n this.profileContent = CopyServiceStatic.copyFromProfileInfoToContent(pInfo);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)) {\r\n this.profileContentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent); // TODO: restore\r\n }\r\n }\r\n\r\n // if Heartbeat's distance is not already calculated:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distance)) {\r\n if (hb.distance === 0) {\r\n // compute distance and unit:\r\n distanceUnit = this.heartbeatService.calculateDistance(hb, this.loginSuccess.heartbeat, true); // (dest, origin, isKm)\r\n // debugger;\r\n this.processDistanceUnitForProfileTileAndProfileInfoView(distanceUnit);\r\n\r\n hb.distance = distanceUnit.distance;\r\n hb.distanceStr = hb.distance.toFixed(2) + ' ' + distanceUnit.unit;\r\n hb.unit = distanceUnit.unit;\r\n this.profileTile.heartbeat = hb;\r\n this.profileTile.distanceUnit = distanceUnit;\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n this.profileInfoView.distance = hb.distance.toFixed(2);\r\n this.profileInfoView.unit = hb.unit.length > 0 ? hb.unit : 'meter';\r\n this.profileTile.distance = this.profileInfoView.distance;\r\n this.profileTile.distanceStr = this.profileInfoView.distance + ' ' + this.profileInfoView.unit;\r\n this.profileTile.heartbeat = hb;\r\n this.profileTile.distanceUnit = distanceUnit;\r\n // debugger;\r\n }\r\n\r\n // we need the profile tile for OffOnComponent. So if it is not created or empty, create it from profileInfo:\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) || this.profileTile.sitUserId === 0) {\r\n this.profileTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(pInfo); // TODO: from CopySeriviceStatic to ProfileInfo model\r\n // debugger;\r\n\r\n // TODO: update ProfileTile's distance and unit:\r\n // debugger;\r\n let tpTile = this.executeBeforeViewInit(this.profileTile, 'profileTile-');\r\n this.profileTile = this.profileTile.copyIfExists(pTile); //CopyServiceStatic.copyProfileTileIfExists(this.profileTile, tpTile);\r\n\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(this.profileInfo, this.profileInfoView, this.profileTile, this.profileContentKvAnyArr, this.preferenceKvAnyArr, this.kvAnyArr);\r\n }\r\n // debugger;\r\n return this.profileInfoView;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // Note: This method handles following multiple tasks:\r\n // 1) sets up ProfileTile model with heartbeat info and emits the profileTile\r\n // 2) sets up ProfileInfoView model with heartbeat info and emits the profileInfoView\r\n // 4) creates ProfileContentArrKayValue array and emits the profileContentArrKayValue array\r\n // 5) it returns only ProfileInfoView at the end\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // NOT in user now, but DO NOT DELETE THIS.\r\n // ---------------------------------------------------------------\r\n //public createProfileInfoViewAndUpdateProfileTile2 (pInfo : ProfileInfo, pTile : ProfileTile) : any {\r\n // let tArrKvAny : any;\r\n // let hb : any;\r\n // let unit : any;\r\n // let index = -1;\r\n // let i = 0;\r\n // let distanceUnit = new Unit();\r\n\r\n // let model : any;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // if (pInfo.signedInUserId === 0) {\r\n // pInfo.signedInUserId = this.loginSuccess.signedInUserId;\r\n // pInfo.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n // }\r\n // if (pTile.signedInUserId === 0) {\r\n // pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n // pTile.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n // }\r\n // }\r\n\r\n // // Case: Both ProfileInfo & ProfileTile are present:\r\n // // -------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pInfo.sitUserId);\r\n // // debugger;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && pTile.sitUserId > 0) {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pTile.sitUserId);\r\n // // debugger;\r\n // }\r\n // this.profileInfoView = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // this.profileTile = CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n // }\r\n\r\n // // Case: only ProfileInfo is present:\r\n // // ----------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId == 0) {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pInfo.sitUserId);\r\n // // debugger;\r\n // this.profileTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(pInfo);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n // this.profileTile.heartbeat = CopyServiceStatic.copyHeartbeatIfExists(this.profileTile.heartbeat, hb);\r\n // if (this.profileTile.heartbeat.prevHeartbeat >= 0 && hb?.heartbeatTime >= 0 && this.profileTile.heartbeat.prevHeartbeat < hb?.heartbeatTime) {\r\n // this.profileTile.heartbeat.prevHeartbeat = hb?.heartbeatTime;\r\n // }\r\n // }\r\n // this.profileTile.signedInUserId = pTile.signedInUserId;\r\n // this.profileTile.signedInUserKey = pTile.signedInUserKey;\r\n\r\n // this.profileInfoView = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // }\r\n\r\n // // Case: only ProfileTile is present:\r\n // // --------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo ) && pInfo.sitUserId === 0 \r\n // {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pTile.sitUserId);\r\n // // for the offOn indicator:\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n // if (pTile.heartbeat.prevHeartbeat >= 0 && hb.heartbeatTime >= 0 && pTile.heartbeat.prevHeartbeat < hb.heartbeatTime) {\r\n // pTile.heartbeat.prevHeartbeat = hb.heartbeatTime;\r\n // }\r\n // }\r\n // // debugger;\r\n // pInfo = this.profileTile.copyToProfileInfo(); // CopyServiceStatic.copyFromProfileTileToProfileInfo(pTile);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n // this.profileInfoView.copy(pInfo); // CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // }\r\n // this.profileTile = this.profileTile.copy(pTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n\r\n // if (pTile.signedInUserId > 0) {\r\n // this.profileTile.signedInUserId = pInfo.signedInUserId = this.profileInfoView.signedInUserId = pTile.signedInUserId;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.signedInUserKey)) {\r\n // this.profileTile.signedInUserKey = pInfo.signedInUserKey = this.profileInfoView.signedInUserKey = pTile.signedInUserKey;\r\n // }\r\n // }\r\n\r\n // // for profileContentArrKvAny, & create profileInfoView:\r\n // this.profileContentKvAnyArr = this.profileContentService.createProfileContentKvAnyArr(pInfo); // will emit profileContentKvAnyArr\r\n\r\n // let tProfileInfoView = this.liaisonService.processProfileInfoForHeartbeat(hb); // will emit profileInfoView\r\n // this.profileInfoView.copy(tProfileInfoView); // = CopyServiceStatic.copyProfileInfoIfExists(this.profileInfoView, tProfileInfoView);\r\n\r\n // // debugger;\r\n // let tpTile = this.executeBeforeViewInit(this.profileTile, 'profileTile-');\r\n // this.profileTile = this.profileTile.copy(tpTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, tpTile);\r\n\r\n // let tProfileTile = this.processProfileTileForHeartbeat(hb); // will emit profileTile\r\n // this.profileTile = this.profileTile.copy(tProfileTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, tProfileTile);\r\n\r\n // // debugger;\r\n // this.memberViewMgmtModel.populateModelData(this.profileInfo, this.profileInfoView, this.profileTile, this.profileContentKvAnyArr, this.preferenceKvAnyArr, this.kvAnyArr);\r\n // // debugger;\r\n // return this.profileInfoView;\r\n //}\r\n // --------------------------------------------------------------\r\n public determineUnit (pTile : ProfileTile) : string {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn)) {\r\n if (pTile.distance > 999) {\r\n pTile.distance = pTile.distance / 1000;\r\n pTile.unit = this.unit = 'km';\r\n } else {\r\n pTile.unit = this.unit = 'm';\r\n }\r\n return this.unit;\r\n }\r\n else return 'm';\r\n }\r\n // ===============================================================\r\n // Begin of All ProfileTile/ProfileInfo methods related to:\r\n // 1) memberViewMgmtComponent\r\n // 2)myProfileViewMgmtComponent\r\n // ===============================================================\r\n // ---------------------------------------------------------------\r\n // Note: This method also has a copy in MemberViewMgmtComponent\r\n // It is kept there because from the service, this method does not\r\n // update/display user's profileInfo data.\r\n // ---------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n // NOT in user now, but DO NOT DELETE THIS.\r\n // ---------------------------------------------------------------\r\n public executeAllTasks (pInfo : ProfileInfo, pTile : ProfileTile) : MemberViewMgmtModel | any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n this.profileInfo = pInfo;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n // debugger;\r\n this.executeProfileInfoTasks(this.profileInfo).subscribe(data => {\r\n this.profileInfo = data;\r\n this.kvAnyArr = this.liaisonService.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n // debugger;\r\n this.profileContentKvAnyArr = this.profileContentService.createProfileContentKvAnyArr(this.profileInfo);\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(this.profileInfo, this.profileContentKvAnyArr, this.kvAnyArr);\r\n this.profileInfoView.copy(this.profileInfo);\r\n });\r\n // debugger;\r\n this.preference = this.dictionaryService.preferenceDictionary.get(this.profileInfo.sitUserId) as Preference;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n // debugger;\r\n this.memberService.setPreference(this.preference);\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(null, this.preference, this.profileInfo, this.profileInfoView, this.profileTile, null, this.profileContentKvAnyArr, this.preferenceKvAnyArr, this.kvAnyArr);\r\n }\r\n }\r\n return this.memberViewMgmtModel;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n // ----------------------------------------------------------------------------------------------\r\n // Note: this method will capture all UserData ( not pics) via the\r\n // promise of executeProfileInfoTasks():\r\n // ----------------------------------------------------------------------------------------------\r\n // Note: This does NOT violate SOLID principal in a sense that preference is obtained from the dictionary in\r\n // executeAllNonProfileTileTasks() instead of getting it from the backend-server.\r\n // However, if the user's preference data is not in the dictionary, it fails at this task.\r\n //\r\n // It is noteworthy that both server-based data as well as dictionary-based data use executeAllNonProfileTileTasks().\r\n // Since server-data upon arrival is saved into the respective dictionary, it successfully executes all tasks\r\n // for the server-data, as well as dictionary-data when present.\r\n //\r\n // When executeAllNonProfileTileTasks() succesfully executes all tasks,\r\n // it retuns a ProfileInfoView, otherwise it returns ProfileInfo.\r\n //\r\n // we check if the preference was successfully processed to determine what was the return value:\r\n // if preferenceKvAnyArr was created, then it returned profileInfoView, else profileInfo:\r\n // Update to this: this method now sends only MemberViewMgmtModel instead of profileInfo or profileInfoView.\r\n // ----------------------------------------------------------------------------------------------\r\n // ProfileTileTasks are stand-alone and should be called only for ProfileTile-data.\r\n // This method should NOT call/use executeProfileTileTasks(), which renders user's pics only\r\n // via VerticalMenues.\r\n //\r\n // In this method the following tasks are executed:\r\n // profileInfoTasks, profileContentTasks and preferencesTasks.\r\n //\r\n // executeProfileTileTasks() and exexuteasAllNonProfileTileTasks() are\r\n // mutually exclusive/complementary.\r\n // ---------------------------------------------------------------\r\n public executeAllNonProfileTileTasks (pinfo : ProfileInfo) : Observable {\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel) || this.memberViewMgmtModel.sitUserId === 0) {\r\n this.memberViewMgmtModel = new MemberViewMgmtModel();\r\n }\r\n return new Observable((subscriber) => {\r\n let pInfo = pinfo;\r\n let date = new Date();\r\n\r\n // debugger;\r\n \r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n this.profileInfo = pInfo;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n // debugger;\r\n this.executeProfileInfoTasks(this.profileInfo).subscribe(data => {\r\n this.memberViewMgmtModel = data;\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n // debugger;\r\n });\r\n // try to get the preference data from the dictionary only, NOT from the server:\r\n // -----------------------------------------------------------------------------\r\n if (this.dictionaryService.preferenceDictionary.has(this.profileInfo.sitUserId)) {\r\n this.preference = this.dictionaryService.preferenceDictionary.get(this.profileInfo.sitUserId) as Preference;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference) && this.preference.sitUserId > 0) {\r\n // debugger;\r\n this.memberService.setPreference(this.preference);\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(null, this.preference, pInfo, pInfo, null, null, this.preferenceKvAnyArr, null, null);\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n }\r\n }\r\n else {\r\n debugger;\r\n this.preferenceService.getPreference(pInfo.sitUserId).subscribe(result => {\r\n debugger;\r\n this.preference = result;\r\n this.preferenceService.executePreferenceTasks(pInfo.sitUserId).subscribe(data => {\r\n this.preferenceKvAnyArr = data;\r\n });\r\n debugger;\r\n this.memberViewMgmtModel.populateModelData(null, this.preference, pInfo, pInfo, null, null, this.preferenceKvAnyArr, null, null);\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n })\r\n }\r\n // debugger;\r\n // ------------------------------------------------------\r\n this.profileContentService.fetchAndExecuteProfileContentTasks(this.profileInfo).then(result => {\r\n // debugger;\r\n if (result) {\r\n // debugger;\r\n this.memberViewMgmtModel = result;\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n }\r\n else {\r\n // debugger;\r\n console.log(date.getTime() + ': displayUserPicsFromDictionary()=>profileContentService.fetchAndExecuteProfileContentTasks() was rejected.-1');\r\n }\r\n }).catch(error => {\r\n // debugger;\r\n console.log(date.getTime() + ': displayUserPicsFromDictionary()=>profileContentService.fetchAndExecuteProfileContentTasks() returned a null result.');\r\n })\r\n\t\t\t\t // ------------------------------------------------------\r\n //subscriber.next(this.memberViewMgmtModel);\r\n //subscriber.complete();\r\n }\r\n \r\n } \r\n })\r\n } \r\n // ---------------------------------------------------------------\r\n public executeBeforeViewInit (pTile : ProfileTile, sourcePrefix : string) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.pElemId)) {\r\n pTile.pElemId = pTile.sitUserId.toString();\r\n }\r\n\r\n pTile = this.oneTimeProfileTileSetup(pTile);\r\n\r\n // setup for offOn indicator:\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.source)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourcePrefix)\r\n ) { pTile.source = sourcePrefix + pTile.sitUserId; }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage)) {\r\n pTile.isImageRendered = true;\r\n pTile.isTileSetupComplete = true;\r\n // debugger;\r\n }\r\n // else {\r\n // pTile.image = JsRegExpServiceStatic.normalizeImageData(pTile.image); // JsRegExpServiceStatic.normalizeImageData( pTile.image );\r\n // pTile.isImageRendered = true;\r\n // pTile.isTileSetupComplete = true;\r\n // }\r\n // debugger;\r\n return pTile;\r\n }\r\n else { return null; }\r\n }\r\n // ---------------------------------------------------------------\r\n // Objective: asyncly arrived ProfileInfo should create profileInfoView, and\r\n // update ProfileTile's { distance, unit & source }.\r\n // Then it should create arrKvAny and profileContentArrKvAny that\r\n // are used in the view-template.\r\n // ---------------------------------------------------------------\r\n // Note: this method could not be moved to ProfileInfoService.ts\r\n // because it is tightly coupled with ProfileTileService.\r\n //----------------------------------------------------------------\r\n // Note: This method also has a copy in MemberViewMgmtComponent and ProfileInfoService\r\n // It is kept there because from the service, this method does not\r\n // update/display user's profileInfo data.\r\n // ---------------------------------------------------------------\r\n public executeProfileInfoTasks (pinfo : ProfileInfo) : Observable {\r\n let pInfo = pinfo;\r\n return new Observable((subscriber) => {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0) {\r\n\r\n // The folloing method is good and fast:\r\n // -------------------------------------\r\n this.memberViewMgmtModel = this.createProfileInfoViewAndUpdateProfileTile(pInfo, new ProfileTile());\r\n // debugger; \r\n\r\n // EmitterSubjectService.emitProfileInfoView(this.profileInfo);\r\n // debugger;\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // refactored on 2020/12/29, 2021/05/24\r\n // ---------------------------------------------------------------\r\n // Objective: asyncly arrived ProfileTile should create profileInfoView, and\r\n // update it's { distance, unit & source }.\r\n // Then it should create arrKvAny and profileContentArrKvAny that\r\n // are used in the view-template.\r\n //\r\n // ProfileTileTasks are stand-alone and should be called only for ProfileTile-data.\r\n // This method also exexuteasAllTasks(), where\r\n // profileInfoTasks, profileContentTasks and preferencesTasks are executed\r\n // ---------------------------------------------------------------\r\n // NOTE: Creating memberView from ProfileTile while rest of user data arrives is\r\n //\r\n // Note: This method will be used by both MemberViewMgmt and PhotoMgmt components.\r\n // ---------------------------------------------------------------\r\n // Note: This method also has a copy in MemberViewMgmtComponent\r\n // It is kept there because from the service, this method does not\r\n // update/display user's profileTiles related data.\r\n // ---------------------------------------------------------------\r\n // In use now. \r\n // ---------------------------------------------------------------\r\n/*public executeProfileTileTasks (inpTile : ProfileTile) : Observable {*/\r\n public executeProfileTileTasks (inpTile : ProfileTile) : MemberViewMgmtModel | any {\r\n // return new Observable((subscriber) => {\r\n // debugger;\r\n let pTile : any;\r\n let tpTile : any;\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsPhotoMgmt(); \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile) && inpTile.sitUserId > 0) { \r\n this.profileTile.copySourceToDestination(this.profileTile, inpTile)\r\n }\r\n else if (this.isViewMember) {\r\n this.profileTile = EmitterSubjectService.getSelectedProfileTile();\r\n }\r\n else if (this.isPhotoMgmt || this.isMyProfile) {\r\n this.profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n }\r\n else {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n this.profileTile = this.dictionaryService.getProfileTileBySitUserId(this.sitUser.sitUserId);\r\n }\r\n }\r\n // debugger;\r\n // ----------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n\r\n // debugger;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.image) && this.profileTile.image.length > 0) {\r\n // // debugger;\r\n // this.bias.setProfileTileBackgroundImage(this.profileTile);\r\n //}\r\n\r\n pTile = this.executeBeforeViewInit(this.profileTile, 'profileTile-');\r\n }\r\n this.profileTile = this.oneTimeProfileTileSetup(pTile);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n // debugger;\r\n EmitterSubjectService.setProfileTile(this.profileTile);\r\n // debugger;\r\n\r\n this.memberViewMgmtModel = this.createProfileInfoViewAndUpdateProfileTile(new ProfileInfo(), this.profileTile);\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.profileInfo)) {\r\n // debugger;\r\n // this.memberViewMgmtModel = this.executeAllTasks(this.memberViewMgmtModel.profileInfo, this.profileTile);\r\n // }\r\n \r\n\r\n // if KvContent does not show, uncomment these lines:\r\n // --------------------------------------------------\r\n // this.executeProfileInfoTasks(this.profileInfoView).then(data => {\r\n // this.profileInfo = data;\r\n \r\n // EmitterSubjectService.emitProfileInfo(this.profileInfo); // will be onbtained by memberService.getDictionaryMemberProfile()\r\n // this.profileInfoView = this.profileInfo;\r\n\r\n // // Note: this may be redundant:\r\n // // ----------------------------\r\n // this.kvAnyArr = this.profileSupportService.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n // this.profileContentKvAnyArr = ArrayServiceStatic.mergeArraysUniq(this.profileContentKvAnyArr, this.kvAnyArr as KvAny[]);\r\n // // debugger;\r\n // EmitterSubjectService.emitProfileContentKvAnyArr(this.profileContentKvAnyArr);\r\n // // ----------------------------------\r\n // this.profileInfo = CopyServiceStatic.copyFromProfileTileToProfileInfo(this.profileTile);\r\n\r\n\r\n // // debugger;\r\n // this.memberViewMgmtModel = this.executeAllTasks(this.memberViewMgmtModel.profileInfo, this.profileTile);\r\n // })\r\n \r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.primaryImage) && this.profileTile.primaryImage.length > 0) {\r\n // debugger;\r\n this.bias.setProfileTileBackgroundImage(this.profileTile);\r\n }\r\n\r\n // debugger;\r\n EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel); // will also set the model\r\n //subscriber.next(this.memberViewMgmtModel);\r\n //subscriber.complete();\r\n return this.memberViewMgmtModel;\r\n //})\r\n }\r\n\r\n // ---------------------------------------------------------------------------------------------\r\n // Note: the same method exists in AbstractPagerVPhotoNavService.\r\n // ---------------------------------------------------------------------------------------------- //public executeProfileTileKvPhotoAndGlyphMenuTasks2 (inpTile : ProfileTile) : Observable {\r\n // return new Observable((subscriber) => {\r\n // // ------------------------------------------------------------------\r\n // // Note: all display of PhotoNav and GlyphArrs should go through\r\n // // pagerVKvPhotoNavComponent. They should not directly be\r\n // // implemented from anywhere else. Hence emit the following:\r\n // // EmitProfileImages();\r\n // // ------------------------------------------------------------------\r\n // // debugger;\r\n // this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n // this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n // this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto) &&\r\n // (\r\n // (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.image) && inpTile.kvPhoto.image.length > 0)\r\n // || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.value) && inpTile.kvPhoto.value.length > 0)\r\n // )\r\n // ) {\r\n // this.profileTile = inpTile;\r\n // let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr([ this.profileTile.kvPhoto ], 'pagerVKvPhotoNav-');\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n // this.profileTile.kvPhoto = tpKvPhotoArr[ 0 ];\r\n // }\r\n // // debugger;\r\n // // EmitterSubjectService.emitProfileImages([ this.profileTile.kvPhoto ]);\r\n\r\n // // debugger;\r\n // if (this.isViewMember) {\r\n // // debugger;\r\n // let sitUser : SitUser = EmitterSubjectService.getSitUserModel();\r\n // if (sitUser.sitUserId === this.profileTile.sitUserId) {\r\n // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.displayViewMemberGlyphMenu(sitUser.sitUserId); // will display photo primary/private/public glyphs\r\n // // debugger;\r\n // //this.pagerPhotoMgmtService.setKvPhotoArr([ this.profileTile.kvPhoto ]);\r\n // //this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.getPagerVKvPhotoForCurrentPage(this.profileTile.kvPhoto );\r\n // //this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n\r\n // this.pagerVKvPhotoNav = this.abstractPagerVPhotoNavService.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profileTile.kvPhoto, [ this.profileTile.kvPhoto ]);\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // // debugger;\r\n // this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n // }\r\n // }\r\n // }\r\n // else if (this.isMyProfile) {\r\n // debugger;\r\n // // this.pagerVKvPhotoNav = this.photoMgmtService.setPageOfPhotoNav(1, [ this.profileTile.kvPhoto ]);\r\n // // this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.getPagerVKvPhotoForCurrentPage(this.profileTile.kvPhoto);\r\n // this.pagerVKvPhotoNav = this.abstractPagerVPhotoNavServicee.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profileTile.kvPhoto, [ this.profileTile.kvPhoto ]);\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n // && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n // // debugger;\r\n // this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n // }\r\n // }\r\n // else if (this.isPhotoMgmt) {\r\n // // debugger;\r\n // this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.profileTile.kvPhoto); // will display photo primary/private/public glyphs\r\n // this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n // }\r\n // subscriber.next(this.pagerVKvPhotoNav);\r\n // }\r\n // })\r\n //}\r\n // ---------------------------------------------------------------\r\n //public executeProfileTileOnInit2 () : void {\r\n // // ----------------------------------------------------------------\r\n // // Begin: avatar's ProfileTile case:\r\n // // ----------------------------------------------------------------\r\n // // If ProfileTile is available (since emitted and saved on emitter),\r\n // // display it's information first:\r\n // // tested on 20220525, 20220610\r\n // // ----------------------------------------------------------------\r\n // // debugger;\r\n // this.profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n // // debugger;\r\n\r\n // // experimental:\r\n // // this.ngAfterViewInit();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n // // debugger;\r\n // this.profileTile = this.profileTile.copy(this.profileTile);\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.image)\r\n // && this.profileTile.image.length > 0) {\r\n // // debugger;\r\n // this.bias.setProfileTileBackgroundImage(this.profileTile);\r\n // }\r\n // // debugger;\r\n // this.profileInfo = this.profileTile.copyToProfileInfo();\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.image)\r\n // && this.profileInfo.image.length === 0\r\n // && this.profileTile.image.length > 0) {\r\n // this.profileInfo.image = this.profileTile.image;\r\n // // debugger;\r\n // }\r\n\r\n // // debugger; \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // // debugger;\r\n // this.executeProfileTileTasks(this.profileTile).then(result => {\r\n // // debugger;\r\n // this.memberViewMgmtModel = result;\r\n // // this.extractDataFromMemberViewMgmtModel();\r\n\r\n // // emit the profileImages here and set the glyphMenu here:\r\n // // -------------------------------------------------------\r\n // this.executeProfileTileKvPhotoAndGlyphMenuTasks(this.profileTile).then(data => {\r\n // this.pagerVKvPhotoNav = data;\r\n // this.pagerVKvPhotoNavService.executePagedItemsAndGlyphMenuTasks(this.pagerVKvPhotoNav);\r\n // // debugger;\r\n // // -----------------------------------------------------------\r\n // // NOTE: the following displays the PhotoMgmtGlyphiconMenu:\r\n // // -----------------------------------------------------------\r\n // // debugger;\r\n // this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n // EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n // // this.ngAfterViewInit();\r\n // })\r\n // // this.ngAfterViewInit();\r\n // });\r\n // }\r\n // // this.ngAfterViewInit();\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n public executeProfileTileOnInit (sitUserId : number) : Promise {\r\n // ----------------------------------------------------------------\r\n // Begin: avatar's ProfileTile case:\r\n // ----------------------------------------------------------------\r\n // If ProfileTile is available (since emitted and saved on emitter),\r\n // display it's information first:\r\n // tested on 20220525, 20220610\r\n // ----------------------------------------------------------------\r\n debugger;\r\n this.profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n return new Promise((resolve, reject) => {\r\n // experimental:\r\n // this.ngAfterViewInit();\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.primaryImage)\r\n && this.profileTile.primaryImage.length > 0) {\r\n debugger;\r\n // EmitterSubjectService.emitDisplayBgiOutsideAngular(this.profileTile.image);\r\n this.bias.setProfileTileBackgroundImage(this.profileTile);\r\n }\r\n\r\n this.executeProfileTileTasks(this.profileTile).subscribe(result => {\r\n debugger;\r\n if (result) {\r\n this.memberViewMgmtModel = result;\r\n EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // this.extractDataFromMemberViewMgmtModel();\r\n } \r\n });\r\n\r\n // debugger;\r\n this.profileInfo = new ProfileTile().copyToProfileInfo(this.profileTile);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.image)\r\n && this.profileInfo.image.length === 0\r\n && this.profileTile.primaryImage.length > 0) {\r\n this.profileInfo.image = this.profileTile.primaryImage;\r\n // debugger;\r\n }\r\n\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // debugger;\r\n // this.executeAllNonProfileTileTasks(this.profileInfo).then(result => {\r\n // this.memberViewMgmtModel = result;\r\n // debugger;\r\n // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // });\r\n debugger;\r\n\r\n this.memberViewMgmtModel = this.createProfileInfoViewAndUpdateProfileTile(this.profileInfo, this.profileTile);\r\n debugger;\r\n EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n\r\n\r\n // emit the profileImages here and set the glyphMenu here:\r\n // -------------------------------------------------------\r\n this.abstractPagerVPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks(this.profileTile).subscribe(data => {\r\n if (data) {\r\n this.pagerVKvPhotoNav = data as PagerPhotoMgmt;\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n }\r\n else {\r\n reject('executeProfileTileOnInit().pagerVKvPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks() failed;');\r\n }\r\n\r\n // todo: check if it is needed?\r\n // ----------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // this.pagerVKvPhotoNavService.executePagedItemsAndGlyphMenuTasks(this.pagerVKvPhotoNav).then(data1 => {\r\n // this.pagerVKvPhotoNav = data1 as PagerPhotoMgmt;\r\n // debugger;\r\n // });\r\n debugger;\r\n this.abstractPagerVPhotoNavService.executePagerVKvPhotoNavKvPhotoTasks(this.pagerVKvPhotoNav).then(data1 => {\r\n debugger;\r\n if (data1) {\r\n debugger;\r\n resolve(data1);\r\n }\r\n else {\r\n reject('pagerVKvPhotoNavService.executePagerVKvPhotoNavKvPhotoTasks() failed;');\r\n }\r\n });\r\n }\r\n else {\r\n debugger;\r\n resolve(data);\r\n }\r\n // debugger;\r\n // -----------------------------------------------------------\r\n // NOTE: the following displays the PhotoMgmtGlyphiconMenu:\r\n // -----------------------------------------------------------\r\n // debugger;\r\n //this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n //EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n //this.ngAfterViewInit();\r\n })\r\n // this.ngAfterViewInit();\r\n }\r\n else {\r\n reject('executeProfileTileOnInit().profileInfo is null or undefined');\r\n }\r\n // this.ngAfterViewInit();\r\n }\r\n else {\r\n reject(console.log('Error occured in profileTileService.executeProfileTileOnInit (sitUserId : ' + sitUserId ));\r\n }\r\n }).catch((error) => {\r\n console.log('Error occured in profileTileService.executeProfileTileOnInit (sitUserId : ' + sitUserId + '); error: ' + error);\r\n });\r\n }\r\n // --------------------------------------------------------------------------\r\n // Note: uncomment if view does not update properly for content & preference:\r\n // --------------------------------------------------------------------------\r\n // NOT in user now, but DO NOT DELETE THIS.\r\n // --------------------------------------------------------------------------\r\n //public fetchAndExecuteAllTasks (pInfo : ProfileInfo) : ProfileInfo {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n // this.profileInfo = pInfo;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n // // debugger;\r\n // this.executeProfileInfoTasks(this.profileInfo).subscribe(data => {\r\n // this.profileInfo = data;\r\n // });\r\n // // debugger;\r\n // this.profileContentService.fetchAndExecuteProfileContentTasks(this.profileInfo).then(data => {\r\n // this.profileContentKvAnyArr = data;\r\n // // debugger;\r\n // });\r\n // this.preferenceService.executePreferenceTasks(this.profileInfo.sitUserId).subscribe(data => {\r\n // // debugger;\r\n // this.preference = data;\r\n // })\r\n // }\r\n // }\r\n // return pInfo;\r\n //}\r\n // ---------------------------------------------------------------\r\n //public setIsObjectStoreNameFoundInTables (value : boolean) : void {\r\n // this.isProfileTileDictionaryCreatedFromIndexDb = value;\r\n //}\r\n // ---------------------------------------------------------------\r\n //public getIsObjectStoreNameFoundInTables () : boolean {\r\n // return this.isProfileTileDictionaryCreatedFromIndexDb;\r\n //}\r\n // ---------------------------------------------------------------\r\n public getIncompleteTiles () : any[] {\r\n return this.incompleteTilesArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public processDistanceUnitForProfileTileAndProfileInfoView (distanceUnit : Unit) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.distance)\r\n && distanceUnit.distance >= 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.unit)) {\r\n let result = this.heartbeatService.processDistanceUnit(distanceUnit);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)) {\r\n this.profileInfoView.distance = distanceUnit.distance.toFixed(2);\r\n this.profileInfoView.unit = distanceUnit.unit;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n this.profileTile.distance = distanceUnit.distance;\r\n this.profileTile.unit = distanceUnit.unit;\r\n this.profileTile.distanceStr = distanceUnit.distance.toFixed(2) + ' ' + distanceUnit.unit;\r\n this.profileTile.distanceUnit = distanceUnit;\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public setMessageTimer () : void {\r\n let intervalMsgTime = setTimeout(() => {\r\n this.message = '';\r\n clearInterval(intervalMsgTime);\r\n }, 1000);\r\n clearTimeout(intervalMsgTime);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setupKvPhotoModel (kvp : KvPhoto) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n kvp.value = kvp.image;\r\n }\r\n else if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n kvp.image = kvp.value;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.pic)) {\r\n kvp.pic = kvp.image;\r\n }\r\n\r\n if (kvp.isPrimary) {\r\n kvp.key = kvp.glyphName = \"Primary\";\r\n kvp.privacy = \"Public\";\r\n }\r\n }\r\n return kvp;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public setupProfileTileImageAndDisplay (inpTile : ProfileTile) : Observable {\r\n return new Observable((subscriber) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n // Note: below code is needed to display the VerticalMenues to be displayed\r\n // VerticalMenues are rendered by appComponent's profileImagesEmitter.\r\n // ------------------------------------------------------------------\r\n // ======================================================\r\n // Begin of VerticalMemActGlyphsMenus display: required!\r\n // ======================================================\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto) &&\r\n (\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.image) && inpTile.kvPhoto.image.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.pic) && inpTile.kvPhoto.pic.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.value) && inpTile.kvPhoto.value.length > 0)\r\n )\r\n ) {\r\n debugger;\r\n\r\n //let tKvPhoto = new KvPhoto();\r\n //tKvPhoto = tKvPhoto.copy(inpTile.kvPhoto);\r\n //tKvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(tKvPhoto.value);\r\n\r\n // Note: this is the emitter that displays the All VerticalMenus:\r\n // --------------------------------------------------------------\r\n EmitterSubjectService.emitProfileImages([ inpTile.kvPhoto ]);\r\n debugger;\r\n if (inpTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(inpTile.kvPhoto);\r\n EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n subscriber.next(this.kvMemActGlyphArrForPhotoMgmt);\r\n subscriber.complete();\r\n }\r\n else {\r\n /*this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(inpTile.sitUserId);*/\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(inpTile.sitUserId); \r\n EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n subscriber.next(this.kvMemActGlyphArrForPhotoMgmt);\r\n subscriber.complete();\r\n } \r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This should be called after all tiles are rendered\r\n // ---------------------------------------------------------------\r\n //public setupProfileTilesArrHeartbeats (pTileArr : ProfileTile[]) : void {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTileArr) && pTileArr.length > 0) {\r\n // pTileArr.map(e => {\r\n // e = this.setupProfileTileHeartbeat(e);\r\n // });\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n // This method's heartbeatTime is considered as initHearbeat\r\n // ---------------------------------------------------------------\r\n //public setupProfileTileHeartbeat (pTile : ProfileTile) : ProfileTile {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n // this.heartbeatService.getHeartbeatObservable(pTile.sitUserId, 'MembersComponent.setupProfileTileHeartbeat').subscribe(hb => {\r\n // if (hb.sitUserId === pTile.sitUserId) {\r\n // pTile.heartbeat = hb;\r\n // pTile.heartbeat.heartbeatTime = pTile.heartbeat.prevHeartbeat = hb.heartbeatTime;\r\n // }\r\n // });\r\n // }\r\n // return pTile;\r\n //}\r\n // ---------------------------------------------------------------\r\n public isProfileTileValid (pTile : ProfileTile) : boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.gender) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.dob) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.image) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.profileName) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.sexuality) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.sitUserId) && pTile.sitUserId > 0\r\n ) {\r\n return true;\r\n }\r\n else {\r\n debugger;\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public setupMissingProfileTileProperties (pTile : ProfileTile) : ProfileTile {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.profileName)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.sitUserKey)) {\r\n // debugger;\r\n pTile.profileName = DateStringServiceStatic.getProfileNameFromSitUserKey(pTile.sitUserKey);\r\n }\r\n }\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage) || pTile.primaryImage.length < 20) {\r\n pTile.primaryImage = \"url('/photos/avatar2.png')\";\r\n } \r\n return pTile;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public isProfileTileValidForOffOn (pTile : ProfileTile) : boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn.away) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.sitUserId) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.source) &&\r\n pTile.sitUserId > 0\r\n ) {\r\n return true;\r\n }\r\n else return false;\r\n }\r\n else return false;\r\n }\r\n // ---------------------------------------------------------------\r\n public isProfileTileArrayComplete (profileTiles : ProfileTile[]): boolean {\r\n let isTilesArrComplete = true;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileTiles) && profileTiles.length > 0) {\r\n profileTiles.map(e => {\r\n if ( !this.isProfileTileValid( e ) )\r\n {\r\n isTilesArrComplete = false;\r\n }\r\n // isTilesArrComplete = false; // TODO: restore\r\n });\r\n }\r\n return isTilesArrComplete;\r\n }\r\n // ---------------------------------------------------------------\r\n public periodicProfileTileSetup (pTile : ProfileTile) : EmitOffOnResult {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n if (pTile.isTileSetupComplete) {\r\n /*\r\n * Note : this heartbeat-related segment is for dev-&-testing-purpose only!\r\n * TODO : get the heatbeat from the server. This is for dev-&-testing-purpose only.\r\n */\r\n\r\n let thb = DateStringServiceStatic.getTicks(new Date());\r\n\r\n if (thb) {\r\n thb = thb - 10;\r\n pTile.heartbeat.heartbeatTime = thb;\r\n }\r\n /*\r\n * debugger;\r\n * setup off-on-color-indicator\r\n * this.offOnResult = this.offOnService.setOffOnStatus(pTile);\r\n */\r\n\r\n return this.offOnResult;\r\n }\r\n }\r\n return new EmitOffOnResult();\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This is the one-stop-shop for a complete ProfileTile ready to be rendered\r\n // with it's image to be used as a background-image.\r\n //\r\n // To use the image as src, transform the image as follows:\r\n // image = JsRegExpServiceStatic.normalizeImageData(image);\r\n // ---------------------------------------------------------------\r\n public prepareProfileTile (pTile : ProfileTile) : any {\r\n let outTile : ProfileTile;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n outTile = this.executeBeforeViewInit(pTile, 'profileTile-');\r\n outTile = this.checkAndSetProfileTileImage(outTile); \r\n }\r\n else {\r\n outTile = pTile;\r\n }\r\n return outTile;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Note: This is not called by any other method or component\r\n // ---------------------------------------------------------------\r\n public prepareProfileTiles (dTiles : ProfileTile[]) : any {\r\n let tProfileTilesArr : ProfileTile[] = []; //CopyServiceStatic.deepCloneProfileTileArray( dTiles );\r\n let i = 0;\r\n let item : ProfileTile;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dTiles) && dTiles.length > 0) {\r\n for (let tile of dTiles) {\r\n item = this.prepareProfileTile(tile);\r\n tProfileTilesArr.push(item);\r\n }\r\n // debugger;\r\n tProfileTilesArr = ArrayServiceStatic.sortProfileTileArrByDistance(tProfileTilesArr);\r\n EmitterSubjectService.setProfileTilesArr(tProfileTilesArr);\r\n // debugger;\r\n return tProfileTilesArr;\r\n }\r\n else return dTiles;\r\n }\r\n // ---------------------------------------------------------------\r\n public processDistanceUnitForProfileTile (distanceUnit : Unit) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.distance)\r\n && distanceUnit.distance >= 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.unit)) {\r\n let result = this.heartbeatService.processDistanceUnit(distanceUnit);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n this.profileTile.distance = distanceUnit.distance;\r\n this.profileTile.unit = distanceUnit.unit;\r\n this.profileTile.distanceStr = distanceUnit.distance.toFixed(2) + ' ' + distanceUnit.unit;\r\n this.profileTile.distanceUnit = distanceUnit;\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n }\r\n return this.profileTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public processProfileTileForHeartbeat (hb : Heartbeat) : ProfileTile {\r\n let distanceUnit = new Unit();\r\n // if Heartbeat's distance is not already calculated:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distance)) {\r\n if (hb.distance === 0) {\r\n // compute distance and unit:\r\n distanceUnit = this.heartbeatService.calculateDistance(hb, this.loginSuccess.heartbeat, true); // (dest, origin, isKm)\r\n // debugger;\r\n\r\n let tProfileTile = this.processDistanceUnitForProfileTile(distanceUnit) as ProfileTile;\r\n this.profileTile = CopyServiceStatic.copyProfileTileIfExists(this.profileTile, tProfileTile);\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n this.profileTile.distance = this.profileInfoView.distance;\r\n this.profileTile.distanceStr = this.profileInfoView.distance + ' ' + this.profileInfoView.unit;\r\n this.profileTile.heartbeat = hb;\r\n this.profileTile.distanceUnit = distanceUnit;\r\n // debugger;\r\n }\r\n EmitterSubjectService.setProfileTile(this.profileTile);\r\n return this.profileTile;\r\n }\r\n // ---------------------------------------------------------------\r\n /*\r\n * ---------------------------------------------------------------\r\n * ProfileTileSetupManager\r\n * ---------------------------------------------------------------\r\n */\r\n public oneTimeProfileTileSetup (pTile : ProfileTile) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n /*\r\n * debugger;\r\n * this is an extra check of pElemId\r\n */\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.pElemId)) {\r\n pTile.pElemId = pTile.sitUserId.toString();\r\n }\r\n\r\n // distance unit\r\n pTile.unit = this.determineUnit(pTile);\r\n // TODO : distance and isOnline provided by the server. If server does not provide, compute here\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn)) { \r\n // set the offOnArr value for the child-component\r\n this.offOnArr = pTile.offOn.offOnArr;\r\n }\r\n\r\n // Age:\r\n // TODO: does not work. Need to fix it!\r\n // ------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.dob)) {\r\n pTile.age = StringServiceStatic.ageFromDobTicks(parseFloat(pTile.dob));\r\n }\r\n\r\n\r\n // if the profileTile.image.length < 32, these are default images\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage) && pTile.primaryImage.length < 32 && pTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n EmitterSubjectService.messageEmitter.next('You do not have a primary profile picture. Please add a picture to your profile.');\r\n }\r\n\r\n //should trigger changedetection in offOnComponent.ts\r\n // this.profileTile.copy(pTile); \r\n // debugger; \r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public setupProfileTileElement (pTile : ProfileTile, pTileElem ?: ElementRef) : ProfileTile {\r\n // debugger;\r\n let id = '';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTileElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTileElem?.nativeElement.id)) {\r\n id = pTileElem?.nativeElement.id;\r\n let sitUserid = parseInt(id.split('-')[ 1 ]);\r\n // debugger;\r\n if (id.indexOf('pTileSource') !== -1 && sitUserid === pTile.sitUserId && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTileElem)) {\r\n pTile.pTileElement = pTileElem as ElementRef; // this.getHtmlElementById(this.offOn.awayId);\r\n //EmitterSubjectService.setOffOnElement(childElem as ElementRef, 'spanAway');\r\n debugger;\r\n }\r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: returns a sorted array of profileTiles\r\n // TODO: test\r\n // ---------------------------------------------------------------\r\n public uniquelyAddInProfileTileArray (arr : ProfileTile[], pTile : ProfileTile) : ProfileTile[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr)) {\r\n if (ArrayServiceStatic.getIndexOfTileInArr(arr, pTile) < 0) {\r\n arr.push(pTile);\r\n }\r\n // debugger;\r\n }\r\n return arr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note : This method will get 25 ProfileTileIds at a time\r\n // Note: This is calles by MemberTilesComponent\r\n // TODO: cannot user FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n // ---------------------------------------------------------------\r\n public getBatchOfProfileTileIds (beginIndex : number) : Observable {\r\n debugger;\r\n return new Observable((subscriber) => {\r\n if (beginIndex > -1) {\r\n const bnComm : Communication = new Communication();\r\n\r\n bnComm.beginIndex = beginIndex;\r\n bnComm.sitUserId = 0;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n\r\n // debugger;\r\n if (this.boxNonceEntity) {\r\n this.httpService.postObservable('/api//Member/GetBatchOfProfileTileIds', JSON.stringify({\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }),\r\n 'json2text',\r\n ).subscribe((result) => {\r\n debugger;\r\n let batchOfTileIds = result as number[];\r\n this.dictionaryService.updateDictionary(batchOfTileIds, 'profileTileId', this.loginSuccess.signedInUserId);\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.profileTileIdDictionary, 'profileTileId', this.loginSuccess.signedInUserId);\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n subscriber.next(batchOfTileIds);\r\n subscriber.complete();\r\n // debugger;\r\n }, (error) => {\r\n // debugger;\r\n this.message = 'Error occured in GetBatchOfProfileTileIds();\\n Error-msg : ' + error.message;\r\n console.log(this.message);\r\n EmitterSubjectService.emitMyErrorLog(this.message);\r\n // debugger;\r\n console.log(this.message);\r\n });\r\n } \r\n } \r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Deprecated: It is in ProfileTileService\r\n // Note: This method is in use\r\n // Note: This method is calle by MembersComponent & MemberTilesComponent\r\n // TODO: cannot use FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n // --------------------------------------------------------------\r\n //public getBatchOfProfileTiles (beginIndex : number) : Observable {\r\n // debugger;\r\n // let anyTile : any;\r\n // let tpTile : ProfileTile;\r\n // let tpTiles : ProfileTile[] = [];\r\n // let tIncompleteTiles : ProfileTile[] = [];\r\n // return Observable.create((observer : any) => {\r\n // // debugger;\r\n // if (beginIndex > -1) {\r\n // const bnComm : Communication = new Communication();\r\n\r\n // bnComm.beginIndex = beginIndex;\r\n // bnComm.sitUserId = 0;\r\n // bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // // debugger;\r\n // this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n\r\n // // debugger;\r\n // if (this.boxNonceEntity) {\r\n // this.httpService.postPromise('/api/Member/GetBatchOfProfileTiles', {\r\n // box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n // nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n // },\r\n // 'json',\r\n // ).then((result) => {\r\n // // debugger;\r\n // let boxNonceArr : BoxNonce[] = JSON.parse(result);\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonceArr) && boxNonceArr.length > 0) {\r\n // boxNonceArr.map(e => {\r\n // // debugger;\r\n // this.boxNonceEntity = new BoxNonceEntity();\r\n // this.boxNonceEntity.box = e.box;\r\n // this.boxNonceEntity.nonce = e.nonce;\r\n // this.boxNonceEntity.date = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.date) ? e.date.toString() : DateStringServiceStatic.getTicks(new Date()).toString();\r\n // this.boxNonceEntity.id = e.sitUserId;\r\n // this.boxNonceEntity.key = e.sitUserId.toString();\r\n // this.boxNonceEntity.entityName = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.entityName) ? e.entityName : 'ProfileTile';\r\n // this.boxNonceEntity.sitUserId = e.sitUserId;\r\n // // debugger;\r\n\r\n // anyTile = SlakezSaltServiceStatic.boxUnsalt(this.boxNonceEntity);\r\n // // debugger;\r\n // tpTile = JSON.parse(anyTile) as ProfileTile;\r\n // // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile.id)) tpTile.id = this.boxNonceEntity.id.toString();\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile.date)) tpTile.date = this.boxNonceEntity.date.toString();\r\n // if (tpTile.sitUserId == 0) tpTile.sitUserId = this.boxNonceEntity.sitUserId;\r\n\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile)) {\r\n // // debugger;\r\n\r\n // tpTile = this.prepareProfileTile(tpTile);\r\n // if (this.isProfileTileValid(tpTile)) {\r\n // tpTile.isTileSetupComplete = true;\r\n // this.dictionaryService.updateDictionary(tpTile, 'ProfileTile', tpTile.sitUserId);\r\n // // debugger;\r\n // observer.next(this.dictionaryService.profileTileDictionary.values());\r\n // }\r\n // else {\r\n // tIncompleteTiles.push(tpTile);\r\n // // debugger;\r\n // }\r\n // }\r\n // });\r\n // }\r\n // // debugger;\r\n // }, (error) => {\r\n // // debugger;\r\n // this.message = 'Error occured in GetBatchOfProfileTiles();\\n Error-msg : ' + error.message;\r\n // console.log(this.message);\r\n // // EmitterSubjectService.emitMyErrorLog(this.message);\r\n // // debugger;\r\n // });\r\n // }\r\n // }\r\n // else return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n // });\r\n //}\r\n // --------------------------------------------------------------\r\n // Note: Deprecated: It is in ProfileTileService\r\n // Note: This method is in use\r\n // Note: This method is calle by MembersComponent, MemberTilesComponent & MembersIndividuallyComponent\r\n // --------------------------------------------------------------\r\n //public getProfileTile (sitUserId : number) : Observable {\r\n \r\n // return new Observable((subscriber) => {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // // debugger;\r\n // let tpTile : ProfileTile = new ProfileTile();\r\n\r\n // if (sitUserId > 0 && this.loginSuccess.signedInUserId > 0) {\r\n // const bnComm : Communication = new Communication();\r\n // // debugger;\r\n // bnComm.sitUserId = sitUserId;\r\n // bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(bnComm));\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n \r\n // // debugger;\r\n // this.httpService.post('/api/Member/GetProfileTile',\r\n // {\r\n // box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n // nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n // },\r\n // 'json',\r\n // ).subscribe((result) => {\r\n // // debugger;\r\n // let cipherbox = result as BoxNonceEntity;\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.box) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.nonce)) {\r\n // this.boxNonceEntity = new BoxNonceEntity();\r\n // this.boxNonceEntity.box = cipherbox.box;\r\n // this.boxNonceEntity.nonce = cipherbox.nonce;\r\n\r\n // let tempTile : ProfileTile = new ProfileTile();\r\n // /*\r\n // * do not directly assing to profileTile!! capture it in a let first\r\n // */\r\n // // debugger;\r\n // const unboxedTile = SlakezSaltServiceStatic.boxUnsalt(cipherbox);\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unboxedTile)) {\r\n // // debugger;\r\n // tempTile = JSON.parse(unboxedTile) as ProfileTile;\r\n // }\r\n // // debugger;\r\n // // if key 'sitUserId' exists, the unslating produced data\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempTile)) {\r\n // // tempTile = JSON.parse(tempTile); // convert string to model\r\n // // }\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempTile) && tempTile.sitUserId > 0) {\r\n // // debugger;\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempTile.sitUserKey) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.sitUserKey)) {\r\n // tempTile.sitUserKey = result.sitUserKey;\r\n // // debugger;\r\n // }\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempTile.profileName) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.profileName)) {\r\n // tempTile.profileName = result.profileName;\r\n // // debugger;\r\n // } \r\n // tpTile = tpTile.copySourceToDestination(tpTile, tempTile);\r\n // // debugger;\r\n // tpTile = this.prepareProfileTile(tpTile);\r\n\r\n // // debugger;\r\n // // -----------------------------------------------------------------------------\r\n // // IMPORTANT: DO NOT check tile validity,\r\n // // as anyone providing an incomplete tile will break the application!\r\n // // -----------------------------------------------------------------------------\r\n // // if (!this.isProfileTileValid(tpTile)) {\r\n // // debugger;\r\n // // let index = ArrayServiceStatic.getIndexOfTileInArr(this.incompleteTilesArr, tpTile);\r\n // // if (index === -1) {\r\n // // this.incompleteTilesArr.push(tpTile); // will set image to avatar2\r\n // // }\r\n // // this.message = 'getProfileTile(sitUserId: ' + sitUserId + ') returned a null or undefined value.';\r\n // // console.log(this.message);\r\n // // reject(this.message);\r\n // // /*resolve(this.incompleteTilesArr.length); //if the tile is incomplete, we send the length of incomplete tiles array*/\r\n // // // reject(this.incompleteTilesArr); //if the tile is incomplete, we send the length of incomplete tiles array\r\n // // }\r\n // // -----------------------------------------------------------------------------\r\n\r\n // tpTile.pElemId = 'memberTileComponentId-' + tpTile.sitUserId;\r\n // // debugger;\r\n // this.dictionaryService.updateDictionary(tpTile, 'ProfileTile', tpTile.sitUserId);\r\n \r\n // // debugger;\r\n // subscriber.next(tpTile); \r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = 'tempTile in profileTileService.getProfileTiley() after unsalting was null or undefined for sitUserId: ' + sitUserId;\r\n // console.log(this.message);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = ' profileTileService.getProfileTile(sitUserId: ' + sitUserId + ') cipherbox/cipherbox.box/cipherbox.nonce is null or undefined.';\r\n // console.log(this.message);\r\n // }\r\n // })\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = 'boxNonceEntity in profileTileService.getProfileTile() was null or undefined for sitUserId: ' + sitUserId; // tempTile being null message\r\n // console.log(this.message);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = 'sitUserId in profileTileService.getProfileTileIndividually() was null or undefined; sitUserId: ' + sitUserId;\r\n // console.log(this.message);\r\n // }\r\n // })\r\n //}\r\n // ----------------------------------------------------------------------------------------\r\n // This method is not in use:\r\n // ----------------------------------------------------------------------------------------\r\n //getProfileTileIndividuallyFromServerInBackground (batchOfIds : number[]) : Observable | any{\r\n \r\n // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(batchOfIds) && batchOfIds.length > 0) {\r\n\r\n // for (var i = 0; i < batchOfIds.length; i++) {\r\n // // NOTE: BACKGROUND-PROCESSING:\r\n // debugger;\r\n // this.rdm = new RemoteDataModel();\r\n // this.rdm.data = batchOfIds[ i ];\r\n // this.rdm.methodName = 'getProfileTile';\r\n // this.rdm.id = batchOfIds[ i ];\r\n // EmitterSubjectService.emitRunBackgroundProcessMethod(this.rdm);\r\n // return true;\r\n // }\r\n // }\r\n //}\r\n // ----------------------------------------------------------------------------------------\r\n // This method is not in use:\r\n // ----------------------------------------------------------------------------------------\r\n //getProfileTileIndividuallyFromServer (batchOfIds : number[]) : Observable {\r\n\r\n // return new Observable((subscriber) => {\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(batchOfIds) && batchOfIds.length > 0) {\r\n\r\n // for (var i = 0; i < batchOfIds.length; i++) {\r\n // this.getProfileTile(batchOfIds[ i ]).subscribe(data => {\r\n // debugger;\r\n\r\n // // get all tiles from the disctionary and chnage-detection will display them:\r\n // // --------------------------------------------------------------------------\r\n // this.profileTilesArr = this.dictionaryService.profileTileDictionary.values();\r\n\r\n // // Note: since the tiles are saved in dictionary,\r\n // // we save the dictionary in indexedDb.\r\n // // -----------------------------------------------\r\n // // Note: This scheme of saving the whole dictionary runs into the problem of maximum-size of the data allowed to be stored in indexedDb.\r\n // // For large dictionaries, there has to be a separate shceme where each entry of the dictionary will be saved and will be retrieved accordingly\r\n // // ---------------------------------------------------------------------------------------------------------------------------------------------------\r\n // // get the variable in service to false for a singleton use:\r\n // this.isSingletonUsed = EmitterSubjectService.getIsObjectStoreNameFoundInTables();\r\n // if (this.batchOfIds.length === this.profileTilesArr.length && !this.isSingletonUsed) {\r\n // debugger;\r\n // // set the singleton use of this profileTileDictionary creation to true:\r\n // this.isSingletonUsed = true;\r\n // EmitterSubjectService.setIsObjectStoreNameFoundInTables(true);\r\n // // debugger;\r\n // this.dbDexieToDictionaryService\r\n // //.saveProfileTileDictionaryToDbDexie(\r\n // .saveDictionaryToDbDexie(\r\n // this.dictionaryService.profileTileDictionary, 'profileTile', this.loginSuccess.signedInUserId);\r\n\r\n // debugger;\r\n // subscriber.next(this.profileTilesArr); \r\n // }\r\n // else {\r\n // debugger;\r\n // // this.profileTilesArr = ArraySupportServiceStatic.mergeArraysUniq(this.profileTilesArr, [ data ]);\r\n // subscriber.next(this.profileTilesArr);\r\n\t\t//\t\t\t\t}\r\n // })\r\n // }\r\n // debugger;\r\n // this.profileTilesArr = this.dictionaryService.profileTileDictionary.values();\r\n // subscriber.next(this.profileTilesArr);\r\n // this.timer = setTimeout(() => {\r\n // subscriber.complete();\r\n // clearTimeout(this.timer);\r\n // }, 1000);\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.message = 'batchOfIds.length === 0 or null or undefined in getProfileTileIndividuallyFromServer()';\r\n // console.log(this.message);\r\n // }\r\n // })\r\n //}\r\n // --------------------------------------------------------------\r\n // getProfileTile ( sitUserId : number ) : Observable\r\n // {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // let tProfileTile : any;\r\n // // debugger;\r\n // return Observable.create( ( observer ) =>\r\n // {\r\n // if ( sitUserId > 0 && this.loginSuccess.signedInUserId > 0 )\r\n // {\r\n // this.sitUser.sitUserId = sitUserId;\r\n // // this.isOnLine &&\r\n // const bnComm : Communication = new Communication();\r\n\r\n // bnComm.sitUserId = sitUserId;\r\n // bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // this.boxNonceEntity = this.salt( bnComm );\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity ) )\r\n // {\r\n // // debugger;\r\n // this.httpService.post( '/api/Member/GetProfileTile',\r\n // {\r\n // box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n // nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n // },\r\n // 'json'\r\n // ).subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n // {\r\n // this.boxNonceEntity = result;\r\n // let tempTile;\r\n // /*\r\n // * do not directly assing to profileTile!! capture it in a let first\r\n // */\r\n // const unboxedTile = SlakezSaltServiceStatic.boxUnsalt( result as BoxNonceEntity );\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( unboxedTile ) )\r\n // {\r\n // tempTile = unboxedTile as ProfileTile;\r\n // }\r\n\r\n // // if key 'sitUserId' exists, the unslating produced data\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tempTile ) )\r\n // {\r\n // tempTile = JSON.parse( tempTile ); // convert string to model\r\n // }\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tempTile ) && tempTile.sitUserId > 0 )\r\n // {\r\n // /*\r\n // * -------------------------------------------------------------------------\r\n // * since the received data has been successfull unsalted into model, it is safe to save it to indexedDb\r\n // * emit the tile as boxNonce to be stored in indexedDb by MembersComponent\r\n // * -------------------------------------------------------------------------\r\n // */\r\n // const boxedTile = result as BoxNonceEntity;\r\n // if ( sitUserId > 0 )\r\n // {\r\n // boxedTile.id = sitUserId; // to be used by indexedDb\r\n // boxedTile.key = sitUserId.toString(); // to be used by indexedDb\r\n // boxedTile.sitUserId = sitUserId; // to uniquely identify a user's data\r\n // boxedTile.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // boxedTile.entityName = 'ProfileTile';\r\n // // boxedTile.box = result.box;\r\n // // boxedTile.nonce = result.nonce;\r\n // // debugger;\r\n\r\n\r\n // // EmitterSubjectService.emitBoxNonce( boxedTile );\r\n\r\n // // -------------------------------------------------------------------------\r\n // // debugger;\r\n // tProfileTile = this.executeBeforeViewInit( tempTile, sitUserId, tempTile.id );\r\n\r\n\r\n // // debugger;\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfileTile ) )\r\n // {\r\n // // debugger;\r\n // this.profileTile = tProfileTile as ProfileTile;\r\n // this.sitUser.sitUserId = sitUserId;\r\n\r\n // // update the Dictionary:\r\n // // ----------------------\r\n // // this.dictionaryService.updateDictionary( this.profileTile, 'ProfileTile', this.profileTile.sitUserId ); //DO NOT USE THIS. Remove after testing\r\n // // this.dictionaryService.updateProfileTilesDictionary( [ tProfileTile]);\r\n\r\n // debugger; // TODO: step-into here!!!\r\n\r\n // observer.next( this.profileTile );\r\n // }\r\n // }\r\n // }\r\n // }\r\n // })\r\n // }\r\n // }\r\n // });\r\n // }\r\n\r\n // ---------------------------------------------------------------\r\n // --------------------------------------------------------------\r\n // Note : this method is to be used ONLY when Viewing a tile, i.e.memberView/:id\r\n // Not to be listened to by MembersComponent, rather by MemberViewComponent\r\n // --------------------------------------------------------------\r\n // emitProfileTile ( pTile ) : any\r\n //{\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTile ) )\r\n // {\r\n // this.mcLoader = new ModuleComponentLoader();\r\n // this.mcLoader.componentName = 'memberView';\r\n // this.mcLoader.moduleName = 'memberm';\r\n // this.mcLoader.router = this.router;\r\n // this.mcLoader.sitUserId = pTile?.sitUserId;\r\n // EmitterSubjectService.setMCLoader(this.mcLoader);\r\n // // debugger;\r\n // RedirectionServiceStatic.fireMcLoaderRoute(this.mcLoader);\r\n // return true;\r\n // }\r\n // return false;\r\n // }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { PreferenceServiceInterface } from '../../interfaces/serviceInterfaces/profileServiceInterfaces/preferenceServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { MemberViewMgmtModel } from '../../models/member/memberViewMgmtModel.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { KvArrayService } from '../coreServiceService/kvArrayService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n} )\r\n\r\n// ------------------------------------------------------------------------------------------------\r\n// Disclaimer: this service accomplishes all activities regarding signedInUser's ProfilePics only,\r\n// i.e. creating the profilePics for the signedInUser (1st person user), and all of\r\n// the activities regarding managing the profilePics such as making a photo private\r\n// if it is public and vice versa, and generating the PhotoMgmtNavigation buttons.\r\n// ------------------------------------------------------------------------------------------------\r\nexport class PreferenceService implements OnDestroy, PreferenceServiceInterface {\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isOnLine = false; \r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public memberViewMgmtModel : MemberViewMgmtModel = new MemberViewMgmtModel();\r\n public message = '';\r\n public preference : Preference = new Preference();\r\n public preferenceKvAnyArr : KvAny[] = [];\r\n\r\n constructor (\r\n public dictionaryService : DictionaryService,\r\n public httpService : HttpService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public kvArrayService : KvArrayService,\r\n )\r\n { \r\n // -----------------------------------------------------------\r\n this.initialize();\r\n }\r\n // ------------------------------------------------------------\r\n initialize(): void {\r\n // debugger;\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.preference = new Preference();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public executePreferenceTasks (situserId : number) : Observable {\r\n let sitUserId : number = situserId;\r\n return new Observable((subscriber) => {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n let tPref : any;\r\n tPref = this.dictionaryService.preferenceDictionary.get(sitUserId);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPref)) {\r\n this.preference = tPref;\r\n // debugger;\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel) || this.memberViewMgmtModel.sitUserId === 0) {\r\n this.memberViewMgmtModel = new MemberViewMgmtModel();\r\n }\r\n this.memberViewMgmtModel.populateModelData(this.preference, this.preferenceKvAnyArr);\r\n EmitterSubjectService.setMemberViewMgmtModel(this.memberViewMgmtModel);\r\n\r\n EmitterSubjectService.emitPreferenceKvAnyArr(this.preferenceKvAnyArr);\r\n subscriber.next(this.preferenceKvAnyArr);\r\n subscriber.complete();\r\n }\r\n else {\r\n this.getPreference(sitUserId).subscribe(data => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n this.preference = data;\r\n // debugger;\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n \r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(this.preference, this.preferenceKvAnyArr);\r\n\r\n EmitterSubjectService.emitPreferenceKvAnyArr(this.preferenceKvAnyArr);\r\n EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n\r\n subscriber.next(this.preferenceKvAnyArr);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n getPreferenceFromDictionary (sitUserId : number) : KvAny[] {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n let tPref : any;\r\n tPref = this.dictionaryService.preferenceDictionary.get(sitUserId);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPref)) {\r\n this.preference = tPref;\r\n // debugger;\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n EmitterSubjectService.emitPreferenceKvAnyArr(this.preferenceKvAnyArr);\r\n return this.preferenceKvAnyArr;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public getPreference (situserid : number) : Observable {\r\n let sitUserId : number = situserid;\r\n return Observable.create((observer : any) => {\r\n if (sitUserId > 0) {\r\n // debugger;\r\n let sitUser = new SitUser();\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n sitUser.sitUserId = sitUserId;\r\n sitUser.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(sitUser);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n this.httpService.postObservable('/api//Member/GetPreference', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text').subscribe(result => {\r\n // debugger;\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result))\r\n {\r\n this.preference = result as Preference;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference))\r\n {\r\n // debugger;\r\n this.dictionaryService.updateDictionary(this.preference, 'preference', sitUserId); \r\n\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n // debugger;\r\n EmitterSubjectService.emitPreferenceKvAnyArr(this.preferenceKvAnyArr);\r\n // debugger;\r\n observer.next(this.preference);\r\n observer.complete();\r\n }\r\n else {\r\n // debugger;\r\n this.message = 'Error occured after unsalting result in GetPreference(profileId:\\'' + sitUserId + '\\');\\n unsalted-preference: ' + this.preference;\r\n console.log(this.message);\r\n }\r\n } else {\r\n // debugger;\r\n this.message = 'unsalted preference (profileId:\\'' + sitUserId + '\\'); was null or empty.';\r\n console.log(this.message);\r\n } \r\n }, (error) => {\r\n // debugger;\r\n this.message = 'Error occured in GetPreference(profileId:\\'' + sitUserId + '\\');\\n Error-mag: ' + error.message; \r\n console.log(this.message);\r\n });\r\n } \r\n } \r\n } \r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public processPreferenceResult (sitUserId : number, result : any) : any {\r\n let bn : BoxNonceEntity = new BoxNonceEntity();\r\n if (result) {\r\n bn.box = result.box;\r\n bn.nonce = result.nonce;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bn.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bn.nonce)\r\n && bn.box.length > 0 && bn.nonce.length > 0) {\r\n // debugger;\r\n this.preference = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Preference;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) { \r\n // debugger;\r\n this.dictionaryService.updateDictionary(this.preference, 'preference', sitUserId);\r\n\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.preferenceDictionary, 'preference', this.loginSuccess.signedInUserId);\r\n // debugger;\r\n\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference); \r\n // debugger;\r\n return this.preference;\r\n }\r\n }\r\n }\r\n else {\r\n this.message = 'Error occured in GetPreference(sitUserId:\\'' + sitUserId + '\\');\\n result: ' + result;\r\n return null;\r\n }\r\n } \r\n // ==================================================================\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ProfileContentServiceInterface } from '../../interfaces/serviceInterfaces/profileServiceInterfaces/profileContentServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Content } from '../../models/common/content.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { MemberViewMgmtModel } from '../../models/member/memberViewMgmtModel.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { KvArrayService } from '../coreServiceService/kvArrayService.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Communication } from '../../models/communication/communication.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n} )\r\n\r\n// ------------------------------------------------------------------------------------------------\r\n// Disclaimer: this service accomplishes all activities regarding signedInUser's ProfilePics only,\r\n// i.e. creating the profilePics for the signedInUser (1st person user), and all of\r\n// the activities regarding managing the profilePics such as making a photo private\r\n// if it is public and vice versa, and generating the PhotoMgmtNavigation buttons.\r\n// ------------------------------------------------------------------------------------------------\r\nexport class ProfileContentService implements OnDestroy, ProfileContentServiceInterface {\r\n public boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public content : Content = new Content();\r\n private emitterDestroyed$: Subject = new Subject();\r\n public isOnLine = false; \r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public memberViewMgmtModel : MemberViewMgmtModel = new MemberViewMgmtModel();\r\n public message = '';\r\n public profileContent : Content = new Content();\r\n public profileContentKvAnyArr : KvAny[] = [];\r\n public profileInfo : ProfileInfo = new ProfileInfo();\r\n // will contain member-selection of KvPhoto as final state of currentStateOfPhoto\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n\r\n constructor (\r\n public httpService : HttpService,\r\n public kvArrayService : KvArrayService,\r\n )\r\n { \r\n // -----------------------------------------------------------\r\n this.initialize();\r\n }\r\n // ------------------------------------------------------------\r\n initialize(): void {\r\n // debugger;\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n // this.preference = new Preference();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n // create profileContentArrKvAny for ContentKeyValueArrComponent:\r\n // ---------------------------------------------------------------\r\n public createProfileContentKvAnyArr (pInfo : ProfileInfo) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0) {\r\n this.profileContent = CopyServiceStatic.copyFromProfileInfoToContent(pInfo);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)) {\r\n this.profileContentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent);\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(this.profileContent, null, pInfo, pInfo, null, null, null, this.profileContentKvAnyArr, null);\r\n }\r\n }\r\n EmitterSubjectService.emitProfileContentKvAnyArr(this.profileContentKvAnyArr);\r\n return this.profileContentKvAnyArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public executeProfileContentTasks (pcontent : Content) : Promise {\r\n let date = new Date();\r\n let pContent = pcontent;\r\n return new Promise((resolve, reject) => {\r\n // debugger;\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pContent) && pContent.sitUserId > 0) {\r\n this.profileContent = pContent;\r\n this.profileContentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent); // TODO: restore\r\n // debugger;\r\n // this.memberViewMgmtModel.populateModelData(pContent, null, null, null, null, null, null, this.profileContentKvAnyArr, null);\r\n \r\n resolve(this.profileContentKvAnyArr);\r\n }\r\n else {\r\n // debugger;\r\n reject(date.getTime() + ': profileContentService.fetchAndExecuteProfileContentTasks() was rejected.-2');\r\n }\r\n }).catch(error => {\r\n // debugger;\r\n console.log(date.getTime() + ': profileContentService.promise returned a null result.-3');\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public fetchAndExecuteProfileContentTasks (pinfo : ProfileInfo) : Promise {\r\n let date = new Date();\r\n let pInfo = pinfo;\r\n return new Promise((resolve, reject) => {\r\n // debugger;\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0) {\r\n this.getProfileContent(pInfo.sitUserId).subscribe(data => {\r\n debugger;\r\n if (data) { \r\n this.memberViewMgmtModel.populateModelData(data.profileContent, null, pInfo, pInfo, null, null, null, data.profileContentKvAnyArr, null);\r\n }\r\n resolve(this.memberViewMgmtModel);\r\n })\r\n }\r\n else {\r\n // debugger;\r\n reject(date.getTime() + ': profileContentService.fetchAndExecuteProfileContentTasks() was rejected.-2');\r\n }\r\n }).catch(error => {\r\n // debugger;\r\n console.log(date.getTime() + ': profileContentService.promise returned a null result.-3');\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public executeProfileInfoContentTasks (pinfo : ProfileInfo) : Promise {\r\n let pInfo = pinfo;\r\n return new Promise((resolve, reject) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n\r\n // create profileContentArrKvAny for ContentKeyValueArrComponent:\r\n // --------------------------------------------------------------\r\n this.profileContent = CopyServiceStatic.copyFromProfileInfoToContent(this.profileInfo);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent.contents)\r\n && this.profileContent.contents.length > 0) {\r\n\r\n this.profileContentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent); // TODO: restore\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(this.profileContent, null, pInfo, pInfo, null, null, null, this.profileContentKvAnyArr, null);\r\n\r\n EmitterSubjectService.emitProfileContentKvAnyArr(this.profileContentKvAnyArr);\r\n\r\n resolve(this.profileContentKvAnyArr);\r\n } \r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Use this method only instead of fetchAndExecuteProfileContentTasks\r\n // ---------------------------------------------------------------\r\n public getProfileContent (sitid : number) : Observable {\r\n let date = new Date();\r\n let sitUserId = sitid;\r\n\r\n return new Observable(subscriber => {\r\n if (sitUserId > 0) {\r\n let bnComm : any;\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n bnComm = new Communication();\r\n bnComm.sitUserId = sitUserId;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce))\r\n // debugger;\r\n this.httpService.postObservable('/Member/GetProfileContent', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text').subscribe(result =>\r\n {\r\n if (result) {\r\n // debugger;\r\n //this.boxNonceEntity = result as BoxNonceEntity;\r\n //if (this.boxNonceEntity && this.boxNonceEntity.box.length > 0 && this.boxNonceEntity.nonce.length > 0) {\r\n // var unsalted = SlakezSaltServiceStatic.boxUnsalt(this.boxNonceEntity);\r\n // debugger;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // this.profileContent = JSON.parse(unsalted) as Content;\r\n //}\r\n // debugger;\r\n this.profileContent = result as Content;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)) {\r\n this.content.aBstract = this.profileContent.aBstract;\r\n this.content.contentId = this.profileContent.contentId;\r\n this.content.contents = this.profileContent.contents;\r\n this.content.heading = this.profileContent.heading;\r\n if (this.content.profileId !== this.profileContent.profileId\r\n && this.content.profileId === 0 && this.profileContent.profileId > 0) {\r\n this.content.profileId = this.profileContent.profileId;\r\n }\r\n if (this.content.sitUserId !== this.profileContent.sitUserId\r\n && this.content.sitUserId === 0 && this.profileContent.sitUserId > 0) {\r\n this.content.sitUserId = this.profileContent.sitUserId;\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)) {\r\n this.profileContentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent);\r\n\r\n // debugger;\r\n\r\n EmitterSubjectService.emitProfileContentKvAnyArr(this.profileContentKvAnyArr);\r\n subscriber.next(this.profileContent);\r\n }\r\n }\r\n // }\r\n }\r\n })\r\n }\r\n }\r\n })\r\n }\r\n // ==================================================================\r\n}\r\n\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ProfileInfoServiceInterface } from '../../interfaces/serviceInterfaces/profileServiceInterfaces/profileInfoServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { Unit } from '../../models/common/unit.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { MemberViewMgmtModel } from '../../models/member/memberViewMgmtModel.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\nimport { CoreServiceService } from '../coreServiceService/coreServiceService.service';\r\nimport { DbServiceService } from '../dbServiceService/dbServiceService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { MemberServiceService } from '../memberServiceService/memberServiceService.service';\r\nimport { AbstractPagerVPhotoNavService } from '../pagerServiceService/abstractPagerVPhotoNavService.service';\r\nimport { PagerServiceService } from '../pagerServiceService/pagerServiceService.service';\r\nimport { PhotoServiceService } from '../photoServiceService/photoServiceService.service';\r\nimport { RendererServiceService } from '../rendererServiceService/rendererServiceService.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { AbstractProfileService } from './abstractProfileService.service';\r\nimport { PreferenceService } from './preferenceService.service';\r\nimport { ProfileContentService } from './profileContentService.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n} )\r\n\r\n// ------------------------------------------------------------------------------------------------\r\n// Disclaimer: this service accomplishes all activities regarding signedInUser's ProfilePics only,\r\n// i.e. creating the profilePics for the signedInUser (1st person user), and all of\r\n// the activities regarding managing the profilePics such as making a photo private\r\n// if it is public and vice versa, and generating the PhotoMgmtNavigation buttons.\r\n// ------------------------------------------------------------------------------------------------\r\nexport class ProfileInfoService extends AbstractProfileService implements OnDestroy, ProfileInfoServiceInterface { \r\n \r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public emitterDestroyed$: Subject = new Subject();\r\n public isOnLine = false;\r\n public kvAnyArr : KvAny[] = [];\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public memberViewMgmtModel : MemberViewMgmtModel = new MemberViewMgmtModel();\r\n public message = '';\r\n public profileInfo : ProfileInfo = new ProfileInfo();\r\n public profileInfoView : ProfileInfo = new ProfileInfo();\r\n \r\n // will contain member-selection of KvPhoto as final state of currentStateOfPhoto\r\n public signedInUser : SitUser = new SitUser();\r\n public sitUser : SitUser = new SitUser();\r\n public timer : any;\r\n constructor ( \r\n public abstractPagerVPhotoNavService : AbstractPagerVPhotoNavService,\r\n public dictionaryService : DictionaryService,\r\n public coreServiceService : CoreServiceService,\r\n public dbServiceService : DbServiceService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public memberServiceService : MemberServiceService,\r\n public photoServiceService : PhotoServiceService, \r\n public preferenceService : PreferenceService,\r\n public profileContentService : ProfileContentService,\r\n public rendererServiceService : RendererServiceService,\r\n public router : Router,\r\n )\r\n {\r\n super(\r\n abstractPagerVPhotoNavService,\r\n coreServiceService,\r\n dbServiceService,\r\n dictionaryService,\r\n glyphiconMenuService,\r\n memberServiceService,\r\n photoServiceService,\r\n preferenceService,\r\n profileContentService,\r\n rendererServiceService,\r\n router,\r\n );\r\n //if (this.coreServiceService) {\r\n // this.httpService = this.coreServiceService.getHttpService();\r\n // this.kvArrayService = this.coreServiceService.getKvArrayService();\r\n // this.heartbeatService = this.coreServiceService.getHeartbeatService();\r\n // this.httpService = this.coreServiceService.getHttpService();\r\n // this.liaisonService = this.coreServiceService.getLiaisonService();\r\n //}\r\n // -----------------------------------------------------------\r\n this.initialize();\r\n }\r\n // ------------------------------------------------------------\r\n initialize(): void {\r\n // debugger;\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n this.signedInUser = EmitterSubjectService.getSignedInUser();\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n return true;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // Note: Keep the following three methods as a group:\r\n // 1. getDictionaryMemberProfile()\r\n // 2. getServerDbMemberProfile()\r\n // ---------------------------------------------------------------\r\n // Note: treat dictionary-data as all-good-or-nothing. important!!!\r\n // ---------------------------------------------------------------\r\n // public getDictionaryMemberProfile (sitUserId : number) : any {\r\n // if (sitUserId > 0) {\r\n // let tpPics : any;\r\n // let tProfileInfo : any;\r\n // let tProfilePics : any;\r\n // let tPreference : any;\r\n // let tUserPhotoIds : any;\r\n // let emitterUserPhotoIds : any;\r\n // let isDictionaryPrefDataGood = false;\r\n // let isDictionaryProfInfoDataGood = false;\r\n // let isDictionaryProfPicsDataGood = false;\r\n\r\n // // debugger;\r\n\r\n // tProfileInfo = DictionaryServiceStatic.profileInfoDictionary.getValue(sitUserId);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tProfileInfo)) {\r\n // // debugger;\r\n // this.profileInfo = tProfileInfo;\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // // this.executeAllNonProfileTileTasks(this.profileInfo).then(data => {\r\n // // // debugger;\r\n // // this.memberViewMgmtModel = data;\r\n\r\n // // // if all tasks including preference were completed:\r\n // // // -------------------------------------------------\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel)\r\n // // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.preferenceKvAnyArr)\r\n // // && this.memberViewMgmtModel.preferenceKvAnyArr.length > 0) {\r\n // // // debugger;\r\n // // isDictionaryProfInfoDataGood = true;\r\n // // }\r\n // // else {\r\n // // // debugger;\r\n // // this.profileInfo = data;\r\n // // isDictionaryProfInfoDataGood = false;\r\n // // }\r\n // // debugger;\r\n // // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // // });\r\n // // }\r\n // }\r\n // // debugger;\r\n\r\n // // TODO: check to see if memberActivcityDictionary need to be created or not:\r\n // // --------------------------------------------------------------------------\r\n // // if (!this.activityService.isDictionaryMemberActivityEmptyForSitUser(sitUserId)) {\r\n // // }\r\n // // debugger;\r\n // // this.spinnerModalService.stopSpinner();\r\n // }\r\n // return this.profileInfo;\r\n // }\r\n // ---------------------------------------------------------------\r\n // public getServerDbMemberProfile (situserId : number) : any {\r\n // // debugger;\r\n // if (situserId > 0) {\r\n // // debugger;\r\n // this.getProfileInfo(situserId).then(result => {\r\n // // debugger;\r\n // this.profileInfo = result;\r\n // //this.executeAllNonProfileTileTasks(this.profileInfo).then(data1 => {\r\n // // // debugger;\r\n // // this.memberViewMgmtModel = data1;\r\n // // // if preference data is found (either from dictionary or previous run), then display it:\r\n // // // --------------------------------------------------------------------------------------\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)\r\n // // && this.preference.sitUserId > 0 && this.preference.doesModelHaveData()) {\r\n // // // debugger;\r\n // // this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n // // this.memberViewMgmtModel.populateModelData(this.preference, this.preferenceKvAnyArr);\r\n // // }\r\n // // // get it from the backend-server regardless:\r\n // // // ------------------------------------------\r\n // // // debugger;\r\n // // this.preferenceService.getPreference(this.profileInfo.sitUserId).subscribe(data2 => {\r\n // // // debugger;\r\n // // this.preference = data2;\r\n // // this.memberViewMgmtModel.populateModelData(this.preference, this.preferenceKvAnyArr);\r\n\r\n // // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // // });\r\n // // // debugger;\r\n // // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // //});\r\n // })\r\n // }\r\n // return this.profileInfo;\r\n // }\r\n // ---------------------------------------------------------------\r\n // ******* This is where the user's data is obtained *******\r\n // ---------------------------------------------------------------\r\n // Note: If the user has not completed his profile (at least the\r\n // preScreen page) redirect them to their own incomplete\r\n // profile page and show a modal with the message to\r\n // complete thier profile (with a 'ask me later' button)\r\n // ---------------------------------------------------------------\r\n // public getUserData (sitUserId : number, isDictionary : boolean) : any {\r\n // let mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && (this.loginSuccess.isProfileComplete)) {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUserId)) {\r\n // let tId : any;\r\n\r\n // // Note: Get the member profile data from Dictionaries.\r\n // // Since the Dictionaries are populated from the indexedDB,\r\n // // we do not get member's profile from indexedDB.\r\n // // -----------------------------------------------\r\n // if (isDictionary) {\r\n // tId = this.getDictionaryMemberProfile(sitUserId);\r\n // debugger;\r\n // }\r\n // else {\r\n // this.profileInfo = this.getServerDbMemberProfile(sitUserId);\r\n // }\r\n // return true;\r\n // }\r\n // }\r\n // else if (!this.loginSuccess.isPreScreenComplete) {\r\n // mcLoader = new ModuleComponentLoader();\r\n // mcLoader.componentName = 'preScreen';\r\n // mcLoader.moduleName = 'registerm';\r\n // mcLoader.sitUserId = this.loginSuccess.signedInUserId;\r\n // EmitterSubjectService.setMCLoader(mcLoader);\r\n // return false;\r\n // }\r\n // else {\r\n // mcLoader = new ModuleComponentLoader();\r\n // mcLoader.componentName = 'index';\r\n // mcLoader.moduleName = 'app';\r\n // mcLoader.sitUserId = this.loginSuccess.signedInUserId;\r\n // EmitterSubjectService.setMCLoader(mcLoader);\r\n // return false;\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n // Note: Keep the following three methods as a group:\r\n // 1. getDictionaryMemberProfile()\r\n // 2. getServerDbMemberProfile()\r\n // ---------------------------------------------------------------\r\n // Note: treat dictionary-data as all-good-or-nothing. important!!!\r\n // ---------------------------------------------------------------\r\n // public getDictionaryMemberProfile (sitUserId : number) : any {\r\n // if (sitUserId > 0) {\r\n // let tpPics : any;\r\n // let tProfileInfo : any;\r\n // let tProfilePics : any;\r\n // let tPreference : any;\r\n // let tUserPhotoIds : any;\r\n // let emitterUserPhotoIds : any;\r\n // let isDictionaryPrefDataGood = false;\r\n // let isDictionaryProfInfoDataGood = false;\r\n // let isDictionaryProfPicsDataGood = false;\r\n\r\n // // debugger;\r\n\r\n // tProfileInfo = DictionaryServiceStatic.profileInfoDictionary.getValue(sitUserId);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tProfileInfo)) {\r\n // // debugger;\r\n // this.profileInfo = tProfileInfo;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // this.profileTileService.executeAllNonProfileTileTasks(this.profileInfo).then(data => {\r\n // // debugger;\r\n // this.memberViewMgmtModel = data;\r\n\r\n // // if all tasks including preference were completed:\r\n // // -------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.preferenceKvAnyArr)\r\n // && this.memberViewMgmtModel.preferenceKvAnyArr.length > 0) {\r\n // // debugger;\r\n // isDictionaryProfInfoDataGood = true;\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.profileInfo = data;\r\n // isDictionaryProfInfoDataGood = false;\r\n // }\r\n // debugger;\r\n // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // });\r\n // }\r\n // }\r\n // // debugger;\r\n\r\n // // TODO: check to see if memberActivcityDictionary need to be created or not:\r\n // // --------------------------------------------------------------------------\r\n // // if (!this.activityService.isDictionaryMemberActivityEmptyForSitUser(sitUserId)) {\r\n // // }\r\n // // debugger;\r\n // // this.spinnerModalService.stopSpinner();\r\n // }\r\n // return sitUserId;\r\n // }\r\n // ---------------------------------------------------------------\r\n // public getServerDbMemberProfile (situserId : number) : any {\r\n // // debugger;\r\n // if (situserId > 0) {\r\n // // debugger;\r\n // this.getProfileInfo(situserId).then(result => {\r\n // // debugger;\r\n // this.profileInfo = result;\r\n // this.profileTileService.executeAllNonProfileTileTasks(this.profileInfo).then(data1 => {\r\n // // debugger;\r\n // this.memberViewMgmtModel = data1;\r\n // // if preference data is found (either from dictionary or previous run), then display it:\r\n // // --------------------------------------------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)\r\n // && this.preference .sitUserId > 0 && this.preference.doesModelHaveData()) {\r\n // // debugger;\r\n // this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n // this.memberViewMgmtModel.populateModelData(this.preference, this.preferenceKvAnyArr);\r\n // }\r\n // // get it from the backend-server regardless:\r\n // // ------------------------------------------\r\n // // debugger;\r\n // this.preferenceService.getPreference(this.profileInfo.sitUserId).subscribe(data2 => {\r\n // // debugger;\r\n // this.preference = data2;\r\n // this.memberViewMgmtModel.populateModelData(this.preference, this.preferenceKvAnyArr);\r\n\r\n // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // });\r\n // // debugger;\r\n // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // });\r\n // })\r\n // }\r\n // return situserId;\r\n // }\r\n // ---------------------------------------------------------------\r\n public getProfileInfo (situserId : number) : Observable { \r\n let bnInput : any;\r\n bnInput = new Communication();\r\n return new Observable((subscriber) => {\r\n let date = new Date();\r\n let sitUserId = situserId;\r\n if (sitUserId > 0) {\r\n // debugger;\r\n \r\n bnInput.sitUserId = sitUserId;\r\n //this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n //// if (this.isOnLine) {\r\n //if (this.loginSuccess.signedInUserId > 0) {\r\n // bnInput.signedInUserId = this.loginSuccess.signedInUserId;\r\n //}\r\n // debugger;\r\n this.getProfileInfoBoxNonce(bnInput).subscribe((data : ProfileInfo) =>\r\n {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n \r\n //debugger;\r\n this.profileInfo = new ProfileInfo().copySourceToDestination(this.profileInfo, data);\r\n // debugger;\r\n this.kvAnyArr = this.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.kvAnyArr) && this.kvAnyArr.length > 0)\r\n {\r\n\r\n let tsitUser = EmitterSubjectService.getSitUserModel();\r\n if (tsitUser.sitUserId == sitUserId) {\r\n this.sitUser = tsitUser;\r\n }\r\n\r\n EmitterSubjectService.emitProfileInfoKvAnyArr(this.kvAnyArr);\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n this.dictionaryService.updateDictionary(this.profileInfo, 'profileInfo', this.profileInfo.sitUserId);\r\n\r\n subscriber.next(this.profileInfo);\r\n subscriber.complete();\r\n }\r\n else {\r\n console.log(date.getTime() + ': getProfileInfo()=>getProfileInfoBoxNonce(sitUserId=' + sitUserId + ') profileInfo & kvAnyArr were null or undefined value.');\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n }\r\n else {\r\n // debugger;\r\n console.log(date.getTime() + ': getProfileInfo()=>getProfileInfoBoxNonce(sitUserId=' + sitUserId + ') promise returned null or undefined value.');\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n // debugger; \r\n })\r\n }\r\n else {\r\n // debugger;\r\n console.log('ProfileInfoService.getProfileInfo(sitUserId==' + sitUserId + ') promise returned null.');\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This method's Observable is a better example of how an\r\n // Observable shoudl be written.\r\n // ---------------------------------------------------------------\r\n public getProfileInfoBoxNonce (commu : Communication) : Observable {\r\n let bncomm : Communication = commu;\r\n // debugger;\r\n let pInfo : ProfileInfo = null;\r\n let tpInfo: ProfileInfo = null;\r\n let tLoginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let profileInfoObject : any;\r\n return new Observable((subscriber) => {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commu)) {\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(commu);\r\n // debugger;\r\n \r\n let bne : BoxNonceEntity = new BoxNonceEntity();;\r\n \r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n // debugger;\r\n this.httpService.postObservable('/api/Member/GetProfileInfo',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }, 'json2text').subscribe(result =>\r\n {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result))\r\n {\r\n // debugger; \r\n\r\n let bne : BoxNonceEntity = new BoxNonceEntity();\r\n bne.box = result.box;\r\n bne.nonce = result.nonce;\r\n profileInfoObject = SlakezSaltServiceStatic.boxUnsalt(bne) as unknown;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfoObject))\r\n {\r\n // debugger;\r\n pInfo = JSON.parse(profileInfoObject) as ProfileInfo;\r\n // debugger;\r\n // debugger;\r\n this.profileInfo = new ProfileInfo().copySourceToDestination(this.profileInfo, pInfo);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0)\r\n {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bncomm) && bncomm.sitUserId > 0) {\r\n this.dictionaryService.updateDictionary(this.profileInfo, 'profileInfo', bncomm.sitUserId);\r\n // debugger;\r\n }\r\n // debugger;\r\n subscriber.next(this.profileInfo);\r\n subscriber.complete(); \r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(new Date().getTime() + ' : of getProfileInfoBoxNonce().bncomm.sitUserId== 0 or bncomm was null or undefined.');\r\n console.log(this.message)\r\n subscriber.next(null);\r\n subscriber.complete();\r\n } \r\n //} \r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(new Date().getTime() + ' : promise of getProfileInfoBoxNonce() BoxNonceEntity result was null or undefined.');\r\n console.log(this.message)\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(new Date().getTime() + ' : promise of getProfileInfoBoxNonce() returned a null result');\r\n console.log(this.message)\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n // console.log('got value ' + result);\r\n \r\n })\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(new Date().getTime() + ' : parameter model boxNonceEntity of getProfileInfoBoxNonce() was null or undefined');\r\n console.log(this.message)\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n }\r\n else {\r\n this.message = StringServiceStatic.stringBuilder(new Date().getTime() + ' : parameter model Communication of getProfileInfoBoxNonce() was null or undefined');\r\n console.log(this.message)\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n })\r\n }\r\n \r\n \r\n // ---------------------------------------------------------------\r\n public processProfileInfoForHeartbeat (hb : Heartbeat) : ProfileInfo {\r\n let distanceUnit = new Unit();\r\n\r\n // if Heartbeat's distance is not already calculated:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distance)) {\r\n if (hb.distance === 0) {\r\n // compute distance and unit:\r\n distanceUnit = this.heartbeatService.calculateDistance(hb, this.loginSuccess.heartbeat, true); // (dest, origin, isKm)\r\n // debugger;\r\n\r\n let tProfileInfoView = this.processDistanceUnitForProfileInfoView(distanceUnit) as ProfileInfo;\r\n this.profileInfoView = CopyServiceStatic.copyProfileInfoIfExists(this.profileInfoView, tProfileInfoView);\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n this.profileInfoView.distance = hb.distance.toFixed(2);\r\n this.profileInfoView.unit = hb.unit.length > 0 ? hb.unit : 'meter';\r\n // debugger;\r\n }\r\n // EmitterSubjectService.emitProfileInfoView(this.profileInfoView);\r\n return this.profileInfoView;\r\n }\r\n // ---------------------------------------------------------------\r\n public processDistanceUnitForProfileInfoView (distanceUnit : Unit) : ProfileInfo {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.distance)\r\n && distanceUnit.distance >= 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.unit)) {\r\n let result = this.heartbeatService.processDistanceUnit(distanceUnit);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)) {\r\n this.profileInfoView.distance = distanceUnit.distance.toFixed(2);\r\n this.profileInfoView.unit = distanceUnit.unit;\r\n }\r\n }\r\n // debugger;\r\n }\r\n return this.profileInfoView;\r\n }\r\n // ==================================================================\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ProfileNameServiceInterface } from '../../interfaces/serviceInterfaces/profileServiceInterfaces/profileNameServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { SitUserService } from '../commonServiceService/sitUserService.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n// =====================================================================\r\n// \r\n// =====================================================================\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class ProfileNameService implements OnDestroy\r\n{ \r\n private emitterDestroyed$ : Subject = new Subject();\r\n // ----------------------------------------------------------\r\n public loginSuccess : LoginSuccess = new LoginSuccess();;\r\n public profileName = '';\r\n public profileNameMap : Map = new Map();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public sitUserId : number = 0;\r\n public sitUser : SitUser = new SitUser();\r\n public signedInUser : SitUser = new SitUser();\r\n constructor (\r\n public httpService : HttpService,\r\n public sitUserService : SitUserService,\r\n ) {\r\n \r\n this.initialize();\r\n\r\n // -----------------------------------------------------------\r\n // this indexedDb-system works. Tested 2020/August/05,\r\n // -----------------------------------------------------------\r\n }\r\n // ------------------------------------------------------------\r\n public initialize () : void {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n // ---------------------------------------------------------------\r\n public ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n \r\n // this.timerArray.forEach((timer) => clearInterval(timer));\r\n return true;\r\n }\r\n // ------------------------------------------------------------------------------\r\n // ------------------------------------------------------------------------------\r\n public fetchProfileName (sitId : number): Observable {\r\n let pName = '';\r\n return new Observable( subscriber=>{\r\n if (sitId > 0) {\r\n this.sitUserService.getProfileName(sitId).subscribe(data => {\r\n pName = data;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileNameMap) && !this.profileNameMap.has(sitId)) {\r\n this.profileNameMap.set(sitId, pName);\r\n }\r\n subscriber.next(pName);\r\n subscriber.complete();\r\n })\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public getProfileName (sitId : number) : string {\r\n if (sitId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileNameMap) && this.profileNameMap.size > 0) {\r\n if (this.profileNameMap.has(sitId)) {\r\n return this.profileNameMap.get(sitId);\r\n }\r\n else return '';\r\n }\r\n else return '';\r\n }\r\n // ---------------------------------------------------------------\r\n public setProfileNameMap (pName : string, sitId: number) : void {\r\n this.profileName = pName;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileNameMap) && !this.profileNameMap.has(sitId)) {\r\n this.profileNameMap.set(sitId, pName);\r\n }\r\n // debugger;\r\n }\r\n // --------------------------------------------------------------\r\n public getProfileNameFromProfileTile (pTile : ProfileTile) : string {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heading)) {\r\n this.profileName = pTile.heading;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.profileName)) {\r\n // this.profileName = this.profileName + pInfo.sitUserId; // Warning: accordionHeader.profileName gets the postfic sitUserId which is not the actual profileName\r\n this.profileName = pTile.profileName;\r\n }\r\n else {\r\n this.profileName = this.profileName;\r\n }\r\n }\r\n\r\n this.setProfileNameMap(this.profileName, pTile.sitUserId);\r\n // debugger;\r\n return this.profileName;\r\n }\r\n // --------------------------------------------------------------\r\n public getProfileNameFromProfileInfo (pInfo : ProfileInfo) : string {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo.heading)) {\r\n this.profileName = pInfo.heading;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo.profileName)) {\r\n this.profileName = pInfo.profileName;\r\n }\r\n else {\r\n // this.profileName = this.profileName + pInfo.sitUserId; // Warning: accordionHeader.profileName gets the postfic sitUserId which is not the actual profileName\r\n this.profileName = this.profileName;\r\n }\r\n }\r\n this.setProfileNameMap(this.profileName, pInfo.sitUserId);\r\n // debugger;\r\n return this.profileName;\r\n }\r\n // ---------------------------------------------------------------\r\n public updateProfileTileForSignedInUser (pTile : ProfileTile) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (pTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.heading)) {\r\n // debugger;\r\n pTile.heading = this.loginSuccess.heading;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.profileName)) {\r\n pTile.profileName = this.loginSuccess.profileName;\r\n }\r\n\r\n this.setProfileNameMap(pTile.profileName, pTile.sitUserId);\r\n }\r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public updateProfileTileForSitUser (pTile : ProfileTile) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)\r\n && (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.profileName) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heading))) {\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (pTile.sitUserId === this.sitUser.sitUserId && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser.profileName)) {\r\n // debugger;\r\n pTile.heading = pTile.profileName = this.sitUser.profileName;\r\n this.setProfileNameMap(pTile.profileName, pTile.sitUserId);\r\n }\r\n }\r\n return pTile;\r\n }\r\n // ----------------------------------------------------------------------\r\n\r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { Subject } from 'rxjs';\r\nimport { ProfilePicsServiceInterface } from '../../interfaces/serviceInterfaces/profileServiceInterfaces/profilePicsServiceInterface';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Counters } from '../../models/common/counters.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { PhotoMgmtAction } from '../../models/common/photoMgmtAction.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { ProfileImage } from '../../models/profile/profileImage.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { HttpService } from '../../services/coreServiceService/httpService.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { MemberService } from '../memberServiceService/memberService.service';\r\nimport { PagerSupportService } from '../pagerServiceService/pagerSupportService.service';\r\nimport { PhotoPrivacyService } from '../photoServiceService/photoPrivacyService.service';\r\nimport { BackgroundImageAnimationService } from '../rendererServiceService/backgroundImageAnimationService.service';\r\nimport { ArraySupportServiceStatic } from '../staticServices/arraySupportServiceStatic.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n\r\n@Injectable( {\r\n providedIn: 'root',\r\n} )\r\n\r\n// ------------------------------------------------------------------------------------------------\r\n// Note: DictionaryModule will populate all the dictionaries from the indexedDb if data exists.\r\n// Therefore, this service will NOT deal with indexedDb at all!\r\n// TODO: Move all indexedDb related functionalities into the DictionaryModuleComponent\r\n//\r\n// ------------------------------------------------------------------------------------------------\r\n// Disclaimer: this service accomplishes all activities regarding signedInUser's ProfilePics only,\r\n// i.e. creating the profilePics for the signedInUser (1st person user), and all of\r\n// the activities regarding managing the profilePics such as making a photo private\r\n// if it is public and vice versa, and generating the PhotoMgmtNavigation buttons.\r\n// ------------------------------------------------------------------------------------------------\r\nexport class ProfilePicsService implements OnDestroy, ProfilePicsServiceInterface\r\n{\r\n public boxNonceEntity: BoxNonceEntity = new BoxNonceEntity();\r\n public counters: Counters = new Counters();\r\n public currentBn: BoxNonceEntity = new BoxNonceEntity();\r\n public currentKvPhoto: KvPhoto = new KvPhoto();\r\n public currentStateOfPhoto: Photo = new Photo();\r\n public emitterDestroyed$: Subject = new Subject();\r\n public filteredKvPhotoArr: KvPhoto[] = [];\r\n public glyphNames: string[] = [ 'camera', 'primary', 'private', 'public' ];\r\n public isBlocked = false;\r\n public isBuddy = false;\r\n public isFriend = false;\r\n public isIndexedDbData = true;\r\n public isLiked = false;\r\n public isMobilevar = false;\r\n public isOnLine = false;\r\n public isPhotoMgmt = false;\r\n public isPrivate = false;\r\n public isToggleCamera = false;\r\n public isBlockedByDictionaryData = false;\r\n public isBlockedByServerData = false;\r\n public isFriendByDictionaryData = false;\r\n public isFriendByServerData = false;\r\n public isLikedByDictionaryData = false;\r\n public isLikedByServerData = false;\r\n public isUnlockedByDictionaryData = false;\r\n public isUnlockedByServerData = false;\r\n public isViewMember = false;\r\n public isWaitingOnCurrStateOfUser = false;\r\n public kvPhotoArr: KvPhoto[] = [];\r\n public kvPhotoLock: KvPhoto = new KvPhoto();\r\n public kvPhotoUnLock: KvPhoto = new KvPhoto();\r\n public kvPhotoPrivate: KvPhoto = new KvPhoto();\r\n public kvPhotoPublic: KvPhoto = new KvPhoto();\r\n public loginSuccess: LoginSuccess = new LoginSuccess();\r\n public message = '';\r\n public memberViewGlyphNames: string[] = [];\r\n public memberViewMenuNames: string[] = [ 'chat', 'email', 'note', 'buddy', 'like', 'private', 'public', 'tala', 'block', 'unblock', 'dislike' ];\r\n public photoMgmtMenuNames: string[] = [ 'camera' ];\r\n public photoMgmtGlyphNames: string[] = [];\r\n public photoMgmtAction: PhotoMgmtAction = new PhotoMgmtAction();\r\n public photoMgmtServiceSitUser: SitUser = new SitUser();\r\n public primaryKvPhoto: KvPhoto = new KvPhoto();\r\n public profileImageArr: ProfileImage[] = [];\r\n public profileImageKvPhotos: KvPhoto[] = [];\r\n public profilePics: ProfilePics = new ProfilePics();\r\n public profilePicsArr: ProfilePics[] = [];\r\n public profilePicsBoxNonceArr: BoxNonceEntity[] = [];\r\n // will contain member-selection of KvPhoto as final state of currentStateOfPhoto\r\n public selectedKvPhoto: KvPhoto = new KvPhoto();\r\n public sitUser: SitUser = new SitUser();\r\n public timer: any;\r\n public timerArray: any[] = [];\r\n public unsaltedIndexedDbData: any;\r\n public userPhotoBnIds: number[] = [];\r\n public userPhotos: Photo[] = [];\r\n\r\n constructor (\r\n public bias : BackgroundImageAnimationService,\r\n public dictionaryService : DictionaryService,\r\n public httpService: HttpService,\r\n public dbDexieToDictionaryService : DbDexieToDictionaryService,\r\n public memberService : MemberService,\r\n public pagerSupportService : PagerSupportService,\r\n public photoPrivacyService : PhotoPrivacyService,\r\n )\r\n {\r\n this.initialize(); \r\n }\r\n // -----------------------------------------------------------\r\n // Note: this process is deprecated since we have a new system for\r\n // indexedDb save and retrieval of all data.\r\n // -----------------------------------------------------------\r\n // public getIndexedDbProfilePics ( sitUserId: number ): ProfilePics\r\n // {\r\n // let tProfilePics: ProfilePics = new ProfilePics();\r\n // // Note:ref:indexDbProfilePicsEmitter will receive data via emitter\r\n // // debugger;\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics )\r\n // || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics?.profileImageDictionary )\r\n // || this.profilePics?.profileImageDictionary?.size() === 0 )\r\n // {\r\n // // debugger;\r\n // this.indexedDbService.getStoreData( 'ProfilePics' ).then( data =>\r\n // {\r\n // let tProfilePicsArr = data;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePicsArr ) && tProfilePicsArr.length > 0 )\r\n // {\r\n // tProfilePicsArr.map( e =>\r\n // {\r\n // if ( e.sitUserId == sitUserId )\r\n // tProfilePics = e;\r\n // } );\r\n // }\r\n // } );\r\n // }\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics.profileImageArr )\r\n // && tProfilePics.profileImageArr.length > 0 )\r\n // {\r\n // // debugger;\r\n // this.memberService.profilePics = this.profilePics = tProfilePics;\r\n // }\r\n // return this.profilePics;\r\n // }\r\n // ------------------------------------------------------------\r\n public initialize (): void\r\n {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.isOnLine = EmitterSubjectService.getIsOnLine();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n // ---------------------------------------------------------------\r\n public ngOnDestroy (): any\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.profilePics = new ProfilePics(); // clear the profilePics on exit\r\n this.profileImageArr = [];\r\n this.timerArray.forEach( ( timer ) => clearInterval( timer ) );\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n clearCounters (): Promise\r\n {\r\n this.counters = new Counters();\r\n return new Promise( ( resolve ) =>\r\n {\r\n resolve( this.counters );\r\n } );\r\n }\r\n \r\n \r\n // ---------------------------------------------------------------\r\n // Note: This method gets the PhotoBnIds of a user, and on the\r\n // basis of the photoBnIds, it gets the corresponding Photos\r\n // from the PhotoDictionary so that no decryption is required.\r\n // PhotoDictionary is not persisted onto the indexedDb.\r\n // ---------------------------------------------------------------\r\n public createProfilePicsFromPhotoDictionary (sitUserId : number) : Promise {\r\n let fKvPhoto : any;\r\n let userPhotos : Photo[] = [];\r\n let profilePics : ProfilePics = new ProfilePics();\r\n return new Promise((resolve, reject) => {\r\n if (sitUserId > 0) {\r\n\r\n let userPhotoBnIds = this.dictionaryService.userPhotoBnIdDictionary.get(sitUserId) as number[];\r\n\r\n let dPhotoArr = this.dictionaryService.photoDictionary.size > 0 ? this.dictionaryService.photoDictionary.values() : [];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dPhotoArr) && dPhotoArr.length > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userPhotoBnIds) && userPhotoBnIds.length > 0) {\r\n userPhotoBnIds.map(e => {\r\n dPhotoArr.map((dp : any) => {\r\n if (dp.photoBnId == e && dp.sitUserId == sitUserId) {\r\n userPhotos.push(dp);\r\n }\r\n })\r\n })\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userPhotos) && userPhotos.length > 0) {\r\n userPhotos.map(p => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p.imageString) && p.imageString.length > 0) { // TODO: watch here, it could be imageBytes or something else\r\n \r\n profilePics.profilePhotoDictionary.set(p.photoId, p);\r\n\r\n // Note: create kvPhoto, filter kvPhoto, setKvPhotoArr, and filteredKvPhotoArr:\r\n // ----------------------------------------------------------------------------\r\n let kvPhoto = this.bias.setPhotoToKvPhoto(p);\r\n profilePics.profileKvPhotoArr.push(kvPhoto);\r\n\r\n this.photoPrivacyService.filterKvPhoto(kvPhoto).subscribe(data => {\r\n fKvPhoto = data;\r\n profilePics.filteredKvPhotoArr.push(fKvPhoto);\r\n\r\n resolve(profilePics);\r\n });\r\n }\r\n })\r\n }\r\n else reject(null);\r\n }\r\n else reject(null);\r\n }\r\n else {\r\n reject(null);\r\n }\r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Note: this method will produce a complete ProfilePics model\r\n // from a ProfileImageArray model that can is ready to be\r\n // displyed by calling\r\n // EmitterServiceStatic.emitProfileImages (profilePics.filteredKvPhotoArr);\r\n // ---------------------------------------------------------------\r\n // TODO: Intend to deprecate:\r\n // ------------------------------------------------------------------\r\n public createProfilePicsFromProfileImageArray ( inArr: ProfileImage[] ): any\r\n {\r\n const profilePic = new ProfilePics();\r\n let image: any;\r\n let inDFirst: any;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inArr ) && inArr.length > 0 )\r\n {\r\n profilePic.profileImageArr = inArr as ProfileImage[];\r\n // ----------------------------------\r\n inDFirst = inArr[ 0 ];\r\n profilePic.cryptUserKey = inDFirst.cryptUserKey;\r\n profilePic.date = inDFirst.date;\r\n // profilePic.id = inDFirst.Id;\r\n profilePic.entityName = inDFirst.entityName;\r\n profilePic.profileId = inDFirst.profileId;\r\n profilePic.profileImageArr = inArr;\r\n profilePic.sitUserId = inDFirst.sitUserId;\r\n profilePic.sitUserKey = inDFirst.sitUserKey;\r\n // debugger;\r\n profilePic.profileImageArr.map( e =>\r\n {\r\n if ( e.image.toString().indexOf( 'data:image/png;base64,' ) !== -1 )\r\n {\r\n // debugger;\r\n image = 'url(\\'' + e.image.toString() + '\\')';\r\n // e.image = image;\r\n profilePic.images.push( e.image );\r\n }\r\n else\r\n {\r\n image = 'url(\\'data:image/png;base64,' + e.image.toString() + '\\')';\r\n // e.image = image;\r\n profilePic.images.push( e.image );\r\n }\r\n let kvPhoto = CopyServiceStatic.copyFromProfileImageToKvPhoto(e);\r\n profilePic.profileKvPhotoArr.push(kvPhoto);\r\n profilePic.filteredKvPhotoArr.push(StringServiceStatic.deepCloneJson(this.photoPrivacyService.filterKvPhoto(kvPhoto)));\r\n } );\r\n this.memberService.profilePics = profilePic;\r\n return this.memberService.profilePics;\r\n }\r\n return null;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // TODO: Intend to deprecate:\r\n // ------------------------------------------------------------------\r\n public createProfilePicsFromProfileImageDictionary ( inDictionary: Dictionary ): any\r\n {\r\n const profilePic = new ProfilePics();\r\n let image: any;\r\n let inDFirst: any;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inDictionary ) && inDictionary.size > 0 )\r\n {\r\n profilePic.profileImageDictionary = inDictionary as Dictionary;\r\n // ----------------------------------\r\n inDFirst = inDictionary.size > 0 ? inDictionary.values()[ 0 ] : null;\r\n profilePic.cryptUserKey = inDFirst.cryptUserKey;\r\n profilePic.date = inDFirst.date;\r\n // profilePic.id = inDFirst.Id;\r\n profilePic.entityName = inDFirst.entityName;\r\n profilePic.profileId = inDFirst.profileId;\r\n profilePic.profileImageDictionary = inDictionary;\r\n profilePic.sitUserId = inDFirst.sitUserId;\r\n profilePic.sitUserKey = inDFirst.sitUserKey;\r\n // debugger;\r\n profilePic.profileImageDictionary.size > 0 && profilePic.profileImageDictionary.values().map( e =>\r\n {\r\n if ( e.image.toString().indexOf( 'data:image/png;base64,' ) !== -1 )\r\n {\r\n // debugger;\r\n image = 'url(\\'' + e.image.toString() + '\\')';\r\n // e.image = image;\r\n profilePic.images.push( e.image );\r\n }\r\n else\r\n {\r\n image = 'url(\\'data:image/png;base64,' + e.image.toString() + '\\')';\r\n // e.image = image;\r\n profilePic.images.push( e.image );\r\n }\r\n } );\r\n this.memberService.profilePics = profilePic;\r\n return this.memberService.profilePics;\r\n }\r\n return null;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n public createProfilePicsFromSitUser ( sitUser: SitUser ): any\r\n {\r\n const profilePics = new ProfilePics();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sitUser ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sitUser.primaryImage ) && sitUser.primaryImage.length > 10 )\r\n {\r\n profilePics.sitUserId = sitUser.sitUserId;\r\n\r\n // debugger;\r\n let tProfileImage = new ProfileImage();\r\n tProfileImage.image = sitUser.primaryImage; // '/assets/photos/DefaultImageEmoji.jpg';\r\n tProfileImage.isPrimary = true;\r\n tProfileImage.sitUserId = sitUser.sitUserId;\r\n tProfileImage.privacy = 'public';\r\n profilePics.profileImageArr.push( tProfileImage );\r\n\r\n let kvPhoto = new KvPhoto();\r\n kvPhoto.isPrimary = true;\r\n kvPhoto.isPrivate = false;\r\n kvPhoto.isUnlocked = true;\r\n kvPhoto.key = 'primaryImage'; // TODO; check for the appropriate key\r\n kvPhoto.value = sitUser.primaryImage; // '/assets/photos/DefaultImageEmoji.jpg';\r\n kvPhoto.sitUserId = sitUser.sitUserId;\r\n profilePics.filteredKvPhotoArr.push( kvPhoto );\r\n }\r\n return profilePics;\r\n }\r\n // ---------------------------------------------------------------\r\n public createProfilePicsFromLoginSuccess (loginSuccess : LoginSuccess) : any {\r\n const profilePics = new ProfilePics();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(loginSuccess) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(loginSuccess.primaryImage) && loginSuccess.primaryImage.length > 10) {\r\n profilePics.sitUserId = loginSuccess.signedInUserId;\r\n\r\n // debugger;\r\n let tProfileImage = new ProfileImage();\r\n tProfileImage.image = loginSuccess.primaryImage; // '/assets/photos/DefaultImageEmoji.jpg';\r\n tProfileImage.isPrimary = true;\r\n tProfileImage.sitUserId = loginSuccess.signedInUserId;\r\n tProfileImage.privacy = 'public';\r\n profilePics.profileImageArr.push(tProfileImage);\r\n\r\n let kvPhoto = new KvPhoto();\r\n kvPhoto.isPrimary = true;\r\n kvPhoto.isPrivate = false;\r\n kvPhoto.isUnlocked = true;\r\n kvPhoto.key = 'primaryImage'; // TODO; check for the appropriate key\r\n kvPhoto.value = loginSuccess.primaryImage; // '/assets/photos/DefaultImageEmoji.jpg';\r\n kvPhoto.sitUserId = loginSuccess.signedInUserId;\r\n profilePics.filteredKvPhotoArr.push(kvPhoto);\r\n }\r\n return profilePics;\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO: Intend to deprecate:\r\n // Not in use\r\n // ------------------------------------------------------------------\r\n public executeOnProfileImageArrayComplete ( userPhotoIds: number[], profilePics: ProfilePics ): ProfilePics\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userPhotoIds)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.profileImageArr))\r\n {\r\n // debugger;\r\n let tKvPhotoArr = CopyServiceStatic.copyProfilePicsToKvPhotoArr( profilePics );\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tKvPhotoArr ) && tKvPhotoArr.length > 0 )\r\n {\r\n // debugger;\r\n profilePics.profileKvPhotoArr = tKvPhotoArr;\r\n }\r\n // debugger;\r\n this.profilePics = this.executeServerProfilePicsTasks( profilePics );\r\n\r\n EmitterSubjectService.setProfilePics( this.profilePics );\r\n\r\n // debugger;\r\n return this.profilePics;\r\n }\r\n else return profilePics;\r\n }\r\n // ------------------------------------------------------------------\r\n // executeProfilePicsNavigationForPhotoMgmt (profilePics : ProfilePics) : any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics) && profilePics.unFilteredKvPhotoArr.length > 0\r\n // ) {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)) {\r\n // this.profilePics = profilePics;\r\n // debugger;\r\n // this.photoPrivacyService.displayUnFilteredKvPhotosOfProfilePics(this.profilePics);\r\n\r\n // // set the primaryPhoto only if the signedInUser changed the primary photo: \r\n // // Note: Listener at PhotoMgmtComponent will execute executePhotoMgmtPrimaryAction();\r\n // // ------------------------------------------------------------------------\r\n // if (this.profilePics.isPhotoUploadSuccessful) {\r\n // EmitterSubjectService.emitPhotoMgmtPrimaryAction(true);\r\n // }\r\n // }\r\n // return this.profilePics;\r\n // }\r\n // return this.profilePics;\r\n // }\r\n // ----------------------------------------------------------------\r\n // Note: This method will display the paged-photo-navigation,\r\n // as well as display them on the background\r\n // TODO: Intend to deprecate:\r\n // ------------------------------------------------------------------\r\n public executeProfilePicsNavigation (profilePics : ProfilePics) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics) && profilePics.unFilteredKvPhotoArr.length > 0\r\n ) {\r\n\r\n // if filteredKvPhoto is not present or empty, create them:\r\n // -------------------------------------------------------- \r\n debugger;\r\n let filteredPPics = this.photoPrivacyService.filterAndSortProfilePics(profilePics);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)) {\r\n profilePics = filteredPPics;\r\n }\r\n }\r\n // if filteredData exists, then just display:\r\n // ------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics))\r\n {\r\n if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.profileKvPhotoArr) && profilePics.profileKvPhotoArr.length > 0) ||\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.filteredKvPhotoArr) && profilePics.filteredKvPhotoArr.length > 0))\r\n {\r\n // debugger;\r\n this.profilePics = this.executeProfilePicsNavigationCoreTasks(profilePics);\r\n }\r\n }\r\n return this.profilePics;\r\n }\r\n // ------------------------------------------------------------------\r\n // TODO: Intend to deprecate:\r\n // ------------------------------------------------------------------\r\n public executeProfilePicsNavigationCoreTasks (profilePics : ProfilePics) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)) {\r\n this.profilePics = profilePics;\r\n debugger;\r\n this.photoPrivacyService.displayFilteredKvPhotosOfProfilePics(this.profilePics);\r\n\r\n \r\n // set the primaryPhoto only if the signedInUser changed the primary photo: \r\n // Note: Listener at PhotoMgmtComponent will execute executePhotoMgmtPrimaryAction();\r\n // ------------------------------------------------------------------------\r\n EmitterSubjectService.emitPhotoMgmtPrimaryAction(true);\r\n \r\n }\r\n\r\n return this.profilePics;\r\n }\r\n \r\n \r\n // ------------------------------------------------------------\r\n // Note: this should be called for when ProfileImageArr is completed with data.\r\n // ------------------------------------------------------------\r\n // TODO: Intend to deprecate:\r\n // ------------------------------------------------------------------\r\n\r\n public executeServerProfilePicsTasks (profilePics : ProfilePics) : any {\r\n // debugger;\r\n let filteredPPics : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)) {\r\n this.photoPrivacyService.filterAndSortProfilePics(profilePics).then(result => {\r\n filteredPPics = result;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(filteredPPics)) {\r\n this.profilePics = filteredPPics;\r\n\r\n debugger;\r\n // The following will display both navigation and background pics:\r\n // ---------------------------------------------------------------\r\n let rPPics = this.executeProfilePicsNavigation(this.profilePics);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(rPPics)) {\r\n this.profilePics = rPPics;\r\n\r\n // debugger;\r\n this.dictionaryService.profilePicsDictionary.set(this.profilePics.sitUserId, this.profilePics);\r\n\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.profilePicsDictionary, 'profilePics', this.loginSuccess.signedInUserId);\r\n\r\n // Note: create boxNonce from this.profilePics\r\n // Following is to avoid the error: TypeError: cyclic object value\r\n // JSON.stringify( circularReference, getCircularReplacer() );\r\n\r\n //let salted = SlakezSaltServiceStatic.boxSalt( JSON.stringify( this.profilePics, StringServiceStatic.getCircularReplacer() ) );\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( salted ) )\r\n // {\r\n // this.boxNonceEntity = new BoxNonceEntity();\r\n // this.boxNonceEntity.box = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( salted.box );\r\n // this.boxNonceEntity.nonce = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( salted.nonce );\r\n // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // this.boxNonceEntity.id = this.profilePics.sitUserId;\r\n // this.boxNonceEntity.key = this.boxNonceEntity.id.toString();\r\n // this.boxNonceEntity.entityName = 'ProfilePic';\r\n // this.boxNonceEntity.sitUserId = this.profilePics.sitUserId;\r\n // this.triageAllDataForIndexedDbAndDictionaryService.saveProfilePicsDictionaryToIndexedDb( this.boxNonceEntity );\r\n\r\n // }\r\n return this.profilePics;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n })\r\n }\r\n else return null;\r\n }\r\n // ----------------------------------------------------------------------------------------------\r\n public getProfilePicsFromProfilePicsDictionary (situserId : number) : Promise {\r\n // debugger;\r\n let date = new Date();\r\n let pPics = new ProfilePics();\r\n let sitUserId = situserId;\r\n return new Promise((resolve, reject) => {\r\n if (sitUserId > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.dictionaryService.profilePicsDictionary) && this.dictionaryService.profilePicsDictionary.size > 0) {\r\n pPics = this.dictionaryService.profilePicsDictionary.get(sitUserId) as ProfilePics;\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId === sitUserId) {\r\n resolve(pPics);\r\n }\r\n else {\r\n reject(date.getTime() + ': createProfilePicsFromDictionary : ' + sitUserId + ') result returned a null or undefined.');\r\n }\r\n }).catch((err) => {\r\n this.message = ': promise rejected for createProfilePicsFromDictionary(sitUserId:\\'' + sitUserId + '\\');\\n Error message: ' + err;\r\n console.log(date.getTime() + this.message);\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this process is deprecated since we have a new system for\r\n // indexedDb save and retrieval of all data.\r\n // ---------------------------------------------------------------\r\n public getProfilePicsFromDictionaryOrSitUser ( sitUserId: number ): ProfilePics\r\n {\r\n let tProfilePics: ProfilePics = new ProfilePics();\r\n if ( sitUserId > 0 )\r\n {\r\n // TODO: uncomment after implementing myProfilePicsDictionary\r\n // ----------------------------------------------------------\r\n // at first get the signedInUser profilePics if applicable:\r\n // if ( sitUserId === this.loginSuccess.signedInUserId )\r\n // {\r\n // if ( this.dictionaryService.myProfilePicsDictionary.size() > 0 )\r\n // {\r\n // debugger;\r\n // tProfilePics = this.dictionaryService.myProfilePicsDictionary.getValue( this.loginSuccess.signedInUserId ) as ProfilePics;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics.profileImageArr )\r\n // && tProfilePics.profileImageArr.length > 0 )\r\n // {\r\n // // debugger;\r\n // return this.profilePics = this.memberService.profilePics = tProfilePics;\r\n // }\r\n // }\r\n // }\r\n // ----------------------------------------------------------\r\n\r\n // debugger;\r\n if ( this.profilePics.profileImageArr.length === 0 && this.dictionaryService.profilePicsDictionary.size > 0 )\r\n {\r\n // debugger;\r\n tProfilePics = this.dictionaryService.profilePicsDictionary.get( sitUserId ) as ProfilePics;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics.profileImageArr )\r\n && tProfilePics.profileImageArr.length > 0 )\r\n {\r\n // debugger;\r\n this.profilePics = this.memberService.profilePics = tProfilePics;\r\n return this.profilePics;\r\n }\r\n else\r\n {\r\n let tSitUser = EmitterSubjectService.getSitUserModel();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tSitUser ) )\r\n {\r\n if ( tSitUser.sitUserId === sitUserId )\r\n {\r\n // debugger;\r\n return this.createProfilePicsFromSitUser( tSitUser );\r\n }\r\n }\r\n return new ProfilePics();\r\n }\r\n }\r\n // debugger;\r\n // if the profilePicsDictionary does not contain user's pics,\r\n // get the sitUser.primaryImage and set it to profilePics's KvPhotoArr as well as ProfileImageArr\r\n else\r\n {\r\n let tSitUser = EmitterSubjectService.getSitUserModel();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tSitUser ) )\r\n {\r\n if ( tSitUser.sitUserId === sitUserId )\r\n {\r\n // debugger;\r\n return this.createProfilePicsFromSitUser( tSitUser );\r\n }\r\n }\r\n return new ProfilePics();\r\n }\r\n }\r\n else return new ProfilePics();\r\n }\r\n // ----------------------------------------------------------------------------------------------\r\n //public getProfilePicsFromServer (situserId : number) : Observable {\r\n // // debugger;\r\n // let sitUserId = situserId;\r\n // let date = new Date();\r\n // return new Observable((subscriber) => {\r\n // if (sitUserId > 0) {\r\n // // this.executeAfterGettingSitUser(sitUserId).then(result => {\r\n // // this.photoBnService.getAllPhotoOfUsersBySitUserIdPromise(sitUserId).then(result => {\r\n // // debugger;\r\n // this.photoBnService.getAllPhotosOfUserBySitUserIdObservable(sitUserId).subscribe(result => {\r\n // if (result) {\r\n\r\n // // debugger;\r\n // this.profilePics = result as ProfilePics;\r\n // this.profilePics.sitUserId = sitUserId;\r\n // // debugger;\r\n // // this.isMyProfile = true;\r\n // // EmitterSubjectService.emitIsMyProfile(this.isMyProfile);\r\n\r\n // // this.profilePics = this.displayProfilePicsView(this.profilePics);\r\n\r\n // // debugger;\r\n // /* return this.profilePics;*/\r\n\r\n // // OR\r\n // // this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profilePics.unFilteredKvPhotoArr[ 0 ], this.profilePics.unFilteredKvPhotoArr);\r\n // // debugger;\r\n // // // this.pagerVKvPhotoNavService.executePagedItemsAndGlyphMenuTasks(this.pagerVKvPhotoNav).then(data => {\r\n // // this.pagerVKvPhotoNavService.executePagerVKvPhotoNavKvPhotoTasks(this.pagerVKvPhotoNav).then(data => {\r\n // // this.pagerVKvPhotoNav = data;\r\n // // debugger;\r\n // // this.bias.selectCurrentElemDeselctOthersForKvPhoto(this.pagerVKvPhotoNav.pagedItems, this.pagerVKvPhotoNav.currentItem);\r\n\r\n // // this.glyphiconMenuService.displayGlyphiconMenus(this.profilePics.sitUserId).then(data1 => {\r\n // // debugger;\r\n\r\n // // this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = data1;\r\n // // });\r\n // // -----------------------------------------------------------\r\n // // NOTE: the following displays the PhotoMgmtGlyphiconMenu:\r\n // // -----------------------------------------------------------\r\n // // debugger;\r\n // // this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n // // EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n // // -----------------------------------------------------------\r\n // // debugger;\r\n // // return this.profilePics;\r\n // // });\r\n // // debugger;\r\n // subscriber.next(this.profilePics);\r\n\r\n // }\r\n // else {\r\n // console.log(date.getTime() + ': createProfilePicsFromServer(sitUserId : ' + sitUserId + ') result returned a null value: ' + result);\r\n // }\r\n // }) //.catch((err) => {\r\n // // this.message = date.getTime() + ': Error occured in createProfilePicsFromServer.getAllPhotosOfUserBySitUserIdObservable(sitUserId:' + sitUserId + '); Error message: ' + err;\r\n // // console.log(this.message);\r\n // //});\r\n // }\r\n // else {\r\n // console.log(date.getTime() + ': createProfilePicsFromServer(sitUserId : ' + sitUserId + ') could not be executed since sitUserId==0;');\r\n // }\r\n // })// .catch((err) => console.error(date.getTime() + ': promise of createProfilePicsFromServer(sitUserId : ' + sitUserId + ') has error: ' + err));\r\n //}\r\n // ---------------------------------------------------------------\r\n // Note: This method gets the profilePics unencrypted from the server\r\n // ---------------------------------------------------------------\r\n // TODO: Intend to deprecate:\r\n // ------------------------------------------------------------------\r\n public getProfilePicsOvertly ( sitId: number ): any\r\n {\r\n if ( sitId > 0 )\r\n {\r\n this.httpService.postObservable( '/Member/GetProfilePicsOpenly', { sitUserId: sitId }, 'json2text' ).subscribe( result =>\r\n {\r\n if ( result )\r\n {\r\n // debugger;\r\n const profilePicFiles = result;\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profilePicFiles )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profilePicFiles.files )\r\n && profilePicFiles.files.length > 0 )\r\n {\r\n\r\n // let images = [];\r\n // profilePicFiles.files.map(e => {\r\n // let imageString = 'data:image/png;base64,' + e.FileContents;\r\n // images.push(imageString);\r\n // });\r\n // this.profilePics.images = images;\r\n // return this.executeProfilePicFilesTasks(profilePicFiles);\r\n }\r\n }\r\n } );\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public getCounters () : Counters {\r\n return this.counters;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getProfileImageArr () : ProfileImage[] {\r\n return this.profileImageArr;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setProfileImageArr (value : ProfileImage[]) : any {\r\n this.profileImageArr = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public getProfilePics () : ProfilePics {\r\n return this.profilePics;\r\n }\r\n\r\n // ---------------------------------------------------------------------------------\r\n public setCounters (value : Counters) : any {\r\n this.counters = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setProfilePics (value : ProfilePics) : any {\r\n this.profilePics = value;\r\n return true;\r\n }\r\n // ----------------------------------------------------------------\r\n setupDictionaryProfilePicsForViewMember (pPics : ProfilePics, sitUser : SitUser) : ProfilePics | any {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) || pPics.sitUserId === 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) || sitUser.sitUserId > 0) {\r\n this.profilePics = CopyServiceStatic.createProfilePicsModelFromSitUser(sitUser);\r\n }\r\n }\r\n else this.profilePics = pPics;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics)) {\r\n let dKvPhotoArr = this.dictionaryService.getUserKvPhotoArrFromKvPhotoDictionary(sitUser.sitUserId);\r\n // debugger;\r\n\r\n // filter the unFiltered kvPhotoArr:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dKvPhotoArr) && dKvPhotoArr.length > 0) {\r\n let tFilteredKvPhotoArr = this.photoPrivacyService.filterAndSortProfileKvPhotoArr(dKvPhotoArr);\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tFilteredKvPhotoArr) && tFilteredKvPhotoArr.length > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profilePics.filteredKvPhotoArr)\r\n && this.profilePics.filteredKvPhotoArr.length === 0) {\r\n this.profilePics.filteredKvPhotoArr = tFilteredKvPhotoArr;\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n this.profilePics.filteredKvPhotoArr = [ this.profilePics.filteredKvPhotoArr, ...tFilteredKvPhotoArr ];\r\n // debugger;\r\n this.profilePics.filteredKvPhotoArr = ArraySupportServiceStatic.makeArrayOfUniqElements(this.profilePics.filteredKvPhotoArr);\r\n // debugger;\r\n }\r\n\r\n // debugger;\r\n this.dictionaryService.updateDictionary(this.profilePics, \"ProfilePics\", this.loginSuccess.signedInUserId);\r\n // if primaryPhotoBnId was not found on KvPhotoArr, so add it:\r\n // -----------------------------------------------------------\r\n // debugger;\r\n this.profilePics = this.pagerSupportService.updateProfilePicsArraysWithPrimaryKvPhotoIfMissing(this.profilePics);\r\n // debugger;// watch-\r\n }\r\n }\r\n }\r\n return this.profilePics;\r\n }\r\n\r\n // -----------------------------------------------------------\r\n \r\n // ---------------------------------------------------------------\r\n \r\n\r\n // -----------------------------------------------------------\r\n \r\n // ==================================================================\r\n}\r\n// --------------------------------------------------------------------\r\n // --------------------------------------------------------------------------------------\r\n // public getUserPicsOld ( sitUserId: number, userPhotoBnIds: number[] ): Promise\r\n // {\r\n // // TODO: remove after testing/before deployment:\r\n // // --------------------------------------------------------------------------------------\r\n // // Note: 20211224: As of this date, services will not load profilePics from dictionary.\r\n // // The components will get the profilePics directly from the dictionary if needed.\r\n // // --------------------------------------------------------------------------------------\r\n // tProfilePics = this.getDictionaryProfilePics( this.sitUser.sitUserId );\r\n\r\n // // debugger;\r\n // // Case of Dictionary ProfilePics:\r\n // // -------------------------------\r\n // // get the user's profilePics from the dictionary if exists\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfilePics.profileImageArr )\r\n // && tProfilePics.profileImageArr.length > 0 )\r\n // {\r\n // // debugger;\r\n // this.profilePics = tProfilePics;\r\n\r\n // // debugger;\r\n // if ( this.profilePics.sitUserId === this.sitUser.sitUserId )\r\n // {\r\n // // debugger;\r\n // EmitterSubjectService.setProfilePics( this.profilePics );\r\n // this.profilePics = this.createUserAlbumService.displayFilteredKvPhotosOfProfilePics( this.profilePics );\r\n // // debugger;\r\n // }\r\n // }\r\n // debugger;\r\n // Note: Old: returned data was ProfileImage\r\n // -----------------------------------------\r\n // this.photoBnService.getUserPhotoBn( e, sitUserId ).then( pImage =>\r\n // {\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pImage ) )\r\n // {\r\n // this.profilePics = this.dictionaryService.profilePicsDictionary.getValue( pImage.sitUserId ) as ProfilePics;\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics.profileImageArr )\r\n // && this.profilePics.profileImageArr.length > 0 )\r\n // {\r\n // // debugger;\r\n // this.profilePics.sitUserId = sitUserId;\r\n // this.profilePics = this.executeOnProfileImageArrayComplete( this.userPhotoBnIds, this.profilePics );\r\n // }\r\n // else\r\n // {\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics ) )\r\n // {\r\n // this.profilePics = new ProfilePics();\r\n // this.profilePics.sitUserId = sitUserId;\r\n // }\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profilePics.profileImageArr ) )\r\n // {\r\n // this.profilePics.profileImageArr = [];\r\n // }\r\n // // find the index of entry\r\n // let index = this.createUserAlbumService.getIndexOfProfileImageInArr( this.profilePics.profileImageArr, pImage );\r\n\r\n // if ( pImage.sitUserId === sitUserId )\r\n // {\r\n // // debugger;\r\n // if ( index < 0 )\r\n // {\r\n // // debugger;\r\n // this.profilePics.profileImageArr.push( pImage );\r\n // } else\r\n // {\r\n // // debugger;\r\n // this.profilePics.profileImageArr.splice( index, 1, pImage );\r\n // }\r\n // }\r\n // // debugger;\r\n // this.profilePics = this.executeOnProfileImageArrayComplete( this.userPhotoBnIds, this.profilePics );\r\n // }\r\n // }\r\n // // debugger;\r\n // for ( let e of this.profilePics.filteredKvPhotoArr)\r\n // {\r\n // e.value = JsRegExpServiceStatic.stripUrlForImageData( e.value );\r\n // // debugger;\r\n // }\r\n // // debugger;\r\n // EmitterSubjectService.setProfilePics(this.profilePics);\r\n // resolve( this.profilePics );\r\n // } );\r\n // }); \r\n // ---------------------------------------------------------------\r\n/* public executeProfilePicFilesTasks ( ppFiles:ProfilePicFiles ):ProfilePics {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ppFiles)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ppFiles.files)\r\n && ppFiles.files.length > 0) {\r\n //debugger;\r\n //sort the images\r\n this.memberService.profilePics.profileImageArr = this.memberService.sortProfileImageArr(this.memberService.profilePics.profileImageArr);\r\n\r\n //ProfilePics - new Scheme (with KvPhoto model):\r\n //prepare the keyValue-data:\r\n //----------------------------------------------\r\n\r\n let profilePics = this.createProfilePicsFromProfilePicFiles(ppFiles);\r\n\r\n //let tKvPhotoArr = this.copyService.copyProfilePicsToKvPhotoArr(profilePics);\r\n if (this.memberService.profilePics.profileImageArr.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics)) {\r\n const tKvPhotoArr = this.copyService.copyProfilePicsToKvPhotoArr(profilePics);\r\n\r\n this.photoPrivacyService.filterKvPhotoArrayByMemberLockingActivityDictionaryData(tKvPhotoArr).then(data => {\r\n this.memberService.profilePics.filteredKvPhotoArr = data;\r\n });\r\n if (this.filteredKvPhotoArr && this.filteredKvPhotoArr.length > 0) {\r\n //debugger;\r\n EmitterSubjectService.emitProfileImages(this.filteredKvPhotoArr);\r\n //debugger;\r\n return profilePics;\r\n }\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n*/\r\n\r\n // ---------------------------------------------------------------\r\n // public createProfilePicsFromProfilePicFiles ( ppFiles:ProfilePicFiles ):ProfilePics\r\n // {\r\n // const profilePic = new ProfilePics();\r\n // let image:any;\r\n // let tTitle:any;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( ppFiles ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( ppFiles.files ) && ppFiles.files.length > 0 )\r\n // {\r\n // // ----------------------------------\r\n // profilePic.cryptUserKey = ppFiles.cryptUserKey;\r\n // profilePic.date = ppFiles.date;\r\n // profilePic.id = ppFiles.id;\r\n // profilePic.entityName = ppFiles.entityName;\r\n // profilePic.profileId = ppFiles.profileId;\r\n // profilePic.sitUserId = ppFiles.sitUserId;\r\n // profilePic.sitUserKey = ppFiles.sitUserKey;\r\n // // debugger;\r\n // ppFiles.files.map( e =>\r\n // {\r\n // if ( e.length > 0 )\r\n // {\r\n // tTitle = JSON.parse( JSON.stringify( e ) );\r\n // // if (tTitle && tTitle.fileDownloadName) { tTitle.fileDownloadName.toString().Replace(' ', '') };\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e ) && e.toString().length > 0 )\r\n // {\r\n // image = '/profilePics/' + e.toString();\r\n // // debugger;\r\n // // let image = 'url(\\'' + e.image.toString() + '\\')';\r\n // // e.image = image;\r\n // profilePic.images.push( image );\r\n // }\r\n // else if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tTitle ) && tTitle.toString().length > 0 )\r\n // {\r\n // {\r\n // image = '/profilePics/' + tTitle.toString();\r\n // // debugger;\r\n // // let image = 'url(\\'' + e.image.toString() + '\\')';\r\n // // e.image = image;\r\n // profilePic.images.push( image );\r\n // }\r\n // }\r\n // }\r\n // } );\r\n // }\r\n // return profilePic;\r\n // }\r\n// Note: Do not call or uncomment this. The ServerDataMethod takes care of the same task.\r\n// --------------------------------------------------------------------------------------\r\n\r\n// //debugger;\r\n// let emitterUserPhotoIds = EmitterSubjectService.getUserPhotoIds();\r\n// if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tUserPhotoIds) && tUserPhotoIds.length > 0) {\r\n// this.userPhotoIds = emitterUserPhotoIds;\r\n// }\r\n// if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.userPhotoIds)\r\n// && this.userPhotoIds.length > 0\r\n// && this.sitUser?.sitUserId > 0) {\r\n// let tPPics = this.fetchUserPhotoBns(this.userPhotoIds, this.sitUser);\r\n// //debugger;\r\n// if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tPPics)) {\r\n// this.profilePics = tProfilePics;\r\n// this.profilePics = this.createUserAlbumService.executeMemberViewProfilePicsTasks(this.profilePics);\r\n\r\n// isDictionaryProfPicsDataGood = true;\r\n// //debugger;\r\n// }\r\n// }\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { PreferenceService } from './preferenceService.service';\r\nimport { ProfileContentService } from './profileContentService.service';\r\nimport { ProfileInfoService } from './profileInfoService.service';\r\nimport { ProfileNameService } from './profileNameService.service';\r\nimport { ProfilePicsService } from './profilePicsService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProfileServiceService {\r\n \r\n constructor (\r\n private preferenceService : PreferenceService,\r\n private profileContentService : ProfileContentService,\r\n private profileNameService : ProfileNameService,\r\n private profilePicsService : ProfilePicsService,\r\n private profileInfoService : ProfileInfoService,\r\n ) { }\r\n // ------------------------------------------------------------------\r\n setPreferenceService (ps : PreferenceService): void {\r\n this.preferenceService = ps;\r\n }\r\n getPreferenceService () : PreferenceService {\r\n return this.preferenceService;\r\n }\r\n // ------------------------------------------------------------------\r\n setProfileContentService (pcs : ProfileContentService): void {\r\n this.profileContentService = pcs;\r\n }\r\n getProfileContentService () :ProfileContentService {\r\n return this.profileContentService;\r\n }\r\n // ------------------------------------------------------------------\r\n setProfileInfoService (ps : ProfileInfoService) : void {\r\n this.profileInfoService = ps;\r\n }\r\n getProfileInfoService () : ProfileInfoService {\r\n return this.profileInfoService;\r\n }\r\n // ------------------------------------------------------------------\r\n setProfileNameService (pis : ProfileNameService) : void {\r\n this.profileNameService = pis;\r\n }\r\n getProfileNameService () : ProfileNameService {\r\n return this.profileNameService;\r\n }\r\n // ------------------------------------------------------------------\r\n setProfilePicsService ( ps : ProfilePicsService ) : void\r\n {\r\n this.profilePicsService = ps;\r\n }\r\n getProfilePicsService () : ProfilePicsService\r\n {\r\n return this.profilePicsService;\r\n }\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonce } from '../../models/boxNonce/boxNonce.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Content } from '../../models/common/content.model';\r\nimport { EmitOffOnResult } from '../../models/common/emitOffOnResult.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { ModuleComponentLoader } from '../../models/common/moduleComponentLoader.model';\r\nimport { Unit } from '../../models/common/unit.model';\r\nimport { Communication } from '../../models/communication/communication.model';\r\nimport { RemoteDataModel } from '../../models/data/remoteDataModel.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { MemberViewMgmtModel } from '../../models/member/memberViewMgmtModel.model';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { GlyphiconMenuService } from '../GlyphiconService/glypgiconMenuService.service';\r\nimport { CoreServiceService } from '../coreServiceService/coreServiceService.service';\r\nimport { DbServiceService } from '../dbServiceService/dbServiceService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { MemberServiceService } from '../memberServiceService/memberServiceService.service';\r\nimport { AbstractPagerVPhotoNavService } from '../pagerServiceService/abstractPagerVPhotoNavService.service';\r\nimport { PagerServiceService } from '../pagerServiceService/pagerServiceService.service';\r\nimport { PhotoServiceService } from '../photoServiceService/photoServiceService.service';\r\nimport { AbstractProfileService } from '../profileServiceService/abstractProfileService.service';\r\nimport { PreferenceService } from '../profileServiceService/preferenceService.service';\r\nimport { ProfileContentService } from '../profileServiceService/profileContentService.service';\r\nimport { RendererServiceService } from '../rendererServiceService/rendererServiceService.service';\r\nimport { ArrayServiceStatic } from '../staticServices/arrayServiceStatic.service';\r\nimport { CopyServiceStatic } from '../staticServices/commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from '../staticServices/commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from '../staticServices/commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { PagerSupportService } from '../pagerServiceService/pagerSupportService.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProfileTileService extends AbstractProfileService implements OnDestroy {\r\n \r\n // -----------------------------------------------------------\r\n public batchOfIds : number[] = [];\r\n public override boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n public override emitterDestroyed$ : Subject = new Subject();\r\n public isMyProfile = false;\r\n public isPhotoMgmt = false;\r\n public isSingletonUsed = false;\r\n public isViewMember = false;\r\n // public isProfileTileDictionaryCreatedFromIndexDb = false;\r\n public incompleteTilesArr : ProfileTile[] = [];\r\n public override kvAnyArr : KvAny[] = [];\r\n public kvMemActGlyphArrForViewMember : KvMemberActivityGlyph[] = [];\r\n public kvMemActGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = [];\r\n public override loginSuccess : LoginSuccess = new LoginSuccess();\r\n public mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n public override memberViewMgmtModel : MemberViewMgmtModel = new MemberViewMgmtModel();\r\n public override message = '';\r\n public offOnArr : string[] = [ '0' ];\r\n public offOnResult : EmitOffOnResult = new EmitOffOnResult();\r\n public pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n public preference : Preference = new Preference();\r\n public preferenceKvAnyArr : KvAny[] = [];\r\n public profileContent : Content = new Content();\r\n public profileContentKvAnyArr : KvAny[] = [];\r\n public override profileInfo : ProfileInfo = new ProfileInfo();\r\n // Note: to be used to accumulate data from 1. profileTile, 2. profileInfo to 3.profileInfoView\r\n // Note: there could be multiple passes of 1, and 2 on profileInfoPreView before final copy to profileInfoView\r\n public override profileInfoView : ProfileInfo = new ProfileInfo();\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public profileTilesArr : ProfileTile[] = [];\r\n public rdm : RemoteDataModel = new RemoteDataModel()\r\n public override sitUser : SitUser = new SitUser(); // for sending data to the server\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public unit = '';\r\n\r\n\r\n // --------------------------------------------------------------- \r\n constructor (\r\n public abstractPagerVPhotoNavService : AbstractPagerVPhotoNavService,\r\n public coreServiceService : CoreServiceService,\r\n public dbServiceService : DbServiceService,\r\n public dictionaryService : DictionaryService,\r\n public glyphiconMenuService : GlyphiconMenuService,\r\n public memberServiceService : MemberServiceService,\r\n public pagerSupportService : PagerSupportService,\r\n public photoServiceService : PhotoServiceService,\r\n public preferenceService : PreferenceService,\r\n public profileContentService : ProfileContentService,\r\n public rendererServiceService : RendererServiceService,\r\n public router : Router,\r\n ) {\r\n \r\n super(\r\n abstractPagerVPhotoNavService,\r\n coreServiceService,\r\n dbServiceService,\r\n dictionaryService,\r\n glyphiconMenuService,\r\n memberServiceService,\r\n photoServiceService,\r\n preferenceService,\r\n profileContentService,\r\n rendererServiceService,\r\n router\r\n );\r\n //this.bias = rendererServiceService.getBackgroundImageAnimationService();\r\n //this.heartbeatService = this.coreServiceService.getHeartbeatService();\r\n //this.liaisonService = this.coreServiceService.getLiaisonService();\r\n //this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n //this.memberService = memberServiceService.getMemberService();\r\n\r\n //this.pagerSupportService = pagerServiceService.getPagerSupportService();\r\n //this.pagerVKvPhotoNavService = pagerServiceService.getPagerVKvPhotoNavService();\r\n\r\n //this.preferenceService = profileServiceService.getPreferenceService();\r\n //this.profileContentService = profileServiceService.getProfileContentService();\r\n //this.photoBnService = photoServiceService.getPhotoBnService();\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n override ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n return true;\r\n }\r\n // -----------------------------------------------------------\r\n // public nullPromise () : any {\r\n // this.timer = setTimeout(() => {\r\n // // debugger;\r\n // return null;\r\n // }, 500);\r\n // if (this.timer) {\r\n // this.timerArray.push(this.timer);\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n // public saltModel (model) : BoxNonceEntity {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n // // debugger;\r\n // return (this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(model)));\r\n // }\r\n // return new BoxNonceEntity();\r\n // }\r\n // --------------------------------------------------------------\r\n public createProfileTileShellArr (sitIdArr : number[]) : ProfileTile[] {\r\n const pTiles : ProfileTile[] = [];\r\n let i = 0;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitIdArr) && sitIdArr.length > 0) {\r\n let pTile : any;\r\n\r\n for (let e of sitIdArr) {\r\n pTile = this.createProfileTileShell(e) as ProfileTile;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTiles.push(pTile);\r\n if (i === sitIdArr.length) {\r\n return pTiles;\r\n }\r\n }\r\n i++;\r\n };\r\n }\r\n return pTiles;\r\n }\r\n // ---------------------------------------------------------------\r\n public createProfileTileShell (sitId : number) : ProfileTile {\r\n if (sitId > 0) {\r\n const pTile = new ProfileTile();\r\n\r\n pTile.sitUserId = sitId;\r\n pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n return pTile;\r\n }\r\n else {\r\n return new ProfileTile();\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n checkAndSetProfileTileImage (inTile : ProfileTile) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inTile)) {\r\n if (inTile.sitUserId > 0) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inTile.primaryImage) || inTile.primaryImage.length < 5) {\r\n this.photoBnService.getPrimaryPhoto(inTile.sitUserId).then(p => {\r\n // debugger;\r\n if (p && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p.image)) {\r\n inTile.primaryImage = JsRegExpServiceStatic.normalizeImageData(p.image);\r\n // debugger;\r\n }\r\n else {\r\n inTile.primaryImage = \"url('/assets/photos/DefaultImageMale.jpg')\";\r\n }\r\n }, (err) => {\r\n console.log('GetUserPrimaryPhoto failed! @ checkAndSerProfileTimeImage in memberService.');\r\n inTile.primaryImage = \"url('/assets/photos/DefaultImageMale.jpg')\";\r\n // debugger;\r\n })\r\n }\r\n else {\r\n inTile.primaryImage = JsRegExpServiceStatic.normalizeImageData(inTile.primaryImage);\r\n }\r\n }\r\n else {\r\n inTile.primaryImage = \"url('/assets/photos/DefaultImageMale.jpg')\";\r\n // debugger;\r\n }\r\n }\r\n return inTile;\r\n }\r\n // ---------------------------------------------------------------\r\n // create ProfileInfoView from both ProfileTile | ProfileInfo,\r\n // and create profileContentArrKvAny from ProfileInfo.\r\n // ---------------------------------------------------------------\r\n // the following function cover all cases of UserData (not pics) capture including offOn and distance indicators\r\n // and sets all the required UserData into the MemberViewMgmtModel, that is used to populate View.html\r\n // ---------------------------------------------------------------------------------------------------\r\n public createProfileInfoViewAndUpdateProfileTile (pInfo ?: ProfileInfo | any, pTile ?: ProfileTile | any) : any {\r\n let hb : any;\r\n let unit : any;\r\n let index = -1;\r\n let i = 0;\r\n let distanceUnit = new Unit();\r\n this.profileInfo = new ProfileInfo();\r\n this.profileTile = new ProfileTile();\r\n\r\n let model : any;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n pInfo = new ProfileInfo();\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.signedInUserId === 0) {\r\n pInfo.signedInUserId = this.loginSuccess.signedInUserId;\r\n pInfo.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.signedInUserId === 0) {\r\n pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n pTile.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n }\r\n }\r\n // debugger;\r\n // Case: Both ProfileInfo & ProfileTile are present:\r\n // -------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pInfo.sitUserId);\r\n // debugger;\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && pTile.sitUserId > 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pTile.sitUserId);\r\n // debugger;\r\n }\r\n pTile = this.captureHeartbeatDataInProfileTile(hb, pTile);\r\n // debugger;\r\n \r\n this.profileTile.copySourceToDestination(this.profileTile, pTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n this.profileInfo.copySourceToDestination(this.profileInfo, pInfo);\r\n }\r\n\r\n // Case: only ProfileInfo is present:\r\n // ----------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId == 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pInfo.sitUserId);\r\n // debugger;\r\n pTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(pInfo);\r\n pTile = this.captureHeartbeatDataInProfileTile(hb, pTile);\r\n\r\n\r\n // debugger;\r\n this.profileTile = this.profileTile.copySourceToDestination(this.profileTile, pTile);\r\n this.profileInfo = this.profileInfo.copySourceToDestination(this.profileInfo, pInfo);\r\n }\r\n\r\n // Case: only ProfileTile is present:\r\n // --------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId === 0) {\r\n hb = this.dictionaryService.heartbeatDictionary.get(pTile.sitUserId);\r\n // for the offOn indicator:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && hb.sitUSerId > 0) {\r\n debugger;\r\n pTile = this.captureHeartbeatDataInProfileTile(hb, pTile);\r\n }\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n this.profileTile.copySourceToDestination(this.profileTile, pTile);\r\n\r\n pInfo = new ProfileTile().copyToProfileInfo(this.profileTile); // CopyServiceStatic.copyFromProfileTileToProfileInfo(pTile);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n this.profileInfo.copySourceToDestination(this.profileInfo, pInfo);\r\n // debugger;\r\n }\r\n }\r\n }\r\n\r\n // For any of the above cases:\r\n // ===========================\r\n\r\n // we need the profile tile for OffOnComponent.\r\n // So if it is not created or empty, create it from profileInfo:\r\n // -------------------------------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) || this.profileTile.sitUserId === 0) {\r\n this.profileTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(this.profileInfo);\r\n // debugger;\r\n\r\n // update ProfileTile's distance and unit:\r\n // ----------------------------------------\r\n this.profileTile = this.captureDistanceUnitInProfileTile(hb, this.profileTile);\r\n // debugger;\r\n this.profileTile = this.executeBeforeViewInit(this.profileTile, 'profileTile-');\r\n }\r\n\r\n // if Heartbeat's distance is not already calculated:\r\n // --------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n // debugger;\r\n this.profileTile = this.captureDistanceUnitInProfileTile(hb, this.profileTile);\r\n }\r\n\r\n // for the offOn indicator, profileContentArrKvAny, & create profileInfoView:\r\n // --------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n\r\n this.kvAnyArr = this.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n // debugger;\r\n // create profileContentArrKvAny for ContentKeyValueArrComponent:\r\n // --------------------------------------------------------------\r\n this.profileContent = CopyServiceStatic.copyFromProfileInfoToContent(this.profileInfo);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)) {\r\n // debugger;\r\n this.profileContentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent); // TODO: restore\r\n }\r\n }\r\n\r\n // capture data for the preference only from the dictionary!\r\n // we do not get any data from the backend-server in this function.\r\n // ----------------------------------------------------------------\r\n this.preference = this.dictionaryService.preferenceDictionary.get(this.profileInfo.sitUserId) as Preference;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n // debugger;\r\n // isPreferenceSuccess = true;\r\n this.memberService.setPreference(this.preference);\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n }\r\n\r\n // capture data for the profileInfoView:\r\n // ------------------------------------- \r\n this.profileInfoView = this.profileInfoView.copySourceToDestination(this.profileInfoView, pInfo);\r\n // or\r\n // uncomment the line below if a subset of profileInfo is required to be displayed:\r\n // --------------------------------------------------------------------------------\r\n // this.profileInfoView = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n\r\n let tSitUser = EmitterSubjectService.getSitUserModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tSitUser)\r\n && tSitUser.sitUserId === this.profileTile.sitUserId) {\r\n // debugger;\r\n this.sitUser = tSitUser;\r\n this.sitUser.heartbeat = hb;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId === 0) {\r\n this.sitUser = CopyServiceStatic.copyProfileTileToSitUser(this.profileTile);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && this.sitUser.sitUserId == hb.sitUserId\r\n && this.sitUser.heartbeat instanceof Heartbeat\r\n && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser.heartbeat) && this.sitUser.heartbeat.sitUserId === 0)) {\r\n // debugger;\r\n this.sitUser.heartbeat = hb;\r\n }\r\n \r\n // store the computed values into the memberViewMgmtModel:\r\n // -------------------------------------------------------\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel) || this.memberViewMgmtModel.sitUserId == 0) {\r\n // debugger;\r\n this.memberViewMgmtModel = new MemberViewMgmtModel();\r\n }\r\n this.memberViewMgmtModel.populateModelData(this.profileContent, this.preference, this.profileInfo, this.profileInfoView, this.profileTile, this.sitUser, this.preferenceKvAnyArr, this.profileContentKvAnyArr, this.kvAnyArr);\r\n\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel(); \r\n // debugger;\r\n return this.memberViewMgmtModel;\r\n }\r\n // ---------------------------------------------------------------\r\n public captureDataToProfileInfoView (hb : Heartbeat, pTile : ProfileTile, pInfoView : ProfileInfo) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfoView)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n pInfoView.distance = hb.distance.toFixed(2);\r\n pInfoView.unit = hb.unit.length > 0 ? hb.unit : 'm'; // meter\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.signedInUserId > 0) {\r\n pInfoView.signedInUserId = pTile.signedInUserId;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.signedInUserKey)) {\r\n pInfoView.signedInUserKey = pTile.signedInUserKey;\r\n }\r\n\r\n pTile.distance = pInfoView.distance;\r\n pTile.distanceStr = pInfoView.distance + ' ' + pInfoView.unit;\r\n }\r\n }\r\n return pInfoView;\r\n }\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeatTime) && pTile.heartbeatTime === 0)\r\n // ---------------------------------------------------------------\r\n public captureHeartbeatDataInProfileTile (hb : Heartbeat, pTile : ProfileTile) : any {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n\r\n // copy only when heartbeat is a model, not a timestamp:\r\n // -----------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat) && StringServiceStatic.typeCheck(pTile.heartbeatTime) === 'object') {\r\n pTile.heartbeat = CopyServiceStatic.copyHeartbeatIfExists(pTile.heartbeat, hb);\r\n // debugger;\r\n }\r\n\r\n // copy the heartbeatTime if old:\r\n // ------------------------------\r\n if (pTile.heartbeatTime >= 0 && hb?.heartbeatTime >= 0\r\n && pTile.heartbeatTime < hb?.heartbeatTime) {\r\n pTile.heartbeatTime = hb?.heartbeatTime;\r\n }\r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public captureDistanceUnitInProfileTile (hb : Heartbeat, pTile : ProfileTile) : any {\r\n // debugger;\r\n let distanceUnit = new Unit();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n pTile = this.captureHeartbeatDataInProfileTile(hb, pTile);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distance) && hb.distance === 0) {\r\n // compute distance and unit:\r\n distanceUnit = this.heartbeatService.calculateDistance(hb, this.loginSuccess.heartbeat, true); // (dest, origin, isKm)\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)) {\r\n pTile.distanceUnit = distanceUnit;\r\n\r\n // debugger;\r\n this.processDistanceUnitForProfileTileAndProfileInfoView(distanceUnit);\r\n\r\n hb.distance = distanceUnit.distance;\r\n distanceUnit.distanceStr = hb.distanceStr = hb.distance.toFixed(2) + ' ' + distanceUnit.unit;\r\n hb.unit = distanceUnit.unit;\r\n }\r\n }\r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public computeDistanceUnitFromHeartbeatForAfterViewInit (pTile : ProfileTile) : any {\r\n let distanceUnit : Unit = new Unit();\r\n let heartbeat : Heartbeat = new Heartbeat();\r\n\r\n // get the heartbeat of pTile or loginSuccess:\r\n // -------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.heartbeatService)) {\r\n heartbeat = pTile.heartbeat;\r\n }\r\n else if (pTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.heartbeat)\r\n && this.loginSuccess.heartbeat.heartbeatTime > 0) {\r\n heartbeat = this.loginSuccess.heartbeat;\r\n }\r\n }\r\n // debugger;\r\n\r\n distanceUnit = this.heartbeatService.computeDistanceAndUnit(heartbeat);\r\n\r\n // TODO: experimental\r\n pTile.distanceUnit = distanceUnit;\r\n\r\n // if heartbeat is taken from loginSuccess.heartbeat:\r\n // --------------------------------------------------\r\n if (pTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n this.loginSuccess.heartbeat = pTile.heartbeat;\r\n }\r\n\r\n // debugger;\r\n\r\n this.processDistanceUnitForProfileTileAndProfileInfoView(pTile.distanceUnit);\r\n\r\n // debugger;\r\n // Note: update the offOn-indicator and distance for accordionComponent:\r\n EmitterSubjectService.emitUpdateDistanceAndProfileNameAndOffOn(pTile);\r\n\r\n return pTile;\r\n }\r\n else return null;\r\n }\r\n // ===============================================================\r\n // End of All ProfileTile/ProfileInfo methods related to:\r\n // 1) memberViewMgmtComponent\r\n // 2) myProfileViewMgmtComponent\r\n // ===============================================================\r\n // ---------------------------------------------------------------\r\n // create ProfileInfoView from both ProfileTile | ProfileInfo,\r\n // and create profileContentArrKvAny from ProfileInfo.\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // NOT in user now, but DO NOT DELETE THIS.\r\n // ---------------------------------------------------------------\r\n //public createProfileInfoViewAndUpdateProfileTile3 (pInfo : ProfileInfo, pTile : ProfileTile) : any {\r\n // let hb : any;\r\n // let unit : any;\r\n // let index = -1;\r\n // let i = 0;\r\n // let distanceUnit = new Unit();\r\n\r\n // let model : any;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // if (pInfo.signedInUserId === 0) {\r\n // pInfo.signedInUserId = this.loginSuccess.signedInUserId;\r\n // pInfo.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n // }\r\n // if (pTile.signedInUserId === 0) {\r\n // pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n // pTile.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n // }\r\n // }\r\n\r\n // // Case: Both ProfileInfo & ProfileTile are present:\r\n // // -------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pInfo.sitUserId);\r\n // // debugger;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && pTile.sitUserId > 0) {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pTile.sitUserId);\r\n // // debugger;\r\n // }\r\n // this.profileInfoView.copy(pInfo); // = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // this.profileTile = this.profileTile.copy(pTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n // }\r\n\r\n // // Case: only ProfileInfo is present:\r\n // // ----------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId == 0) {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pInfo.sitUserId);\r\n // // debugger;\r\n // this.profileTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(pInfo);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n // this.profileTile.heartbeat = CopyServiceStatic.copyHeartbeatIfExists(this.profileTile.heartbeat, hb);\r\n // if (this.profileTile.heartbeat.prevHeartbeat >= 0 && hb?.heartbeatTime >= 0\r\n // && this.profileTile.heartbeat.prevHeartbeat < hb?.heartbeatTime) {\r\n // this.profileTile.heartbeat.prevHeartbeat = hb?.heartbeatTime;\r\n // }\r\n // }\r\n // this.profileTile.signedInUserId = pTile.signedInUserId;\r\n // this.profileTile.signedInUserKey = pTile.signedInUserKey;\r\n\r\n // this.profileInfoView.copy(pInfo); // = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // }\r\n\r\n // // Case: only ProfileTile is present:\r\n // // --------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo ) && pInfo.sitUserId === 0 \r\n // {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pTile.sitUserId);\r\n // // for the offOn indicator:\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n // if (pTile.heartbeat.prevHeartbeat >= 0 && hb.heartbeatTime >= 0 && pTile.heartbeat.prevHeartbeat < hb.heartbeatTime) {\r\n // pTile.heartbeat.prevHeartbeat = hb.heartbeatTime;\r\n // }\r\n // }\r\n // // debugger;\r\n // pInfo = this.profileTile.copyToProfileInfo(); // CopyServiceStatic.copyFromProfileTileToProfileInfo(pTile);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n // this.profileInfoView.copy(pInfo); // = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // }\r\n // this.profileTile = this.profileTile.copy(pTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n\r\n // if (pTile.signedInUserId > 0) {\r\n // this.profileTile.signedInUserId = pInfo.signedInUserId = this.profileInfoView.signedInUserId = pTile.signedInUserId;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.signedInUserKey)) {\r\n // this.profileTile.signedInUserKey = pInfo.signedInUserKey = this.profileInfoView.signedInUserKey = pTile.signedInUserKey;\r\n // }\r\n // }\r\n\r\n // // for the offOn indicator, profileContentArrKvAny, & create profileInfoView:\r\n // // TODO: Check if the pInfo is valid()?\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0) {\r\n // // create profileContentArrKvAny for ContentKeyValueArrComponent:\r\n // // --------------------------------------------------------------\r\n // this.profileContent = CopyServiceStatic.copyFromProfileInfoToContent(pInfo);\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileContent)) {\r\n // this.profileContentKvAnyArr = this.kvArrayService.getProfileContentToKvArrArr(this.profileContent); // TODO: restore\r\n // }\r\n // }\r\n\r\n // // if Heartbeat's distance is not already calculated:\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distance)) {\r\n // if (hb.distance === 0) {\r\n // // compute distance and unit:\r\n // distanceUnit = this.heartbeatService.calculateDistance(hb, this.loginSuccess.heartbeat, true); // (dest, origin, isKm)\r\n // // debugger;\r\n // this.processDistanceUnitForProfileTileAndProfileInfoView(distanceUnit);\r\n\r\n // hb.distance = distanceUnit.distance;\r\n // hb.distanceStr = hb.distance.toFixed(2) + ' ' + distanceUnit.unit;\r\n // hb.unit = distanceUnit.unit;\r\n // this.profileTile.heartbeat = hb;\r\n // this.profileTile.distanceUnit = distanceUnit;\r\n // }\r\n // }\r\n // else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n // this.profileInfoView.distance = hb.distance.toFixed(2);\r\n // this.profileInfoView.unit = hb.unit.length > 0 ? hb.unit : 'meter';\r\n // this.profileTile.distance = this.profileInfoView.distance;\r\n // this.profileTile.distanceStr = this.profileInfoView.distance + ' ' + this.profileInfoView.unit;\r\n // this.profileTile.heartbeat = hb;\r\n // this.profileTile.distanceUnit = distanceUnit;\r\n // // debugger;\r\n // }\r\n\r\n // // we need the profile tile for OffOnComponent. So if it is not created or empty, create it from profileInfo:\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) || this.profileTile.sitUserId === 0) {\r\n // this.profileTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(pInfo); // TODO: from CopySeriviceStatic to ProfileInfo model\r\n // // debugger;\r\n\r\n // // TODO: update ProfileTile's distance and unit:\r\n // // debugger;\r\n // let tpTile = this.executeBeforeViewInit(this.profileTile, 'profileTile-');\r\n // this.profileTile = this.profileTile.copyIfExists(pTile); //CopyServiceStatic.copyProfileTileIfExists(this.profileTile, tpTile);\r\n\r\n\r\n // // debugger;\r\n // this.memberViewMgmtModel.populateModelData(this.profileInfo, this.profileInfoView, this.profileTile, this.profileContentKvAnyArr, this.preferenceKvAnyArr, this.kvAnyArr);\r\n // }\r\n // // debugger;\r\n // return this.profileInfoView;\r\n //}\r\n\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // Note: This method handles following multiple tasks:\r\n // 1) sets up ProfileTile model with heartbeat info and emits the profileTile\r\n // 2) sets up ProfileInfoView model with heartbeat info and emits the profileInfoView\r\n // 4) creates ProfileContentArrKayValue array and emits the profileContentArrKayValue array\r\n // 5) it returns only ProfileInfoView at the end\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n // NOT in user now, but DO NOT DELETE THIS.\r\n // ---------------------------------------------------------------\r\n //public createProfileInfoViewAndUpdateProfileTile2 (pInfo : ProfileInfo, pTile : ProfileTile) : any {\r\n // let tArrKvAny : any;\r\n // let hb : any;\r\n // let unit : any;\r\n // let index = -1;\r\n // let i = 0;\r\n // let distanceUnit = new Unit();\r\n\r\n // let model : any;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0) {\r\n // if (pInfo.signedInUserId === 0) {\r\n // pInfo.signedInUserId = this.loginSuccess.signedInUserId;\r\n // pInfo.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n // }\r\n // if (pTile.signedInUserId === 0) {\r\n // pTile.signedInUserId = this.loginSuccess.signedInUserId;\r\n // pTile.signedInUserKey = this.loginSuccess.signedInUserKey;\r\n // }\r\n // }\r\n\r\n // // Case: Both ProfileInfo & ProfileTile are present:\r\n // // -------------------------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pInfo.sitUserId);\r\n // // debugger;\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && pTile.sitUserId > 0) {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pTile.sitUserId);\r\n // // debugger;\r\n // }\r\n // this.profileInfoView = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // this.profileTile = CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n // }\r\n\r\n // // Case: only ProfileInfo is present:\r\n // // ----------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId == 0) {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pInfo.sitUserId);\r\n // // debugger;\r\n // this.profileTile = CopyServiceStatic.copyFromProfileInfoToProfileTile(pInfo);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n // this.profileTile.heartbeat = CopyServiceStatic.copyHeartbeatIfExists(this.profileTile.heartbeat, hb);\r\n // if (this.profileTile.heartbeat.prevHeartbeat >= 0 && hb?.heartbeatTime >= 0 && this.profileTile.heartbeat.prevHeartbeat < hb?.heartbeatTime) {\r\n // this.profileTile.heartbeat.prevHeartbeat = hb?.heartbeatTime;\r\n // }\r\n // }\r\n // this.profileTile.signedInUserId = pTile.signedInUserId;\r\n // this.profileTile.signedInUserKey = pTile.signedInUserKey;\r\n\r\n // this.profileInfoView = CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // }\r\n\r\n // // Case: only ProfileTile is present:\r\n // // --------------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo ) && pInfo.sitUserId === 0 \r\n // {\r\n // hb = this.dictionaryService.heartbeatDictionary.getValue(pTile.sitUserId);\r\n // // for the offOn indicator:\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n // if (pTile.heartbeat.prevHeartbeat >= 0 && hb.heartbeatTime >= 0 && pTile.heartbeat.prevHeartbeat < hb.heartbeatTime) {\r\n // pTile.heartbeat.prevHeartbeat = hb.heartbeatTime;\r\n // }\r\n // }\r\n // // debugger;\r\n // pInfo = this.profileTile.copyToProfileInfo(); // CopyServiceStatic.copyFromProfileTileToProfileInfo(pTile);\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n // this.profileInfoView.copy(pInfo); // CopyServiceStatic.copyFromProfileInfoToProfileInfoView(pInfo);\r\n // }\r\n // this.profileTile = this.profileTile.copy(pTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, pTile);\r\n\r\n // if (pTile.signedInUserId > 0) {\r\n // this.profileTile.signedInUserId = pInfo.signedInUserId = this.profileInfoView.signedInUserId = pTile.signedInUserId;\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.signedInUserKey)) {\r\n // this.profileTile.signedInUserKey = pInfo.signedInUserKey = this.profileInfoView.signedInUserKey = pTile.signedInUserKey;\r\n // }\r\n // }\r\n\r\n // // for profileContentArrKvAny, & create profileInfoView:\r\n // this.profileContentKvAnyArr = this.profileContentService.createProfileContentKvAnyArr(pInfo); // will emit profileContentKvAnyArr\r\n\r\n // let tProfileInfoView = this.liaisonService.processProfileInfoForHeartbeat(hb); // will emit profileInfoView\r\n // this.profileInfoView.copy(tProfileInfoView); // = CopyServiceStatic.copyProfileInfoIfExists(this.profileInfoView, tProfileInfoView);\r\n\r\n // // debugger;\r\n // let tpTile = this.executeBeforeViewInit(this.profileTile, 'profileTile-');\r\n // this.profileTile = this.profileTile.copy(tpTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, tpTile);\r\n\r\n // let tProfileTile = this.processProfileTileForHeartbeat(hb); // will emit profileTile\r\n // this.profileTile = this.profileTile.copy(tProfileTile); // CopyServiceStatic.copyProfileTileIfExists(this.profileTile, tProfileTile);\r\n\r\n // // debugger;\r\n // this.memberViewMgmtModel.populateModelData(this.profileInfo, this.profileInfoView, this.profileTile, this.profileContentKvAnyArr, this.preferenceKvAnyArr, this.kvAnyArr);\r\n // // debugger;\r\n // return this.profileInfoView;\r\n //}\r\n // --------------------------------------------------------------\r\n public determineUnit (pTile : ProfileTile) : string {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn)) {\r\n if (pTile.distance > 999) {\r\n pTile.distance = pTile.distance / 1000;\r\n pTile.unit = this.unit = 'km';\r\n } else {\r\n pTile.unit = this.unit = 'm';\r\n }\r\n return this.unit;\r\n }\r\n else return 'm';\r\n }\r\n // ===============================================================\r\n // Begin of All ProfileTile/ProfileInfo methods related to:\r\n // 1) memberViewMgmtComponent\r\n // 2)myProfileViewMgmtComponent\r\n // ===============================================================\r\n // ---------------------------------------------------------------\r\n // Note: This method also has a copy in MemberViewMgmtComponent\r\n // It is kept there because from the service, this method does not\r\n // update/display user's profileInfo data.\r\n // ---------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n // NOT in user now, but DO NOT DELETE THIS.\r\n // ---------------------------------------------------------------\r\n public executeAllTasks (pInfo : ProfileInfo, pTile : ProfileTile) : MemberViewMgmtModel | any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n this.profileInfo = pInfo;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n // debugger;\r\n this.executeProfileInfoTasks(this.profileInfo).subscribe(data => {\r\n this.profileInfo = data;\r\n this.kvAnyArr = this.liaisonService.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n // debugger;\r\n this.profileContentKvAnyArr = this.profileContentService.createProfileContentKvAnyArr(this.profileInfo);\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(this.profileInfo, this.profileContentKvAnyArr, this.kvAnyArr);\r\n this.profileInfoView.copy(this.profileInfo);\r\n });\r\n // debugger;\r\n this.preference = this.dictionaryService.preferenceDictionary.get(this.profileInfo.sitUserId) as Preference;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference)) {\r\n // debugger;\r\n this.memberService.setPreference(this.preference);\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(null, this.preference, this.profileInfo, this.profileInfoView, this.profileTile, null, this.profileContentKvAnyArr, this.preferenceKvAnyArr, this.kvAnyArr);\r\n }\r\n }\r\n return this.memberViewMgmtModel;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n \r\n // ----------------------------------------------------------------------------------------------\r\n // Note: this method will capture all UserData ( not pics) via the\r\n // promise of executeProfileInfoTasks():\r\n // ----------------------------------------------------------------------------------------------\r\n // Note: This does NOT violate SOLID principal in a sense that preference is obtained from the dictionary in\r\n // executeAllNonProfileTileTasks() instead of getting it from the backend-server.\r\n // However, if the user's preference data is not in the dictionary, it fails at this task.\r\n //\r\n // It is noteworthy that both server-based data as well as dictionary-based data use executeAllNonProfileTileTasks().\r\n // Since server-data upon arrival is saved into the respective dictionary, it successfully executes all tasks\r\n // for the server-data, as well as dictionary-data when present.\r\n //\r\n // When executeAllNonProfileTileTasks() succesfully executes all tasks, \r\n // it retuns a ProfileInfoView, otherwise it returns ProfileInfo.\r\n //\r\n // we check if the preference was successfully processed to determine what was the return value:\r\n // if preferenceKvAnyArr was created, then it returned profileInfoView, else profileInfo:\r\n // ----------------------------------------------------------------------------------------------\r\n // ProfileTileTasks are stand-alone and should be called only for ProfileTile-data.\r\n // This method should NOT call/use executeProfileTileTasks(), which renders user's pics only\r\n // via VerticalMenues.\r\n //\r\n // In this method the following tasks are executed:\r\n // profileInfoTasks, profileContentTasks and preferencesTasks.\r\n //\r\n // executeProfileTileTasks() and exexuteasAllNonProfileTileTasks() are\r\n // mutually exclusive/complementary.\r\n // ---------------------------------------------------------------\r\n public executeAllNonProfileTileTasks (pinfo : ProfileInfo) : Observable {\r\n \r\n return new Observable((subscriber) => {\r\n let pInfo = pinfo;\r\n let date = new Date();\r\n\r\n // debugger;\r\n this.memberViewMgmtModel = EmitterSubjectService.getMemberViewMgmtModel();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n this.profileInfo = pInfo;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n // debugger;\r\n this.executeProfileInfoTasks(this.profileInfo).subscribe(data => {\r\n this.memberViewMgmtModel = data;\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n // debugger;\r\n });\r\n // try to get the preference data from the dictionary only, NOT from the server:\r\n // -----------------------------------------------------------------------------\r\n if (this.dictionaryService.preferenceDictionary.has(this.profileInfo.sitUserId)) {\r\n this.preference = this.dictionaryService.preferenceDictionary.get(this.profileInfo.sitUserId) as Preference;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.preference) && this.preference.sitUserId > 0) {\r\n // debugger;\r\n this.memberService.setPreference(this.preference);\r\n this.preferenceKvAnyArr = this.kvArrayService.getPeferenceToArrKvAny(this.preference);\r\n\r\n // debugger;\r\n this.memberViewMgmtModel.populateModelData(null, this.preference, pInfo, pInfo, null, null, this.preferenceKvAnyArr, null, null);\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n }\r\n }\r\n // TODO: uncomment after testing\r\n //else {\r\n // this.preferenceService.getPreference(pInfo.sitUserId).subscribe(result => {\r\n // this.preference = result;\r\n // this.preferenceService.executePreferenceTasks(pInfo.sitUserId).subscribe(data => {\r\n // this.preferenceKvAnyArr = data;\r\n // });\r\n // // debugger;\r\n // this.memberViewMgmtModel.populateModelData(null, this.preference, pInfo, pInfo, null, null, this.preferenceKvAnyArr, null, null);\r\n // subscriber.next(this.memberViewMgmtModel);\r\n // subscriber.complete();\r\n // })\r\n //}\r\n // debugger;\r\n // ------------------------------------------------------\r\n this.profileContentService.fetchAndExecuteProfileContentTasks(this.profileInfo).then(result => {\r\n // debugger;\r\n if (result) {\r\n // debugger;\r\n this.memberViewMgmtModel = result;\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n }\r\n else {\r\n // debugger;\r\n console.log(date.getTime() + ': displayUserPicsFromDictionary()=>profileContentService.fetchAndExecuteProfileContentTasks() was rejected.-1');\r\n }\r\n }).catch(error => {\r\n // debugger;\r\n console.log(date.getTime() + ': displayUserPicsFromDictionary()=>profileContentService.fetchAndExecuteProfileContentTasks() returned a null result.');\r\n })\r\n\t\t\t\t // ------------------------------------------------------\r\n //subscriber.next(this.memberViewMgmtModel);\r\n //subscriber.complete();\r\n }\r\n \r\n } \r\n })\r\n } \r\n // ---------------------------------------------------------------\r\n public executeBeforeViewInit (pTile : ProfileTile, sourcePrefix : string) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n pTile.pElemId = sourcePrefix + pTile.sitUserId.toString();\r\n\r\n pTile = this.oneTimeProfileTileSetup(pTile);\r\n\r\n // setup for offOn indicator:\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.source)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourcePrefix)\r\n ) { pTile.source = sourcePrefix + pTile.sitUserId; }\r\n\r\n // TODO: place this code-segment to image-rendering-phase at the profileTile:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage)) {\r\n pTile.isImageRendered = true;\r\n pTile.isTileSetupComplete = true;\r\n // debugger;\r\n }\r\n // debugger;\r\n return pTile;\r\n }\r\n else { return null; }\r\n }\r\n // ---------------------------------------------------------------\r\n // Objective: asyncly arrived ProfileInfo should create profileInfoView, and\r\n // update ProfileTile's { distance, unit & source }.\r\n // Then it should create arrKvAny and profileContentArrKvAny that\r\n // are used in the view-template.\r\n // ---------------------------------------------------------------\r\n // Note: this method could not be moved to ProfileInfoService.ts\r\n // because it is tightly coupled with ProfileTileService.\r\n //----------------------------------------------------------------\r\n // Note: This method also has a copy in MemberViewMgmtComponent and ProfileInfoService\r\n // It is kept there because from the service, this method does not\r\n // update/display user's profileInfo data.\r\n // ---------------------------------------------------------------\r\n public executeProfileInfoTasks (pinfo : ProfileInfo) : Observable {\r\n let pInfo = pinfo;\r\n return new Observable((subscriber) => {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo) && pInfo.sitUserId > 0) {\r\n\r\n // The folloing method is good and fast:\r\n // -------------------------------------\r\n this.memberViewMgmtModel = this.createProfileInfoViewAndUpdateProfileTile(pInfo, new ProfileTile());\r\n // debugger; \r\n\r\n // EmitterSubjectService.emitProfileInfoView(this.profileInfo);\r\n // debugger;\r\n subscriber.next(this.memberViewMgmtModel);\r\n subscriber.complete();\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // refactored on 2020/12/29, 2021/05/24\r\n // ---------------------------------------------------------------\r\n // Objective: asyncly arrived ProfileTile should create profileInfoView, and\r\n // update it's { distance, unit & source }.\r\n // Then it should create arrKvAny and profileContentArrKvAny that\r\n // are used in the view-template.\r\n //\r\n // ProfileTileTasks are stand-alone and should be called only for ProfileTile-data.\r\n // This method also exexuteasAllTasks(), where\r\n // profileInfoTasks, profileContentTasks and preferencesTasks are executed\r\n // ---------------------------------------------------------------\r\n // NOTE: Creating memberView from ProfileTile while rest of user data arrives is\r\n //\r\n // Note: This method will be used by both MemberViewMgmt and PhotoMgmt components.\r\n // ---------------------------------------------------------------\r\n // Note: This method also has a copy in MemberViewMgmtComponent\r\n // It is kept there because from the service, this method does not\r\n // update/display user's profileTiles related data.\r\n // ---------------------------------------------------------------\r\n // In use now. \r\n // ---------------------------------------------------------------\r\n/*public executeProfileTileTasks (inpTile : ProfileTile) : Observable {*/\r\n public executeProfileTileTasks (inpTile : ProfileTile) : MemberViewMgmtModel | any {\r\n // return new Observable((subscriber) => {\r\n // debugger;\r\n let pTile : any;\r\n let tpTile : any;\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isViewMember = EmitterSubjectService.getIsPhotoMgmt(); \r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile) && inpTile.sitUserId > 0) { \r\n this.profileTile.copySourceToDestination(this.profileTile, inpTile)\r\n }\r\n else if (this.isViewMember) {\r\n this.profileTile = EmitterSubjectService.getSelectedProfileTile();\r\n }\r\n else if (this.isPhotoMgmt || this.isMyProfile) {\r\n this.profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n }\r\n else {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0) {\r\n this.profileTile = this.dictionaryService.getProfileTileBySitUserId(this.sitUser.sitUserId);\r\n }\r\n }\r\n // debugger;\r\n // ----------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n\r\n // debugger;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.image) && this.profileTile.image.length > 0) {\r\n // // debugger;\r\n // this.bias.setProfileTileBackgroundImage(this.profileTile);\r\n //}\r\n\r\n pTile = this.executeBeforeViewInit(this.profileTile, 'profileTile-');\r\n }\r\n this.profileTile = this.oneTimeProfileTileSetup(pTile);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n // debugger;\r\n EmitterSubjectService.setProfileTile(this.profileTile);\r\n // debugger;\r\n\r\n this.memberViewMgmtModel = this.createProfileInfoViewAndUpdateProfileTile(new ProfileInfo(), this.profileTile);\r\n this.memberViewMgmtModel.sitUserId = this.profileTile.sitUserId;\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.memberViewMgmtModel.profileInfo)) {\r\n // debugger;\r\n // this.memberViewMgmtModel = this.executeAllTasks(this.memberViewMgmtModel.profileInfo, this.profileTile);\r\n // }\r\n \r\n\r\n // if KvContent does not show, uncomment these lines:\r\n // --------------------------------------------------\r\n // this.executeProfileInfoTasks(this.profileInfoView).then(data => {\r\n // this.profileInfo = data;\r\n \r\n // EmitterSubjectService.emitProfileInfo(this.profileInfo); // will be onbtained by memberService.getDictionaryMemberProfile()\r\n // this.profileInfoView = this.profileInfo;\r\n\r\n // // Note: this may be redundant:\r\n // // ----------------------------\r\n // this.kvAnyArr = this.profileSupportService.createKVModelArrFromProfileInfoView(this.profileInfo);\r\n // this.profileContentKvAnyArr = ArrayServiceStatic.mergeArraysUniq(this.profileContentKvAnyArr, this.kvAnyArr as KvAny[]);\r\n // // debugger;\r\n // EmitterSubjectService.emitProfileContentKvAnyArr(this.profileContentKvAnyArr);\r\n // // ----------------------------------\r\n // this.profileInfo = CopyServiceStatic.copyFromProfileTileToProfileInfo(this.profileTile);\r\n\r\n\r\n // // debugger;\r\n // this.memberViewMgmtModel = this.executeAllTasks(this.memberViewMgmtModel.profileInfo, this.profileTile);\r\n // })\r\n \r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.primaryImage) && this.profileTile.primaryImage.length > 0) {\r\n // debugger;\r\n this.bias.setProfileTileBackgroundImage(this.profileTile);\r\n }\r\n\r\n // debugger;\r\n EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel); // will also set the model\r\n //subscriber.next(this.memberViewMgmtModel);\r\n //subscriber.complete();\r\n return this.memberViewMgmtModel;\r\n //})\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: TODO: inspect for difference between the 2:\r\n // This one is moved from AbstractPagerVPhotoNavService:\r\n // P.S. This has a commented out line which is essential for this method to work!!\r\n // ---------------------------------------------------------------\r\n public executeProfileTileKvPhotoAndGlyphMenuTasks2 (inpTile : ProfileTile) : Observable {\r\n return new Observable((subscriber) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n // debugger;\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto) &&\r\n (\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.image) && inpTile.kvPhoto.image.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.value) && inpTile.kvPhoto.value.length > 0)\r\n )\r\n\r\n ) {\r\n this.profileTile = inpTile;\r\n let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr([ this.profileTile.kvPhoto ], 'pagerVKvPhotoNav-');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n this.profileTile.kvPhoto = tpKvPhotoArr[ 0 ];\r\n }\r\n\r\n // this.pagerVKvPhotoNav = this.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profileTile.kvPhoto, [ this.profileTile.kvPhoto ]);\r\n\r\n // debugger;\r\n if (this.isViewMember) {\r\n // debugger;\r\n // let sitUser : SitUser = EmitterSubjectService.getSitUserModel();\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.loginSuccess.signedInUserId !== this.profileTile.sitUserId) {\r\n // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(this.profileTile.sitUserId); (this.profileTile.sitUserId); // will display photo primary/private/public glyphs\r\n // debugger; \r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n }\r\n }\r\n if (this.isPhotoMgmt || this.isMyProfile) {\r\n // debugger;\r\n\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.profileTile.kvPhoto); // will display photo primary/private/public glyphs\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n }\r\n\r\n // debugger;\r\n EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n // debugger;\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n }\r\n else {\r\n this.message = 'pagerVKvPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks ->profileTile was null or it\\'s image was null';\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n public executeProfileTileKvPhotoAndGlyphMenuTasks (inpTile : ProfileTile) : Observable {\r\n return new Observable((subscriber) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n // debugger;\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto) &&\r\n (\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.image) && inpTile.kvPhoto.image.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.value) && inpTile.kvPhoto.value.length > 0)\r\n )\r\n ) {\r\n this.profileTile = inpTile;\r\n let tpKvPhotoArr = this.pagerSupportService.setIndexAndPageNumAndElemIdForKvPhotoArr([ this.profileTile.kvPhoto ], 'pagerVKvPhotoNav-');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpKvPhotoArr) && tpKvPhotoArr.length > 0) {\r\n this.profileTile.kvPhoto = tpKvPhotoArr[ 0 ];\r\n }\r\n // debugger;\r\n // EmitterSubjectService.emitProfileImages([ this.profileTile.kvPhoto ]);\r\n\r\n // debugger;\r\n if (this.isViewMember) {\r\n // debugger;\r\n let sitUser : SitUser = EmitterSubjectService.getSitUserModel();\r\n if (sitUser.sitUserId === this.profileTile.sitUserId) {\r\n // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(sitUser.sitUserId); // will display photo primary/private/public glyphs\r\n // EmitterSubjectService.emitDisplayViewMemberGlyphiconMenuForSitUser(sitUser.sitUserId); \r\n // debugger;\r\n //this.pagerPhotoMgmtService.setKvPhotoArr([ this.profileTile.kvPhoto ]);\r\n //this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.getPagerVKvPhotoForCurrentPage(this.profileTile.kvPhoto );\r\n //this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n\r\n this.pagerVKvPhotoNav = this.abstractPagerVPhotoNavService.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profileTile.kvPhoto, [ this.profileTile.kvPhoto ]);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // debugger;\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForViewMember = this.kvMemActGlyphArrForViewMember;\r\n }\r\n }\r\n }\r\n else if (this.isMyProfile) {\r\n debugger;\r\n // this.pagerVKvPhotoNav = this.photoMgmtService.setPageOfPhotoNav(1, [ this.profileTile.kvPhoto ]);\r\n // this.pagerVKvPhotoNav = this.pagerVKvPhotoNavService.getPagerVKvPhotoForCurrentPage(this.profileTile.kvPhoto);\r\n this.pagerVKvPhotoNav = this.abstractPagerVPhotoNavService.getPagerVKvPhotoNavForKvPhotoInKvPhotoArr(this.profileTile.kvPhoto, [ this.profileTile.kvPhoto ]);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav.pagedItems)\r\n && this.pagerVKvPhotoNav.pagedItems.length > 0) {\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n }\r\n }\r\n else if (this.isPhotoMgmt) {\r\n // debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(this.profileTile.kvPhoto); // will display photo primary/private/public glyphs\r\n this.pagerVKvPhotoNav.kvMemActGlyphArrForPhotoMgmt = this.kvMemActGlyphArrForPhotoMgmt;\r\n }\r\n subscriber.next(this.pagerVKvPhotoNav);\r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n //public executeProfileTileOnInit2 () : void {\r\n // // ----------------------------------------------------------------\r\n // // Begin: avatar's ProfileTile case:\r\n // // ----------------------------------------------------------------\r\n // // If ProfileTile is available (since emitted and saved on emitter),\r\n // // display it's information first:\r\n // // tested on 20220525, 20220610\r\n // // ----------------------------------------------------------------\r\n // // debugger;\r\n // this.profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n // // debugger;\r\n\r\n // // experimental:\r\n // // this.ngAfterViewInit();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n // // debugger;\r\n // this.profileTile = this.profileTile.copy(this.profileTile);\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.image)\r\n // && this.profileTile.image.length > 0) {\r\n // // debugger;\r\n // this.bias.setProfileTileBackgroundImage(this.profileTile);\r\n // }\r\n // // debugger;\r\n // this.profileInfo = this.profileTile.copyToProfileInfo();\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.image)\r\n // && this.profileInfo.image.length === 0\r\n // && this.profileTile.image.length > 0) {\r\n // this.profileInfo.image = this.profileTile.image;\r\n // // debugger;\r\n // }\r\n\r\n // // debugger; \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // // debugger;\r\n // this.executeProfileTileTasks(this.profileTile).then(result => {\r\n // // debugger;\r\n // this.memberViewMgmtModel = result;\r\n // // this.extractDataFromMemberViewMgmtModel();\r\n\r\n // // emit the profileImages here and set the glyphMenu here:\r\n // // -------------------------------------------------------\r\n // this.executeProfileTileKvPhotoAndGlyphMenuTasks(this.profileTile).then(data => {\r\n // this.pagerVKvPhotoNav = data;\r\n // this.pagerVKvPhotoNavService.executePagedItemsAndGlyphMenuTasks(this.pagerVKvPhotoNav);\r\n // // debugger;\r\n // // -----------------------------------------------------------\r\n // // NOTE: the following displays the PhotoMgmtGlyphiconMenu:\r\n // // -----------------------------------------------------------\r\n // // debugger;\r\n // this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n // EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n // // this.ngAfterViewInit();\r\n // })\r\n // // this.ngAfterViewInit();\r\n // });\r\n // }\r\n // // this.ngAfterViewInit();\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n //public executeProfileTileOnInit (sitUserId : number) : Promise {\r\n // // ----------------------------------------------------------------\r\n // // Begin: avatar's ProfileTile case:\r\n // // ----------------------------------------------------------------\r\n // // If ProfileTile is available (since emitted and saved on emitter),\r\n // // display it's information first:\r\n // // tested on 20220525, 20220610\r\n // // ----------------------------------------------------------------\r\n // debugger;\r\n // this.profileTile = EmitterSubjectService.getAvatarProfileTile();\r\n // return new Promise((resolve, reject) => {\r\n // // experimental:\r\n // // this.ngAfterViewInit();\r\n // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && this.profileTile.sitUserId > 0) {\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.image)\r\n // && this.profileTile.image.length > 0) {\r\n // debugger;\r\n // // EmitterSubjectService.emitDisplayBgiOutsideAngular(this.profileTile.image);\r\n // this.bias.setProfileTileBackgroundImage(this.profileTile);\r\n // }\r\n\r\n // this.executeProfileTileTasks(this.profileTile).subscribe(result => {\r\n // debugger;\r\n // if (result) {\r\n // this.memberViewMgmtModel = result;\r\n // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // // this.extractDataFromMemberViewMgmtModel();\r\n // } \r\n // });\r\n\r\n // // debugger;\r\n // this.profileInfo = this.profileTile.copyToProfileInfo();\r\n\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo.image)\r\n // && this.profileInfo.image.length === 0\r\n // && this.profileTile.image.length > 0) {\r\n // this.profileInfo.image = this.profileTile.image;\r\n // // debugger;\r\n // }\r\n\r\n // // debugger; \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo)) {\r\n // // debugger;\r\n // // this.executeAllNonProfileTileTasks(this.profileInfo).then(result => {\r\n // // this.memberViewMgmtModel = result;\r\n // // debugger;\r\n // // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n // // });\r\n // debugger;\r\n\r\n // this.memberViewMgmtModel = this.createProfileInfoViewAndUpdateProfileTile(this.profileInfo, this.profileTile);\r\n // debugger;\r\n // EmitterSubjectService.emitMemberViewMgmtModel(this.memberViewMgmtModel);\r\n\r\n\r\n // // emit the profileImages here and set the glyphMenu here:\r\n // // -------------------------------------------------------\r\n // this.pagerVKvPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks(this.profileTile).subscribe(data => {\r\n // if (data) {\r\n // this.pagerVKvPhotoNav = data as PagerPhotoMgmt;\r\n // EmitterSubjectService.emitDisplayPagerVKvPhotoNav(this.pagerVKvPhotoNav);\r\n // }\r\n // else {\r\n // reject('executeProfileTileOnInit().pagerVKvPhotoNavService.executeProfileTileKvPhotoAndGlyphMenuTasks() failed;');\r\n // }\r\n\r\n // // todo: check if it is needed?\r\n // // ----------------------------\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerVKvPhotoNav)) {\r\n // // this.pagerVKvPhotoNavService.executePagedItemsAndGlyphMenuTasks(this.pagerVKvPhotoNav).then(data1 => {\r\n // // this.pagerVKvPhotoNav = data1 as PagerPhotoMgmt;\r\n // // debugger;\r\n // // });\r\n // debugger;\r\n // this.pagerVKvPhotoNavService.executePagerVKvPhotoNavKvPhotoTasks(this.pagerVKvPhotoNav).then(data1 => {\r\n // debugger;\r\n // if (data1) {\r\n // debugger;\r\n // resolve(data1);\r\n // }\r\n // else {\r\n // reject('pagerVKvPhotoNavService.executePagerVKvPhotoNavKvPhotoTasks() failed;');\r\n // }\r\n // });\r\n // }\r\n // else {\r\n // debugger;\r\n // resolve(data);\r\n // }\r\n // // debugger;\r\n // // -----------------------------------------------------------\r\n // // NOTE: the following displays the PhotoMgmtGlyphiconMenu:\r\n // // -----------------------------------------------------------\r\n // // debugger;\r\n // //this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displaySignInUserPrimaryKvPhotoGlyphs();\r\n // //EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n // //this.ngAfterViewInit();\r\n // })\r\n // // this.ngAfterViewInit();\r\n // }\r\n // else {\r\n // reject('executeProfileTileOnInit().profileInfo is null or undefined');\r\n // }\r\n // // this.ngAfterViewInit();\r\n // }\r\n // else {\r\n // reject(console.log('Error occured in profileTileService.executeProfileTileOnInit (sitUserId : ' + sitUserId ));\r\n // }\r\n // }).catch((error) => {\r\n // console.log('Error occured in profileTileService.executeProfileTileOnInit (sitUserId : ' + sitUserId + '); error: ' + error);\r\n // });\r\n //}\r\n // --------------------------------------------------------------------------\r\n // Note: uncomment if view does not update properly for content & preference:\r\n // --------------------------------------------------------------------------\r\n // NOT in user now, but DO NOT DELETE THIS.\r\n // --------------------------------------------------------------------------\r\n //public fetchAndExecuteAllTasks (pInfo : ProfileInfo) : ProfileInfo {\r\n // // debugger;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo)) {\r\n // this.profileInfo = pInfo;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfo) && this.profileInfo.sitUserId > 0) {\r\n // // debugger;\r\n // this.executeProfileInfoTasks(this.profileInfo).subscribe(data => {\r\n // this.profileInfo = data;\r\n // });\r\n // // debugger;\r\n // this.profileContentService.fetchAndExecuteProfileContentTasks(this.profileInfo).then(data => {\r\n // this.profileContentKvAnyArr = data;\r\n // // debugger;\r\n // });\r\n // this.preferenceService.executePreferenceTasks(this.profileInfo.sitUserId).subscribe(data => {\r\n // // debugger;\r\n // this.preference = data;\r\n // })\r\n // }\r\n // }\r\n // return pInfo;\r\n //}\r\n // ---------------------------------------------------------------\r\n //public setIsObjectStoreNameFoundInTables (value : boolean) : void {\r\n // this.isProfileTileDictionaryCreatedFromIndexDb = value;\r\n //}\r\n // ---------------------------------------------------------------\r\n //public getIsObjectStoreNameFoundInTables () : boolean {\r\n // return this.isProfileTileDictionaryCreatedFromIndexDb;\r\n //}\r\n // ---------------------------------------------------------------\r\n public getIncompleteTiles () : any[] {\r\n return this.incompleteTilesArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public processDistanceUnitForProfileTileAndProfileInfoView (distanceUnit : Unit) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.distance)\r\n && distanceUnit.distance >= 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.unit)) {\r\n let result = this.heartbeatService.processDistanceUnit(distanceUnit);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)) {\r\n this.profileInfoView.distance = distanceUnit.distance.toFixed(2);\r\n this.profileInfoView.unit = distanceUnit.unit;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n this.profileTile.distance = distanceUnit.distance;\r\n this.profileTile.unit = distanceUnit.unit;\r\n this.profileTile.distanceStr = distanceUnit.distance.toFixed(2) + ' ' + distanceUnit.unit;\r\n this.profileTile.distanceUnit = distanceUnit;\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public setMessageTimer () : void {\r\n let intervalMsgTime = setTimeout(() => {\r\n this.message = '';\r\n clearInterval(intervalMsgTime);\r\n }, 1000);\r\n clearTimeout(intervalMsgTime);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public setupKvPhotoModel (kvp : KvPhoto) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n kvp.value = kvp.image;\r\n }\r\n else if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n kvp.image = kvp.value;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.pic)) {\r\n kvp.pic = kvp.image;\r\n }\r\n\r\n if (kvp.isPrimary) {\r\n kvp.key = kvp.glyphName = \"Primary\";\r\n kvp.privacy = \"Public\";\r\n }\r\n }\r\n return kvp;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public setupProfileTileImageAndDisplay (inpTile : ProfileTile) : Observable {\r\n return new Observable((subscriber) => {\r\n // ------------------------------------------------------------------\r\n // Note: all display of PhotoNav and GlyphArrs should go through\r\n // pagerVKvPhotoNavComponent. They should not directly be\r\n // implemented from anywhere else. Hence emit the following:\r\n // EmitProfileImages();\r\n // ------------------------------------------------------------------\r\n // Note: below code is needed to display the VerticalMenues to be displayed\r\n // VerticalMenues are rendered by appComponent's profileImagesEmitter.\r\n // ------------------------------------------------------------------\r\n // ======================================================\r\n // Begin of VerticalMemActGlyphsMenus display: required!\r\n // ======================================================\r\n this.isMyProfile = EmitterSubjectService.getIsMyProfile();\r\n this.isPhotoMgmt = EmitterSubjectService.getIsPhotoMgmt();\r\n\r\n // debugger; \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto) &&\r\n (\r\n (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.image) && inpTile.kvPhoto.image.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.pic) && inpTile.kvPhoto.pic.length > 0)\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inpTile.kvPhoto.value) && inpTile.kvPhoto.value.length > 0)\r\n )\r\n ) {\r\n debugger;\r\n\r\n //let tKvPhoto = new KvPhoto();\r\n //tKvPhoto = tKvPhoto.copy(inpTile.kvPhoto);\r\n //tKvPhoto.value = JsRegExpServiceStatic.stripUrlForImageData(tKvPhoto.value);\r\n\r\n // Note: this is the emitter that displays the All VerticalMenus:\r\n // --------------------------------------------------------------\r\n EmitterSubjectService.emitProfileImages([ inpTile.kvPhoto ]);\r\n debugger;\r\n if (inpTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n debugger;\r\n this.kvMemActGlyphArrForPhotoMgmt = this.glyphiconMenuService.displayPhotoMgmtGlyphMenuForKvPhoto(inpTile.kvPhoto);\r\n EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n subscriber.next(this.kvMemActGlyphArrForPhotoMgmt);\r\n subscriber.complete();\r\n }\r\n else {\r\n // this.kvMemActGlyphArrForViewMember = this.glyphiconMenuService.createAndDisplayViewMemberGlyphMenu(inpTile.sitUserId);\r\n EmitterSubjectService.emitDisplayPhotoMgmtGlyphiconMenu(this.kvMemActGlyphArrForPhotoMgmt);\r\n subscriber.next(this.kvMemActGlyphArrForPhotoMgmt);\r\n subscriber.complete();\r\n } \r\n }\r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This should be called after all tiles are rendered\r\n // ---------------------------------------------------------------\r\n public setupProfileTilesArrHeartbeats (pTileArr : ProfileTile[]) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTileArr) && pTileArr.length > 0) {\r\n pTileArr.map(e => {\r\n e = this.setupProfileTileHeartbeat(e);\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // This method's heartbeatTime is considered as initHearbeat\r\n // ---------------------------------------------------------------\r\n public setupProfileTileHeartbeat (pTile : ProfileTile) : ProfileTile {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n this.heartbeatService.getHeartbeatObservable(pTile.sitUserId, 'MembersComponent.setupProfileTileHeartbeat').subscribe(hb => {\r\n if (hb.sitUserId === pTile.sitUserId) {\r\n pTile.heartbeat = hb;\r\n pTile.heartbeat.heartbeatTime = pTile.heartbeat.prevHeartbeat = hb.heartbeatTime;\r\n }\r\n });\r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public isProfileTileValid (pTile : ProfileTile) : boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.gender) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.dob) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.image) &&\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.profileName) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.sexuality) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.sitUserId) && pTile.sitUserId > 0\r\n ) {\r\n return true;\r\n }\r\n else {\r\n debugger;\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public setupMissingProfileTileProperties (pTile : ProfileTile) : ProfileTile {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.profileName)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.sitUserKey)) {\r\n // debugger;\r\n pTile.profileName = DateStringServiceStatic.getProfileNameFromSitUserKey(pTile.sitUserKey);\r\n }\r\n }\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage) || pTile.primaryImage.length < 20) {\r\n pTile.primaryImage = \"url('/photos/avatar2.png')\";\r\n } \r\n return pTile;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n public isProfileTileValidForOffOn (pTile : ProfileTile) : boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn.away) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.sitUserId) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.source) &&\r\n pTile.sitUserId > 0\r\n ) {\r\n return true;\r\n }\r\n else return false;\r\n }\r\n else return false;\r\n }\r\n // ---------------------------------------------------------------\r\n public isProfileTileArrayComplete (profileTiles : ProfileTile[]): boolean {\r\n let isTilesArrComplete = true;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileTiles) && profileTiles.length > 0) {\r\n profileTiles.map(e => {\r\n if ( !this.isProfileTileValid( e ) )\r\n {\r\n isTilesArrComplete = false;\r\n }\r\n // isTilesArrComplete = false; // TODO: restore\r\n });\r\n }\r\n return isTilesArrComplete;\r\n }\r\n // ---------------------------------------------------------------\r\n public periodicProfileTileSetup (pTile : ProfileTile) : EmitOffOnResult {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n if (pTile.isTileSetupComplete) {\r\n /*\r\n * Note : this heartbeat-related segment is for dev-&-testing-purpose only!\r\n * TODO : get the heatbeat from the server. This is for dev-&-testing-purpose only.\r\n */\r\n\r\n let thb = DateStringServiceStatic.getTicks(new Date());\r\n\r\n if (thb) {\r\n thb = thb - 10;\r\n pTile.heartbeat.heartbeatTime = thb;\r\n }\r\n /*\r\n * debugger;\r\n * setup off-on-color-indicator\r\n * this.offOnResult = this.offOnService.setOffOnStatus(pTile);\r\n */\r\n\r\n return this.offOnResult;\r\n }\r\n }\r\n return new EmitOffOnResult();\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This is the one-stop-shop for a complete ProfileTile ready to be rendered\r\n // with it's image to be used as a background-image.\r\n //\r\n // To use the image as src, transform the image as follows:\r\n // image = JsRegExpServiceStatic.normalizeImageData(image);\r\n // ---------------------------------------------------------------\r\n public prepareProfileTile (pTile : ProfileTile) : any {\r\n let outTile : ProfileTile;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n outTile = this.executeBeforeViewInit(pTile, 'profileTile-');\r\n outTile = this.checkAndSetProfileTileImage(outTile); \r\n }\r\n else {\r\n outTile = pTile;\r\n }\r\n return outTile;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // Note: This is not called by any other method or component\r\n // ---------------------------------------------------------------\r\n public prepareProfileTiles (dTiles : ProfileTile[]) : any {\r\n let tProfileTilesArr : ProfileTile[] = []; //CopyServiceStatic.deepCloneProfileTileArray( dTiles );\r\n let i = 0;\r\n let item : ProfileTile;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dTiles) && dTiles.length > 0) {\r\n for (let tile of dTiles) {\r\n item = this.prepareProfileTile(tile);\r\n tProfileTilesArr.push(item);\r\n }\r\n // debugger;\r\n tProfileTilesArr = ArrayServiceStatic.sortProfileTileArrByDistance(tProfileTilesArr);\r\n EmitterSubjectService.setProfileTilesArr(tProfileTilesArr);\r\n // debugger;\r\n return tProfileTilesArr;\r\n }\r\n else return dTiles;\r\n }\r\n // ---------------------------------------------------------------\r\n public processDistanceUnitForProfileTile (distanceUnit : Unit) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.distance)\r\n && distanceUnit.distance >= 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(distanceUnit.unit)) {\r\n let result = this.heartbeatService.processDistanceUnit(distanceUnit);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile)) {\r\n this.profileTile.distance = distanceUnit.distance;\r\n this.profileTile.unit = distanceUnit.unit;\r\n this.profileTile.distanceStr = distanceUnit.distance.toFixed(2) + ' ' + distanceUnit.unit;\r\n this.profileTile.distanceUnit = distanceUnit;\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n }\r\n return this.profileTile;\r\n }\r\n // ---------------------------------------------------------------\r\n public processProfileTileForHeartbeat (hb : Heartbeat) : ProfileTile {\r\n let distanceUnit = new Unit();\r\n // if Heartbeat's distance is not already calculated:\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileInfoView)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distance)) {\r\n if (hb.distance === 0) {\r\n // compute distance and unit:\r\n distanceUnit = this.heartbeatService.calculateDistance(hb, this.loginSuccess.heartbeat, true); // (dest, origin, isKm)\r\n // debugger;\r\n\r\n let tProfileTile = this.processDistanceUnitForProfileTile(distanceUnit) as ProfileTile;\r\n this.profileTile = CopyServiceStatic.copyProfileTileIfExists(this.profileTile, tProfileTile);\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n this.profileTile.distance = this.profileInfoView.distance;\r\n this.profileTile.distanceStr = this.profileInfoView.distance + ' ' + this.profileInfoView.unit;\r\n this.profileTile.heartbeat = hb;\r\n this.profileTile.distanceUnit = distanceUnit;\r\n // debugger;\r\n }\r\n EmitterSubjectService.setProfileTile(this.profileTile);\r\n return this.profileTile;\r\n }\r\n // ---------------------------------------------------------------\r\n /*\r\n * ---------------------------------------------------------------\r\n * ProfileTileSetupManager\r\n * ---------------------------------------------------------------\r\n */\r\n public oneTimeProfileTileSetup (pTile : ProfileTile) : ProfileTile {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && pTile.sitUserId > 0) {\r\n\r\n // distance unit\r\n pTile.unit = this.determineUnit(pTile);\r\n\r\n // TODO : distance and isOnline provided by the server. If server does not provide, compute here\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn)) { \r\n // set the offOnArr value for the child-component\r\n this.offOnArr = pTile.offOn.offOnArr;\r\n }\r\n\r\n // Age:\r\n // TODO: does not work. Need to fix it!\r\n // ------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.dob)) {\r\n pTile.age = StringServiceStatic.ageFromDobTicks(parseFloat(pTile.dob));\r\n }\r\n\r\n\r\n // if the profileTile.image.length < 32, these are default images\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage) && pTile.primaryImage.length < 32 && pTile.sitUserId === this.loginSuccess.signedInUserId) {\r\n EmitterSubjectService.messageEmitter.next('You do not have a primary profile picture. Please add a picture to your profile.');\r\n }\r\n\r\n //should trigger changedetection in offOnComponent.ts\r\n // this.profileTile.copy(pTile); \r\n // debugger; \r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: TODO: Depracate\r\n // ---------------------------------------------------------------\r\n public setupProfileTileElement (pTile : ProfileTile, pTileElem ?: ElementRef) : ProfileTile {\r\n // debugger;\r\n let id = '';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTileElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTileElem?.nativeElement.id)) {\r\n id = pTileElem?.nativeElement.id;\r\n let sitUserid = parseInt(id.split('-')[ 1 ]);\r\n // debugger;\r\n if (id.indexOf('pTileSource') !== -1 && sitUserid === pTile.sitUserId && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTileElem)) {\r\n pTile.pTileElement = pTileElem as ElementRef; // this.getHtmlElementById(this.offOn.awayId);\r\n //EmitterSubjectService.setOffOnElement(childElem as ElementRef, 'spanAway');\r\n debugger;\r\n }\r\n }\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: returns a sorted array of profileTiles\r\n // TODO: test\r\n // ---------------------------------------------------------------\r\n public uniquelyAddInProfileTileArray (arr : ProfileTile[], pTile : ProfileTile) : ProfileTile[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr)) {\r\n if (ArrayServiceStatic.getIndexOfTileInArr(arr, pTile) < 0) {\r\n arr.push(pTile);\r\n }\r\n // debugger;\r\n }\r\n return arr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note : This method will get 25 ProfileTileIds at a time\r\n // Note: This is calles by MemberTilesComponent\r\n // TODO: cannot user FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n // ---------------------------------------------------------------\r\n public getBatchOfProfileTileIds (beginIndex : number) : Observable {\r\n debugger;\r\n return new Observable((subscriber) => {\r\n if (beginIndex > -1) {\r\n const bnComm : Communication = new Communication();\r\n\r\n bnComm.beginIndex = beginIndex;\r\n bnComm.sitUserId = 0;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n\r\n // debugger;\r\n if (this.boxNonceEntity) {\r\n this.httpService.postObservable('/api/Member/GetBatchOfProfileTileIds', JSON.stringify({\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n }),\r\n 'json',\r\n ).subscribe((result) => {\r\n debugger;\r\n let batchOfTileIds = result as number[];\r\n this.dictionaryService.updateDictionary(batchOfTileIds, 'profileTileId', this.loginSuccess.signedInUserId);\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.sitUserDictionary, 'sitUser', this.loginSuccess.signedInUserId);\r\n\r\n EmitterSubjectService.emitHideSpinner(true);\r\n subscriber.next(batchOfTileIds);\r\n subscriber.complete();\r\n // debugger;\r\n }, (error) => {\r\n // debugger;\r\n this.message = 'Error occured in GetBatchOfProfileTileIds();\\n Error-msg : ' + error.message;\r\n console.log(this.message);\r\n EmitterSubjectService.emitMyErrorLog(this.message);\r\n // debugger;\r\n console.log(this.message);\r\n });\r\n } \r\n } \r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This method is in use\r\n // Note: This method is calle by MembersComponent & MemberTilesComponent\r\n // TODO: cannot user FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n // --------------------------------------------------------------\r\n public getBatchOfProfileTiles (beginIndex : number) : Observable {\r\n debugger;\r\n let anyTile : any;\r\n let tpTile : ProfileTile;\r\n let tpTiles : ProfileTile[] = [];\r\n let tIncompleteTiles : ProfileTile[] = [];\r\n return Observable.create((observer : any) => {\r\n // debugger;\r\n if (beginIndex > -1) {\r\n const bnComm : Communication = new Communication();\r\n\r\n bnComm.beginIndex = beginIndex;\r\n bnComm.sitUserId = 0;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.saltModel(bnComm);\r\n\r\n // debugger;\r\n if (this.boxNonceEntity) {\r\n this.httpService.postPromise('Member/GetBatchOfProfileTiles', {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json',\r\n ).then((result) => {\r\n // debugger;\r\n let boxNonceArr : BoxNonce[] = JSON.parse(result);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonceArr) && boxNonceArr.length > 0) {\r\n boxNonceArr.map(e => {\r\n // debugger;\r\n this.boxNonceEntity = new BoxNonceEntity();\r\n this.boxNonceEntity.box = e.box;\r\n this.boxNonceEntity.nonce = e.nonce;\r\n this.boxNonceEntity.date = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.date) ? e.date.toString() : DateStringServiceStatic.getTicks(new Date()).toString();\r\n this.boxNonceEntity.id = e.sitUserId;\r\n this.boxNonceEntity.key = e.sitUserId.toString();\r\n this.boxNonceEntity.entityName = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.entityName) ? e.entityName : 'ProfileTile';\r\n this.boxNonceEntity.sitUserId = e.sitUserId;\r\n // debugger;\r\n\r\n anyTile = SlakezSaltServiceStatic.boxUnsalt(this.boxNonceEntity);\r\n // debugger;\r\n tpTile = JSON.parse(anyTile) as ProfileTile;\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile.id)) tpTile.id = this.boxNonceEntity.id.toString();\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile.date)) tpTile.date = this.boxNonceEntity.date.toString();\r\n if (tpTile.sitUserId == 0) tpTile.sitUserId = this.boxNonceEntity.sitUserId;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile)) {\r\n // debugger;\r\n\r\n tpTile = this.prepareProfileTile(tpTile);\r\n if (this.isProfileTileValid(tpTile)) {\r\n tpTile.isTileSetupComplete = true;\r\n this.dictionaryService.updateDictionary(tpTile, 'ProfileTile', tpTile.sitUserId);\r\n // debugger; \r\n observer.next(this.dictionaryService.profileTileDictionary.size > 0 ? this.dictionaryService.profileTileDictionary.values(): []);\r\n }\r\n else {\r\n tIncompleteTiles.push(tpTile);\r\n // debugger;\r\n }\r\n }\r\n });\r\n }\r\n // debugger;\r\n }, (error) => {\r\n // debugger;\r\n this.message = 'Error occured in GetBatchOfProfileTiles();\\n Error-msg : ' + error.message;\r\n console.log(this.message);\r\n // EmitterSubjectService.emitMyErrorLog(this.message);\r\n // debugger;\r\n });\r\n }\r\n }\r\n else return FrequentlyUsedFunctionsServiceStatic.nullPromise();\r\n });\r\n }\r\n // --------------------------------------------------------------\r\n // Note: This method is in use\r\n // Note: This method is calle by MembersComponent, MemberTilesComponent & MembersIndividuallyComponent\r\n // --------------------------------------------------------------\r\n public getProfileTile (situserid : number) : Observable {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n let tpTile : ProfileTile = new ProfileTile();\r\n let sitUserId : number = situserid;\r\n\r\n return new Observable((subscriber) => { \r\n\r\n if (sitUserId > 0 && this.loginSuccess.signedInUserId > 0) {\r\n const bnComm : Communication = new Communication();\r\n // debugger;\r\n bnComm.sitUserId = sitUserId;\r\n bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt(JSON.stringify(bnComm));\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.box) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.boxNonceEntity.nonce)) {\r\n \r\n // debugger;\r\n this.httpService.post('Member/GetProfileTile',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(this.boxNonceEntity.nonce),\r\n },\r\n 'json',\r\n ).subscribe((result) => {\r\n // debugger;\r\n let cipherbox = result as BoxNonceEntity;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.box) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.nonce)) {\r\n this.boxNonceEntity = new BoxNonceEntity();\r\n this.boxNonceEntity.box = cipherbox.box;\r\n this.boxNonceEntity.nonce = cipherbox.nonce;\r\n\r\n let tempTile : ProfileTile = new ProfileTile();\r\n /*\r\n * do not directly assing to profileTile!! capture it in a let first\r\n */\r\n // debugger;\r\n const unboxedTile = SlakezSaltServiceStatic.boxUnsalt(cipherbox);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unboxedTile)) {\r\n // debugger;\r\n tempTile = JSON.parse(unboxedTile) as ProfileTile;\r\n }\r\n // debugger;\r\n // if key 'sitUserId' exists, the unslating produced data\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempTile)) {\r\n // tempTile = JSON.parse(tempTile); // convert string to model\r\n // }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempTile) && tempTile.sitUserId > 0) {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempTile.sitUserKey) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.sitUserKey)) {\r\n tempTile.sitUserKey = result.sitUserKey;\r\n // debugger;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempTile.profileName) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(result.profileName)) {\r\n tempTile.profileName = result.profileName;\r\n // debugger;\r\n } \r\n tpTile = tpTile.copySourceToDestination(tpTile, tempTile);\r\n // debugger;\r\n tpTile = this.prepareProfileTile(tpTile);\r\n\r\n // debugger;\r\n // -----------------------------------------------------------------------------\r\n // IMPORTANT: DO NOT check tile validity,\r\n // as anyone providing an incomplete tile will break the application!\r\n // -----------------------------------------------------------------------------\r\n // if (!this.isProfileTileValid(tpTile)) {\r\n // debugger;\r\n // let index = ArrayServiceStatic.getIndexOfTileInArr(this.incompleteTilesArr, tpTile);\r\n // if (index === -1) {\r\n // this.incompleteTilesArr.push(tpTile); // will set image to avatar2\r\n // }\r\n // this.message = 'getProfileTile(sitUserId: ' + sitUserId + ') returned a null or undefined value.';\r\n // console.log(this.message);\r\n // reject(this.message);\r\n // /*resolve(this.incompleteTilesArr.length); //if the tile is incomplete, we send the length of incomplete tiles array*/\r\n // // reject(this.incompleteTilesArr); //if the tile is incomplete, we send the length of incomplete tiles array\r\n // }\r\n // -----------------------------------------------------------------------------\r\n\r\n tpTile.pElemId = 'memberTileComponentId-' + tpTile.sitUserId;\r\n // debugger;\r\n this.dictionaryService.updateDictionary(tpTile, 'ProfileTile', tpTile.sitUserId);\r\n \r\n // debugger;\r\n subscriber.next(tpTile); \r\n }\r\n else {\r\n // debugger;\r\n this.message = 'tempTile in profileTileService.getProfileTiley() after unsalting was null or undefined for sitUserId: ' + sitUserId;\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.message = ' profileTileService.getProfileTile(sitUserId: ' + sitUserId + ') cipherbox/cipherbox.box/cipherbox.nonce is null or undefined.';\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n else {\r\n // debugger;\r\n this.message = 'boxNonceEntity in profileTileService.getProfileTile() was null or undefined for sitUserId: ' + sitUserId; // tempTile being null message\r\n console.log(this.message);\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.message = 'sitUserId in profileTileService.getProfileTileIndividually() was null or undefined; sitUserId: ' + sitUserId;\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // ----------------------------------------------------------------------------------------\r\n // This method is not in use:\r\n // ----------------------------------------------------------------------------------------\r\n getProfileTileIndividuallyFromServerInBackground (batchOfIds : number[]) : Observable | any{\r\n \r\n debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(batchOfIds) && batchOfIds.length > 0) {\r\n\r\n for (var i = 0; i < batchOfIds.length; i++) {\r\n // NOTE: BACKGROUND-PROCESSING:\r\n debugger;\r\n this.rdm = new RemoteDataModel();\r\n this.rdm.data = batchOfIds[ i ];\r\n this.rdm.methodName = 'getProfileTile';\r\n this.rdm.id = batchOfIds[ i ];\r\n EmitterSubjectService.emitRunBackgroundProcessMethod(this.rdm);\r\n return true;\r\n }\r\n }\r\n }\r\n // ----------------------------------------------------------------------------------------\r\n // This method is not in use:\r\n // ----------------------------------------------------------------------------------------\r\n getProfileTileIndividuallyFromServer (batchOfIds : number[]) : Observable {\r\n\r\n return new Observable((subscriber) => {\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(batchOfIds) && batchOfIds.length > 0) {\r\n\r\n for (var i = 0; i < batchOfIds.length; i++)\r\n {\r\n this.getProfileTile(batchOfIds[ i ]).subscribe(data => {\r\n debugger;\r\n\r\n // get all tiles from the disctionary and chnage-detection will display them:\r\n // --------------------------------------------------------------------------\r\n this.profileTilesArr = this.dictionaryService.profileTileDictionary.size > 0 ? this.dictionaryService.profileTileDictionary.values() : [];\r\n\r\n // Note: since the tiles are saved in dictionary,\r\n // we save the dictionary in indexedDb.\r\n // -----------------------------------------------\r\n // Note: This scheme of saving the whole dictionary runs into the problem of maximum-size of the data allowed to be stored in indexedDb.\r\n // For large dictionaries, there has to be a separate shceme where each entry of the dictionary will be saved and will be retrieved accordingly\r\n // ---------------------------------------------------------------------------------------------------------------------------------------------------\r\n // get the variable in service to false for a singleton use:\r\n this.isSingletonUsed = EmitterSubjectService.getIsObjectStoreNameFoundInTables();\r\n if (this.batchOfIds.length === this.profileTilesArr.length && !this.isSingletonUsed) {\r\n debugger;\r\n // set the singleton use of this profileTileDictionary creation to true:\r\n this.isSingletonUsed = true;\r\n EmitterSubjectService.setIsObjectStoreNameFoundInTables(true);\r\n // debugger;\r\n // subscriber.next(this.profileTilesArr); \r\n }\r\n else {\r\n debugger;\r\n // this.profileTilesArr = ArraySupportServiceStatic.mergeArraysUniq(this.profileTilesArr, [ data ]);\r\n // subscriber.next(this.profileTilesArr);\r\n\t\t\t\t\t\t}\r\n })\r\n }\r\n debugger;\r\n this.profileTilesArr = this.dictionaryService.profileTileDictionary.size > 0 ? this.dictionaryService.profileTileDictionary.values() : [];\r\n\r\n this.dbDexieToDictionaryService\r\n .saveDictionaryToDbDexie(\r\n this.dictionaryService.profileTileDictionary, 'profileTile', this.loginSuccess.signedInUserId);\r\n\r\n subscriber.next(this.profileTilesArr);\r\n\r\n this.timer = setTimeout(() => {\r\n subscriber.complete();\r\n clearTimeout(this.timer);\r\n }, 1000);\r\n }\r\n else {\r\n // debugger;\r\n this.message = 'batchOfIds.length === 0 or null or undefined in getProfileTileIndividuallyFromServer()';\r\n console.log(this.message);\r\n }\r\n })\r\n }\r\n // --------------------------------------------------------------\r\n // getProfileTile ( sitUserId : number ) : Observable\r\n // {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // let tProfileTile : any;\r\n // // debugger;\r\n // return Observable.create( ( observer ) =>\r\n // {\r\n // if ( sitUserId > 0 && this.loginSuccess.signedInUserId > 0 )\r\n // {\r\n // this.sitUser.sitUserId = sitUserId;\r\n // // this.isOnLine &&\r\n // const bnComm : Communication = new Communication();\r\n\r\n // bnComm.sitUserId = sitUserId;\r\n // bnComm.signedInUserId = this.loginSuccess.signedInUserId;\r\n // this.boxNonceEntity = this.salt( bnComm );\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.boxNonceEntity ) )\r\n // {\r\n // // debugger;\r\n // this.httpService.post( '/api/Member/GetProfileTile',\r\n // {\r\n // box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box ),\r\n // nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce ),\r\n // },\r\n // 'json'\r\n // ).subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n // {\r\n // this.boxNonceEntity = result;\r\n // let tempTile;\r\n // /*\r\n // * do not directly assing to profileTile!! capture it in a let first\r\n // */\r\n // const unboxedTile = SlakezSaltServiceStatic.boxUnsalt( result as BoxNonceEntity );\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( unboxedTile ) )\r\n // {\r\n // tempTile = unboxedTile as ProfileTile;\r\n // }\r\n\r\n // // if key 'sitUserId' exists, the unslating produced data\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tempTile ) )\r\n // {\r\n // tempTile = JSON.parse( tempTile ); // convert string to model\r\n // }\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tempTile ) && tempTile.sitUserId > 0 )\r\n // {\r\n // /*\r\n // * -------------------------------------------------------------------------\r\n // * since the received data has been successfull unsalted into model, it is safe to save it to indexedDb\r\n // * emit the tile as boxNonce to be stored in indexedDb by MembersComponent\r\n // * -------------------------------------------------------------------------\r\n // */\r\n // const boxedTile = result as BoxNonceEntity;\r\n // if ( sitUserId > 0 )\r\n // {\r\n // boxedTile.id = sitUserId; // to be used by indexedDb\r\n // boxedTile.key = sitUserId.toString(); // to be used by indexedDb\r\n // boxedTile.sitUserId = sitUserId; // to uniquely identify a user's data\r\n // boxedTile.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // boxedTile.entityName = 'ProfileTile';\r\n // // boxedTile.box = result.box;\r\n // // boxedTile.nonce = result.nonce;\r\n // // debugger;\r\n\r\n\r\n // // EmitterSubjectService.emitBoxNonce( boxedTile );\r\n\r\n // // -------------------------------------------------------------------------\r\n // // debugger;\r\n // tProfileTile = this.executeBeforeViewInit( tempTile, sitUserId, tempTile.id );\r\n\r\n\r\n // // debugger;\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tProfileTile ) )\r\n // {\r\n // // debugger;\r\n // this.profileTile = tProfileTile as ProfileTile;\r\n // this.sitUser.sitUserId = sitUserId;\r\n\r\n // // update the Dictionary:\r\n // // ----------------------\r\n // // this.dictionaryService.updateDictionary( this.profileTile, 'ProfileTile', this.profileTile.sitUserId ); //DO NOT USE THIS. Remove after testing\r\n // // this.dictionaryService.updateProfileTilesDictionary( [ tProfileTile]);\r\n\r\n // debugger; // TODO: step-into here!!!\r\n\r\n // observer.next( this.profileTile );\r\n // }\r\n // }\r\n // }\r\n // }\r\n // })\r\n // }\r\n // }\r\n // });\r\n // }\r\n\r\n // ---------------------------------------------------------------\r\n // --------------------------------------------------------------\r\n // Note : this method is to be used ONLY when Viewing a tile, i.e.memberView/:id\r\n // Not to be listened to by MembersComponent, rather by MemberViewComponent\r\n // --------------------------------------------------------------\r\n // emitProfileTile ( pTile ) : any\r\n //{\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTile ) )\r\n // {\r\n // this.mcLoader = new ModuleComponentLoader();\r\n // this.mcLoader.componentName = 'memberView';\r\n // this.mcLoader.moduleName = 'memberm';\r\n // this.mcLoader.router = this.router;\r\n // this.mcLoader.sitUserId = pTile?.sitUserId;\r\n // EmitterSubjectService.setMCLoader(this.mcLoader);\r\n // // debugger;\r\n // RedirectionServiceStatic.fireMcLoaderRoute(this.mcLoader);\r\n // return true;\r\n // }\r\n // return false;\r\n // }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { ProfileTileService } from './profileTileService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProfileTileServiceService {\r\n constructor (\r\n private profileTileService : ProfileTileService,\r\n ) { }\r\n \r\n // ------------------------------------------------------------------\r\n setProfileTileService (pts : ProfileTileService) : void {\r\n this.profileTileService = pts;\r\n }\r\n getProfileTileService () : ProfileTileService {\r\n return this.profileTileService;\r\n }\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { ElementRef, Injectable, NgZone, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { PhotoMgmtAction } from '../../models/common/photoMgmtAction.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { RendererService } from '../rendererServiceService/rendererService.service';\r\nimport { DefaultSetterServiceStatic } from '../staticServices/defaultSetterServiceStatic.service';\r\nimport { DomUtilsServiceStatic } from '../staticServices/domUtilsServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { JsRegExpServiceStatic } from '../staticServices/jsRegExpServiceStatic.service';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { MessageBuilderServiceStatic } from '../staticServices/messgeBuilderServiceStatic.service';\r\nimport { RendererServiceService } from './rendererServiceService.service';\r\nimport { PagerPhotoMgmt } from '../../models/pagination/pagerPhotoMgmt.model';\r\n\r\n /*\r\n * ===============================================================\r\n * Begin of background-image-animation-system' aka BIAS\r\n * ---------------------------------------------------------------\r\n * BIAS has three main components to it which are:\r\n * 1. Time-Rotater-Component\r\n * 2. Various control-mechanism-methods\r\n * 3. Image-Setter-Component\r\n * ---------------------------------------------------------------\r\n */\r\n\r\n\r\n// TODO: Turn this class into a Static class. Follow the example of DomUtilServiceStatic & RedirectionServiceStatic\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BackgroundImageAnimationService implements OnDestroy {\r\n public renderer! : Renderer2;\r\n\r\n public elementRef! : ElementRef; // partOf Lazy-UnLoading\r\n // public animations : any[] = [ Animations, slideInOutAnimation ];\r\n public animationDelayMs = 8000;\r\n public avatarElementRef! : ElementRef;\r\n // public biasImagesModel: BiasImagesModel = new BiasImagesModel();\r\n // public biasImagesModelArr : BiasImagesModel[] = [];\r\n public biasImages : any[] = [];\r\n public biasKvPhotoArr : KvPhoto[] = [];\r\n public bottom = 'photos/gay-couple-1.jpg'; // default value\r\n public currentPageNo = 0;\r\n // these images are in 'wwwroot/assets/photos/' folder\r\n public defaultImageNameArr : string[] = [\r\n '/assets/photos/gay-couple-1.jpg',\r\n '/assets/photos/gay3.jpg',\r\n '/assets/photos/leatherCouple-2.png',\r\n '/assets/photos/gay1.1.png',\r\n '/assets/photos/leatherMan-2.png',\r\n '/assets/photos/gay2.1.png',\r\n '/assets/photos/leatherMan-4.png',\r\n '/assets/photos/leatherMasterSlave.png',\r\n ];\r\n public defaultKvPhotoArr : KvPhoto[] = [];\r\n private emitterDestroyed$ : Subject = new Subject();\r\n public enums : any;\r\n public enumDataObservable : any;\r\n public indx = 0;\r\n public isDefault = true;\r\n public isMobilevar = false;\r\n public isMouseIn = false;\r\n public isOnLine = false;\r\n public isPhotoMgmt = false;\r\n public isSetPage = false;\r\n public isStop = false;\r\n public isUserDataCleared = false;\r\n public isViewMember = false;\r\n public loginSuccess : LoginSuccess = new LoginSuccess();\r\n public pbgTimer : any;\r\n public photoMgmtAction : PhotoMgmtAction = new PhotoMgmtAction();\r\n public pauseTimer : any;\r\n public profileImageKvPhotos : KvPhoto[] = [];\r\n public profileTile : ProfileTile = new ProfileTile();\r\n public signedInUserId = 0;\r\n public sitUser : SitUser = new SitUser();\r\n public tempElem : any;\r\n public timer : any;\r\n public timerArray : any[] = [];\r\n public top = 'photos/leatherCouple-2.png'; // default value\r\n public window ! : Window;\r\n public yourLoginSuccess : LoginSuccess = new LoginSuccess();\r\n\r\n constructor (\r\n private rendererService : RendererService,\r\n private ngZone : NgZone,\r\n public document : Document,\r\n ) {\r\n if (this.rendererService) {\r\n this.renderer = this.rendererService.getRenderer();\r\n }\r\n this.document = EmitterSubjectService.getDocument();\r\n this.window = EmitterSubjectService.getWindow();\r\n this.defaultKvPhotoArr = this.setDefaultImageNamesToKvPhotoArr(this.defaultImageNameArr);\r\n // -----------------------------------------------------------------\r\n this.defaultKvPhotoArr = this.setDefaultImageNamesToKvPhotoArr(this.defaultImageNameArr);\r\n // this.startRotateBiasAnimation( this.defaultKvPhotoArr);\r\n // ---------------------------------------------------\r\n this.elementRef = EmitterSubjectService.getElementRef();\r\n // ---------------------------------------------------\r\n EmitterSubjectService.currentPageEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n if (result instanceof KvPhoto) {\r\n // debugger;\r\n // this.setKvPhotoBackgroundImagePrimaryOrOtherwise(result);\r\n result = this.setupKvPhotoIfPrimaryOrPrivate(result);\r\n this.updateBackgroundImageOutsideAngular(result.value);\r\n if (result?.elemId?.indexOf('bodyId') === -1 && result?.elemId?.indexOf('pagerVKvPhotoNav') !== -1) {\r\n this.updateBackgroundImageOutsideAngularById(result.elemId, result.value);\r\n }\r\n }\r\n this.emitterDestroyed$.unsubscribe();\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isPhotoMgmtEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.isPhotoMgmt = result as boolean;\r\n \r\n this.emitterDestroyed$.unsubscribe();\r\n // debugger;\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.isViewMemberEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.isViewMember = result as boolean;\r\n \r\n this.emitterDestroyed$.unsubscribe();\r\n // debugger;\r\n });\r\n // --------------------------------------------------------------------------\r\n EmitterSubjectService.setSignedInUserBackgroundImageEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( ( result ) =>\r\n {\r\n // debugger;\r\n this.setSignedInUserBackgroundImage();\r\n\r\n this.emitterDestroyed$.unsubscribe();\r\n } );\r\n\r\n // --------------------------------------------------------------------------\r\n //EmitterSubjectService.profileImagesEmitter\r\n // .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n // .subscribe( ( result ) =>\r\n // {\r\n // // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) )\r\n // {\r\n // this.isDefault = false;\r\n // // debugger;\r\n // this.startBiasKvPhotoArrAnim( result );\r\n // }\r\n\r\n // this.emitterDestroyed$.unsubscribe();\r\n // } );\r\n\r\n // --------------------------------------------------------------\r\n EmitterSubjectService.profileTileEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe(result => {\r\n // debugger;\r\n this.profileTile = result as ProfileTile;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.profileTile.primaryImage)) {\r\n this.isDefault = false;\r\n // debugger;\r\n this.setProfileTileBackgroundImage(this.profileTile);\r\n\r\n this.emitterDestroyed$.unsubscribe();\r\n }\r\n });\r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.resetDbgiEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.isDefault || this.loginSuccess.signedInUserId === 0) {\r\n // debugger;\r\n this.isDefault = this.startDefaultAnimation();;\r\n\r\n }\r\n\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.sitUser = EmitterSubjectService.getSitUserModel();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess) && this.loginSuccess.signedInUserId > 0)\r\n // {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && this.sitUser.sitUserId > 0)\r\n // {\r\n // if (this.sitUser.sitUserId !== this.loginSuccess.signedInUserId) {\r\n // // debugger;\r\n // //let pic = CopyServiceStatic.copyFromLoginSuccessToKvPhoto(this.loginSuccess);\r\n // //this.isDefault = false;\r\n // //this.stopBiasAnimation();\r\n // //this.startBiasKvPhotoArrAnim([ pic ]);\r\n // this.setSitUserBackgroundImage(this.sitUser);\r\n // }\r\n // else {\r\n // // debugger;\r\n // this.setSignedInUserBackgroundImage();\r\n // }\r\n // }\r\n // else if(this.isDefault) {\r\n // // debugger;\r\n // this.isDefault = this.startDefaultAnimation();;\r\n\r\n // }\r\n // }\r\n // else\r\n // {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser)\r\n // && this.sitUser.sitUserId > 0\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser.primaryImage)\r\n // && this.sitUser.primaryImage.length > 0) {\r\n // // debugger;\r\n // this.setSitUserBackgroundImage(this.sitUser);\r\n // }\r\n // // else if (this.isDefault){\r\n // // // debugger;\r\n // // this.isDefault = this.startDefaultAnimation();\r\n\r\n // // } \r\n // }\r\n this.emitterDestroyed$.unsubscribe();\r\n // debugger;\r\n });\r\n // --------------------------------------------------------------\r\n // this.biasImages = this.getPicArrFromKvPhotoArr( this.biasKvPhotoArr);\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n /*\r\n * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n * (2) https://www.concretepage.com/angular-2/angular-4-renderer2-example\r\n * (3) https://stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n * (4) https://stackblitz.com/edit/timer-with-pdestroyed\r\n */\r\n clearInterval(this.pauseTimer);\r\n clearInterval(this.pbgTimer);\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete(); \r\n\r\n this.emitterDestroyed$.unsubscribe();\r\n // debugger;\r\n }\r\n\r\n // ===================================================================================\r\n // BEGIN of Background Image Animation System or BIAS\r\n // ===================================================================================\r\n // ----------------------------------------------------------------\r\n // BIAS: Background Image Animation System\r\n // Author: Sayeed Rahman\r\n // Date: 2021/03/22;7:41pm; Ottawa, ON, Canada\r\n // (c) Copyright.\r\n // ===========================================\r\n\r\n // ----------------------------------------------------------------\r\n getNavHeaderElementById (id : string) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n this.elementRef = EmitterSubjectService.getElementRef();\r\n this.tempElem = document.getElementById(id);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.elementRef)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.elementRef.nativeElement)) {\r\n this.tempElem = this.elementRef.nativeElement.querySelector(id);\r\n }\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem)) {\r\n this.tempElem = this.elementRef.nativeElement.querySelector('#' + id);\r\n }\r\n // debugger;\r\n return this.tempElem;\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n getCurrentBackgroundPageNo () : number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.biasKvPhotoArr) && this.biasKvPhotoArr.length > 0) {\r\n // to calculate for a new page, consider the current page as stale, so increment to get the next page\r\n this.currentPageNo++;\r\n if (this.currentPageNo % (this.biasKvPhotoArr.length + 1) === 0) {\r\n this.currentPageNo = 1;\r\n }\r\n }\r\n return this.currentPageNo;\r\n }\r\n // ----------------------------------------------------------------\r\n getCurrentBackgroundPageIndex () : number {\r\n let currPageNo = this.getCurrentBackgroundPageNo();\r\n // since we are sending the index, decrement the the currentPageNumber\r\n return --currPageNo;\r\n }\r\n\r\n // ----------------------------------------------------------------\r\n public getBiasImage (index : number) : any {\r\n if (index > -1 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.biasKvPhotoArr)) {\r\n let bgi;\r\n if (this.biasKvPhotoArr.length === 0\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.biasKvPhotoArr[ index ])\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.biasKvPhotoArr[ index ].value)) {\r\n this.biasKvPhotoArr = this.defaultKvPhotoArr = this.setDefaultImageNamesToKvPhotoArr(this.defaultImageNameArr);\r\n }\r\n if (this.biasKvPhotoArr.length > index) {\r\n // bgi = 'url(\\'' + this.bgis[ index ].value + '\\')';\r\n // return JsRegExpServiceStatic.normalizeImageData( this.biasKvPhotoArr[ index ].value );\r\n // debugger;\r\n return this.biasKvPhotoArr[ index ].value;\r\n }\r\n else {\r\n // debugger;\r\n return 'url(\\'/assets/photos/leatherCouple-1.png\\')';\r\n }\r\n }\r\n else {\r\n // debugger;\r\n return 'url(\\'/assets/photos/leatherCouple-1.png\\')';\r\n }\r\n }\r\n // -----------------------------------------------------------\r\n nullPromise (data : any) : any {\r\n this.timer = setTimeout(() => {\r\n // debugger;\r\n return data;\r\n }, 500);\r\n clearTimeout(this.timer);\r\n if (this.timer) {\r\n this.timerArray.push(this.timer);\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n rotateBias (i : number, kvPhotoArr : KvPhoto[]) : number {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0 && i <= kvPhotoArr.length\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr[ i ]) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr[ i ].value)) {\r\n let imageDataUrl = kvPhotoArr[ i ].value; // StringServiceStatic.deepCloneJson( bKvPhotoArr[ i ].value ) as string;\r\n // debugger;\r\n this.updateBackgroundImageOutsideAngular(imageDataUrl);\r\n\r\n i === kvPhotoArr.length - 1 ? i = 0 : i++;\r\n }\r\n return i;\r\n }\r\n // ----------------------------------------------------------------\r\n startBiasAnimation (pics : KvPhoto[]) : number {\r\n this.indx = 0;\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pics) && pics.length > 0) {\r\n this.timer = setTimeout(() => {\r\n pics.map(e => {\r\n this.indx++;\r\n this.updateBackgroundImageOutsideAngular(e.value);\r\n\r\n return this.indx;\r\n // debugger;\r\n // this.indx = this.rotateBias( this.indx, this.biasKvPhotoArr );\r\n // EmitterSubjectService.emitRunBiasModuleComponentNgAfterViewInit( true ); //TODO: uncomment if biasModule is used. Currently it is not in use \r\n });\r\n }, 15000);\r\n clearTimeout(this.timer);\r\n this.timerArray.push(this.timer);\r\n }\r\n return this.indx;\r\n }\r\n // ----------------------------------------------------------------\r\n private startBiasKvPhotoArrAnim (pics : KvPhoto[]) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pics) && pics.length > 0) {\r\n // rotate the profileImages: \r\n // set the first image right away, as others are intervaled with time\r\n\r\n // debugger;\r\n // let imageDataUrl = pics[ pics.length - 1 ].value; // always show the latest on the array\r\n let i = 0;\r\n let imageDataUrl = '';\r\n this.timer = setInterval(() => {\r\n imageDataUrl = pics[ i ].value;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageDataUrl)) {\r\n this.updateBackgroundImageOutsideAngular(imageDataUrl);\r\n // debugger;\r\n }\r\n i === pics.length - 1 ? i = 0 : i++;\r\n // debugger;\r\n clearInterval(this.timer);\r\n }, 15000);\r\n\r\n clearInterval(this.timer);\r\n this.timerArray.push(this.timer);\r\n\r\n // Remove before deployment:\r\n //if ( pics.length > 1 )\r\n //{\r\n // // debugger;\r\n // this.rotateBias( pics );\r\n //}\r\n //else\r\n //{\r\n // // debugger;\r\n // this.timerArray.map( t => clearInterval( t ) );\r\n //}\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Independent-Image-Setting-System (IISS): Begin\r\n // This system will display any image centered and fully covered\r\n // Caution: PagerVKvPhotoNav UI is not visible unless isViewMember == true !!\r\n // ---------------------------------------------------------------\r\n setPagerVNavKvPhotoImage (kvp : KvPhoto) : void {\r\n // debugger;\r\n this.isViewMember = EmitterSubjectService.getIsViewMember();\r\n\r\n // ----------------------------------------------------\r\n // if PagerVKvPhotoNav is not visible, make it visible.\r\n // othgerwise domUtilsService will not be able to find\r\n // the respective html-Element.\r\n //\r\n // isViewMember may have not been emitted by other services/components,\r\n // instead they might have been set, in which case\r\n // appComponent minght not have the updated isValueMemer's value\r\n // and open the UI because it only listens to the emitter\r\n // and acts accordingly.\r\n // ----------------------------------------------------\r\n if (!this.isViewMember) {\r\n this.isViewMember = true;\r\n }\r\n EmitterSubjectService.setIsViewMember(this.isViewMember); \r\n // ----------------------------------------------------\r\n\r\n DomUtilsServiceStatic.setDomUtilsElementRef(this.elementRef);\r\n let elem : any;\r\n let tImageData = '';\r\n let imageData: any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.elemId)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n // debugger;\r\n elem = document.getElementById(kvp.elemId);\r\n // debugger;\r\n\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n // debugger;\r\n elem = DomUtilsServiceStatic.getElementById(kvp.elemId);\r\n // debugger;\r\n }\r\n // debugger;\r\n if (StringServiceStatic.typeCheck(kvp.value).indexOf(\"Object\") !== -1) {\r\n tImageData = kvp.value.pic;\r\n }\r\n else {\r\n tImageData = kvp.value;\r\n }\r\n\r\n //let imageData = JsRegExpServiceStatic.normalizeImageData(tImageData); // test-2\r\n\r\n if (tImageData.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1) {\r\n tImageData = JsRegExpServiceStatic.normalizeImageData(tImageData);\r\n tImageData = JsRegExpServiceStatic.setUrlForImageData(tImageData);\r\n }\r\n else tImageData = 'url(' + tImageData + ')';\r\n\r\n let imageData = tImageData;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n // debugger\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.renderer)) {\r\n // debugger;\r\n this.renderer.setStyle(elem, 'background-image', imageData);\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem.nativeElement)) {\r\n // debugger;\r\n elem.nativeElement.style.background = imageData;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n selectCurrentElemDeselctOthersForKvMAGlyph (kvgArr : KvMemberActivityGlyph[], item : KvMemberActivityGlyph, prefix : any) : void {\r\n let currentPageElemId = '';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item.elemId) && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(prefix)) {\r\n if (item.itemNum >= 0) {\r\n // debugger;\r\n currentPageElemId = prefix + item.itemNum.toString();\r\n }\r\n else if (item.index >= 0) {\r\n // debugger;\r\n currentPageElemId = prefix + item.index.toString();\r\n }\r\n else {\r\n // debugger;\r\n currentPageElemId = prefix + '0';\r\n }\r\n }\r\n\r\n let currentItemElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentPageElemId)) {\r\n currentItemElem = document.getElementById(currentPageElemId) as HTMLElement;\r\n }\r\n\r\n // debugger;\r\n // highlight PrimaryImage in deepskyblue color:\r\n // --------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentItemElem)) {\r\n // debugger;\r\n // this.bias.removeClassForElement(currentItemElem, 'smallerCircle');\r\n this.addClassForElement(currentItemElem, 'smallerPrimary');\r\n // currentItemElem.remove();\r\n }\r\n // debugger;\r\n // remove highlight active-Image in array in gold color:\r\n // ----------------------------------------------\r\n let elemId = prefix;\r\n let tempElemIdStr = '';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvgArr) && kvgArr.length > 0) {\r\n for (let i = 0; i < kvgArr.length; i++) {\r\n if (kvgArr[ i ].photoBnId !== item.photoBnId) {\r\n\r\n // try getting the element using itemNum:\r\n // --------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvgArr[ i ].elemId)) {\r\n tempElemIdStr = elemId + kvgArr[ i ].itemNum.toString();\r\n }\r\n else {\r\n tempElemIdStr = kvgArr[ i ].elemId;\r\n }\r\n let tempElem = document.getElementById(tempElemIdStr) as HTMLElement;\r\n\r\n // try getting the element using index if element is still null or undefined:\r\n // --------------------------------------------------------------------------\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n tempElemIdStr = elemId + kvgArr[ i ].index.toString();\r\n }\r\n else {\r\n tempElemIdStr = kvgArr[ i ].elemId;\r\n }\r\n tempElem = document.getElementById(tempElemIdStr) as HTMLElement;\r\n\r\n // now add the class:\r\n // ------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n // this.bias.removeClassForElement(tempElem, 'smallerPrimary');\r\n this.addClassForElement(tempElem, 'smallerCircle');\r\n // debugger;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n // will draw the body-bg with item.value:\r\n // --------------------------------------\r\n // EmitterSubjectService.emitCurrentPage(item);\r\n }\r\n // ----------------------------------------------------------------\r\n addPrimaryOrOtherClassToKvPhotoElement (item : KvPhoto) : KvPhoto {\r\n let currentPageElemId = '';\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item.elemId)) {\r\n if (item.itemNum >= 0) {\r\n // debugger;\r\n currentPageElemId = 'pagerVKvPhotoNav-' + item.itemNum.toString();\r\n }\r\n else if (item.index >= 0) {\r\n // debugger;\r\n currentPageElemId = 'pagerVKvPhotoNav-' + item.index.toString();\r\n }\r\n else {\r\n // debugger;\r\n currentPageElemId = 'pagerVKvPhotoNav-0';\r\n }\r\n item.elemId = currentPageElemId;\r\n }\r\n else {\r\n currentPageElemId = item.elemId;\r\n }\r\n\r\n let currentItemElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentPageElemId)) {\r\n currentItemElem = document.getElementById(currentPageElemId) as HTMLElement;\r\n }\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n let isPrimary = false;\r\n // case: signedInUser:\r\n // -------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.sitUser) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)\r\n && (item.photoBnId === this.loginSuccess.primaryPhotoBnId || item.photoBnId === this.sitUser.primaryPhotoBnId\r\n || item.photoId === this.loginSuccess.primaryPhotoBnId || item.photoId === this.sitUser.primaryPhotoBnId)) {\r\n item.isPrimary = true;\r\n isPrimary = true;\r\n }\r\n\r\n // debugger;\r\n // highlight PrimaryImage in deepskyblue color:\r\n // --------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentItemElem)) {\r\n if (isPrimary) {\r\n // debugger;\r\n // this.removeClassForElement(currentItemElem, 'smallerCircle');\r\n this.addClassForElement(currentItemElem, 'smallerPrimary');\r\n }\r\n else {\r\n // this.removeClassForElement(currentItemElem, 'smallerPrimary');\r\n this.addClassForElement(currentItemElem, 'smallerCircle');\r\n }\r\n // currentItemElem.remove();\r\n }\r\n }\r\n return item;\r\n }\r\n // ----------------------------------------------------------------\r\n selectCurrentElemDeselctOthersForKvPhoto (kvpArr : KvPhoto[], item : KvPhoto) : void {\r\n let currentPageElemId = '';\r\n let tElemId = 'pagerVKvPhotoNav-';\r\n let tempElemIdStr = '';\r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item)) {\r\n\r\n // remove highlight of any active-Image in array :\r\n // ----------------------------------------------- \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr) && kvpArr.length > 0) {\r\n for (let i = 0; i < kvpArr.length; i++) { \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr[ i ])) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvpArr[ i ].elemId)) {\r\n tempElemIdStr = tElemId + i.toString();\r\n }\r\n else {\r\n tempElemIdStr = kvpArr[ i ].elemId;\r\n }\r\n }\r\n let tempElem = document.getElementById(tempElemIdStr) as HTMLElement;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n this.removeClassForElement(tempElem, 'smallerCircle');\r\n // debugger;\r\n this.removeClassForElement(tempElem, 'smallerPrimary');\r\n } \r\n }\r\n }\r\n\r\n if (item.photoBnId > 0)\r\n {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(item.elemId))\r\n {\r\n if (item.index >= 0) {\r\n // debugger;\r\n currentPageElemId = 'pagerVKvPhotoNav-' + item.index.toString();\r\n }\r\n else {\r\n // debugger;\r\n currentPageElemId = 'pagerVKvPhotoNav-0';\r\n }\r\n }\r\n else {\r\n currentPageElemId = item.elemId;\r\n\t\t\t }\r\n // debugger;\r\n let currentItemElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentPageElemId)) {\r\n currentItemElem = document.getElementById(currentPageElemId) as HTMLElement;\r\n }\r\n\r\n // debugger;\r\n // highlight PrimaryImage in deepskyblue color:\r\n // --------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(currentItemElem)) {\r\n if (item.isPrimary && item.privacy.toLocaleLowerCase().indexOf('primary') !== -1) {\r\n // debugger;\r\n this.addClassForElement(currentItemElem, 'smallerPrimary');\r\n }\r\n else {\r\n this.addClassForElement(currentItemElem, 'smallerCircle');\r\n }\r\n } \r\n } \r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n public toggleClassOutsideAngular (elemId : string, className : string) : any {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n this.tempElem = document.getElementById(elemId);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.tempElem)) {\r\n const outsideClasses = this.tempElem.classList;\r\n\r\n if (outsideClasses.contains(className)) {\r\n this.renderer?.removeClass(this.tempElem, className);\r\n //if (!outsideClasses.contains('backImage')) {\r\n // this.renderer?.addClass(this.tempElem, 'backImage');\r\n //}\r\n } else {\r\n this.renderer?.addClass(this.tempElem, className);\r\n //if (outsideClasses.contains('backImage')) {\r\n // this.renderer?.removeClass(this.tempElem, 'backImage');\r\n //}\r\n }\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------\r\n // Note: This method changes the style of the element that is outise of Angular\r\n // ---------------------------------------------------------------------------\r\n public updateStyleOutsideAngular ( elemId: string, styleName: string, styleValue:string ): void\r\n {\r\n let tElem: any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(styleName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(styleValue)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId))\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( document ) )\r\n {\r\n tElem = document.getElementById( elemId ) as HTMLElement;\r\n }\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.ngZone)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.renderer))\r\n {\r\n this.ngZone.runOutsideAngular( () =>\r\n {\r\n // debugger;\r\n (this.renderer as Renderer2).setStyle(tElem, styleName, styleValue );\r\n // ( this.renderer as Renderer2 ).removeClass( tElem, 'bgImageCentered' );\r\n // ( this.renderer as Renderer2 ).addClass( tElem, 'bgImageStillCentered' );\r\n // -----------------------------------------------------------------------------\r\n // Note: DO NOT Delete the below commented code!\r\n // This moves the background pic like a pendulam when 'bgImageCentered' is added\r\n // otherwise the image is not moving or doing any animation\r\n // -----------------------------------------------------------------------------\r\n //if ( !this.isDefault )\r\n //{\r\n // // ( this.renderer as Renderer2 ).removeClass( tElem, 'bgImageCentered' );\r\n // ( this.renderer as Renderer2 ).addClass( tElem, 'bgImageStillCentered' );\r\n //}\r\n //else\r\n //{\r\n // ( this.renderer as Renderer2 ).removeClass( tElem, 'bgImageStillCentered' );\r\n // ( this.renderer as Renderer2 ).addClass( tElem, 'bgImageCentered' );\r\n //}\r\n });\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------------------\r\n public updateBackgroundImageOutsideAngular (image : string) : void {\r\n let imageData = image;\r\n let tElem : any;\r\n let elemId : string = 'bodyId';\r\n \r\n tElem = DomUtilsServiceStatic.getElementById(elemId) as HTMLElement;\r\n \r\n // debugger;\r\n if(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n if (!image.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n imageData = JsRegExpServiceStatic.setUrlForImageData(image);\r\n }\r\n else if (!image.match(JsRegExpServiceStatic.photoUrlPrefixPattern)) {\r\n imageData = 'url(\\'' + image + '\\')';\r\n }\r\n else {\r\n imageData = image;\r\n }\r\n if (!image.match(JsRegExpServiceStatic.photoUrlPrefixPattern)) {\r\n imageData = 'url(\\'' + image + '\\')';\r\n }\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n \r\n }\r\n this.renderer = this.rendererService.getRenderer();\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.ngZone)) {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.renderer.setStyle(tElem, 'background-image', imageData);\r\n // this.addClassForElement(tElem, 'fade-in');\r\n // debugger;\r\n });\r\n } else {\r\n MessageBuilderServiceStatic.printMessage(0, 'in updateBackgroundImageOutsideAngular() imageData==null or tElem==null or ngZone == null');\r\n }\r\n }\r\n // ---------------------------------------------------------------------------\r\n public updateBackgroundImageOutsideAngularById (id : string, image : string) : void {\r\n let imageData : any;\r\n let tElem : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n tElem = DomUtilsServiceStatic.getElementById(id);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n if (image.match(JsRegExpServiceStatic.allImageTypesFilePattern)) {\r\n imageData = image;\r\n }\r\n else {\r\n if (!image.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n imageData = JsRegExpServiceStatic.setUrlForImageData(image);\r\n }\r\n else if (!image.match(JsRegExpServiceStatic.photoUrlPrefixPattern)) {\r\n imageData = 'url(\\'' + image + '\\')';\r\n }\r\n else {\r\n imageData = image;\r\n }\r\n }\r\n }\r\n else {\r\n imageData = 'url(\\' \\')'; // single white space in string\r\n }\r\n this.renderer = this.rendererService.getRenderer();\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n imageData = 'url(\\' \\')'; // single white space in string\r\n }\r\n if( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.ngZone)) {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.renderer.setStyle(tElem, 'background-image', imageData);\r\n // this.addClassForElement(tElem, 'fade-in');\r\n // debugger;\r\n });\r\n }\r\n else {\r\n MessageBuilderServiceStatic.printMessage(0, 'in updateBackgroundImageOutsideAngularById() imageData==null or tElem==null or ngZone == null');\r\n\t\t}\r\n }\r\n // -----------------------------------------------------------------------------------\r\n // ===================================================================================\r\n // END of Background Image Animation System or BIAS\r\n // ===================================================================================\r\n\r\n // ===================================================================================\r\n // BEGIN of Default Background Image setting mechanism\r\n // ===================================================================================\r\n // -----------------------------------------------------------------------------------\r\n public setPhotoToKvPhoto (photo : Photo) : KvPhoto {\r\n const kvP = new KvPhoto();\r\n kvP.index = 0;\r\n kvP.itemNum = 1;\r\n kvP.key = 'defaultImage-' + 0; // TODO: check if it needs to use only the file names\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.imageString)) {\r\n \r\n // TODO: may make a composite key like this: \"photoId-\" + photo.photoId.toString()+ \",photoBnId-\" + photo.photoBnId.toString():\r\n kvP.key = photo.photoId.toString();\r\n\r\n kvP.value = JsRegExpServiceStatic.normalizeImageData(photo.imageString);\r\n kvP.value = JsRegExpServiceStatic.setUrlForImageData(kvP.value);\r\n }\r\n else {\r\n kvP.value = 'url(\\'\\/assets\\/photos\\/DefaultImageMale.jpg\\')';\r\n }\r\n return kvP;\r\n }\r\n // -----------------------------------------------------------------------------------\r\n public setImageStringToKvPhoto ( imageStr: string ): KvPhoto\r\n {\r\n const kvP = new KvPhoto();\r\n kvP.index = 0;\r\n kvP.itemNum = 1;\r\n kvP.key = 'defaultImage-' + 0; // TODO: check if it needs to use only the file names\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( imageStr ) )\r\n {\r\n kvP.value = JsRegExpServiceStatic.normalizeImageData(imageStr);\r\n\r\n kvP.value = JsRegExpServiceStatic.setUrlForImageData(kvP.value); \r\n }\r\n else\r\n {\r\n kvP.value = 'url(\\'\\/assets\\/photos\\/DefaultImageEmoji.jpg\\')';\r\n }\r\n return kvP;\r\n }\r\n // -----------------------------------------------------------------------------------\r\n public setDefaultImageNameArrToKvPhotoArr (): KvPhoto[]\r\n {\r\n return this.setDefaultImageNamesToKvPhotoArr( this.defaultImageNameArr );\r\n }\r\n // -----------------------------------------------------------------------------------\r\n public setDefaultImageNamesToKvPhotoArr ( dImageNames: string[] ): KvPhoto[]\r\n {\r\n const tBgis: KvPhoto[] = [];\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dImageNames ) && dImageNames.length > 0 )\r\n {\r\n let i = 0;\r\n\r\n dImageNames.map( ( e ) =>\r\n {\r\n const kvP = new KvPhoto();\r\n\r\n kvP.index = i;\r\n kvP.itemNum = i + 1;\r\n kvP.key = 'defaultImage-' + i.toString(); // TODO: check if it needs to use only the file names\r\n kvP.value = e;\r\n tBgis.push( kvP );\r\n i++;\r\n } );\r\n }\r\n // debugger;\r\n this.biasKvPhotoArr = tBgis;\r\n return this.biasKvPhotoArr;\r\n }\r\n // ===================================================================================\r\n // END of Default Background Image setting mechanism\r\n // ===================================================================================\r\n\r\n\r\n // ===================================================================================\r\n // Note: This is a non-default single image renderer.\r\n // -----------------------------------------------------------------------------------\r\n public setBackgroundStillImageForHTMLElement ( elem: HTMLElement, imageUrl: string ): any\r\n {\r\n let imageData : any;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( elem ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( imageUrl ) )\r\n {\r\n // let image = JsRegExpServiceStatic.normalizeImageData( imageUrl ) as string;\r\n if (imageUrl.toString().toLowerCase().indexOf('data:image/png;base64,') !== -1) {\r\n imageData = JsRegExpServiceStatic.normalizeImageData(imageUrl);\r\n imageData = JsRegExpServiceStatic.setUrlForImageData(imageData);\r\n }\r\n else imageData = 'url(' + imageData + ')';\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( imageData.toString() ) )\r\n {\r\n // debugger;\r\n // this.stopBiasAnimation();\r\n this.biasKvPhotoArr = [ this.setImageStringToKvPhoto( imageData ) ];\r\n // debugger;\r\n this.startBiasKvPhotoArrAnim( this.biasKvPhotoArr );\r\n\r\n // ( this.renderer as Renderer2 ).setStyle( elem, 'background-image', image );\r\n }\r\n return true;\r\n }\r\n else return false;\r\n }\r\n // -----------------------------------------------------------------------------------\r\n\r\n public setBackgroundStillImage ( imageUrl: string ): any\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( imageUrl ) )\r\n {\r\n // debugger;\r\n return this.setBackgroundStillImageForElemId( 'bodyId', imageUrl);\r\n }\r\n else return false;\r\n }\r\n // -----------------------------------------------------------------------------------\r\n public setBackgroundStillImageForElemId ( elemId: string, imageUrl: string ): any\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( elemId ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( imageUrl ) )\r\n {\r\n let tElem = document.getElementById( elemId ) as HTMLElement;\r\n return this.setBackgroundStillImageForHTMLElement(tElem, imageUrl);\r\n }\r\n else return false;\r\n }\r\n // ------------------------------------------------------------------------------------\r\n getPicArrFromKvPhotoArr ( kvPhotoArr : KvPhoto[] ) : any\r\n {\r\n let picArr:any[] = [];\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( kvPhotoArr ) && kvPhotoArr.length > 0 )\r\n {\r\n kvPhotoArr.map( e =>\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e.value ) )\r\n {\r\n picArr.push( e.value as string);\r\n }\r\n } );\r\n }\r\n return picArr;\r\n }\r\n // ===================================================================================\r\n // ===================================================================================\r\n // BEGIN of BIAS API\r\n // ===================================================================================\r\n // ----------------------------------------------------------------------------------\r\n getDefaultImageNameArr (): any[]\r\n {\r\n return this.defaultImageNameArr;\r\n }\r\n // ---------------------------------------------------------------\r\n public setBiasKvPhotoArr ( kvPhotoArr: KvPhoto[] ): any\r\n {\r\n // debugger;\r\n this.biasKvPhotoArr = kvPhotoArr;\r\n }\r\n // ----------------------------------------------------------------\r\n // Note: Do not use it for a single KvPhoto, instead if possible,\r\n // use setSitUserBackgroundImage(profileTile) or\r\n // setSignedInUserBackgroundImage() or\r\n // setProfileTileBackgroundImage()\r\n // ----------------------------------------------------------------\r\n // public startBiasAnimation ( kvPhotoArr: KvPhoto[] ): void\r\n // {\r\n // // debugger;\r\n // this.startBiasKvPhotoArrAnim( kvPhotoArr ); \r\n // this.isDefault = false;\r\n\r\n // }\r\n // ----------------------------------------------------------------\r\n // Note: This is the only stop animation method.\r\n // ----------------------------------------------------------------\r\n public stopBiasAnimation (): boolean\r\n {\r\n // debugger;\r\n this.isDefault = false;\r\n this.timer = -1;\r\n this.biasKvPhotoArr = [];\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n return this.isDefault;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: API: for default-case\r\n // Note: Whoever calls this must also run the ngAfterViewInit()\r\n // ----------------------------------------------------------------\r\n public startDefaultAnimation (): boolean\r\n {\r\n // debugger;\r\n this.isDefault = true;\r\n this.defaultKvPhotoArr = this.resetDefaultBias();\r\n // debugger;\r\n // ----------------------------------------------------------------------------\r\n\r\n return this.isDefault;\r\n }\r\n // ----------------------------------------------------------------------------------\r\n public resetDefaultBias (): KvPhoto[]\r\n {\r\n // debugger;\r\n this.isDefault = true;\r\n if ( this.defaultKvPhotoArr.length === 0 )\r\n {\r\n // debugger;\r\n this.defaultKvPhotoArr = this.setDefaultImageNamesToKvPhotoArr( this.defaultImageNameArr );\r\n }\r\n\r\n\r\n DefaultSetterServiceStatic.clearUserData();\r\n\r\n // debugger;\r\n this.startBiasKvPhotoArrAnim(this.defaultKvPhotoArr );\r\n\r\n return this.defaultKvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Whoever calls this must also run the ngAfterViewInit()\r\n // API: Observable returns biasImages or nullPromise\r\n //\r\n // This method is not used by any other methods\r\n // ----------------------------------------------------------------\r\n //public startKvPhotoArrAnimation ( kvPhotos: KvPhoto[] ): void\r\n //{\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( kvPhotos ) && kvPhotos.length > 0 )\r\n // {\r\n // this.isDefault = false;\r\n // this.startBiasKvPhotoArrAnim( kvPhotos );\r\n // // debugger;\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n // Note: API: for any-case: [default, photoMgmt, memberView]\r\n // Note: Onbserable returns biasImages or nullPromise.\r\n // All-References: none;\r\n // ----------------------------------------------------------------\r\n public startKvPhotoAnimation ( pics: KvPhoto[], actionType: string ): void\r\n {\r\n // debugger;\r\n\r\n if ( pics && pics.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( actionType ) )\r\n {\r\n // debugger;\r\n switch ( actionType.toLowerCase() )\r\n {\r\n case 'profilepics':\r\n case 'memberview':\r\n case 'myphotos':\r\n // debugger;\r\n this.isDefault = false;\r\n this.startBiasKvPhotoArrAnim( pics );\r\n break;\r\n default:\r\n // debugger;\r\n this.isDefault = false;\r\n this.startBiasKvPhotoArrAnim(pics);\r\n //this.startDefaultAnimation(); // the default animaton behavior.\r\n break;\r\n }\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n setAvatarElementRef (aElemRef : ElementRef) :void {\r\n this.avatarElementRef = aElemRef;\r\n }\r\n // ----------------------------------------------------------------\r\n getAvatarElementById (id : string) : any {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.avatarElementRef)) {\r\n this.avatarElementRef = EmitterSubjectService.getElementRef();\r\n } \r\n return this.avatarElementRef;\r\n }\r\n // -----------------------------------------------------------------\r\n public setImage (id : string, image: string) : void {\r\n debugger;\r\n let imageData : any;\r\n let tempElem : any;\r\n let elemRef = EmitterSubjectService.getElementRef();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n tempElem = document.getElementById(id);\r\n }\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemRef)) {\r\n tempElem = elemRef.nativeElement.querySelector(id);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n tempElem = elemRef.nativeElement.querySelector('#' + id);\r\n // debugger;\r\n }\r\n }\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n\r\n // imageData = JsRegExpServiceStatic.normalizeImageData(image);\r\n if (!image.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n /*imageData = JsRegExpServiceStatic.normalizeImageData(image);*/\r\n imageData = JsRegExpServiceStatic.setUrlForImageData(imageData);\r\n }\r\n //else if (!image.match(JsRegExpServiceStatic.photoUrlPrefixPattern)) {\r\n // imageData = JsRegExpServiceStatic.setUrlForImageData(imageData);\r\n //}\r\n\r\n // setting background-image\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.renderer)) {\r\n // debugger\r\n // this.renderer?.setStyle(tempElem, 'background-image', imageData);\r\n this.updateBackgroundImageOutsideAngularById(id, imageData);\r\n // EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n }\r\n }\r\n }\r\n // -----------------------------------------------------------------\r\n public clearPrimaryImage () : void {\r\n this.updateBackgroundImageOutsideAngularById('primaryPhotoBnId', ' '); \r\n }\r\n // -----------------------------------------------------------------\r\n public setPrimaryImage (id : string, display: boolean) : void {\r\n // debugger;\r\n let imageData : any;\r\n let tempElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n \r\n\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess(); // get the latest loginSuccess value\r\n if (display) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryImage)\r\n && this.loginSuccess.primaryImage.length > 0) {\r\n imageData = this.loginSuccess.primaryImage;\r\n // debugger;\r\n }\r\n else {\r\n imageData = '/assets/photo/DefaultImageMale.jpg'\r\n // debugger;\r\n }\r\n }\r\n else {\r\n imageData = '/assets/photo/DefaultImageMale.jpg'\r\n // debugger;\r\n }\r\n }\r\n else imageData = '/assets/photo/DefaultImageMale.jpg';\r\n\r\n // setting background-image: \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n // debugger\r\n this.updateBackgroundImageOutsideAngularById(id, imageData);\r\n }\r\n }\r\n }\r\n // -----------------------------------------------------------------------------------\r\n public setBodyElementBackgroundImage (imageData : string) : void {\r\n let elem = document.getElementById('bodyId');\r\n // debugger;\r\n this.renderer = this.rendererService.getRenderer();\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.renderer)) {\r\n // debugger\r\n if (!imageData.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n imageData = JsRegExpServiceStatic.setUrlForImageData(imageData); // this is the only method that shoudl be used because it self-normalizes \r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)\r\n && !imageData.match(JsRegExpServiceStatic.photoUrlPrefixPattern)) {\r\n imageData = 'url(\\'' + imageData.trim() + '\\')'; \r\n }\r\n \r\n \r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n this.renderer.setStyle(elem, 'background-image', imageData);\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n\t\t\t}\r\n // debugger;\r\n // this.updateBackgroundImageOutsideAngular(imageData);\r\n }\r\n }\r\n // -----------------------------------------------------------------------------------\r\n public setElementBackgroundImage (id : string, imageData : string) : void {\r\n let elem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n elem = this.getNavHeaderElementById(id); // this.getAvatarElementById(id); //\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.renderer)) {\r\n // debugger\r\n imageData = JsRegExpServiceStatic.setUrlForImageData(imageData); // this is the only method that shoudl be used because it self-normalizes \r\n\r\n \r\n this.renderer = this.rendererService.getRenderer();\r\n // debugger;\r\n // this.renderer.setStyle(elem, 'background-image', imageData);\r\n this.updateBackgroundImageOutsideAngularById(id, imageData);\r\n\r\n // TODO: watch for relevant components number to fire change detection.\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n }\r\n }\r\n // -----------------------------------------------------------------------------------\r\n chooseLockOrPicforKvPhoto (comparator : string) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(comparator)) {\r\n switch (comparator.toLowerCase()) {\r\n case '':\r\n break;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n // -----------------------------------------------------------------------------------\r\n public setKvPhotoBackgroundImage (kvp : KvPhoto) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)\r\n && kvp.value.length > 0) {\r\n this.isDefault = false;\r\n // this.stopBiasAnimation();\r\n this.updateBackgroundImageOutsideAngular(kvp.value);\r\n // debugger;\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n \r\n // -----------------------------------------------------------------------------------\r\n public setupKvPhotoIfPrimaryOrPrivate (kvp : KvPhoto) : any {\r\n // debugger;\r\n let imageStr = '';\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n if (kvp.isUnlocked || this.loginSuccess.signedInUserId == kvp.sitUserId\r\n || (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.privacy)\r\n && kvp.privacy.toLowerCase().indexOf('public') !== -1)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n ; // do nothing\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.privacy)\r\n && kvp.privacy.toLowerCase().indexOf('private') !== -1) {\r\n imageStr = 'assets/photos/lock.jpg';\r\n // debugger;\r\n }\r\n else\r\n imageStr = 'assets/photos/lock.jpg';\r\n\t\t\t}\r\n return kvp;\r\n }\r\n // -----------------------------------------------------------------------------------\r\n displayBackgroundAndNavImageForKvPhoto (kvp : KvPhoto, pagerVKvPhotoNav?: PagerPhotoMgmt) : KvPhoto {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n // debugger;\r\n kvp = this.setupKvPhotoIfPrimaryOrPrivate(kvp);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value)) {\r\n this.updateBackgroundImageOutsideAngular(kvp.value);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.elemId)\r\n && kvp.elemId.indexOf('bodyId') === -1\r\n && kvp.elemId.indexOf('pagerVKvPhotoNav') !== -1) {\r\n this.updateBackgroundImageOutsideAngularById(kvp.elemId, kvp.value);\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVKvPhotoNav.pagedItems)\r\n && pagerVKvPhotoNav.pagedItems.length > 0 ) {\r\n this.selectCurrentElemDeselctOthersForKvPhoto(pagerVKvPhotoNav.pagedItems, kvp.value);\r\n\t\t\t}\r\n }\r\n return kvp;\r\n\t}\r\n // -----------------------------------------------------------------------------------\r\n // Note: when the user is singedIn, this should be called instead of defaultAnimation.\r\n // -----------------------------------------------------------------------------------\r\n public setSignedInUserBackgroundImage ( ): void\r\n {\r\n // debugger;\r\n var primaryImage = '';\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (this.loginSuccess.signedInUserId > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess.primaryImage)\r\n && this.loginSuccess.primaryImage.length > 0) {\r\n primaryImage = this.loginSuccess.primaryImage;\r\n }\r\n else {\r\n primaryImage = 'assets/photos/DefaultImageMale.jpg'\r\n }\r\n\r\n this.updateBackgroundImageOutsideAngular(primaryImage);\r\n \r\n }\r\n // -----------------------------------------------------------------------------------\r\n public setSitUserBackgroundImage (sitUser : SitUser) : any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.primaryImage)\r\n && sitUser.primaryImage.length > 0) {\r\n this.isDefault = false;\r\n // this.stopBiasAnimation();\r\n this.updateBackgroundImageOutsideAngular(sitUser.primaryImage);\r\n // debugger;\r\n }\r\n }\r\n \r\n // -----------------------------------------------------------------------------------\r\n public setProfilePicsBackgroundImage (pPics : ProfilePics) : any\r\n {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) \r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoArr) && pPics.filteredKvPhotoArr.length > 0) {\r\n let imageStr = '';\r\n for ( var e of pPics.filteredKvPhotoArr){\r\n if (e && e.privacy == 'public') {\r\n imageStr = e.value;\r\n break;\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageStr)) {\r\n this.isDefault = false;\r\n // this.stopBiasAnimation();\r\n this.updateBackgroundImageOutsideAngular(imageStr);\r\n // debugger;\r\n }\r\n }\r\n }\r\n // -----------------------------------------------------------------------------------\r\n // Note: when the user is singedIn, this should be called instead of defaultAnimation.\r\n // -----------------------------------------------------------------------------------\r\n public setProfileTileBackgroundImage (pTile: ProfileTile): any\r\n {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage ) )\r\n {\r\n this.isDefault = false;\r\n // this.stopBiasAnimation();\r\n this.updateBackgroundImageOutsideAngular(pTile.primaryImage);\r\n // debugger;\r\n }\r\n }\r\n\r\n // ===================================================================================\r\n // END of BIAS API\r\n // ===================================================================================\r\n\r\n \r\n // ---------------------------------------------------------------\r\n setViewMemberPage ( photo: KvPhoto ): any\r\n {\r\n this.isDefault = false;\r\n this.biasKvPhotoArr = [ photo ];\r\n // set the first image right away, as others are intervaled with time\r\n let imageDataUrl = this.biasKvPhotoArr[ 0 ].value;\r\n this.updateBackgroundImageOutsideAngular( imageDataUrl );\r\n //this.startRotateBiasAnimation();\r\n }\r\n\r\n /*\r\n * --------------------------------------------------------------\r\n * Refactored on 2020/12/29\r\n *\r\n * Set the background image by elemId and KvPhoto for PhotoNavComponent. // elemId=bodyBackgroundImageId\r\n * ref: https:// developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test\r\n *\r\n * TODO: deprecate: as of 20210627\r\n * --------------------------------------------------------------\r\n */\r\n public setPhotoNavigationPageBackground ( page: KvPhoto ): any\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( page ) )\r\n {\r\n this.isDefault = false;\r\n this.biasKvPhotoArr = [ page ];\r\n // set the first image right away, as others are intervaled with time\r\n let imageDataUrl = this.biasKvPhotoArr[ 0 ].value;\r\n this.updateBackgroundImageOutsideAngular( imageDataUrl );\r\n // this.startRotateBiasAnimation();\r\n }\r\n return true;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * 3) Image-Setter-Component:\r\n * Various image-getter-functions:\r\n * END:\r\n * ---------------------------------------------------------------\r\n */\r\n\r\n // ---------------------------------------------------------------\r\n public removeClass ( elemId: string, className: string ): any\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( elemId ) )\r\n {\r\n this.tempElem = document.getElementById( elemId );\r\n }\r\n\r\n this.tempElem = document.getElementById( elemId );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.tempElem ) )\r\n {\r\n const outsideClasses = this.tempElem.classList;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( className ) && outsideClasses.contains( className ) )\r\n {\r\n this.renderer?.removeClass( this.tempElem, className );\r\n }\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public removeClassForElement (elem : HTMLElement, className : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n const outsideClasses = elem.classList;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outsideClasses)) {\r\n if (outsideClasses.contains(className)) {\r\n this.renderer?.removeClass(elem, className);\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public addClass ( elemId: string, className: string ): any\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( elemId ) )\r\n {\r\n this.tempElem = document.getElementById( elemId );\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.tempElem ) )\r\n {\r\n const outsideClasses = this.tempElem.classList;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( className ) && !outsideClasses.contains( className ) )\r\n {\r\n this.renderer?.addClass( this.tempElem, className );\r\n }\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public addClassForElement (elem : HTMLElement, className : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n const outsideClasses = elem.classList;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outsideClasses)) {\r\n if (!outsideClasses.contains(className)) {\r\n this.renderer?.addClass(elem, className);\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public toggleClass (elemId : string, className : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n this.tempElem = document.getElementById(elemId);\r\n }\r\n\r\n let tempElem = document.getElementById(elemId) as HTMLElement;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n this.toggleClassForElement(tempElem, className);\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public toggleClassForElement (elem : HTMLElement, className : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n const outsideClasses = elem.classList;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outsideClasses)) {\r\n if (outsideClasses.contains(className)) {\r\n this.renderer?.removeClass(elem, className);\r\n }\r\n else {\r\n this.renderer?.addClass(elem, className);\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: This method will stop movement of background if it is moving, otherwise it will start-moving\r\n */\r\n public toggleBackgroundMovement (): any\r\n {\r\n this.toggleClassOutsideAngular( 'bodyBackgroundImageId', 'dynamicBackImage' );\r\n return true;\r\n }\r\n \r\n/*\r\n * ---------------------------------------------------------------\r\n * End of background-image-rotation-timer-system'\r\n * ===============================================================\r\n */\r\n // -----------------------------------------------------------------------------------\r\n // depracated:\r\n // -----------------------------------------------------------------------------------\r\n public setKvPhotoBackgroundImagePrimaryOrOtherwise (kvp : KvPhoto) : any {\r\n // debugger;\r\n let imageStr = '';\r\n /* || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.privacy)*/\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n if ((!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.glyphName)\r\n && kvp.glyphName?.toLowerCase().indexOf('primary') !== -1) && !kvp.isPrimary) {\r\n imageStr = 'photos/lock.jpg';\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.privacy) && kvp.privacy.toLowerCase().indexOf('private') !== -1) {\r\n imageStr = 'photos/lock.jpg';\r\n // debugger;\r\n }\r\n //else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.isUnlocked) && !kvp.isUnlocked) {\r\n // imageStr = 'photos/lock.jpg';\r\n // debugger;\r\n //}\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.value) && kvp.value.length > 0) {\r\n imageStr = kvp.value;\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.image)) {\r\n imageStr = kvp.image;\r\n // debugger;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.pic)) {\r\n imageStr = kvp.pic;\r\n // debugger;\r\n }\r\n else {\r\n 'photo/DefaultImageEmojii.jpg';\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageStr) && kvp.isPrimary) {\r\n // this.stopBiasAnimation();\r\n // debugger;\r\n // this.setElementBackgroundImage(kvp.elemId, kvp.value);\r\n\r\n // let bEelemId : string = 'bodyId';\r\n // this.renderer.setStyle(elem, 'background-image', imageData);\r\n this.updateBackgroundImageOutsideAngular(imageStr);\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp.elemId)) {\r\n this.updateBackgroundImageOutsideAngularById(kvp.elemId, imageStr);\r\n return true;\r\n }\r\n // debugger;\r\n return false;\r\n }\r\n else {\r\n console.log(MessageBuilderServiceStatic.printMessage(kvp.sitUserId, 'setKvPhotoBackgroundImage(kvp.sitUserId(' + kvp.sitUserId + '). `imageStr` is null or undefined; could not set the image.'));\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n}\r\n\r\n // ----------------------------------------------------------------\r\n //private startBiasKvPhotoArrAnimOld ( pics: KvPhoto[]): void\r\n //{\r\n // // this.stopBiasAnimation();\r\n // debugger;\r\n // //if ( !this.isDefault )\r\n // //{\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pics ) && pics.length > 0 )\r\n // {\r\n // // rotate the profileImages:\r\n // debugger;\r\n // this.biasKvPhotoArr = pics;\r\n // // set the first image right away, as others are intervaled with time\r\n // let imageDataUrl = this.biasKvPhotoArr[ pics.length - 1 ].value; // always show the latest on the array\r\n // this.updateStyleOutsideAngular( 'bodyId', imageDataUrl );\r\n // this.startRotateBiasAnimation();\r\n // }\r\n // //else if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.loginSuccess ) || this.loginSuccess.signedInUserId > 0 )\r\n // //{\r\n // // // show the primaryImage on the background:\r\n // // debugger;\r\n // // this.setSignedInUserBackgroundImage();\r\n // //}\r\n // //else\r\n // //{\r\n // // // rotate default images:\r\n // // // debugger;\r\n // // this.biasKvPhotoArr = this.defaultKvPhotoArr;\r\n // // this.startRotateBiasAnimation();\r\n // //}\r\n // // }\r\n // //else\r\n // //{\r\n // // // rotate default images:\r\n // // // debugger;\r\n // // this.biasKvPhotoArr = this.defaultKvPhotoArr;\r\n // // this.startRotateBiasAnimation();\r\n // //}\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n // Note: This method assumes that the bgis[] contains target-users' photos in KvPhoto[] format\r\n // ----------------------------------------------------------------------------------\r\n // getPhotoMgmtImage ( page: any ): any\r\n // {\r\n // let image;\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( page ) )\r\n // {\r\n // // debugger;\r\n // if ( typeof page === 'number' )\r\n // {\r\n // // normalize-page-no:\r\n // // -----------------\r\n // if ( page > 0 )\r\n // {\r\n // if ( page > this.profileImageKvPhotos.length )\r\n // {\r\n // page = 1;\r\n // }\r\n // }\r\n // else page = 1;\r\n\r\n // // get the page's image:\r\n // // ---------------------\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profileImageKvPhotos[ page - 1 ] )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.profileImageKvPhotos[ page - 1 ].value ) )\r\n // {\r\n // if ( this.profileImageKvPhotos[ page - 1 ].value.toString().toLowerCase().indexOf( 'url(\\'' ) === -1 )\r\n // {\r\n // image = 'url(\\'' + this.profileImageKvPhotos[ page - 1 ].value + '\\')';\r\n // } else\r\n // {\r\n // image = this.profileImageKvPhotos[ page - 1 ].value;\r\n // }\r\n // }\r\n // }\r\n // // page==KvPhoto:\r\n // // --------------\r\n // else if ( ( page.pageNum > 0 || page.photoId > 0 ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( page.value ) )\r\n // {\r\n // this.biasKvPhotoArr.map( ( e ) =>\r\n // {\r\n // if ( e.pageNum === page.pageNum || e.photoId === page.photoId )\r\n // {\r\n // /*\r\n // * debugger;\r\n // * image = page.value;\r\n // * image = 'url('' + page.value + '')';\r\n // */\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( page.value && page.value.toString().toLowerCase().indexOf( 'url(\\'' ) === -1 ) )\r\n // {\r\n // image = 'url(\\'' + page.value + '\\')';\r\n // } else\r\n // {\r\n // image = page.value;\r\n // }\r\n // }\r\n // } );\r\n // }\r\n // }\r\n // return image;\r\n // }\r\n/*\r\n * ---------------------------------------------------------------\r\n * Note: 1) MemberView and rotateBackgroundImage() use this method\r\n * 2) This should be the only background-image rendereing method for these two (mentioned at 1)!\r\n * ---------------------------------------------------------------\r\n */\r\n // public setPageBackgroundImage ( pageNo: number ): any\r\n // {\r\n // // debugger;\r\n // let imageUrl = '';\r\n\r\n // if ( pageNo > 0 )\r\n // {\r\n // imageUrl = this.getPhotoMgmtImage( pageNo );\r\n // }\r\n // else\r\n // {\r\n // imageUrl = this.getPhotoMgmtImage( 1 );\r\n // }\r\n\r\n // let kvPhoto = this.setImageStringToKvPhoto( imageUrl );\r\n // this.isDefault = false;\r\n // this.biasKvPhotoArr = [ kvPhoto ];\r\n // // set the first image right away, as others are intervaled with time\r\n // let imageDataUrl = this.biasKvPhotoArr[ 0 ].value;\r\n // this.updateStyleOutsideAngular( 'bodyId', imageDataUrl );\r\n // // this.startRotateBiasAnimation();\r\n // return true;\r\n // }\r\n\r\n // ===================================================================================\r\n // BEGIN of BIAS Fading-In-Out mechanism\r\n // ===================================================================================\r\n // ----------------------------------------------------------------\r\n // BIAS: Background Image Animation System with Fading-In-Out mechanism\r\n // Author: Sayeed Rahman\r\n // Date: 2021/03/22;7:41pm; Ottawa, ON, Canada\r\n // (c) Copyright.\r\n // ===========================================\r\n // Ref: http://css3.bradshawenterprises.com/cfimg/\r\n/*\r\n * For \"n\" images You must define:\r\n * a=presentation time for one image\r\n * b=duration for cross fading\r\n * Total animation-duration is of course t=(a+b)*n\r\n *\r\n * animation-delay = t/n or = a+b\r\n *\r\n * Percentage for keyframes:\r\n *\r\n * 0%\r\n * a/t*100%\r\n * (a+b)/t*100% = 1/n*100%\r\n * 100%-(b/t*100%)\r\n * 100%\r\n */\r\n // -----------------------------------------------------------\r\n // getDefaultBiasImagesModel (): any\r\n // {\r\n // this.biasImagesModel.top = 'url(\\'photos/leatherCouple-1.png\\')'; // JsRegExpServiceStatic.normalizeImageData( 'photos/leatherCouple-1.png' );\r\n // this.biasImagesModel.bottom = 'url(\\'photos/gay-couple-1.png\\')'; // JsRegExpServiceStatic.normalizeImageData( 'photos/gay-couple-1.jpg' );\r\n\r\n // return this.biasImagesModel;\r\n // }\r\n // ----------------------------------------------------------------\r\n // public getBiasImagesModel (): any\r\n // {\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.biasImagesModel ) )\r\n // {\r\n // this.biasImagesModel = new BiasImagesModel();\r\n // }\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.biasImagesModel.top ) )\r\n // {\r\n // this.biasImagesModel.top = 'url(\\'photos/leatherCouple-1.png\\')';\r\n // }\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.biasImagesModel.bottom ) )\r\n // {\r\n // this.biasImagesModel.bottom = 'url(\\'photos/gay-couple-1.jpg\\')';\r\n // }\r\n // return this.biasImagesModel;\r\n // }\r\n\r\n // -----------------------------------------------------------\r\n // setBiasImagesModel ( biasImages: BiasImagesModel ): any\r\n // {\r\n // this.biasImagesModel.top = biasImages.top;\r\n // this.biasImagesModel.bottom = biasImages.bottom;\r\n\r\n // return this.biasImagesModel;\r\n // }\r\n\r\n // ===================================================================================\r\n // END of BIAS Fading-In-Out mechanism\r\n // ===================================================================================\r\n\r\n\r\n","\r\nimport { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ViewportDimension } from '../../models/common/viewportDimension.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n\r\n// TODO: Turn this class into a Static class. Follow the example of DomUtilServiceStatic & RedirectionServiceStatic\r\n\r\n// https:// stackoverflow.com/questions/58989990/error-staticinjectorerrorappmodulesomecomponent-renderer2-when-creating\r\n@Injectable({ providedIn: 'root'})\r\nexport class RendererService {\r\n public renderer : Renderer2;\r\n public componentViewportDimension : ViewportDimension = new ViewportDimension();\r\n public viewportDimension : ViewportDimension = new ViewportDimension();\r\n public document: any;\r\n public constructor (\r\n private renderer2Factory : RendererFactory2,\r\n )\r\n {\r\n this.renderer = renderer2Factory.createRenderer(null, null);\r\n }\r\n // ------------------------------------------------------------------\r\n public setRenderer(r2s: Renderer2): void {\r\n this.renderer = r2s;\r\n }\r\n public getRenderer(): Renderer2 {\r\n if (!this.renderer) {\r\n this.renderer = this.renderer2Factory.createRenderer(null, null);\r\n }\r\n return this.renderer;\r\n }\r\n // ------------------------------------------------------------------\r\n public setDocument( doc : Document ) : void\r\n {\r\n this.document = doc;\r\n }\r\n // ------------------------------------------------------------------\r\n public getViewport (): ViewportDimension\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.document))\r\n {\r\n this.viewportDimension.vw = Math.max( this.document.documentElement.clientWidth || 0, window.innerWidth || 0 );\r\n this.viewportDimension.vh = Math.max( this.document.documentElement.clientHeight || 0, window.innerHeight || 0 );\r\n this.viewportDimension.centerX = Math.floor( this.viewportDimension.vw / 2 );\r\n this.viewportDimension.centerY = Math.floor( this.viewportDimension.vh / 2 );\r\n }\r\n return this.viewportDimension;\r\n }\r\n // ------------------------------------------------------------------\r\n public getComponentViewport ( id : string ) : ViewportDimension\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.document ) )\r\n {\r\n let elem = this.document.getElementById( id );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( elem ) )\r\n {\r\n this.componentViewportDimension.vh = elem.offsetHeight;\r\n this.componentViewportDimension.vw = elem.offsetWidth;\r\n this.componentViewportDimension.centerX = Math.floor( this.componentViewportDimension.vw / 2 );\r\n this.componentViewportDimension.centerY = Math.floor( this.componentViewportDimension.vh / 2 );\r\n } \r\n }\r\n return this.componentViewportDimension;\r\n }\r\n // ----------------------------------------------------------------\r\n // .centerdElement in style.scss:\r\n //centerThisElement () {\r\n // // step-1: get the elements by class\r\n\r\n // // step-2: get the HtmlElemWidth and HtmlElemHeight\r\n\r\n // // step-3: calculate margin by : calc((100 - var(--anyHtmlElemWidth))/2)vh auto;\r\n //}\r\n\r\n // ----------------------------------------------------------------\r\n centerThisComponent ( id : string ) : void\r\n {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( id ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.document ))\r\n {\r\n this.viewportDimension = this.getViewport();\r\n let componentElem = this.document.getElementById( id );\r\n this.componentViewportDimension = this.getComponentViewport( id );\r\n let margin = Math.floor((this.viewportDimension.vw - this.componentViewportDimension.vw) / 2) + 'vh auto'; // original\r\n /* let margin = Math.floor(100 - (this.viewportDimension.vw - this.componentViewportDimension.vw) / 2) + 'vh auto';*/\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( componentElem))\r\n {\r\n // debugger;\r\n this.renderer.setStyle( componentElem, 'width', this.componentViewportDimension.vw );\r\n this.renderer.setStyle( componentElem, 'height', this.componentViewportDimension.vh );\r\n this.renderer.setStyle( componentElem, 'margin', margin );\r\n }\r\n }\r\n }\r\n // ----------------------------------------------------------------\r\n // How to center the demoDiv on any screen-size?\r\n /*\r\n .demoDivCentered {\r\n width: demoDivWidth( vw );\r\n height: demoDivHeight( vh );\r\n margin: calc( [ ( 100 - demoDivHeight ) / 2 ]vh auto;\r\n }\r\n */\r\n /*\r\n * ------------------------------------------------------------------\r\n * Usage example:\r\n * const s = this.renderer.createElement('script');\r\n * ------------------------------------------------------------------\r\n */\r\n}\r\n\r\nfunction Inject(DOCUMENT: any) {\r\n throw new Error('Function not implemented.');\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { BackgroundImageAnimationService } from './backgroundImageAnimationService.service';\r\nimport { RendererService } from './rendererService.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class RendererServiceService {\r\n constructor (\r\n private backgroundImageAnimationService : BackgroundImageAnimationService,\r\n private rendererService : RendererService,\r\n ) { }\r\n\r\n // ------------------------------------------------------------------\r\n setBackgroundImageAnimationService ( bias : BackgroundImageAnimationService ) : void\r\n {\r\n this.backgroundImageAnimationService = bias;\r\n }\r\n getBackgroundImageAnimationService () : BackgroundImageAnimationService\r\n {\r\n return this.backgroundImageAnimationService;\r\n }\r\n // ------------------------------------------------------------------\r\n setRendererService ( rs : RendererService ) : void\r\n {\r\n this.rendererService = rs;\r\n }\r\n getRendererService () : RendererService\r\n {\r\n return this.rendererService;\r\n }\r\n \r\n\r\n // ------------------------------------------------------------------\r\n // setImageResizerService(irs: ImageResizerService): void {\r\n // this.imageResizerService = irs;\r\n // }\r\n // getImageResizerService(): ImageResizerService {\r\n // return this.imageResizerService;\r\n // }\r\n // ------------------------------------------------------------------\r\n}\r\n","\r\nimport { EventEmitter, Injectable, Output } from '@angular/core';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BinarySearchService {\r\n @Output() productChange: EventEmitter = new EventEmitter();\r\n // private loginSuccess: LoginSuccess = new LoginSuccess();\r\n protected bIndex = 0;\r\n protected eIndex = 0;\r\n protected middle = 0;\r\n constructor() {\r\n }\r\n\r\n // Note: Needs to be tested/redone\r\n // -------------------------------\r\n public binarySearch(arr: any[], beginIndex: number, mid: number, endIndex: number, id: number): any {\r\n if (arr.length > 0 && beginIndex > -1 && endIndex > -1 && id) {\r\n this.bIndex = beginIndex;\r\n this.eIndex = endIndex;\r\n let midCeil = Math.ceil(mid);\r\n if (midCeil > beginIndex && midCeil < endIndex) { // find the middle of the right half; will happen only after first-pass\r\n this.middle = Math.ceil(Math.round(beginIndex === endIndex ? endIndex : ((endIndex + 1) / 2))); // NOTE: in case of 0.5 parseInt will return 1\r\n }\r\n else if (midCeil > endIndex) { // find the middle of the right half; will happen only after first-pass\r\n this.middle = Math.round(endIndex > beginIndex ? ((endIndex - beginIndex) / 2) + beginIndex : endIndex);\r\n }\r\n else this.middle = Math.ceil(Math.round(beginIndex === endIndex ? endIndex : ((endIndex + 1) / 2)));\r\n if (arr[ Math.ceil(this.middle) ] && arr[ Math.ceil(this.middle)].id === id) { // here 'id' should be replaced with the appropriate comparator type\r\n return Math.ceil(this.middle);\r\n }\r\n else if (arr[ Math.ceil(this.middle) ] && arr[ Math.ceil(this.middle)].id > id) { // similar to above 'id'\r\n this.eIndex = Math.ceil(this.middle) - 1; // to search the left-half\r\n if (this.eIndex >= this.bIndex) {\r\n return this.binarySearch(arr, this.bIndex, this.middle, this.eIndex, id); // search the left half\r\n }\r\n }\r\n else if (arr[ Math.ceil(this.middle) ] && arr[ Math.ceil(this.middle)].id < id) { // similar to above 'id'\r\n this.bIndex = Math.ceil(this.middle) + 1; // to search the right-half\r\n if (this.eIndex >= this.bIndex) {\r\n return this.binarySearch(arr, this.bIndex, this.middle, this.eIndex, id); // search the right half\r\n }\r\n }\r\n return -1;\r\n }\r\n return -1;\r\n }\r\n // ---------------------------------------------------------------\r\n // here 'id' should be replaced with the appropriate comparator type\r\n public isFound(arr: any[], el: any, compareFn): number {\r\n if (el && arr.length > 0) {\r\n // arr = this.sortAscending(arr, id);//It will assume a sorted input array\r\n // Now call the binarySearch //Note: this function if recursive\r\n // return this.binarySearch(arr, 0, (arr.length - 1) / 2, arr.length - 1, id);\r\n return this.nonRecursiveBinarySearch(arr, el, compareFn);\r\n }\r\n return -1;\r\n }\r\n // ---------------------------------------------------------------\r\n public sortAscending(items: any[]) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(items) && items.length > 0) {\r\n items\r\n .sort((a: any, b: any) => {\r\n // return a.localCompare(b)\r\n if (a && a.id && b && b.id) return a.id - b.id; // sort it in ascending order\r\n else return a.localeCompare(b);\r\n });\r\n // debugger;\r\n }\r\n return items;\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n public sortDescending(items: any[]) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(items) && items.length > 0) {\r\n items\r\n .sort((a: any, b: any) => {\r\n if (a && a.id && b && b.id) return b.id - a.id; // sort it in descending order\r\n else return b.localeCompare(a);\r\n });\r\n // debugger;\r\n }\r\n return items;\r\n }\r\n // ---------------------------------------------------------------\r\n public sort(items: any[]) {\r\n return this.sortAscending(items);\r\n }\r\n // ---------------------------------------------------------------\r\n public compare_fn(a: any, b: any): number {\r\n return a.id - b.id;\r\n }\r\n // ---------------------------------------------------------------\r\n public compare_sitUserId (a : any, el : number) : number {\r\n let cmpr;\r\n if (a.sitUserId === el) {\r\n cmpr = 0;\r\n }\r\n else if (a.sitUserId > el) {\r\n cmpr = 1;\r\n }\r\n else cmpr = -1;\r\n return cmpr;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n // Note: did not return the correct value for compare_sitUserId\r\n // ---------------------------------------------------------------\r\n // Ref:https://stackoverflow.com/questions/22697936/binary-search-in-javascript\r\n public nonRecursiveBinarySearch(ar: any[], el: any, compare_fn: any): any {\r\n var m = 0;\r\n var n = ar.length - 1;\r\n while (m <= n) {\r\n var k = (n + m) >> 1;\r\n var cmp = compare_fn;\r\n if (cmp > 0) {\r\n m = k + 1;\r\n } else if (cmp < 0) {\r\n n = k - 1;\r\n } else {\r\n return k;\r\n }\r\n }\r\n return -m - 1;\r\n }\r\n // ---------------------------------------------------------------\r\n // Ref:https://stackoverflow.com/questions/22697936/binary-search-in-javascript\r\n public nonRecursiveBinarySearchProfileTile (ar : any[], el : any) : any {\r\n var m = 0;\r\n var n = ar.length - 1;\r\n let k = (n + m) >> 1;\r\n var cmpr;\r\n if (ar) {\r\n if( ar[ k ].sitUserId === el) {\r\n cmpr = 0;\r\n }\r\n else if (ar[ k ].sitUserId < el) {\r\n cmpr = 1;\r\n }\r\n else cmpr = -1;\r\n }\r\n else cmpr = -1;\r\n\r\n while (m <= n) {\r\n let k = (n + m) >> 1;\r\n if (ar[ k ].sitUserId === el) {\r\n cmpr = 0;\r\n }\r\n else if (ar[ k ].sitUserId < el) {\r\n cmpr = 1;\r\n }\r\n else cmpr = -1;\r\n\r\n if (cmpr > 0) {\r\n m = k + 1;\r\n } else if (cmpr < 0) {\r\n n = k - 1;\r\n } else {\r\n return k;\r\n } \r\n }\r\n return -m - 1;\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Filter, Sorter } from '../../models/common/genericSearchSortFilter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n\r\n// Ref:https://medium.com/javascript-in-plain-english/react-and-typescript-generic-search-sort-and-filter-879c5c3e2f0e\r\n\r\n\r\nexport class GenericSearchSortFilterService {\r\n constructor() {\r\n }\r\n // ---------------------------------------------------------------\r\n // case insensitive search of n-number properties of type T\r\n // returns true if at least one of the property values includes the query value\r\n // ---------------------------------------------------------------\r\n genericSearch(\r\n object: T,\r\n properties: Array,\r\n query: string\r\n ): boolean {\r\n if (query === '') {\r\n return true;\r\n }\r\n return properties.some((property) => {\r\n const value = object[property];\r\n if (typeof value === 'string' || typeof value === 'number') {\r\n return value.toString().toLowerCase().includes(query.toLowerCase());\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // comparator function for any property within type T\r\n // works for: strings, numbers, and Dates (and is typed to accept only properties which are those types)\r\n // could be extended for other types but would need some custom comparison function here\r\n // ---------------------------------------------------------------\r\n genericSort(\r\n objectA: T,\r\n objectB: T,\r\n sorter: Sorter\r\n ) {\r\n const result = () => {\r\n if (objectA[sorter.property] > objectB[sorter.property]) {\r\n return 1;\r\n } else if (objectA[sorter.property] < objectB[sorter.property]) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n return sorter.isDescending ? result() * -1 : result();\r\n }\r\n // --------------------------------------------------------------\r\n // filter n properties for truthy or falsy values on type T (no effect if no filter selected)\r\n // ---------------------------------------------------------------\r\n genericFilter(object: T, filters: Array>) {\r\n // no filters; no effect - return true\r\n if (filters.length === 0) {\r\n return true;\r\n }\r\n return filters.every((filter) => {\r\n return filter.isTruthyPicked ?\r\n object[filter.property] :\r\n !object[filter.property];\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // Usage example:\r\n // ---------------------------------------------------------------\r\n /*\r\n * return (\r\n <>\r\n {widgets\r\n .filter((widget) =>\r\n genericSearch(widget, [\"title\", \"description\"], query)\r\n )\r\n .sort((widgetA, widgetB) =>\r\n genericSort(widgetA, widgetB, activeSorter)\r\n )\r\n .filter((widget) =>\r\n genericFilter(widget, activeFilters)\r\n ).map(widget =>\r\n return \r\n )\r\n }\r\n \r\n)\r\n */\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../../services/staticServices/frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { ProfileTileKv } from '../../models/profile/profileTileKv.model';\r\nimport { StringServiceStatic } from '../staticServices/stringServiceStatic.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class QuicksortService {\r\n constructor() {\r\n }\r\n // ---------------------------------------------------------------\r\n partition (numbers : any, left : any, right : any, pivotIndex : any) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(numbers) && left >= 0 && right >= 0 && pivotIndex >= 0) {\r\n let pivotValue = numbers[pivotIndex];\r\n // move pivot to the end\r\n let temp = numbers[right];\r\n numbers[right] = numbers[pivotIndex];\r\n numbers[pivotIndex] = temp;\r\n\r\n // newPivot stores the index of the first number bigger than pivot\r\n let newPivot = left;\r\n for (let i = left; i < right; i++) {\r\n if (numbers[i] <= pivotValue) {\r\n temp = numbers[newPivot];\r\n numbers[newPivot] = numbers[i];\r\n numbers[i] = temp;\r\n newPivot++;\r\n }\r\n }\r\n\r\n // move pivot element to its sorted position\r\n temp = numbers[right];\r\n numbers[right] = numbers[newPivot];\r\n numbers[newPivot] = temp;\r\n return newPivot;\r\n }\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n quickSort (numbers : any, left : any, right : any )\r\n {\r\n let pivotIndex : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(numbers) && left >= 0 && right >= 0 && pivotIndex >= 0) {\r\n if (right > left) {\r\n let pivotIndex = left + (right - left) / 2;\r\n // partition the array\r\n pivotIndex = this.partition(numbers, left, right, pivotIndex);\r\n // Sort the left partition\r\n this.quickSort(numbers, left, pivotIndex - 1);\r\n // sort the right partition\r\n this.quickSort(numbers, pivotIndex + 1, right);\r\n }\r\n }\r\n return numbers;\r\n }\r\n // ---------------------------------------------------------------\r\n sortProfileTileKvArrUsingMap(list: ProfileTileKv[]) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(list)) {\r\n // temporary array holds objects with position and sort-value\r\n let mapped = list.map( (el, i) => {\r\n return { index: i, value: el };\r\n });\r\n\r\n // sorting the mapped array containing the reduced values\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mapped)) {\r\n mapped.sort( (a, b) => {\r\n if (a.value.value.sitUserId > b.value.value.sitUserId) {\r\n return 1;\r\n }\r\n if (a.value.value.sitUserId < b.value.value.sitUserId) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n\r\n // container for the resulting order\r\n let result = mapped.map( (el) => {\r\n return list[el.index];\r\n });\r\n return result;\r\n }\r\n }\r\n return null;\r\n }\r\n // --------------------------------------------------------------\r\n // Tested, works!\r\n createArrayFromMap(inmap: Map): any[] {\r\n let arr : any[] = [];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inmap)) {\r\n inmap.forEach((value, key, map) => {\r\n arr.push(value);\r\n });\r\n }\r\n return arr;\r\n }\r\n // ---------------------------------------------------------------\r\n sortProfileTilesMap(map: Map): any{\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(map)) {\r\n let mapList = this.createArrayFromMap(map);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mapList)) {\r\n mapList.sort((a, b) => {\r\n if (a && a.value && b && b.value && a.value.sitUserId && b.value.sitUserId && a.value.sitUserId > b.value.sitUserId) {\r\n return 1;\r\n }\r\n if (a && a.value && b && b.value && a.value.sitUserId && b.value.sitUserId && a.value.sitUserId < b.value.sitUserId) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n debugger;\r\n return mapList;\r\n }\r\n debugger;\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // Ref:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\r\n sortProfileTilesArr (list : any): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(list)) {\r\n let mapped = list.map((el : any, i : any) => {\r\n return { index: i, value: el };\r\n });\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mapped)) {\r\n mapped.sort((a : any, b : any) => {\r\n if (a.value.sitUserId > b.value.sitUserId) {\r\n return 1;\r\n }\r\n if (a.value.sitUserId < b.value.sitUserId) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n // container for the resulting order\r\n let result = mapped.map((el : any) => {\r\n return list[el.index];\r\n });\r\n return result;\r\n }\r\n }\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // Ref:http://jsfiddle.net/Glutamat/m4Aq7/\r\n quick_sort (unsorted : any) : any {\r\n if (unsorted.length <= 1)\r\n return unsorted;\r\n\r\n let pivot = unsorted.pop();\r\n let less: any[] = [];\r\n let greater: any[] = [];\r\n\r\n unsorted.forEach((element : any) => {\r\n if (element > pivot)\r\n less.push(element as any);\r\n else\r\n greater.push(element as any);\r\n });\r\n\r\n return this.quick_sort(less).concat([pivot]).concat(this.quick_sort(greater));\r\n }\r\n // Usage example\r\n // let unsorted = [8, 2, 10, 5, 4, 9, 7, 1, 6, 3];\r\n // console.log(quick_sort(unsorted));\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { BinarySearchService } from './binarySearchService.service';\r\nimport { GenericSearchSortFilterService } from './genericSearchSortFilterService.service';\r\nimport { QuicksortService } from './quicksort.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SearchSortServiceService implements OnDestroy {\r\n private emitterDestroyed$: Subject = new Subject();\r\n constructor(\r\n private binarySearchService : BinarySearchService,\r\n private quicksortService : QuicksortService,\r\n private genericSearchSortFilterService : GenericSearchSortFilterService,\r\n ) { }\r\n // -------------------------------------------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setBinarySearchService (bs : BinarySearchService): void {\r\n this.binarySearchService = bs;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getBinarySearchService () : BinarySearchService {\r\n return this.binarySearchService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setQuicksortService (qs : QuicksortService): void {\r\n this.quicksortService = qs;\r\n }\r\n getQuicksortService () : QuicksortService {\r\n return this.quicksortService;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n setGenericSearchSortFilterService (gss : GenericSearchSortFilterService): void {\r\n this.genericSearchSortFilterService = gss;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n getGenericSearchSortFilterService () : GenericSearchSortFilterService {\r\n return this.genericSearchSortFilterService;\r\n }\r\n // -------------------------------------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { SpinnerModel } from '../../models/common/spinnerModel.model';\r\nimport { KV } from '../../models/keyValue/kv.model';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { ProfileImage } from '../../models/profile/profileImage.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\nimport { CopyServiceStatic } from './commonStaticServices/copyServiceStatic.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { StringServiceStatic } from './stringServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\n// ------------------------------------------------------------------\r\nexport abstract class ArrayServiceStatic {\r\n public static rootScopeTs: Set;\r\n public static distUnit = '';\r\n public static isMobilevar = false;\r\n public static height: any;\r\n public static width: any;\r\n public static heightUnit: any;\r\n public static weightUnit: any;\r\n public static kv: KV;\r\n constructor(\r\n // private inMemoryDataService: InMemoryDataService //public static quickSort: Quicksort\r\n ) {\r\n ArrayServiceStatic.rootScopeTs = new Set();\r\n }\r\n // ------------------------------------------------------------------\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // On 20220328\r\n // ------------------------------------------------------------------\r\n static createArrayFromMap2 (inmap : Map) : any[] {\r\n const arr : any[] = [];\r\n\r\n if (inmap && inmap.size > 0) {\r\n inmap.forEach((value, key) => {\r\n arr.push(value);\r\n });\r\n }\r\n return arr;\r\n }\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // ------------------------------------------------------------------\r\n static createMapFromArray2 (arr : any[]) : Map {\r\n const map = new Map();\r\n\r\n if (arr && arr.length > 0) {\r\n arr.forEach(function callback (key, value) {\r\n map.set(value, key);\r\n });\r\n }\r\n return map;\r\n }\r\n // ------------------------------------------------------------------\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // On 20220411\r\n // ------------------------------------------------------------------\r\n static createArrayFromMap (inmap : Map) : any {\r\n const arr:any[] = [];\r\n \r\n if (inmap && inmap.size > 0) {\r\n arr.push([ ...inmap.values() ])\r\n }\r\n // debugger;\r\n return arr;\r\n }\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // ------------------------------------------------------------------\r\n static createMapFromArray (arr : any) : Map {\r\n const map = new Map();\r\n\r\n if (arr && arr.length > 0) {\r\n arr.forEach(function callback (key : any, value : any) {\r\n map.set(value, key);\r\n });\r\n }\r\n return map;\r\n }\r\n // --------------------------------------------------------------\r\n // ref: https://stackoverflow.com/questions/4775722/how-can-i-check-if-an-object-is-an-array\r\n // Only implement if no native implementation is available\r\n // --------------------------------------------------------------\r\n static isTypeOfArray (obj : any) : boolean {\r\n let isArray: boolean = false;\r\n if (typeof Array.isArray === 'undefined') {\r\n (obj : any) =>{\r\n isArray = Object.prototype.toString.call(obj) === '[object Array]';\r\n }\r\n };\r\n // debugger;\r\n return isArray;\r\n }\r\n // --------------------------------------------------------------\r\n static QueuePop ( inArray: any[] ): any\r\n {\r\n for ( let i = 0; i < inArray.length; i++ )\r\n {\r\n // this.unloadComponent(this.activeComponentIds[i]); //Do something;\r\n inArray.splice( i--, 1 );\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static RemoveFromBottom ( inArray: any[] ): any\r\n {\r\n // bottom=0th-index\r\n for ( let i = 0; i < inArray.length; i++ )\r\n {\r\n // this.unloadComponent(this.activeComponentIds[i]); //do something;\r\n inArray.splice( i--, 1 );\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static StackPop ( inArray: any[] ): any\r\n {\r\n for ( let i = inArray.length - 1; i >= 0; i-- )\r\n {\r\n // this.unloadComponent(this.activeComponentIds[i]); //do something\r\n inArray.splice( i, 1 );\r\n // debugger;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static mergeMapsViaSpread (first : Map, second : Map) : Map {\r\n let merged = new Map([ ...first, ...second ]) as Map;\r\n return merged;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: there is a similar function called createMapFromArray()\r\n // and its counterpart createArrayFromMap()\r\n // ---------------------------------------------------------------\r\n static mapFromArray (list : any[]) : any {\r\n const mapped = list.map((el, i) => ({ index: i, value: el }));\r\n\r\n return mapped;\r\n }\r\n // ---------------------------------------------------------------\r\n static arrayFromMap (list : Map) : any {\r\n return this.createArrayFromMap(list);\r\n }\r\n // ---------------------------------------------------------------\r\n static mergeArrays (dArr : any[], sArr : any[]) : any[] {\r\n let index = -1;\r\n let dMap = new Map();\r\n let sMap = new Map();\r\n let merged = new Map();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dArr)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sArr)) {\r\n if (dArr.length > 0) {\r\n dMap = new Map(dArr);\r\n }\r\n if (sArr.length > 0) {\r\n sMap = new Map(sArr);\r\n }\r\n }\r\n merged = new Map([ ...dMap, ...sMap ]);\r\n return new Array(merged);\r\n }\r\n // --------------------------------------------------------------\r\n // Note: makeUniq(arr[]) method makes an array\r\n // unique-valued, ==> there is no duplicate element in it.\r\n // \r\n // Using the Set constructor and the spread syntax:\r\n // --------------------------------------------------------------\r\n public static makeUniq (arr : any[]) : any {\r\n let uniq : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && arr.length > 0) {\r\n uniq = [ ...new Set(arr) ];\r\n\r\n return uniq;\r\n }\r\n else return arr;\r\n }\r\n // --------------------------------------------------------------\r\n // Note: Tested on 20220411. Works!\r\n // --------------------------------------------------------------\r\n public static mergeArraysUniq (dArr : any[], sArr : any[]) : any[] {\r\n // merge\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sArr) && sArr.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dArr)) {\r\n dArr.push(...sArr);\r\n }\r\n // debugger;\r\n //uniq\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dArr) && dArr.length > 0) {\r\n dArr = [ ...new Set(dArr) ];\r\n }\r\n // debugger;\r\n return dArr;\r\n }\r\n // ---------------------------------------------------------------\r\n static mergeMaps (dMap : Map, sMap : Map) : Map {\r\n let merged = new Map();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dMap) || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sMap)) {\r\n merged = new Map([ ...dMap, ...sMap ]);\r\n }\r\n return merged;\r\n }\r\n // ---------------------------------------------------------------\r\n // static sortMap (first : Map) : Map {\r\n // let m = this.sortMap(first);\r\n // return m;\r\n // }\r\n // --------------------------------------------------------------\r\n static RemoveFromTop ( inArray: any[] ): any\r\n {\r\n // top=last-index\r\n for ( let i = inArray.length - 1; i >= 0; i-- )\r\n {\r\n // this.unloadComponent(this.activeComponentIds[i]); // do something\r\n inArray.splice( i, 1 );\r\n // debugger;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static RemoveFromArray ( inArray: any[], index: number ): any\r\n {\r\n // top=last-index\r\n inArray.splice( index, 1 );\r\n }\r\n // ==============================================================\r\n // --------------------------------------------------------------\r\n static profileTileArrayToMap (inArr : any[]) : any {\r\n let keyValueMap = inArr.reduce((mapAccumulator, obj) => {\r\n // either one of the following syntax works\r\n // mapAccumulator[obj.key] = obj.val;\r\n mapAccumulator.set(obj.sitUserId, obj);\r\n\r\n return mapAccumulator;\r\n }, new Map());\r\n debugger;\r\n return keyValueMap;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n static getIndexOfItemInSpinnerTimerArr ( spinnerModelArr: SpinnerModel[], item: number ): any\r\n {\r\n let index = -1;\r\n let i = 0;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( item ) )\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spinnerModelArr) && spinnerModelArr.length )\r\n {\r\n for (let e of spinnerModelArr )\r\n {\r\n if ( item === e.startTime )\r\n {\r\n index = i;\r\n break;\r\n }\r\n i++;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n static getIndexOfKvPhotoInKvPhotoArr(kvpArr: KvPhoto[], item: KvPhoto): any {\r\n let index = -1;\r\n let i = 0;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( item ) )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( kvpArr ) && kvpArr.length > 0)\r\n {\r\n for (let e of kvpArr)\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e) && (item.photoBnId === e.photoBnId || item.photoId === e.photoId))\r\n {\r\n index = i;\r\n break;\r\n }\r\n i++;\r\n } \r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfTileInArr ( tiles: ProfileTile[], pt: ProfileTile ): number\r\n {\r\n // debugger;\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tiles ) && tiles.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pt ) && pt.sitUserId > 0 )\r\n {\r\n let i = 0;\r\n for ( const e of tiles )\r\n {\r\n if ( e.sitUserId === pt.sitUserId )\r\n {\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n i++;\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static mergeProfileTileArrays ( dTileArr: ProfileTile[], sTileArr : ProfileTile[] ) : ProfileTile[]\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dTileArr ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sTileArr ) && sTileArr.length > 0 )\r\n {\r\n // debugger;\r\n if ( dTileArr.length === 0 )\r\n {\r\n dTileArr = sTileArr;\r\n }\r\n // else\r\n // dTileArr = dTileArr.push(...sTileArr);\r\n // dTileArr = [...new Set(dTileArr)];\r\n // OR\r\n else\r\n {\r\n // dTileArr.push(...sTileArr);\r\n for ( let src of sTileArr )\r\n {\r\n let index = this.getIndexOfTileInArr( dTileArr, src );\r\n if ( index > 0 )\r\n {\r\n dTileArr[index] = CopyServiceStatic.copyProfileTileIfExists(dTileArr[index], src);\r\n }\r\n else\r\n {\r\n dTileArr.push( src );\r\n }\r\n }\r\n }\r\n }\r\n return dTileArr;\r\n\r\n // TODO: remove before deployment\r\n // ------------------------------\r\n // dTileArr.map( d =>\r\n // {\r\n // let indx = this.getIndexOfTileInArr( sTileArr, d)\r\n // sTileArr.map( =>\r\n // {\r\n // if ( d.sitUserId == s.sitUserId )\r\n // {\r\n // debugger;\r\n // CopyServiceStatic.copyProfileTileIfExists( d, s );\r\n // }\r\n // else\r\n // {\r\n // debugger;\r\n // dTileArr.push( s );\r\n // }\r\n // } );\r\n // } );\r\n //}\r\n //return dTileArr;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfBnInBoxNonceArr ( bns : BoxNonceEntity[], bn : BoxNonceEntity ) : number\r\n {\r\n // debugger;\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( bns ) && bns.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( bn ) && bn.sitUserId > 0 )\r\n {\r\n for ( let i = 0; i < bns.length; i++ )\r\n {\r\n if ( bns[ i ].id === bn.id && bns[ i ].sitUserId === bn.sitUserId && bns[ i ].entityName === bn.entityName )\r\n {\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfItemByPageNumInKvPhotoArr (arr : KvPhoto[], itemNum : number) : number {\r\n let index = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && arr.length > 0 && itemNum > 0) {\r\n let isFound = false;\r\n\r\n for (let i = 0; i < arr.length; i++) {\r\n if (arr[ i ].itemNum === itemNum) {\r\n isFound = true;\r\n if (isFound) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getIndexOfItemByPhotoIdInKvPhotoArr (arr : KvPhoto[], photoId : any) : number {\r\n let index = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && arr.length > 0 && photoId > 0) {\r\n let isFound = false;\r\n\r\n for (let i = 0; i < arr.length; i++) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr[ i ]) && arr[ i ].photoId === photoId) {\r\n isFound = true;\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfItemByPhotoBnIdInKvPhotoArr ( arr : KvPhoto[], photoBnId : any ) : number\r\n {\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arr ) && arr.length > 0 && photoBnId > 0 )\r\n {\r\n for ( let i = 0; i < arr.length; i++ )\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr[i]) && arr[ i ].photoBnId === photoBnId )\r\n {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfItemByPhotoBnIdOrPhotoIdInKvPhotoArr (arr : KvPhoto[], photoBnId : any, photoId: any) : number {\r\n let index = -1;\r\n if (photoId > 0) {\r\n index = this.getIndexOfItemByPhotoIdInKvPhotoArr(arr, photoId);\r\n }\r\n else if (photoBnId > 0) {\r\n // debugger;\r\n index = this.getIndexOfItemByPhotoBnIdInKvPhotoArr(arr, photoBnId);\r\n }\r\n \r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfItemByProfileIdInKvPhotoArr (arr : KvPhoto[], profileId: number) {\r\n let index = -1;\r\n if (profileId > 0) {\r\n index = this.getIndexOfItemByPhotoIdInKvPhotoArr(arr, profileId);\r\n } \r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfItemInArr ( arr : any[], item : any ) : number\r\n {\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arr ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( item ) )\r\n {\r\n let isFound = false;\r\n\r\n for ( let i = 0; i < arr.length; i++ )\r\n {\r\n if ( arr[ i ].toString().toLowerCase().indexOf( item.toString().toLowerCase() ) !== -1 )\r\n {\r\n isFound = true;\r\n if ( isFound )\r\n {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfKvGlyphInArr (arr : any[], kvg : KvMemberActivityGlyph) : number {\r\n let isFound = false;\r\n let index = -1;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvg.sitUserId) && kvg.sitUserId > 0) {\r\n for (let i = 0; i < arr.length; i++) {\r\n if ((arr[ i ].sitUserId && parseInt(arr[ i ].sitUserId, 10) === kvg.sitUserId) || parseInt(arr[ i ], 10) === kvg.sitUserId) {\r\n // debugger;\r\n isFound = true;\r\n if (isFound) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfSitUserIdInArr ( arr : any[], sitUserId : number ) : number\r\n {\r\n let isFound = false;\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arr ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sitUserId ) && sitUserId > 0 )\r\n {\r\n for ( let i = 0; i < arr.length; i++ )\r\n {\r\n if ( ( arr[ i ].sitUserId && parseInt( arr[ i ].sitUserId, 10 ) === sitUserId ) || parseInt( arr[ i ], 10 ) === sitUserId )\r\n {\r\n // debugger;\r\n isFound = true;\r\n if ( isFound )\r\n {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getIndexOfProfileImageInArr ( tiles : ProfileImage[], pt : ProfileImage ) : number\r\n {\r\n // debugger;\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tiles ) && tiles.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pt ) && pt.sitUserId > 0 )\r\n {\r\n let i = 0;\r\n for ( const e of tiles )\r\n {\r\n if ( e.photoId === pt.photoId )\r\n {\r\n // debugger;\r\n index = i;\r\n break;\r\n }\r\n i++;\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIndexOfNumberInArr ( arr: number[], id: number ): number\r\n {\r\n let index = -1;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( arr ) && arr.length > 0 )\r\n {\r\n for ( let i = 0; i < arr.length; i++ )\r\n {\r\n if ( arr[ i ] === id )\r\n {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ---------------------------------------------------------------\r\n getIndexOfProfileImageInArr (tiles : ProfileImage[], pt : ProfileImage) : number {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tiles) && tiles.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pt) && pt.sitUserId > 0) {\r\n let i = 0;\r\n\r\n for (const e of tiles) {\r\n if (e.photoId === pt.photoId) {\r\n // debugger;\r\n return i;\r\n }\r\n i++;\r\n }\r\n return -1;\r\n }\r\n return -1;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n static mergeIdArrays ( dTileIdArr : number[], sTileIdArr : number[] ) : number[]\r\n {\r\n let index = -1;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dTileIdArr )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sTileIdArr )\r\n && sTileIdArr.length > 0 )\r\n {\r\n // debugger;\r\n if ( dTileIdArr.length === 0 )\r\n {\r\n dTileIdArr = StringServiceStatic.deepCloneJson(sTileIdArr);\r\n }\r\n\r\n sTileIdArr.map( e =>\r\n {\r\n index = this.getIndexOfNumberInArr( dTileIdArr, e );\r\n if ( index === -1 )\r\n {\r\n dTileIdArr.push( e );\r\n }\r\n });\r\n }\r\n return dTileIdArr;\r\n }\r\n \r\n // --------------------------------------------------------------------------------\r\n // Note: This method removes the very first image on ProfileImageArr of ProfilePics\r\n // since it is created from ProfileTile to quicky show the user's primary-pic\r\n // and the server sent ProfilePics already contains the primary-pic\r\n // --------------------------------------------------------------------------------\r\n removeProfileImageFromProfileImageArr (pPics : ProfilePics) : ProfilePics {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.profileImageArr)\r\n && pPics.profileImageArr.length > 1) // Note: there has to be at least 2 pics to start\r\n {\r\n let index = 0;\r\n pPics.profileImageArr.map(e => {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.sitUserKey) || e.sitUserId === 0) // Note: this criteria was used because ProfileImage created from ProfileTile lacks sitUserKey\r\n {\r\n // debugger;\r\n pPics.profileImageArr.splice(index, 1);\r\n }\r\n index++;\r\n });\r\n }\r\n return pPics;\r\n }\r\n // ---------------------------------------------------------------\r\n static removeDuplicateProfileTiles ( a : ProfileTile[] ) : any\r\n {\r\n let result = a;\r\n let isFound = false;\r\n for ( let item of a)\r\n {\r\n isFound = false;\r\n let i = 0;\r\n for ( let rItem of result)\r\n {\r\n if ( rItem.sitUserId === item.sitUserId )\r\n {\r\n isFound = true;\r\n break;\r\n }\r\n i++;\r\n }\r\n if (isFound)\r\n {\r\n result.splice( i, 1 );\r\n }\r\n }\r\n return result;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Tested, works on 20220410\r\n // ---------------------------------------------------------------\r\n static removeDuplicates(a: any): any\r\n {\r\n // debugger;\r\n let result: any[] = [];\r\n a.forEach(function (item : any )\r\n {\r\n if ( result.indexOf( item ) < 0 )\r\n {\r\n result.push( item );\r\n }\r\n } );\r\n return result;\r\n }\r\n // ---------------------------------------------------------------\r\n static removeKvPhotoDuplicatesByPhotoBnId (a : any) : any {\r\n // debugger;\r\n let result = a;\r\n let isFound = false;\r\n for (let item of a) {\r\n isFound = false;\r\n let i = -1;\r\n for (let rItem of result) {\r\n if (rItem && rItem.photoBnId > 0 && item && rItem.photoBnId === item.photoBnId) {\r\n isFound = true;\r\n i++;\r\n break;\r\n }\r\n }\r\n if (isFound && i > -1) {\r\n result.splice(i, 1);\r\n }\r\n }\r\n // debugger;\r\n return result;\r\n }\r\n // ---------------------------------------------------------------\r\n static removePhotoDuplicatesByPhotoId (a : any) : any {\r\n // debugger;\r\n let result = a;\r\n let isFound = false;\r\n for (let item of a) {\r\n isFound = false;\r\n let i = -1;\r\n for (let rItem of result) {\r\n if (rItem && rItem.photoId > 0 && item && rItem.photoId === item.photoId) {\r\n isFound = true;\r\n i++;\r\n break;\r\n }\r\n }\r\n if (isFound && i > -1) {\r\n result.splice(i, 1);\r\n }\r\n }\r\n return result;\r\n }\r\n // ---------------------------------------------------------------\r\n static removeKvPhotoDuplicatesByPhotoId (a : any) : any {\r\n // debugger;\r\n let result = a;\r\n let isFound = false;\r\n for (let item of a) {\r\n isFound = false;\r\n let i = -1;\r\n for (let rItem of result) {\r\n if (rItem.photoId === item.photoId) {\r\n isFound = true;\r\n i++;\r\n break;\r\n }\r\n }\r\n if (isFound && i > -1) {\r\n result.splice(i, 1);\r\n }\r\n }\r\n return result;\r\n }\r\n // ---------------------------------------------------------------\r\n // ref: https://stackoverflow.com/questions/31158902/is-it-possible-to-sort-a-es6-map-object\r\n // So here's a simple way to sort a map by string keys:\r\n static sortMapByKey (inMap : Map) : Map {\r\n return new Map([ ...inMap ].sort((a, b) => String(a[ 0 ]).localeCompare(b[ 0 ])))\r\n }\r\n\r\n // ...and by string values:\r\n static sortMapByValue (inMap : Map) : Map {\r\n return new Map([ ...inMap ].sort((a, b) => String(a[ 1 ]).localeCompare(b[ 1 ])))\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Tested, works!\r\n */\r\n static sortMap (inmap : Map) : Map {\r\n return new Map(\r\n Array.from(inmap).sort(\r\n (a, b) =>\r\n // a[0], b[0] is the key of the\r\n a[ 0 ] - b[ 0 ],\r\n ),\r\n );\r\n }\r\n // --------------------------------------------------------------\r\n static sortMapByPhotoBnId (inmap : Map) : Map {\r\n let inArr = ArrayServiceStatic.createArrayFromMap(inmap);\r\n inArr.sort(\r\n (a : any, b : any) =>\r\n // a[0], b[0] is the key of the\r\n a.photoBnId - b.photoBnId\r\n );\r\n return new Map(inArr);\r\n }\r\n // ---------------------------------------------------------------\r\n static sortProfileTileArrByDistance ( pTileArr : ProfileTile[] ) : any\r\n {\r\n let profileTilesArr: ProfileTile[] = [];\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pTileArr ) && pTileArr.length > 0 )\r\n {\r\n\r\n profileTilesArr = pTileArr.sort((a, b) => b.distance - a.distance );\r\n\r\n EmitterSubjectService.setProfileTilesArr( profileTilesArr );\r\n // debugger;\r\n return profileTilesArr;\r\n }\r\n else return pTileArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Deprecated!!\r\n // Instead user mergeArraysUniq()\r\n // ---------------------------------------------------------------\r\n static uniquelyUpdateKvPhotoArray (dKvPhotoArr : KvPhoto[], sKvPhoto : KvPhoto) : KvPhoto[] {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dKvPhotoArr)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sKvPhoto)\r\n && sKvPhoto.photoBnId > 0\r\n && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sKvPhoto.value))) {\r\n // debugger;\r\n if (sKvPhoto.photoBnId > 0) {\r\n let index = this.getIndexOfItemByPhotoBnIdInKvPhotoArr(dKvPhotoArr, sKvPhoto.photoBnId);\r\n if (index < 0) {\r\n dKvPhotoArr.push(sKvPhoto); \r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n dKvPhotoArr[ index ] = new KvPhoto().copySourceToDestination(dKvPhotoArr[ index ], sKvPhoto)// CopyServiceStatic.copyKvPhotoIfExists(dKvPhotoArr[ index ], sKvPhoto);\r\n // debugger;\r\n }\r\n }\r\n }\r\n \r\n return dKvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n static updateProfileTileInArray ( dTileArr : ProfileTile[], sTile : ProfileTile ) : ProfileTile[]\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dTileArr ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sTile ) )\r\n {\r\n // debugger;\r\n if ( dTileArr.length === 0 )\r\n {\r\n dTileArr.push( sTile );\r\n }\r\n dTileArr.map( d =>\r\n {\r\n if ( d.sitUserId == sTile.sitUserId )\r\n {\r\n CopyServiceStatic.copyProfileTileIfExists( d, sTile );\r\n }\r\n } );\r\n }\r\n return dTileArr;\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n static updateProfileTileArrViaMutation ( tileArr : ProfileTile[] ) : ProfileTile[]\r\n {\r\n let i = 0;\r\n let profileTilesArr: ProfileTile[] = [];\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tileArr ) && tileArr.length > 0 )\r\n {\r\n \r\n tileArr.map( e =>\r\n {\r\n if ( this.getIndexOfTileInArr( profileTilesArr, e ) === -1 )\r\n {\r\n // add:\r\n profileTilesArr = [ ...profileTilesArr, e ];\r\n }\r\n else\r\n {\r\n // update:\r\n profileTilesArr[ i ] = CopyServiceStatic.copyProfileTileIfExists( profileTilesArr[ i ], e );\r\n }\r\n i++;\r\n } );\r\n }\r\n\r\n return profileTilesArr;\r\n }\r\n // ------------------------------------------------------------------\r\n // setDateStringService(dS: DateStringServiceStatic): DateStringServiceStatic {\r\n // return (this.dateStringService = dS); // TODO: check if the return type is correct\r\n // }\r\n\r\n // static getDateStringService(): any {\r\n // return this.dateStringService;\r\n // }\r\n // -----------------------------------------------------------\r\n //static centemetersToInches(centemeters) {\r\n // if (centemeters > 0) {\r\n // return centemeters * 0.393701;\r\n // }\r\n // return 0;\r\n //}\r\n // ----------------------------------------------------------------------------------\r\n //static inchesToCentemeters(inches) {\r\n // if (inches > 0) {\r\n // return inches * 2.54;\r\n // }\r\n // return 0;\r\n //}\r\n /*\r\n * ----------------------------------------------------------------------------------\r\n * Convert feet to meters\r\n */\r\n //static feetToMeters(feet) {\r\n // if (feet > 0) {\r\n // return feet * 0.3048;\r\n // }\r\n // return 0;\r\n //}\r\n /*\r\n * ----------------------------------------------------------------------------------\r\n * Convert meters to feet\r\n */\r\n //static metersToFeet(meters) {\r\n // if (meters > 0) {\r\n // return meters * 3.28084;\r\n // }\r\n // return 0;\r\n //}\r\n /*\r\n * ----------------------------------------------------------------------------------\r\n * Convert meters to miles\r\n */\r\n //static metersToMiles(meters) {\r\n // if (meters > 0) {\r\n // return meters * 0.000621371192;\r\n // }\r\n // return 0;\r\n //}\r\n /*\r\n * ----------------------------------------------------------------------------------\r\n * Convert miles to meters\r\n */\r\n //static milesToMeters(miles) {\r\n // if (miles > 0) {\r\n // return miles * 1609.34;\r\n // }\r\n // return 0;\r\n //}\r\n // ----------------------------------------------------------------------------------\r\n //static kilosToPounds(kilos) {\r\n // if (kilos > 0) {\r\n // return kilos * 2.20462;\r\n // }\r\n // return 0;\r\n //}\r\n // ----------------------------------------------------------------------------------\r\n //static poundsToKilos(pounds) {\r\n // if (pounds > 0) {\r\n // return pounds * 0.453592;\r\n // }\r\n // return 0;\r\n //}\r\n /*\r\n * ----------------------------------------------------------------------------------\r\n * NOTE: Height is stored in database as string like: 6'2' (old data) or only as inches like: 74'\r\n * This method handles both cases and returns the height in inches as pure number like: 74\r\n * ----------------------------------------------------------------------------------\r\n */\r\n //static convertHeightToNumber(height) {\r\n // if (height !== null) {\r\n // let hInches = height;\r\n // // ref: https:// stackoverflow.com/questions/15699094/how-to-validate-a-number-field-in-javascript-using-regular-expressions\r\n\r\n // if (!/^-?(\\d+|\\d+\\.\\d+|\\.\\d+)([eE][-+]?\\d+)?$/.test(height)) {\r\n // if (height.indexOf('\\'') !== -1) {\r\n // // '/feet exist in input\r\n // const hArr = height.split('\\'');\r\n\r\n // if (hArr.length > 0) {\r\n // hInches = parseInt(hArr[0], 10) * 12;\r\n // }\r\n // if (hArr[1]) {\r\n // if (hArr[1].indexOf('\\'') !== -1) {\r\n // const iArr = hArr[1].split('\\'');\r\n\r\n // if (iArr.length > 0) {\r\n // hInches += parseInt(iArr[0], 10);\r\n // }\r\n // } else {\r\n // hInches += parseInt(hArr[1], 10);\r\n // }\r\n // }\r\n // } else if (height.indexOf('\\'') !== -1) {\r\n // const incArr = height.split('\\'');\r\n\r\n // if (incArr.length > 0) {\r\n // hInches += parseInt(incArr[0], 10);\r\n // }\r\n // }\r\n // }\r\n // return hInches;\r\n // }\r\n // return 0;\r\n //}\r\n /*\r\n * ---------------------------------------------------------------\r\n * NOTE: $rootScope.isMetric belongs to signed-in-user\r\n * the parameter 'isMetric' belongs to the non-signed-in-user\r\n * $rootScope.isMetric may be different than parameter 'isMetric'\r\n * Both are the same when the signed-in-user views his/her own profile\r\n * This method converts the height to that of signed-in-user\r\n * ----------------------------------------------------------------------------------\r\n */\r\n //static convertHeightUnit(hight, isMetric) {\r\n // const heightUnit = { };\r\n\r\n // if (hight > 0) {\r\n // this.kv.key = 'isMetric';\r\n // this.heightUnit = [\r\n // {\r\n // hUnit: 'cm',\r\n // },\r\n // ];\r\n // if (this.rootScopeTs.has(this.kv)) {\r\n // this.heightUnit = [{ hUnit: 'cm'}];\r\n // if (isMetric) {\r\n // // Math.round(height * 100) / 100; //round to two decimal places\r\n // this.heightUnit = [{ height: hight}];\r\n // } else {\r\n // // Math.round(returnObject.inchesToCentemeters(height) * 100) / 100; //round to two decimal places\r\n // this.heightUnit = [{ height: this.inchesToCentemeters(hight)}];\r\n // }\r\n // } else {\r\n // this.heightUnit = [{ hUnit: 'inches'}];\r\n // if (isMetric) {\r\n // // Math.round(returnObject.centemetersToInches(height) * 100) / 100; //round to two decimal places\r\n // this.heightUnit = [{ hUnit: this.centemetersToInches(hight)}];\r\n // } else {\r\n // // Math.round(height * 100) / 100; //round to two decimal places\r\n // this.heightUnit = [{ hUnit: hight}];\r\n // }\r\n // }\r\n // }\r\n // return heightUnit;\r\n //}\r\n /*\r\n * ---------------------------------------------------------------\r\n * NOTE: $rootScope.isMetric belongs to signed-in-user\r\n * the parameter 'isMetric' belongs to the non-signed-in-user\r\n * $rootScope.isMetric may be different than parameter 'isMetric'\r\n * Both are the same when the signed-in-user views his/her own profile\r\n * This method converts the weight to that of signed-in-user\r\n * ----------------------------------------------------------------------------------\r\n */\r\n //static convertWeightUnit(weght, isMetric) {\r\n // let weightUnit : unknown[] = [{ }];\r\n\r\n // if (weght > 0) {\r\n // if (this.rootScopeTs.has(this.kv)) {\r\n // this.weightUnit = [\r\n // {\r\n // wUnit: 'kg',\r\n // },\r\n // ];\r\n // }\r\n // if (this.rootScopeTs.has(this.kv)) {\r\n // this.weightUnit = [{ hUnit: 'cm'}];\r\n // if (isMetric) {\r\n // // Math.round(weight * 100) / 100; //round to two decimal places\r\n // this.weightUnit = [{ weight: weght}];\r\n // } else {\r\n // // Math.round(returnObject.poundsToKilos(weight) * 100) / 100; //round to two decimal places\r\n // this.weightUnit = [{ weight: this.poundsToKilos(weght)}];\r\n // }\r\n // } else {\r\n // weightUnit = [{ wUnit: 'lbs'}];\r\n // this.weightUnit = [{ wUnit: 'inches'}];\r\n // if (isMetric) {\r\n // // Math.round(returnObject.centemetersToInches(height) * 100) / 100; //round to two decimal places\r\n // this.weightUnit = [{ wUnit: this.centemetersToInches(weght)}];\r\n // } else {\r\n // // Math.round(weight * 100) / 100; //round to two decimal places\r\n // weightUnit = [{ weight: weght}];\r\n // }\r\n // }\r\n // }\r\n // return weightUnit;\r\n //}\r\n // ---------------------------------------------------------------\r\n // convertClientComputedDistance(distUnit = []) {\r\n // const distanceUnit = [\r\n // {\r\n // distance: 0,\r\n // },\r\n // {\r\n // dUnit: 'km',\r\n // },\r\n // ];\r\n\r\n // if (distUnit[0].distance > 0) {\r\n // if (this.rootScopeTs.has(this.kv)) {\r\n // // if the signedInUser's preference of unit is Metric\r\n // distanceUnit[0].dUnit = 'km';\r\n // if (distUnit[0].dUnit.toLowerCase().indexOf('km') !== -1) {\r\n // // calculated unit is in KiloMeter\r\n // if (distUnit[0].distance >= 1) {\r\n // distanceUnit[0].distance = Math.round(distUnit[0].distance * 10) / 10; // round to two decimal places\r\n // } else {\r\n // distanceUnit[0].dUnit = 'meter(s)';\r\n // distanceUnit[0].distance = Math.round(distUnit[0].distance * 1000 * 10) / 10; // round to two decimal places\r\n // }\r\n // } else {\r\n // // calculated unit is in Miles, but the signedInUser's preference is in Metric, so convert to metric unit\r\n // distanceUnit[0].distance = this.milesToMeters(distUnit[0].distance);\r\n // if (distanceUnit[0].distance >= 1000) {\r\n // distanceUnit[0].distance = Math.round((distanceUnit[0].distance / 1000) * 10) / 10; // round to two decimal places\r\n // } else {\r\n // distanceUnit[0].dUnit = 'meter(s)';\r\n // distanceUnit[0].distance = Math.round(distanceUnit[0].distance * 10) / 10; // round to two decimal places\r\n // }\r\n // }\r\n // } else {\r\n // // the signedInUser's preference of unit is Imperial System\r\n // distanceUnit[0].dUnit = 'mile(s)';\r\n // // calculated unit is in KiloMeter, but the signedInUser's preference is in Imperial System, so convert to Miles unit\r\n // if (distUnit[0].dUnit.toLowerCase().indexOf('km') !== -1) {\r\n // distanceUnit[0].distance = this.metersToMiles(distUnit[0].distance); // convert to miles\r\n // if (distanceUnit[0].distance >= 1) {\r\n // distanceUnit[0].distance = Math.round(distanceUnit[0].distance * 10) / 10; // round to one decimal places\r\n // } else {\r\n // distanceUnit[0].dUnit = 'feet'; // 1 mile == 5280 feet\r\n // distanceUnit[0].distance = Math.round(distanceUnit[0].distance * 5280 * 10) / 10; // round to one decimal places\r\n // }\r\n // } else {\r\n // // calculated unit is in Miles, so no need to convert\r\n // if (distUnit[0].distance >= 1) {\r\n // distanceUnit[0].distance = Math.round(distUnit[0].distance * 10) / 10; // round to one decimal places\r\n // } else {\r\n // distanceUnit[0].dUnit = 'feet'; // 1 mile == 5280 feet\r\n // distanceUnit[0].distance = Math.round(distUnit[0].distance * 5280 * 10) / 10; // round to one decimal places\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return distanceUnit;\r\n // }\r\n /*\r\n * ---------------------------------------------------------------\r\n * NOTE: receiverInfo.distance is in Meters sent by the server\r\n * This function assumes that the input-variable be a distance in Meters\r\n * ---------------------------------------------------------------\r\n */\r\n //static convertServerSentDistance(distanceUnit) {\r\n // if (distanceUnit.distance > 0) {\r\n // if (this.rootScopeTs.has(this.kv)) {\r\n // if (distanceUnit.distance >= 1000) {\r\n // // receiverInfo.distance is in Meters sent by the server\r\n // distanceUnit.dUnit = 'km';\r\n // distanceUnit.distance = Math.round((distanceUnit.distance / 1000) * 10) / 10;\r\n // } else {\r\n // distanceUnit.dUnit = 'm';\r\n // distanceUnit.distance = Math.round(distanceUnit.distance * 10) / 10;\r\n // }\r\n // } else {\r\n // const distance = this.metersToMiles(distanceUnit.distance);\r\n\r\n // if (distance >= 1) {\r\n // distanceUnit.dUnit = 'miles';\r\n // distanceUnit.distance = Math.round(distance * 10) / 10;\r\n // } else {\r\n // distanceUnit.dUnit = 'feet';\r\n // distanceUnit.distance = Math.round(distance * 5280 * 10) / 10;\r\n // }\r\n // }\r\n // }\r\n // return distanceUnit;\r\n //}\r\n // ---------------------------------------------------------------\r\n // convertProfileTilesUnit(profileTiles: ProfileTile[]): ProfileTile[] {\r\n // if (profileTiles.length > 0) {\r\n // for (let i = 0; i < profileTiles.length; i++) {\r\n // let distanceUnit = [{ unit: 'km'}, { distance: 0}];\r\n\r\n // distanceUnit[i].distance = profileTiles[i].distance;\r\n // distanceUnit[i].unit = profileTiles[i].unit;\r\n // distanceUnit = this.convertServerSentDistance(distanceUnit);\r\n\r\n // profileTiles[i].distance = distanceUnit[i].distance;\r\n // profileTiles[i].unit = distanceUnit[i].unit;\r\n // }\r\n // }\r\n // return profileTiles;\r\n // }\r\n /*\r\n * ---------------------------------------------------------------\r\n * alert ('in UnitConversionService');\r\n * ---------------------------------------------------------------\r\n */\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Chat } from '../../models/chat/chat.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { KV } from '../../models/keyValue/kv.model';\r\nimport { MemberActivity } from '../../models/member/memberActivity.model';\r\nimport { BinarySearchService } from '../searchSortServiceService/binarySearchService.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from './stringServiceStatic.service';\r\nimport { KvMemberActivityGlyph } from '../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\n\r\n// =====================================================================\r\n// Use Case:\r\n// ----------\r\n// In a Component:\r\n// import { Subject } from 'rxjs;\r\n// import { takeUntil } from 'rxjs/operators';\r\n// ...\r\n// private onDestroy$: Subject = new Subject();\r\n// ...\r\n// this.RandomNumberGeneratorObservableServiceStatic.getRandomNumber()\r\n// .pipe( takeUntil( this.onDestroy$ ) )\r\n// .subscribe( ( luckyNumber : number ) =>\r\n// {\r\n// this.number1 = luckyNumber;\r\n// ...\r\n// public ngOnDestroy(): void {\r\n// this.onDestroy$.next();\r\n// }\r\n// =====================================================================\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport abstract class ArraySupportServiceStatic\r\n{\r\n public static binarySearchService : BinarySearchService;\r\n public static dictionaryService : DictionaryService;\r\n public static rootScopeTs : Set;\r\n public static distUnit = '';\r\n public static isMobilevar = false;\r\n public static height : any;\r\n public static width : any;\r\n public static heightUnit : any;\r\n public static weightUnit : any;\r\n public static kv : KV;\r\n\r\n constructor (public _binarySearchService : BinarySearchService,\r\n public _dictionaryService : DictionaryService,\r\n ) {\r\n ArraySupportServiceStatic.dictionaryService = _dictionaryService;\r\n ArraySupportServiceStatic.binarySearchService = _binarySearchService;\r\n ArraySupportServiceStatic.rootScopeTs = new Set();\r\n \r\n }\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // On 20220411\r\n // ------------------------------------------------------------------\r\n static createArrayFromMap (inmap : Map) : any {\r\n const arr : any[] = [];\r\n\r\n if (inmap && inmap.size > 0) {\r\n arr.push([ ...inmap.values() ])\r\n }\r\n // debugger;\r\n return arr;\r\n }\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // ------------------------------------------------------------------\r\n static createMapFromArray (arr : any) : Map {\r\n const map = new Map();\r\n\r\n if (arr && arr.length > 0) {\r\n arr.forEach(function callback (key : any, value : any) {\r\n map.set(value, key);\r\n });\r\n }\r\n return map;\r\n }\r\n // --------------------------------------------------------------\r\n static deepCopyArray (arr : any) : any {\r\n let tMap = this.createMapFromArray(arr);\r\n return this.createArrayFromMap(tMap);\r\n }\r\n // --------------------------------------------------------------\r\n // ref: https://stackoverflow.com/questions/4775722/how-can-i-check-if-an-object-is-an-array\r\n // Only implement if no native implementation is available\r\n // --------------------------------------------------------------\r\n static isTypeOfArray (obj : any) : boolean {\r\n let isArray : boolean = false;\r\n if (typeof Array.isArray === 'undefined') {\r\n (obj : any) => {\r\n isArray = Object.prototype.toString.call(obj) === '[object Array]';\r\n }\r\n };\r\n // debugger;\r\n return isArray;\r\n }\r\n // --------------------------------------------------------------\r\n static QueuePop (inArray : any[]) : any {\r\n for (let i = 0; i < inArray.length; i++) {\r\n // this.unloadComponent(this.activeComponentIds[i]); //Do something;\r\n inArray.splice(i--, 1);\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static RemoveFromBottom (inArray : any[]) : any {\r\n // bottom=0th-index\r\n for (let i = 0; i < inArray.length; i++) {\r\n // this.unloadComponent(this.activeComponentIds[i]); //do something;\r\n inArray.splice(i--, 1);\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static StackPop (inArray : any[]) : any {\r\n for (let i = inArray.length - 1; i >= 0; i--) {\r\n // this.unloadComponent(this.activeComponentIds[i]); //do something\r\n inArray.splice(i, 1);\r\n // debugger;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static RemoveFromTop (inArray : any[]) : any {\r\n // top=last-index\r\n for (let i = inArray.length - 1; i >= 0; i--) {\r\n // this.unloadComponent(this.activeComponentIds[i]); // do something\r\n inArray.splice(i, 1);\r\n // debugger;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static RemoveFromArray (inArray : any[], index : number) : any {\r\n // top=last-index\r\n inArray.splice(index, 1);\r\n }\r\n /*\r\n * --------------------------------------------\r\n * Note: Tested on 2020/12/20. Works!\r\n * --------------------------------------------\r\n */\r\n // -------------------------------------------\r\n // a[]: any[] =[];\r\n // revA = a.reverse();\r\n // 1) .reverse() method operates on the original array, thus you don't need to reassign a.\r\n // ref: https://stackoverflow.com/questions/10168034/how-can-i-reverse-an-array-in-javascript-without-using-libraries\r\n //\r\n // -------------------------------------------\r\n // ref: https://stackoverflow.com/questions/10168034/how-can-i-reverse-an-array-in-javascript-without-using-libraries\r\n // O(n/2)\r\n // -------------------------------------------\r\n static reverseOnItself = (s : any) => {\r\n let start = 0, end = s.length - 1;\r\n while (start < end) {\r\n [ s[ start ], s[ end ] ] = [ s[ end ], s[ start ] ]; // swap\r\n start++, end--;\r\n }\r\n return s;\r\n };\r\n // -------------------------------------------\r\n // O(n/2)\r\n // -------------------------------------------\r\n static reverseArrayOnItself (inArr : any[]) : any[] {\r\n const len = inArr.length;\r\n let middleIndex = len / 2;\r\n let temp : any;\r\n\r\n if (len % 2 === 0) {\r\n // even-case\r\n for (let i = 0; i <= middleIndex; i++) {\r\n temp = inArr[ i ];\r\n inArr[ i ] = inArr[ len - i - 1 ];\r\n inArr[ len - i - 1 ] = temp;\r\n }\r\n } else if (len % 2 === 1) {\r\n // odd-case\r\n const middleV = inArr[ len / 2 ];\r\n\r\n middleIndex = len / 2;\r\n for (let i = 0; i <= middleIndex || inArr[ i ] === middleV; i++) {\r\n // swap up to middle or middleValue\r\n temp = inArr[ i ];\r\n inArr[ i ] = inArr[ len - i - 1 ];\r\n inArr[ len - i - 1 ] = temp;\r\n }\r\n }\r\n return inArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // testing/usage:\r\n // console.time ('reverseOnItself');\r\n // for (var x = 0; x < 1000000; x++) {\r\n // reverseOnItself();\r\n // }\r\n // console.timeEnd('reverse1');\r\n // ---------------------------------------------------------------\r\n static communicationActivityComparatorBySubType (dCa : CommunicationActivity, sCa : CommunicationActivity) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dCa) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCa)) {\r\n if (dCa.communicationSubType.indexOf(sCa.communicationSubType) !== -1) {\r\n return sCa.date > dCa.date;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static communicationActivityComparator (dCa : CommunicationActivity, sCa : CommunicationActivity) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dCa) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCa)) { \r\n return dCa.communicationActivityId - sCa.communicationActivityId;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static memberActivityComparator (dMa : MemberActivity, sMa : MemberActivity) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dMa) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sMa)) {\r\n return dMa.action.indexOf(sMa.action) !== -1;\r\n }\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n static mergeMapsViaSpread (first : Map, second : Map) : Map {\r\n let merged = new Map([ ...first, ...second ]) as Map;\r\n return merged;\r\n }\r\n // ---------------------------------------------------------------\r\n // static sortMap (first : Map) : Map {\r\n // let m = this.sortMap(first);\r\n // return m;\r\n // }\r\n // ---------------------------------------------------------------\r\n // Note: there is a similar function called createMapFromArray()\r\n // and its counterpart createArrayFromMap()\r\n // ---------------------------------------------------------------\r\n static mapFromArray (list : any[]) : any {\r\n const mapped = list.map((el, i) => ({ index: i, value: el }));\r\n\r\n return mapped;\r\n }\r\n // ---------------------------------------------------------------\r\n static arrayFromMap (list : Map) : any {\r\n return this.createArrayFromMap(list);\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO: Tested on 20220616.\r\n // Note: This does not work.\r\n // Produces a map or an array within array without the values of array\r\n // ---------------------------------------------------------------\r\n static mergeArrays (dArr : any[], sArr : any[]) : any[] {\r\n let index = -1;\r\n let dMap = new Map();\r\n let sMap = new Map();\r\n let merged = new Map();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dArr)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sArr)) {\r\n if (dArr.length > 0) {\r\n dMap = new Map(dArr);\r\n }\r\n if (sArr.length > 0) {\r\n sMap = new Map(sArr);\r\n }\r\n }\r\n merged = new Map([ ...dMap, ...sMap ]);\r\n return this.createArrayFromMap(merged);\r\n }\r\n // --------------------------------------------------------------\r\n // Note: makeUniq(arr[]) method makes an array\r\n // unique-valued, ==> there is no duplicate element in it.\r\n // \r\n // Using the Set constructor and the spread syntax:\r\n // --------------------------------------------------------------\r\n public static makeArrayOfUniqElements (arr : any[]) : any[] {\r\n let uniq : any[];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && arr.length > 0) {\r\n uniq = [ ...new Set(arr) ];\r\n\r\n return uniq;\r\n }\r\n else return arr;\r\n }\r\n // --------------------------------------------------------------\r\n // Note: Tested on 20220411. Works!\r\n // --------------------------------------------------------------\r\n public static mergeArraysUniq (dArr : any[], sArr : any[]) : any[] {\r\n // merge\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sArr) && sArr.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dArr)) {\r\n dArr.push(...sArr);\r\n }\r\n // debugger;\r\n //uniq\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dArr) && dArr.length > 0) {\r\n dArr = [ ...new Set(dArr) ];\r\n // debugger;\r\n }\r\n // debugger;\r\n return dArr;\r\n }\r\n // ---------------------------------------------------------------\r\n static mergeMaps (dMap : Map, sMap : Map) : Map {\r\n let merged = new Map();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dMap) || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sMap)) {\r\n merged = new Map([ ...dMap, ...sMap ]);\r\n }\r\n return merged;\r\n }\r\n // ---------------------------------------------------------------\r\n static uniquelyMergeChatArrays (destArr : Chat[], srcArr : Chat[]) : Chat[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destArr) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(srcArr)) {\r\n if (srcArr.length > 0) {\r\n srcArr.map(e => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n var index = new BinarySearchService().isFound(destArr, e, this.communicationActivityComparator);\r\n if (index === -1) {\r\n destArr.push(e);\r\n }\r\n }\r\n })\r\n }\r\n }\r\n return destArr;\r\n }\r\n // ---------------------------------------------------------------\r\n static uniquelyMergeMemberActivityArrays (destArr : MemberActivity[], srcArr : MemberActivity[]) : MemberActivity[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destArr) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(srcArr)) {\r\n if (srcArr.length > 0) {\r\n srcArr.map(e => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e)) {\r\n var index = new BinarySearchService().isFound(destArr, e, this.memberActivityComparator);\r\n if (index === -1) {\r\n destArr.push(e);\r\n }\r\n }\r\n })\r\n }\r\n }\r\n debugger;\r\n return destArr;\r\n }\r\n \r\n // ----------------------------------------------------------------------\r\n static getIndexOfStringInArray (arr : string[], input : string) : number {\r\n var index = -1;\r\n var i = 0;\r\n // debugger;\r\n if (arr.length > 0) {\r\n // debugger;\r\n for (var i = 0; i < arr.length; i++) {\r\n // debugger;\r\n if (arr[ i ] === input) {\r\n index = i;\r\n // debugger;\r\n break;\r\n }\r\n } \r\n }\r\n return index;\r\n }\r\n // ----------------------------------------------------------------------\r\n static uniquelyUpdateStringArray (arr : string[], input : string) : string[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(arr) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(input)) {\r\n var index = -1;\r\n if (arr.length > 0) {\r\n index = this.getIndexOfStringInArray(arr, input); \r\n // debugger;\r\n if (index < 0) {\r\n arr.push(input);\r\n // debugger;\r\n }\r\n }\r\n else {\r\n arr.push(input);\r\n }\r\n }\r\n return arr;\r\n }\r\n // ----------------------------------------------------------------------\r\n static getIndexOfKvGlyphInArray (arr : KvMemberActivityGlyph[], input : CommunicationActivity) : number {\r\n var index = -1;\r\n var i = 0;\r\n // debugger;\r\n if (arr.length > 0) {\r\n // debugger;\r\n for (var i = 0; i < arr.length; i++) {\r\n // debugger;\r\n if (arr[ i ].action.toLowerCase().indexOf(input.memberActivity.toLowerCase()) !== -1\r\n || arr[ i ].key.toLowerCase().indexOf(input.memberActivity.toLowerCase()) !== -1) {\r\n index = i;\r\n // debugger;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { PagerBreadcrum } from '../../models/breadcrum/pagerBreadcrum.model';\r\nimport { ModuleComponentLoader } from '../../models/common/moduleComponentLoader.model';\r\nimport { ModuleComponentLoaderServiceStatic } from './commonStaticServices/moduleComponentLoaderServiceStatic.service';\r\nimport { EmitterSubjectService } from './emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from './stringServiceStatic.service';\r\n\r\n\r\n\r\n /*\r\n * --------------------------------------------------------------\r\n * IMPORTANT!!:\r\n * ------------\r\n * The BreadCrumServiceStatic and RedirectionServieStatic are two disparate services with disparate behaviors.\r\n * RedirectionServieStatic uses BreadCrumServiceStatic, but RedirectionServieStatic does NOT use BreadCrumServiceStatic\r\n *\r\n * The setBreadcrumPage ( actionName : string, router: Router) method does NOT user RedirectionServiceStatic for it's navigation.\r\n * Hence any navigational behavior that is related to RedirectionServiceStatic.fireMcLoader() method will NOT be reflected here.\r\n * \r\n * --------------------------------------------------------------\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class BreadcrumServiceStatic implements OnDestroy {\r\n // ---------------------------------------------------------\r\n constructor () {\r\n }\r\n // breadcrumRing will be used for getting pagedBrdCrmArr\r\n // breadcrumRing will contain all routed-paths, this will only be used for adding, but can be cleared.\r\n public static breadcrumRing : ModuleComponentLoader[] = [];\r\n public static currentPage = 0;\r\n public static nextPage = 0;\r\n public static pagerBrdCrm: PagerBreadcrum = new PagerBreadcrum();\r\n public static pagedBrdCrmArr : ModuleComponentLoader[] = [];\r\n protected static pageSize = 10;\r\n protected static previousPage = 0;\r\n protected static totalItems = 0;\r\n protected emitterDestroyed$ : Subject = new Subject();\r\n public static loginSuccess : LoginSuccess = new LoginSuccess();\r\n // -----------------------------------------------------------------\r\n static clearRoutes () : any\r\n {\r\n this.breadcrumRing = [];\r\n }\r\n\r\n // --------------------------------------------------------------\r\n public static emitProfilePageSelectorBoolean (page : string) : boolean {\r\n // debugger;\r\n let isEmitted = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(page)) {\r\n if (page.toLowerCase().indexOf('myphotomgmt') !== -1) {\r\n EmitterSubjectService.emitIsPhotoMgmt(true);\r\n // debugger;\r\n isEmitted = true;\r\n }\r\n else if (page.toLowerCase().indexOf('memberviewmgmt') !== -1) {\r\n EmitterSubjectService.emitIsViewMember(true);\r\n // debugger;\r\n isEmitted = true;\r\n }\r\n else if (page.toLowerCase().indexOf('myprofileviewmgmt') !== -1) {\r\n EmitterSubjectService.emitIsMyProfile(true)\r\n // debugger;\r\n isEmitted = true;\r\n }\r\n }\r\n \r\n return isEmitted;\r\n }\r\n // ---------------------------------------------------------\r\n static getCurrentPage () : ModuleComponentLoader {\r\n return this.pagerBrdCrm.currentBrdCrmPage;\r\n }\r\n // ---------------------------------------------------------\r\n static getPreviousPage () : ModuleComponentLoader {\r\n return this.pagerBrdCrm.previousBrdCrmPage;\r\n }\r\n\r\n // ---------------------------------------------------------\r\n static getNextPage () : ModuleComponentLoader {\r\n return this.pagerBrdCrm.nextBrdCrmPage;\r\n }\r\n // ---------------------------------------------------------\r\n static getLength(): number {\r\n return this.breadcrumRing.length;\r\n }\r\n // ---------------------------------------------------------\r\n static getRing () : ModuleComponentLoader[] {\r\n return this.breadcrumRing;\r\n }\r\n // ---------------------------------------------------------\r\n static setRing ( ring : ModuleComponentLoader[]): void {\r\n this.breadcrumRing = ring;\r\n }\r\n // ---------------------------------------------------------\r\n static getPagerBreadcrum () : PagerBreadcrum\r\n {\r\n return this.pagerBrdCrm;\r\n }\r\n // ---------------------------------------------------------\r\n // TODO: Remove before deployment\r\n // ---------------------------------------------------------\r\n // static isValidModelComponentLoader ( mcl : ModuleComponentLoader ) : boolean\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mcl )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mcl.componentName )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl.moduleName)\r\n // && (mcl.id > 0 || mcl.sitUserId > 0) )\r\n // {\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mcl.url ) )\r\n // {\r\n // // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // mcl.url = mcl.getUrl();\r\n // }\r\n // return true;\r\n // }\r\n // else return false;\r\n // }\r\n // ---------------------------------------------------------------------------------\r\n static isCurrentUrlAProfilePage (url : string) : boolean {\r\n let isAProfilePage = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n if (url.toLowerCase().indexOf('memberviewmgmt') !== -1 || url.toLowerCase().indexOf('myprofileviewmgmt') !== -1 || url.toLowerCase().indexOf('myphotos') !== -1) {\r\n isAProfilePage = true;\r\n }\r\n }\r\n return isAProfilePage;\r\n }\r\n // ---------------------------------------------------------\r\n // Note: this method is used to determine a component that is\r\n // used for different users, such as primarily for\r\n // memberViewComponent which is used to display any member\r\n // ---------------------------------------------------------\r\n // Thia method check this condition or back-to-baack scenario\r\n // ---------------------------------------------------------\r\n static isSameComponent ( mcl : ModuleComponentLoader ) : boolean\r\n {\r\n // debugger;\r\n // prevent same page back to back\r\n if ( this.breadcrumRing.length > 0 )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ] )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName ) )\r\n {\r\n if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName.toLowerCase().indexOf( mcl.moduleName.toLowerCase() ) !== -1 ) // if moduleName matches\r\n {\r\n if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName.toLowerCase().indexOf( mcl.componentName.toLowerCase() ) !== -1 ) // if componentName matches\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else // for the first time/very first entry\r\n {\r\n // debugger;\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------\r\n // Note: this method is used to determine if the component's\r\n // user is the same or not, such as primarily for\r\n // memberViewComponent which is used to display any member\r\n // ---------------------------------------------------------\r\n // Thia method check this condition or back-to-baack scenario\r\n // This is to be used in conjunction with isSameComponent()\r\n // such as first check if it is the same component, if so then is it the same user?\r\n // ---------------------------------------------------------\r\n static isSameUser ( mcl : ModuleComponentLoader ) : boolean\r\n {\r\n // debugger;\r\n // prevent same page back to back\r\n if ( this.breadcrumRing.length > 0 )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ] )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName ) )\r\n {\r\n if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName.toLowerCase().indexOf( mcl.moduleName.toLowerCase() ) !== -1 ) // if moduleName matches\r\n {\r\n if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName.toLowerCase().indexOf( mcl.componentName.toLowerCase() ) !== -1 ) // if componentName matches\r\n {\r\n if ( mcl.id > 0 && this.breadcrumRing[ this.breadcrumRing.length - 1 ].id === mcl.id ) // if sitUserId matches\r\n {\r\n // debugger;\r\n\r\n return true;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else // for the first time/very first entry\r\n {\r\n // debugger;\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------\r\n static isDifferentMemberView ()\r\n {\r\n if ( this.breadcrumRing.length > 0 )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ] )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 2 ] )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 2 ].moduleName )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 2 ].componentName ) )\r\n {\r\n // if moduleName matches\r\n if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName.toLowerCase().indexOf( 'memberm' ) !== -1\r\n && this.breadcrumRing[ this.breadcrumRing.length - 2 ].moduleName.toLowerCase().indexOf( 'memberm' ) !== -1 )\r\n {\r\n // if componentName matches\r\n if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName.toLowerCase().indexOf( 'memberViewMgmt' ) !== -1\r\n && this.breadcrumRing[ this.breadcrumRing.length - 2 ].componentName.toLowerCase().indexOf( 'memberViewMgmt' ) !== -1 )\r\n {\r\n // if sitUserIds do not matche\r\n if ( this.breadcrumRing[ this.breadcrumRing.length - 2 ].id > 0 && this.breadcrumRing[ this.breadcrumRing.length - 1 ].id > 0\r\n && this.breadcrumRing[ this.breadcrumRing.length - 1 ].id !== this.breadcrumRing[ this.breadcrumRing.length - 2 ].id )\r\n {\r\n // debugger;\r\n EmitterSubjectService.emitIsViewMember(true);\r\n return true;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else // for the first time/very first entry\r\n {\r\n // debugger;\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------\r\n static isPreviousPagePhotoMgmt () {\r\n if (this.breadcrumRing.length > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.breadcrumRing[ this.breadcrumRing.length - 1 ])\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.breadcrumRing[ this.breadcrumRing.length - 2 ])\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.breadcrumRing[ this.breadcrumRing.length - 2 ].moduleName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.breadcrumRing[ this.breadcrumRing.length - 2 ].componentName)) {\r\n // if moduleName matches\r\n if (this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName.toLowerCase().indexOf('memberm') !== -1\r\n && this.breadcrumRing[ this.breadcrumRing.length - 2 ].moduleName.toLowerCase().indexOf('memberm') !== -1) {\r\n // if componentName matches\r\n if (this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName.toLowerCase().indexOf('myphotos') !== -1\r\n && this.breadcrumRing[ this.breadcrumRing.length - 2 ].componentName.toLowerCase().indexOf('myphotos') !== -1) {\r\n // if sitUserIds do not matche\r\n if (this.breadcrumRing[ this.breadcrumRing.length - 2 ].id > 0 && this.breadcrumRing[ this.breadcrumRing.length - 1 ].id > 0\r\n && this.breadcrumRing[ this.breadcrumRing.length - 1 ].id !== this.breadcrumRing[ this.breadcrumRing.length - 2 ].id) {\r\n // debugger;\r\n EmitterSubjectService.emitIsPhotoMgmt(true);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else // for the first time/very first entry\r\n {\r\n // debugger;\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------\r\n static isBackToBack (mcl : ModuleComponentLoader) : boolean\r\n {\r\n // debugger;\r\n // prevent same page back to back\r\n if ( this.breadcrumRing.length > 0 )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ] )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName ) )\r\n {\r\n if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].moduleName.toLowerCase().indexOf( mcl.moduleName.toLowerCase() ) === -1 )\r\n {\r\n return false;\r\n }\r\n else if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].componentName.toLowerCase().indexOf( mcl.componentName.toLowerCase() ) === -1 )\r\n {\r\n return false;\r\n }\r\n else if ( this.breadcrumRing[ this.breadcrumRing.length - 1 ].id !== mcl.id )\r\n {\r\n // debugger;\r\n return false;\r\n }\r\n else\r\n {\r\n // debugger;\r\n return true;\r\n }\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n }\r\n else // for the first time/very first entry\r\n {\r\n // debugger;\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------\r\n // Note: if mcl is valid, then PagerBreadCrum will be returned,\r\n // else it will return an empty pagerBreadCrum.\r\n // Also, this is the only place where breadcrumRing is updated.\r\n // ---------------------------------------------------------\r\n static setNewPath ( mcl : ModuleComponentLoader ) : PagerBreadcrum\r\n {\r\n // this.breadcrumRing = ( this.emitterService as EmitterService ).getBreadcrumRing();\r\n if (ModuleComponentLoaderServiceStatic.isValidModuleComponentLoader( mcl ) )\r\n {\r\n // debugger;\r\n // prevent same page back to back\r\n if ( this.breadcrumRing.length > 0 )\r\n {\r\n let isBtb = this.isBackToBack( mcl );\r\n\r\n // debugger;\r\n if ( !isBtb )\r\n {\r\n // debugger;\r\n this.pagerBrdCrm = this.updateBreadcrumRing( mcl );\r\n }\r\n }\r\n else // for the first time/very first entry\r\n {\r\n // debugger;\r\n this.pagerBrdCrm = this.updateBreadcrumRing( mcl );\r\n }\r\n }\r\n else // mcl was returned, which is most likely invalid, meaning lacks either moduleName or componentName\r\n {\r\n // debugger;\r\n let tMcl = ModuleComponentLoaderServiceStatic.setupMcLoaderModel(mcl); \r\n this.pagerBrdCrm = this.updateBreadcrumRing(tMcl);\r\n }\r\n // debugger;\r\n return this.pagerBrdCrm;\r\n }\r\n // ---------------------------------------------------------\r\n static addUpdate ( kvAny : ModuleComponentLoader): PagerBreadcrum {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAny) && kvAny.id > -1 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAny.url)) {\r\n const len = this.breadcrumRing.length;\r\n\r\n if (len === 0) {\r\n /*\r\n * Empty-Case:\r\n * step-3-A:\r\n * ==========\r\n * debugger;\r\n * var startPage = new BrdCrmKvAny();\r\n * startPage.date = kvAny.date.toString();\r\n * startPage.id = 1;\r\n * startPage.pageNo = 1; //This implies that index does not start at '0' but at '1'\r\n * startPage.returnUrl = '/';\r\n * startPage.value = kvAny.returnUrl;\r\n * this.breadcrumRing.push(startPage);\r\n */\r\n\r\n kvAny.index = 0; // This implies that index does not start at '0' but at '1'; in pagerBrdCrm 'index'=='page'\r\n this.breadcrumRing.push(kvAny);\r\n // debugger;\r\n\r\n // set the pagerBrdCrm\r\n this.pagerBrdCrm = this.setBreadcrumPager( kvAny.index); // Note: Pager is set with 'page'=='index'\r\n } else {\r\n /*\r\n * Not-Empty-Case:\r\n * step-3-B-i:\r\n * ============\r\n * debugger;\r\n */\r\n\r\n // Search-Case:\r\n let tempCrumPage = this.searchByValue(kvAny.url);\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempCrumPage)) {\r\n tempCrumPage = this.searchById(kvAny.id);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempCrumPage)) {\r\n this.breadcrumRing[ tempCrumPage.index ].id = kvAny.id; // since 'pageNo' does not start at '0' but at '1'\r\n this.breadcrumRing[ tempCrumPage.index ].url = kvAny.url;\r\n\r\n // set the pagerBrdCrm\r\n this.pagerBrdCrm = this.setBreadcrumPager( tempCrumPage.index);\r\n // debugger;\r\n } else {\r\n /*\r\n * Not-Found-Case:\r\n * step-3-B-ii:\r\n * =============\r\n * debugger;\r\n */\r\n\r\n kvAny.index = this.breadcrumRing.length + 1;\r\n this.breadcrumRing.push(kvAny);\r\n\r\n // set the pagerBrdCrm\r\n this.pagerBrdCrm = this.setBreadcrumPager(kvAny.index);\r\n // debugger;\r\n }\r\n }\r\n }\r\n // debugger;\r\n return this.pagerBrdCrm;\r\n }\r\n /*\r\n * =========================================================\r\n * ---------------------------------------------------------\r\n */\r\n static searchById ( id : number ) : ModuleComponentLoader {\r\n // debugger;\r\n let found : any;\r\n\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0 && id >= 0) {\r\n let i = 0;\r\n\r\n this.breadcrumRing.forEach((e) => {\r\n if (e && e.id === id) {\r\n found = e;\r\n found.index = i;\r\n }\r\n i++;\r\n });\r\n }\r\n // debugger;\r\n return found;\r\n }\r\n // ---------------------------------------------------------\r\n static searchByIndex ( index : number ) : ModuleComponentLoader {\r\n let found;\r\n\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0 && index >= 0) {\r\n found = this.breadcrumRing[index];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(found)) {\r\n found.index = index;\r\n return found;\r\n }\r\n }\r\n return null as any;\r\n }\r\n // ---------------------------------------------------------\r\n static searchByKey ( key : string ) : ModuleComponentLoader {\r\n let found : any;\r\n\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(key)) {\r\n this.breadcrumRing.map((e) => {\r\n if (e && e.componentName === key) {\r\n found = e;\r\n }\r\n });\r\n }\r\n return found;\r\n }\r\n // ---------------------------------------------------------\r\n static searchByPageNo ( page : number ) : ModuleComponentLoader {\r\n let found : any;\r\n\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(page)) {\r\n this.breadcrumRing.map((e) => {\r\n if (e && e.index === page) {\r\n found = e;\r\n }\r\n });\r\n }\r\n return found;\r\n }\r\n\r\n // ---------------------------------------------------------\r\n static searchByUrl ( url : string ) : ModuleComponentLoader {\r\n let found : any;\r\n\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n this.breadcrumRing.map((e) => {\r\n if (e && e.url === url) {\r\n found = e;\r\n }\r\n });\r\n }\r\n return found;\r\n }\r\n // ---------------------------------------------------------\r\n static searchByValue ( url : string ) : ModuleComponentLoader {\r\n let found : any;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.breadcrumRing) && this.breadcrumRing.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n this.breadcrumRing.map((e) => {\r\n if (e && e.url === url) {\r\n found = e;\r\n }\r\n });\r\n }\r\n return found;\r\n }\r\n /*\r\n * ---------------------------------------------------------\r\n * Note: !!!!Caution!!!\r\n * This index is should be the index of item in breadcrumRing array.\r\n * DO NOT use this method if not sure about the index of item in array.\r\n * ---------------------------------------------------------\r\n */\r\n static removeByIndex ( index : number ) : ModuleComponentLoader[] {\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0 && index >= 0) {\r\n const tKvAny = this.breadcrumRing[index];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tKvAny)) {\r\n return this.breadcrumRing.splice(index, 1);\r\n }\r\n }\r\n return null as any;\r\n }\r\n // ---------------------------------------------------------\r\n static removeById ( id : number ) : ModuleComponentLoader[] {\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0 && id >= 0) {\r\n const kvAny = this.searchById(id);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAny) && kvAny.index >= 0) {\r\n return this.breadcrumRing.splice(kvAny.index, 1);\r\n }\r\n }\r\n return null as any;\r\n }\r\n // ---------------------------------------------------------\r\n // removeByKey ( key : string ) : ModuleComponentLoader[] {\r\n // if (this.breadcrumRing && this.breadcrumRing.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(key)) {\r\n // const kvAny = this.searchByKey(key);\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAny) && kvAny.key && kvAny.key.length >= 0 && kvAny.index >= 0) {\r\n // return this.breadcrumRing.splice(kvAny.index, 1);\r\n // }\r\n // }\r\n // return null as any;\r\n // }\r\n // ---------------------------------------------------------\r\n static removeByValue ( url : string ) : ModuleComponentLoader[] {\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(url)) {\r\n const kvAny = this.searchByValue(url);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvAny) && kvAny.index >= 0) {\r\n return this.breadcrumRing.splice(kvAny.index, 1);\r\n }\r\n }\r\n return null as any;\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Use Case: User-action -->setBreadcrum() -->this.router.navigate()\r\n * -->this.router.events --> setup a new page if necessary --> setCurrentPage();\r\n *\r\n * Note: This method should (/NOT) update the ParerBreadcrum or breadcrumRing.\r\n * It only traverses over breadcrumRing entries.\r\n *\r\n * IMPORTANT!!:\r\n * ------------\r\n * The method does NOT user RedirectionServiceStatic for routing it's navigation.\r\n * Hence any navigational behavior that is related to RedirectionServiceStatic.fireMcLoader() method\r\n * will NOT be reflected here.\r\n *\r\n * the BreadCrumServiceStatic and RedirectionServieStatic are two disparate services with disparate behaviors.\r\n * RedirectionServieStatic uses BreadCrumServiceStatic, but RedirectionServieStatic does NOT user BreadCrumServiceStatic\r\n * --------------------------------------------------------------\r\n */\r\n public static setBreadcrumPage ( actionName : string, router: Router) : PagerBreadcrum\r\n {\r\n let brdCrmPager : any;\r\n // step-1:\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(actionName)) {\r\n if (actionName.toString().toLowerCase().indexOf('prev') !== -1) {\r\n brdCrmPager = this.setBreadcrumPager(this.pagerBrdCrm.previousPage);\r\n // debugger;\r\n } else if (actionName.toString().toLowerCase().indexOf('next') !== -1) {\r\n brdCrmPager = this.setBreadcrumPager(this.pagerBrdCrm.nextPage);\r\n // debugger;\r\n }\r\n }\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(brdCrmPager) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(brdCrmPager.currentBrdCrmPage)) {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(brdCrmPager.currentBrdCrmPage.url)) {\r\n // debugger;\r\n brdCrmPager.currentBrdCrmPage.url = brdCrmPager.currentBrdCrmPage.path();\r\n }\r\n // debugger;\r\n router.navigate([ brdCrmPager.currentBrdCrmPage.url ]);\r\n }\r\n // NOTE: the following may be incorrect! Watch the pager action!!\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm.currentBrdCrmPage)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm.currentBrdCrmPage.url)) {\r\n // debugger;\r\n router.navigate([ this.pagerBrdCrm.currentBrdCrmPage.url ]); \r\n }\r\n\r\n let mcLoader = EmitterSubjectService.getMCLoader();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.url)\r\n && !this.isCurrentUrlAProfilePage(mcLoader.url)) {\r\n\r\n EmitterSubjectService.setIsMyProfile(false);\r\n EmitterSubjectService.setIsPhotoMgmt(false);\r\n EmitterSubjectService.setIsViewMember(false);\r\n }\r\n\r\n // debugger;\r\n // NOTE: the following may be incorrect! Watch the pager action!!\r\n return this.pagerBrdCrm;\r\n\r\n }\r\n // ---------------------------------------------------------\r\n // Note: This method should NOT update the emitterService.breadCrumPager\r\n // Only the caller(s) of this method should do that.\r\n // ---------------------------------------------------------\r\n static setBreadcrumPager(page: number): PagerBreadcrum {\r\n /*\r\n * step-4:\r\n * =======\r\n * debugger;\r\n */\r\n\r\n if (page < 1) {\r\n return null as any;\r\n }\r\n this.currentPage = page > 0 ? page : 1;\r\n\r\n this.pageSize = 10;\r\n\r\n if (this.breadcrumRing && this.breadcrumRing.length > 0) {\r\n this.totalItems = this.breadcrumRing.length;\r\n\r\n /*\r\n * get pager object\r\n * (totalItems, currentPage, pageSize):\r\n */\r\n this.pagerBrdCrm = this.GetPager(this.totalItems, this.currentPage, this.pageSize > 0 ? this.pageSize : 10);\r\n this.pagerBrdCrm.breadcrumRing = this.breadcrumRing;\r\n\r\n /*\r\n * get current items of page:\r\n */\r\n // debugger;\r\n this.pagedBrdCrmArr = this.breadcrumRing.slice( this.pagerBrdCrm.pagedStartIndex, this.pagerBrdCrm.pagedEndIndex + 1);\r\n if ( this.pagedBrdCrmArr && this.pagedBrdCrmArr.length > 0) {\r\n this.pagerBrdCrm.pagedBrdCrmArr = this.pagedBrdCrmArr;\r\n }\r\n }\r\n // debugger;\r\n return this.pagerBrdCrm;\r\n }\r\n\r\n // ---------------------------------------------------------\r\n static updateBreadcrumRing (mcl : any) : any {\r\n if (ModuleComponentLoaderServiceStatic.isValidModuleComponentLoader(mcl)) {\r\n // debugger;\r\n mcl.index = this.breadcrumRing.length;\r\n\r\n this.breadcrumRing.push(mcl);\r\n this.pagerBrdCrm = this.setBreadcrumPager(mcl.index + 1);\r\n // debugger;\r\n }\r\n else {\r\n this.pagerBrdCrm = this.getPagerBreadcrum();\r\n }\r\n return this.pagerBrdCrm;\r\n }\r\n // =====================================================================================================================================\r\n // Begin of Pager-related-functions:\r\n // -------------------------------------------------------------------------------------------------------------------------------------\r\n // Note: the original pager was like this: <| <<| current |>> |> where <<| is previous and |>> is next and <| is first and |> is last\r\n // However, here for pagerBreadcrum, we are using <| as previous and |> as next, hence it's missing the first and last steps.\r\n // The view needs to compansate this difference by adding the following logic:\r\n // if (pagerBrdCrm.breadcrumRing.length >= 2) then show previous\r\n // if (pagerBrdCrm.breadcrumRing.length >= 3) then show next\r\n // -------------------------------------------------------------------------------------------------------------------------------------\r\n static GetPager (totalItems : any, currentPage : any, pageSize : any) {\r\n // default to first page\r\n this.currentPage = currentPage > 0 ? currentPage : 1;\r\n this.totalItems = totalItems > 0 ? totalItems : 1;\r\n // default page size is 10\r\n this.pageSize = pageSize > 0 ? pageSize : 10;\r\n\r\n let totalPagedBlocks = 1;\r\n // calculate total pages\r\n if ( this.totalItems > this.pageSize )\r\n {\r\n totalPagedBlocks = Math.ceil( this.totalItems / this.pageSize ); // how many block of paged==currently-displayed-pages\r\n }\r\n\r\n let pagedStartPage; // paged==currently-displayed-pages\r\n let pagedEndPage;\r\n\r\n if ( totalItems <= 10) {\r\n // less than 10 total pages so show all\r\n pagedStartPage = 1;\r\n pagedEndPage = totalItems;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (this.currentPage <= 6) {\r\n pagedStartPage = 1;\r\n pagedEndPage = 10;\r\n } else if ( this.currentPage + 4 >= totalPagedBlocks) {\r\n pagedStartPage = totalPagedBlocks - 9;\r\n pagedEndPage = totalPagedBlocks;\r\n } else {\r\n pagedStartPage = this.currentPage - 5;\r\n pagedEndPage = this.currentPage + 4;\r\n }\r\n }\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n const pages = this.range( pagedStartPage, pagedEndPage, 1 );\r\n this.pagerBrdCrm.pagedPages = pages;\r\n\r\n\r\n\r\n // Original version:\r\n // -----------------\r\n // var startIndex = ( currentPage - 1 ) * pageSize;\r\n // var endIndex = Math.min( startIndex + pageSize - 1, totalItems - 1 )\r\n\r\n /*\r\n * calculate start and end item indexes\r\n * Updated version:\r\n * ------------------------------------\r\n */\r\n // const startIndex = totalItems <= this.pageSize ? this.currentPage - 1 : this.currentPage > this.pageSize ? (this.currentPage - 1) * this.pageSize : 0;\r\n // const endIndex = Math.min(startIndex + (this.pageSize > 1 ? this.pageSize - 1 : this.pageSize), this.totalItems > 1 ? this.totalItems - 1 : this.totalItems);\r\n\r\n\r\n /*\r\n * original version with modification:\r\n * -----------------------------------\r\n */\r\n var startIndex = this.currentPage <= this.pageSize ? 0 : ( this.currentPage - 1 ) * this.pageSize;\r\n var endIndex = Math.min(startIndex + this.pageSize - 1, this.totalItems - 1);\r\n\r\n\r\n\r\n\r\n // return object with all the pager properties required by the view\r\n this.pagerBrdCrm = new PagerBreadcrum();\r\n this.pagerBrdCrm.totalItems = this.totalItems;\r\n this.pagerBrdCrm.firstPage = 1;\r\n this.pagerBrdCrm.lastPage = this.totalItems;\r\n\r\n this.pagerBrdCrm.currentPage = this.currentPage;\r\n this.pagerBrdCrm.currentBrdCrmPage = this.breadcrumRing[ this.currentPage - 1 ];\r\n\r\n this.pagerBrdCrm.previousPage = this.currentPage - 1 >= 1 ? this.currentPage - 1 : 1;\r\n if ( this.pagerBrdCrm.previousPage >= 1 )\r\n {\r\n this.pagerBrdCrm.previousBrdCrmPage = this.breadcrumRing[ this.pagerBrdCrm.previousPage - 1 ];\r\n }\r\n else\r\n {\r\n this.pagerBrdCrm.previousBrdCrmPage = this.breadcrumRing[0];\r\n }\r\n\r\n this.pagerBrdCrm.nextPage = this.currentPage + 1 <= totalItems ? this.currentPage + 1 : totalItems;\r\n if ( this.pagerBrdCrm.nextPage <= this.totalItems )\r\n {\r\n this.pagerBrdCrm.nextBrdCrmPage = this.breadcrumRing[ this.pagerBrdCrm.nextPage - 1 ];\r\n }\r\n else\r\n {\r\n this.pagerBrdCrm.nextBrdCrmPage = this.breadcrumRing[ this.breadcrumRing.length - 1];\r\n }\r\n\r\n this.pagerBrdCrm.pageSize = this.pageSize;\r\n this.pagerBrdCrm.totalPagedBlocks = totalPagedBlocks;\r\n this.pagerBrdCrm.pagedStartPage = pagedStartPage;\r\n this.pagerBrdCrm.pagedEndPage = pagedEndPage;\r\n this.pagerBrdCrm.pagedStartIndex = startIndex;\r\n this.pagerBrdCrm.pagedEndIndex = endIndex;\r\n // debugger;\r\n return this.pagerBrdCrm;\r\n }\r\n /*\r\n * --------------------------------------------------\r\n * --------------------------------------------------\r\n */\r\n static range (min : any, max : any, delta : any) {\r\n let arr : number[] = [];\r\n let stepCount;\r\n let i = 0;\r\n\r\n if (min && max && !delta) {\r\n stepCount = max - min;\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i + min);\r\n }\r\n } else {\r\n stepCount = Math.floor((max - min) / delta);\r\n for (let i = 0; i <= stepCount; i++) {\r\n arr.push(i * delta + min);\r\n }\r\n }\r\n return arr;\r\n }\r\n /*\r\n * ---------------------------------------------------------\r\n * This method is deprecated.\r\n *\r\n * Note: page is set by the angular navigation as well as other methods\r\n * ----------------------------------------------------------\r\n */\r\n static setCurrentPage ( page : any ) : ModuleComponentLoader {\r\n if (page > 0) {\r\n // page is a number\r\n let tCurrentCrumPage: any;\r\n /*\r\n * step-5:\r\n * =======\r\n * debugger;\r\n */\r\n\r\n // get the currentCrumPage\r\n if (page <= this.breadcrumRing.length) {\r\n /*\r\n * 'page' starts at '1' not '0' in pagerBrdCrm\r\n * step-5-A:page == id set by navigation:\r\n * ======================================\r\n * debugger;\r\n */\r\n\r\n tCurrentCrumPage = this.searchByIndex(page);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tCurrentCrumPage) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm)) {\r\n this.pagerBrdCrm.currentBrdCrmPage = tCurrentCrumPage;\r\n\r\n // get the preiousCrumPage\r\n if (page - 1 >= 0) {\r\n this.pagerBrdCrm.previousBrdCrmPage = this.searchByIndex(page - 1);\r\n } else {\r\n this.pagerBrdCrm.previousBrdCrmPage = this.breadcrumRing[0];\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm.previousBrdCrmPage)) {\r\n this.pagerBrdCrm.previousPage = this.pagerBrdCrm.previousBrdCrmPage.index;\r\n }\r\n\r\n // get the nextCrumPage\r\n if (page + 1 <= this.breadcrumRing.length) {\r\n this.pagerBrdCrm.nextBrdCrmPage = this.searchByIndex(page + 1);\r\n } else {\r\n this.pagerBrdCrm.nextBrdCrmPage = null as any;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm.nextBrdCrmPage)) {\r\n this.pagerBrdCrm.nextPage = this.pagerBrdCrm.nextBrdCrmPage.index;\r\n }\r\n }\r\n }\r\n } else if (page.id > -1 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(page.value)) {\r\n /*\r\n * page is KvAny\r\n * step-5-B:using page.value:\r\n * ==========================\r\n * debugger;\r\n */\r\n\r\n // set the currentCrumPage\r\n const tCurrentCrumPage = this.searchByValue(page.value);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tCurrentCrumPage) && tCurrentCrumPage.index > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm)) {\r\n this.pagerBrdCrm.currentBrdCrmPage = tCurrentCrumPage;\r\n\r\n // get the previousCrumPage\r\n if (tCurrentCrumPage.index - 1 >= 1) {\r\n this.pagerBrdCrm.previousBrdCrmPage = this.searchByIndex(tCurrentCrumPage.index - 1);\r\n } else {\r\n this.pagerBrdCrm.previousBrdCrmPage = this.breadcrumRing[0];\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm.previousBrdCrmPage)) {\r\n this.pagerBrdCrm.previousPage = this.pagerBrdCrm.previousBrdCrmPage.index;\r\n }\r\n\r\n // get the nextCrumPage\r\n if (tCurrentCrumPage.index + 1 <= this.breadcrumRing.length) {\r\n this.pagerBrdCrm.nextBrdCrmPage = this.searchByIndex(tCurrentCrumPage.index + 1);\r\n } else {\r\n this.pagerBrdCrm.nextBrdCrmPage = null as any;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm.nextBrdCrmPage)) {\r\n this.pagerBrdCrm.nextPage = this.pagerBrdCrm.nextBrdCrmPage.index;\r\n }\r\n }\r\n }\r\n if (this.pagerBrdCrm.currentBrdCrmPage && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.pagerBrdCrm.currentBrdCrmPage.url)) {\r\n /*\r\n * step-5-C:Check if currentCrumPage is valid:\r\n * ===========================================\r\n * debugger;\r\n */\r\n\r\n return this.pagerBrdCrm.currentBrdCrmPage;\r\n }\r\n // debugger;\r\n return null as any;\r\n }\r\n // =====================================================================================================================================\r\n // End of Pager-related-functions:\r\n // -------------------------------------------------------------------------------------------------------------------------------------\r\n ngOnDestroy () : void\r\n {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { BrdCrmKvAny } from '../../../models/breadcrum/brdcrmKvAny.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { Chat } from '../../../models/chat/chat.model';\r\nimport { Content } from '../../../models/common/content.model';\r\nimport { DateAssay } from '../../../models/common/dateAssay.model';\r\nimport { Heartbeat } from '../../../models/common/heartbeat.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { Photo } from '../../../models/common/photo.model';\r\nimport { PhotoBn } from '../../../models/common/photoBn.model';\r\nimport { Unit } from '../../../models/common/unit.model';\r\nimport { CommunicationActivity } from '../../../models/communication/communicationActivity.model';\r\nimport { Communicator } from '../../../models/communication/communicator.model';\r\nimport { ENoteTile } from '../../../models/communication/eNoteTile.model';\r\nimport { KvAction } from '../../../models/keyValue/kvAction.model';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { MemberActivity } from '../../../models/member/memberActivity.model';\r\nimport { OffOn } from '../../../models/offOn/offOn.model';\r\nimport { Pager } from '../../../models/pagination/pager.model';\r\nimport { PagerMemberActivity } from '../../../models/pagination/pagerMemberActivity.model';\r\nimport { PagerPhotoMgmt } from '../../../models/pagination/pagerPhotoMgmt.model';\r\nimport { ProfileImage } from '../../../models/profile/profileImage.model';\r\nimport { ProfileInfo } from '../../../models/profile/profileInfo.model';\r\nimport { ProfilePics } from '../../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { UpgradedTile } from '../../../models/profile/upgradedTile.model';\r\nimport { PayPalOrder } from '../../../models/sales/payPalOrder';\r\nimport { EmitterSubjectService } from '../../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { ArraySupportServiceStatic } from './../arraySupportServiceStatic.service';\r\n//import { PayPalOrder } from '../../models/sales/payPalOrder.model';\r\n// import { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { Dictionary } from 'dictionaryjs';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../stringServiceStatic.service';\r\n\r\n// Since this file is too large we guide ourselves by this commented out Interface:\r\n// -------------------------------------------------------------------------------:\r\n// static deepCloneProfileTileArray ( sTileArr : ProfileTile[] ): ProfileTile[]\r\n// static copyPhotoBnIfExists (dPbn : PhotoBn, sPbn : PhotoBn) : PhotoBn\r\n// static convertPhotoToPhotoBn ( photo : Photo, sitUser: SitUser ) : PhotoBn\r\n// static ConvertPhotoToProfileImage ( photo: Photo ) : ProfileImage\r\n// static convertUserPhotoToProfileImage(userPhoto: Photo): ProfileImage\r\n// static copyKvGlyph ( kvgIn : KvGlyph ) : KvGlyph\r\n// static copyChatIfExists(dChat: Chat, sChat: Chat): Chat\r\n// static copyFileBytesArr(dChat, sChat): any[]\r\n// static copyBoxNonceIfExists(destTile: BoxNonceEntity, sourceTile: BoxNonceEntity): boolean\r\n// static copyCommunicatorIfExists(dCommunicator: Communicator, sCommunicator: Communicator): Communicator\r\n// static copyCommunicationActivityIfExists(dCommunicationActivity: CommunicationActivity, sCommunicationActivity: CommunicationActivity): CommunicationActivity\r\n// static copyDateAssayIfExists ( destDateAssay : DateAssay, sourceDateAssay : DateAssay ) : DateAssay\r\n// static copyHeartbeatIfExists ( dHeartbeat : any, sHeartbeat : Heartbeat ) : Heartbeat\r\n// static copyLoginSuccessIfExists ( dLoginSuccess: LoginSuccess, sLoginSuccess: LoginSuccess ): LoginSuccess\r\n// static copyLoginSuccessToSitUser ( sLoginSuccess : LoginSuccess) : SitUser\r\n// static copyOrderIfExists ( destOrder : PayPalOrder, sourceOrder : PayPalOrder ) : PayPalOrder\r\n// static copyProfileInfoIfExists ( profileInfo : ProfileInfo, inPInfo : ProfileInfo ) : ProfileInfo\r\n// static copyProfileTileIfExists ( destTile : ProfileTile, sourceTile : ProfileTile ) : ProfileTile\r\n// static copyKvPhotoIfExists ( dKvPhoto : KvPhoto, sKvPhoto : KvPhoto ) : KvPhoto\r\n// static copyProfileImageIfExists ( dpImage : ProfileImage, spImage : ProfileImage ) : ProfileImage\r\n// static copyProfilePicsIfExists ( dpPics : ProfilePics, spPics : ProfilePics ) : ProfilePics\r\n// static copyUpgradedTileIfExists ( destTile : UpgradedTile, sourceTile : UpgradedTile ) : UpgradedTile\r\n// static copyUserPhotoIfExists ( dPhoto : Photo, sPhoto : any ) : Photo\r\n// static copyFromContentToProfileInfo ( content ) : ProfileInfo\r\n// static copyFromProfileInfoToContent ( profileInfo : ProfileInfo ) : any\r\n// static copyFromCommunicationActivityToENoteTile ( commMsg : CommunicationActivity ) : ENoteTile\r\n// static copyFromCommunicationActivityToProfileTile ( commMsg : CommunicationActivity ) : ProfileTile\r\n// static copyFromENoteTileToProfileTile(eNoteTile: ENoteTile): ProfileTile\r\n\r\n// static copyFromProfileTileToUpgradedTile ( destTile : UpgradedTile, sourceTile : ProfileTile ) : UpgradedTile\r\n// static copyFromHeartbeatToProfileTile(pTile: ProfileTile, hb: Heartbeat): ProfileTile\r\n// static copyFromPagerBreadcrumToPager(pbc: PagerBreadcrum): Pager\r\n// static copyFromPagerBreadcrumToPagerPhotoMgmt(pbc: PagerBreadcrum): PagerPhotoMgmt\r\n// static CopyFromBreadCrumKvToKvPhoto ( mcl: ModuleComponentLoader ): KvPhoto\r\n// static CopyFromBreadCrumKvToKvPhotoOld(bcKvAny: BrdCrmKvAny): KvPhoto\r\n// static copyFromProfileImageArrToKvPhotoArr(pImages: ProfileImage[]): KvPhoto[]\r\n// static copyFromProfileImageDictionaryToKvPhotoArr(pImages: Collections.Dictionary): KvPhoto[]\r\n// static copyFromProfileImageDictionaryToKvPhotoDictionary(pImages: Collections.Dictionary): Collections.Dictionary\r\n// static copyFromKvPhotoToPhoto(pkv: KvPhoto): Photo\r\n// static copyFromLoginSuccessToKvPhoto ( loginSuccess: LoginSuccess ): KvPhoto\r\n// static copyFromPhotoToKvPhoto(p: Photo): KvPhoto\r\n// static copyFromPhotoToKvPhoto(p: Photo): KvPhoto\r\n// static copyFromProfileImageToPhoto(pImage: ProfileImage): Photo\r\n// static copyFromServerPhotoToClientPhoto(to: Photo, that: any): Photo\r\n// static copyFromServerPhotoBnToClientPhoto ( to: Photo, that: any): Photo\r\n// static copyFromPhotoBnToClientPhoto ( to: Photo, that: any ): Photo\r\n// static copyFromPhotoBnToKvPhoto ( to : KvPhoto, that : PhotoBn ): KvPhoto\r\n// static copyFromProfileImageToKvPhoto(pImage: ProfileImage): KvPhoto\r\n// static copyFromProfilePicsToKvPhotoArr(pPics: ProfilePics, sitUser: SitUser): KvPhoto[]\r\n// static copyProfilePicsToKvPhotoArr ( profilePics : ProfilePics ) : KvPhoto[]\r\n// static copyFromKvGlyphToMemberActivity(kvg: KvGlyph): MemberActivity\r\n// static copyFromKvGlyphToMemberActivity(kvg: KvGlyph): MemberActivity\r\n// static copyFromMemberActivityToKvGlyph(mAct: MemberActivity): KvGlyph\r\n// static copyFromKvActionToMemberActivity(kva: KvAction): MemberActivity\r\n// static copyFromMemberActivityToKvAction(mAct: MemberActivity): KvAction\r\n// static copyFromKvGlyphToKvPhoto(kvg: KvGlyph): KvPhoto\r\n// static copyFromKvPhotoToKvGlyph(kvP: KvPhoto): KvGlyph\r\n// static copyFromProfileTileToKvPhoto(pTile: ProfileTile): KvPhoto\r\n// static copyFromProfileInfoToProfileInfoView(profile: ProfileInfo): any\r\n// static copyFromProfileInfoToProfileTile ( pInfo: ProfileInfo ): ProfileTile\r\n\r\n// static copyFromProfileTileToProfileInfo ( pTile ) : ProfileInfo\r\n// static copyFromProfileTileToProfileInfo(pTile: ProfileTile): ProfileInfo\r\n// static copyFromProfilePicsToProfileInfo(pPics: ProfilePics): ProfileInfo\r\n// static createProfilePicsFromProfileTile ( profileTile : ProfileTile ) : ProfilePics\r\n// static createProfilePicsFromProfileImageArr(profileImageArr: ProfileImage[]): ProfilePics\r\n// static createProfilePicsFromProfileImageDictionary(pImageD: Collections.Dictionary): ProfilePics\r\n// static copyPagerToPagerPhotoMgmt(pager: Pager): PagerPhotoMgmt\r\n// ---------------------------------------------------------------------\r\n// Note: Conditon for copyIfExists: if other than default value exists\r\n// ---------------------------------------------------------------------\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class CopyServiceStatic {\r\n static eNoteTile: ENoteTile = new ENoteTile();\r\n // static emailTile: CommunicationActivity = new CommunicationActivity();\r\n static loginSuccess: LoginSuccess = new LoginSuccess();\r\n static pager: Pager = new Pager();\r\n static pagerBrdCrm: PagerBreadcrum = new PagerBreadcrum();\r\n static pagerPhotoMgmt: PagerPhotoMgmt = new PagerPhotoMgmt();\r\n // Note: there could be multiple passes of 1, and 2 on profileInfoPreView before final copy to profileInfoView\r\n static profileInfoView: ProfileInfo = new ProfileInfo();\r\n static profileTile: any;\r\n static sitUser: SitUser = new SitUser();\r\n // --------------------------------------------------------------\r\n constructor () { }\r\n // ---------------------------------------------------------------\r\n // Note: TODO: create a new static service called DeepCloneService\r\n // ---------------------------------------------------------------\r\n static deepCloneProfileTileArray ( sTileArr : ProfileTile[] ): ProfileTile[]\r\n {\r\n let dTileArr:any[] = [];\r\n let tpTile = new ProfileTile();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sTileArr ) && sTileArr.length > 0 )\r\n {\r\n sTileArr.map( s =>\r\n {\r\n tpTile = new ProfileTile();\r\n CopyServiceStatic.copyProfileTileIfExists( tpTile, s );\r\n dTileArr.push( tpTile );\r\n } );\r\n }\r\n return dTileArr;\r\n }\r\n // ---------------------------------------------------------------------\r\n // Note: Conditon for copyIfExists: if other than default value exists\r\n // ---------------------------------------------------------------------\r\n static copyPhotoBnIfExists (dPbn : PhotoBn, sPbn : PhotoBn) : PhotoBn\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn))\r\n {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dPbn))\r\n {\r\n dPbn = sPbn;\r\n }\r\n else\r\n {\r\n dPbn.copyIfExists(sPbn);\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.box)) dPbn.box = sPbn.box;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.nonce)) dPbn.nonce = sPbn.nonce;\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.approval)) dPbn.approval = sPbn.approval;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.contentType)) dPbn.contentType = sPbn.contentType;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.cryptUserKey)) dPbn.cryptUserKey = sPbn.cryptUserKey;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.date)) dPbn.date = sPbn.date;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.distance)) dPbn.distance = sPbn.distance;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.description)) dPbn.description = sPbn.description;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.enctype)) dPbn.enctype = sPbn.enctype;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.file)) dPbn.file = sPbn.file;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.id) && sPbn.id > 0) dPbn.id = sPbn.id;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.image) && sPbn.image.length > 0) dPbn.image = sPbn.image;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.image) && sPbn.imageBytes.length > 0) dPbn.imageBytes = sPbn.imageBytes;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.image)) dPbn.imageString = sPbn.imageString;\r\n //dPbn.isPrimary = sPbn.isPrimary;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.location)) dPbn.location = sPbn.location;\r\n //if (sPbn.latitude != 0) dPbn.latitude = sPbn.latitude;\r\n //if (sPbn.longitude != 0) dPbn.longitude = sPbn.longitude;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.message)) dPbn.message = sPbn.message;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.path)) dPbn.path = sPbn.path;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.pic) && sPbn.pic.length > 0) dPbn.pic = sPbn.pic;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.privacy)) dPbn.privacy = sPbn.privacy;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.photoId) && sPbn.photoId > 0) dPbn.photoId = sPbn.photoId;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.photoBnId) && sPbn.photoBnId > 0) dPbn.photoBnId = sPbn.photoBnId;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.sitUserId) && sPbn.sitUserId > 0) dPbn.sitUserId = sPbn.sitUserId;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.sitUserKey)) dPbn.sitUserKey = sPbn.sitUserKey;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.sourceId) && sPbn.sourceId > 0) dPbn.sourceId = sPbn.sourceId;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.sourceType)) dPbn.sourceType = sPbn.sourceType;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.title)) dPbn.title = sPbn.title;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sPbn.url)) dPbn.url = sPbn.url;\r\n }\r\n }\r\n return dPbn;\r\n }\r\n // --------------------------------------------------------------\r\n static copyPagerVKvPhotoNavFromPagerMemberActivity (pagerVMemberActivity : PagerMemberActivity) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pagerVMemberActivity)) {\r\n let ppMgmt = new PagerPhotoMgmt();\r\n return pagerVMemberActivity.copyToPagerPhotoMgmt(ppMgmt);\r\n } \r\n }\r\n // --------------------------------------------------------------\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: Since we get the Server-sent Photo data, all properties start with UpperCase letter,\r\n * but the client-side Photo.model.ts has all properties in lowerCase letter\r\n * Hence, this method converts the upper-case letters to lower-case letters.\r\n *\r\n * Note: copyFromServerPhotoToClientPhoto() should be used instead of this method.\r\n * Similar method: copyFromServerPhotoBnToClientPhotoBn()\r\n * ---------------------------------------------------------------\r\n */\r\n static copyPhotoToPhotoBn (dPhotoBn : PhotoBn, photo : Photo) : PhotoBn {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dPhotoBn)) {\r\n dPhotoBn = new PhotoBn();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo) && photo.photoId > 0) {\r\n dPhotoBn.copyIfExists(photo as PhotoBn);\r\n\r\n //dPhotoBn.isPrimary = photo.isPrimary;\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.approval)) {\r\n // dPhotoBn.approval = photo.approval;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.contentType)) {\r\n // dPhotoBn.contentType = photo.contentType;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.cryptUserKey)) {\r\n // dPhotoBn.cryptUserKey = photo.cryptUserKey; // need to be changed by caller\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.date)) {\r\n // dPhotoBn.date = photo.date;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.description)) {\r\n // dPhotoBn.description = photo.description;\r\n //}\r\n //if (photo.id > 0) {\r\n // dPhotoBn.id = photo.id;\r\n //}\r\n //if (photo.photoBnId > 0) {\r\n // dPhotoBn.photoBnId = photo.photoBnId;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.image)) {\r\n // dPhotoBn.imageBytes = photo.image;\r\n //}\r\n //if (photo.latitude !== 0) {\r\n // dPhotoBn.latitude = photo.latitude;\r\n //}\r\n //if (photo.longitude !== 0) {\r\n // dPhotoBn.longitude = photo.longitude;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.path)) {\r\n // dPhotoBn.path = photo.path;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.pic)) {\r\n // dPhotoBn.pic = photo.pic; // Note: pic is in lowercase in sPhoto !!! TODO: remove comment after testing\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.photoId)) {\r\n // dPhotoBn.photoId = photo.photoId;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.privacy)) {\r\n // dPhotoBn.privacy = photo.privacy;\r\n //}\r\n //dPhotoBn.sitUserId = photo.sitUserId > 0 ? photo.sitUserId : dPhotoBn.sitUserId; // Note: this one is camelCased\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.sitUserKey)) {\r\n // dPhotoBn.sitUserKey = photo.sitUserKey;\r\n //}\r\n //if (photo.signedInUserId > 0) {\r\n // dPhotoBn.signedInUserId = photo.signedInUserId;\r\n //}\r\n //if (photo.sourceId > 0) {\r\n // dPhotoBn.sourceId = photo.sourceId;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.sourceType)) {\r\n // dPhotoBn.sourceType = photo.sourceType;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.title)) {\r\n // dPhotoBn.title = photo.title;\r\n //}\r\n // debugger;\r\n }\r\n return dPhotoBn;\r\n }\r\n // --------------------------------------------------------------------- \r\n static convertPhotoToPhotoBn ( photo : Photo, sitUser: SitUser ) : PhotoBn\r\n {\r\n let photoBn : PhotoBn = new PhotoBn();\r\n if ( photo?.photoId > 0 )\r\n {\r\n\r\n if (\r\n ( sitUser == null || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sitUser.sitUserKey ) )\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( photo.sitUserKey )\r\n )\r\n {\r\n photoBn.sitUserKey = photo.sitUserKey;\r\n\r\n sitUser = EmitterSubjectService.getSitUserModel();\r\n }\r\n else if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sitUser.sitUserKey ) ) photoBn.sitUserKey = photo.sitUserKey = sitUser?.sitUserKey;\r\n\r\n photoBn.copy(photo as PhotoBn);\r\n photoBn.isPrimary = photo.isPrimary = sitUser?.primaryPhotoBnId == photo.photoId ? true : false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.privacy)) photoBn.privacy = sitUser?.primaryPhotoBnId == photo.photoId ? \"Public\" : photo.privacy;\r\n\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( photo.approval ) ) photoBn.approval = photo.approval;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( photo.contentType ) ) photoBn.contentType = photo.contentType;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.cryptUserKey)) photoBn.cryptUserKey = photo.cryptUserKey = sitUser?.cryptUserKey;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.date)) photoBn.date = photo.date;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.file)) photoBn.file = photo.file;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.formData)) photoBn.formData = photo.formData;\r\n if (photo.id >= 0) photoBn.id = photo.id;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.image)) photoBn.image = photo.image;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.imageBytes)) photoBn.imageBytes = photo.imageBytes;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.imageString)) photoBn.imageString = photo.imageString;\r\n photoBn.isPrimary = photo.isPrimary = sitUser?.primaryPhotoBnId == photo.photoId ? true : false;\r\n if ( photo.latitude.length != 1 ) photoBn.latitude = photo.latitude;\r\n if (photo.longitude.length != 1) photoBn.longitude = photo.longitude;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.path)) photoBn.path = photo.path;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.itemNum)) photoBn.itemNum = photo.itemNum;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.pic)) photoBn.pic = photo.pic;\r\n photoBn.photoId = photo.photoId;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.privacy)) photoBn.privacy = sitUser?.primaryPhotoBnId == photo.photoId ? \"Public\" : photo.privacy;\r\n photoBn.profileId = photo.profileId;\r\n if (photo.sitUserId > 0) photoBn.sitUserId = photo.sitUserId;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photo.sitUserKey)) photoBn.sitUserKey = photo.sitUserKey;\r\n if (photo.signedInUserId > 0) photoBn.signedInUserId = photo.signedInUserId;\r\n if ( photo.sourceId > 0 ) photoBn.sourceId = photo.sourceId;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( photo.sourceType ) ) photoBn.sourceType = photo.sourceType;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( photo.title ) ) photoBn.title = photo.title;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( photo.url ) ) photoBn.url = photo.url;\r\n\r\n if (photo.imageBytes != null && photo.imageBytes.length > 0 )\r\n {\r\n photoBn.imageBytes = photo.imageBytes; // photo will contain it in pic\r\n }\r\n\r\n }\r\n return photoBn;\r\n }\r\n // -----------------------------------------------------------\r\n static ConvertPhotoToProfileImage ( photo: Photo ) : ProfileImage\r\n {\r\n let profImage: ProfileImage = new ProfileImage();\r\n if ( photo?.photoId > 0 )\r\n {\r\n profImage.date = photo.date;\r\n profImage.image = photo.pic;\r\n profImage.profileId = photo.sourceId;\r\n profImage.sitUserKey = photo.sitUserKey;\r\n profImage.photoId = photo.photoId;\r\n profImage.isPrimary = photo.isPrimary;\r\n profImage.privacy = photo.privacy;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( photo.sitUserKey ) )\r\n {\r\n let sitUser = EmitterSubjectService.getSitUserModel(); // photo.SITUserKey ).FirstOrDefault();\r\n if ( sitUser?.sitUserId > 0 ) profImage.sitUserId = sitUser.sitUserId;\r\n }\r\n }\r\n return profImage;\r\n }\r\n // --------------------------------------------------------------\r\n static convertUserPhotoToProfileImage(userPhoto: Photo): ProfileImage {\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(userPhoto)) {\r\n // debugger;\r\n const profileImage = new ProfileImage();\r\n profileImage.approval = userPhoto.approval;\r\n profileImage.cryptUserKey = userPhoto.cryptUserKey;\r\n profileImage.date = userPhoto.date;\r\n profileImage.description = userPhoto.description;\r\n profileImage.imageBytes = userPhoto.imageBytes;\r\n profileImage.image = userPhoto.pic;\r\n profileImage.imageFromBytes = profileImage.image;\r\n profileImage.entityName = 'Photo';\r\n // important!! NOTE: Compare photoId with sitUser.primaryPhotoBnId\r\n profileImage.isPrimary = userPhoto.photoId === this.sitUser.primaryPhotoBnId;\r\n profileImage.privacy = userPhoto.privacy;\r\n profileImage.photoId = userPhoto.photoId;\r\n profileImage.sitUserId = userPhoto.sitUserId;\r\n profileImage.sitUserKey = userPhoto.sitUserKey;\r\n profileImage.title = userPhoto.title;\r\n return profileImage;\r\n }\r\n return new ProfileImage();\r\n }\r\n // ---------------------------------------------------------------\r\n // static copyKvGlyph (kvgIn : KvMemberActivityGlyph) : KvMemberActivityGlyph\r\n // {\r\n // // debugger; //In copyServcie\r\n // const kvG = new KvMemberActivityGlyph();\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( kvgIn ) )\r\n // {\r\n // kvG.action = kvgIn.action;\r\n // kvG.cryptUserKey = kvgIn.cryptUserKey;\r\n // kvG.date = kvgIn.date;\r\n // kvG.doeeCryptUserKey = kvgIn.doeeCryptUserKey;\r\n // kvG.doerCryptUserKey = kvgIn.doerCryptUserKey;\r\n // kvG.doeeSitUserId = kvgIn.doeeSitUserId;\r\n // kvG.doerSitUserId = kvgIn.doerSitUserId;\r\n // kvG.glyphName = kvgIn.glyphName;\r\n // kvG.id = kvgIn.id;\r\n // kvG.index = kvgIn.index;\r\n // kvG.isPrimary = kvgIn.isPrimary;\r\n // kvG.isPrivate = kvgIn.isPrivate;\r\n // kvG.key = kvgIn.key; // kvgIn.glyphName; //TODO: need to determine what value should key hold from KvPhoto\r\n // // kvG.kvPhoto = kvG.kvPhoto.copy(kvgIn.kvPhoto);\r\n // // -------------------------------\r\n // // Begin of KvPhoto model:\r\n // // -------------------------------\r\n // this.description = a.description;\r\n // this.elemId = a.elemId;\r\n // this.entityName = a.entityName;\r\n // this.file = a.file;\r\n // this.formData = a.formData;\r\n // this.glyphName = a.glyphName;\r\n // this.id = a.id;\r\n // this.image = a.image;\r\n // this.imageBytes = a.imageBytes;\r\n // this.imageString = a.imageString;\r\n // this.index = a.index;\r\n // this.isPrivate = a.isPrivate;\r\n // this.isUnlocked = a.isUnlocked;\r\n // this.isPrimary = a.isPrimary;\r\n // this.itemNum = a.itemNum;\r\n // this.key = a.key;\r\n // this.latitude = a.latitude;\r\n // this.location = a.location;\r\n // this.longitude = a.longitude;\r\n // this.path = a.path;\r\n // this.pageNum = a.pageNum;\r\n // this.pic = a.pic;\r\n // this.privacy = a.privacy;\r\n // this.profileId = a.profileId;\r\n // this.returnUrl = a.returnUrl;\r\n // this.title = a.title;\r\n // this.value = a.value;\r\n // this.url = a.url;\r\n // // -------------------------------\r\n // // End of KvPhoto model:\r\n // // -------------------------------\r\n // kvG.message = kvgIn.message;\r\n // kvG.modelName = kvgIn.modelName;\r\n // kvG.pageNum = kvgIn.pageNum;\r\n // kvG.photoId = kvgIn.photoId;\r\n // kvG.photoBnId = kvgIn.photoBnId;\r\n // kvG.privacy = kvgIn.privacy;\r\n // kvG.profileId = kvgIn.profileId;\r\n // kvG.sitUserId = kvgIn.sitUserId;\r\n // kvG.value = kvgIn.value;\r\n // return kvG;\r\n // }\r\n // else\r\n // {\r\n // return new KvMemberActivityGlyph();\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n static copyChatIfExists(dChat: Chat, sChat: Chat): Chat {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dChat)) {\r\n dChat = new Chat();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat)) {\r\n if (sChat.communicationActivityId > 0) {\r\n dChat.communicationActivityId = sChat.communicationActivityId;\r\n }\r\n if (sChat.communicationMessageId > 0) {\r\n dChat.communicationMessageId = sChat.communicationMessageId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.contentType)) {\r\n dChat.contentType = sChat.contentType;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.date)) {\r\n dChat.date = sChat.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.dateFormatted)) {\r\n dChat.dateFormatted = sChat.dateFormatted;\r\n dChat.fileBytesArr = this.copyFileBytesArr(dChat, sChat);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.fromUser)) {\r\n dChat.fromUser = sChat.fromUser;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.groupName)) {\r\n dChat.groupName = sChat.groupName;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.groupId) && sChat.groupId > 0) {\r\n dChat.groupId = sChat.groupId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.groupKey)) {\r\n dChat.groupKey = sChat.groupKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.id)) {\r\n dChat.id = sChat.id;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.isPic)) {\r\n dChat.isPic = sChat.isPic;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.isReceiver)) {\r\n dChat.isReceiver = sChat.isReceiver;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.isSender)) {\r\n dChat.isSender = sChat.isSender;\r\n }\r\n\r\n dChat.latitude = sChat.latitude;\r\n dChat.longitude = sChat.longitude;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.messageBody)) {\r\n dChat.messageBody = sChat.messageBody;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.receiver)) {\r\n dChat.receiver = sChat.receiver;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.receiverAction)) {\r\n dChat.receiverAction = sChat.receiverAction;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.receiverPic)) {\r\n dChat.receiverPic = sChat.receiverPic;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.receiverProfileName)) {\r\n dChat.receiverProfileName = sChat.receiverProfileName;\r\n }\r\n if (sChat.receiverSitUserId > 0) {\r\n dChat.receiverSitUserId = sChat.receiverSitUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.receiverSitUserKey)) {\r\n dChat.receiverSitUserKey = sChat.receiverSitUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.sender)) {\r\n dChat.sender = sChat.sender;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.senderAction)) {\r\n dChat.senderAction = sChat.senderAction;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.senderPic)) {\r\n dChat.senderPic = sChat.senderPic;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.senderProfileName)) {\r\n dChat.senderProfileName = sChat.senderProfileName;\r\n }\r\n if (sChat.senderSitUserId > 0) {\r\n dChat.senderSitUserId = sChat.senderSitUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.senderSitUserKey)) {\r\n dChat.senderSitUserKey = sChat.senderSitUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.sentPic)) {\r\n dChat.sentPic = sChat.sentPic;\r\n }\r\n if (sChat.signedInUserId > 0) {\r\n dChat.signedInUserId = sChat.signedInUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.signedInUserKey)) {\r\n dChat.signedInUserKey = sChat.signedInUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.subject)) {\r\n dChat.subject = sChat.subject;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.timeLapsed)) {\r\n dChat.timeLapsed = sChat.timeLapsed;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.toUser)) {\r\n dChat.toUser = sChat.toUser;\r\n }\r\n // debugger;\r\n }\r\n return dChat;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFileBytesArr(dChat: any, sChat: any): any[] {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dChat)) {\r\n dChat = new Chat();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sChat.fileBytesArr) && sChat.fileBytesArr.length > 0) {\r\n sChat.fileBytesArr.map((e: any) => {\r\n dChat.fileBytesArr.push(e);\r\n });\r\n }\r\n return dChat.fileBytesArr;\r\n }\r\n // --------------------------------------------------------------\r\n static copyBoxNonceIfExists(destTile: BoxNonceEntity, sourceTile: BoxNonceEntity): boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destTile) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.box)) {\r\n destTile.box = sourceTile.box;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.cryptUserKey)) {\r\n destTile.cryptUserKey = sourceTile.cryptUserKey;\r\n }\r\n if (sourceTile.date && sourceTile.date.length > 0) {\r\n destTile.date = sourceTile.date;\r\n }\r\n if (sourceTile.id > 0) {\r\n destTile.id = sourceTile.id;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.key)) {\r\n destTile.key = sourceTile.key;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.entityName)) {\r\n destTile.entityName = sourceTile.entityName;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.nonce)) {\r\n destTile.nonce = sourceTile.nonce;\r\n }\r\n if (sourceTile.sitUserId > 0) {\r\n destTile.sitUserId = sourceTile.sitUserId;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyCommunicatorIfExists(dCommunicator: Communicator, sCommunicator: Communicator): Communicator {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dCommunicator)) {\r\n dCommunicator = new Communicator();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicator)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicator.cryptUserKey)) {\r\n dCommunicator.cryptUserKey = sCommunicator.cryptUserKey; // need to be changed by caller\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicator.communicatorType)) {\r\n dCommunicator.communicatorType = sCommunicator.communicatorType;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicator.date)) {\r\n dCommunicator.date = sCommunicator.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicator.email)) {\r\n dCommunicator.email = sCommunicator.email;\r\n }\r\n dCommunicator.latitude = sCommunicator.latitude;\r\n dCommunicator.longitude = sCommunicator.longitude;\r\n if (sCommunicator.primaryPhotoBnId > 0) {\r\n dCommunicator.primaryPhotoBnId = sCommunicator.primaryPhotoBnId;\r\n }\r\n if (sCommunicator.profileId > 0) {\r\n dCommunicator.profileId = sCommunicator.profileId;\r\n }\r\n if (sCommunicator.sitUserId > 0) {\r\n dCommunicator.sitUserId = sCommunicator.sitUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicator.primaryImage)) {\r\n dCommunicator.primaryImage = sCommunicator.primaryImage;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicator.profileName)) {\r\n dCommunicator.profileName = sCommunicator.profileName;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicator.sitUserKey)) {\r\n dCommunicator.sitUserKey = sCommunicator.sitUserKey;\r\n }\r\n // debugger;\r\n }\r\n return dCommunicator;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyCommunicationActivityIfExists(dCommunicationActivity: CommunicationActivity, sCommunicationActivity: CommunicationActivity): CommunicationActivity {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dCommunicationActivity)) {\r\n dCommunicationActivity = new CommunicationActivity();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity)) {\r\n if (sCommunicationActivity.communicationActivityId > 0) {\r\n dCommunicationActivity.communicationActivityId = sCommunicationActivity.communicationActivityId;\r\n }\r\n if (sCommunicationActivity.communicationMessageId > 0) {\r\n dCommunicationActivity.communicationMessageId = sCommunicationActivity.communicationMessageId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.communicationType) )\r\n {\r\n dCommunicationActivity.communicationType = sCommunicationActivity.communicationType;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sCommunicationActivity.communicationSubType ) )\r\n {\r\n dCommunicationActivity.communicationSubType = sCommunicationActivity.communicationSubType;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.date)) {\r\n dCommunicationActivity.date = sCommunicationActivity.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.dateFormatted)) {\r\n dCommunicationActivity.dateFormatted = sCommunicationActivity.dateFormatted;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.heading)) {\r\n dCommunicationActivity.heading = sCommunicationActivity.heading; // need to be changed by caller\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.id)) {\r\n dCommunicationActivity.id = sCommunicationActivity.id;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.isOnline)) {\r\n dCommunicationActivity.isOnline = sCommunicationActivity.isOnline;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.isPic)) {\r\n dCommunicationActivity.isPic = sCommunicationActivity.isPic;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.isPremiumMember)) {\r\n dCommunicationActivity.isPremiumMember = sCommunicationActivity.isPremiumMember;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.image)) {\r\n dCommunicationActivity.image = sCommunicationActivity.image;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.index)) {\r\n dCommunicationActivity.index = sCommunicationActivity.index;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sCommunicationActivity.kvGlyph ) )\r\n {\r\n dCommunicationActivity.kvGlyph = sCommunicationActivity.kvGlyph;\r\n }\r\n dCommunicationActivity.latitude = sCommunicationActivity.latitude;\r\n dCommunicationActivity.longitude = sCommunicationActivity.longitude;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.link)) {\r\n dCommunicationActivity.link = sCommunicationActivity.link;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sCommunicationActivity.memberActivityTs ) )\r\n {\r\n dCommunicationActivity.memberActivityTs = sCommunicationActivity.memberActivityTs;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.membership)) {\r\n dCommunicationActivity.membership = sCommunicationActivity.membership;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.messageBody)) {\r\n dCommunicationActivity.messageBody = sCommunicationActivity.messageBody;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.pElemId)) {\r\n dCommunicationActivity.pElemId = sCommunicationActivity.pElemId;\r\n }\r\n //if (sCommunicationActivity.photoId > 0) {\r\n // dCommunicationActivity.photoId = sCommunicationActivity.photoId;\r\n //}\r\n if ( sCommunicationActivity.photoBnId > 0 )\r\n {\r\n dCommunicationActivity.photoBnId = sCommunicationActivity.photoBnId;\r\n }\r\n if (sCommunicationActivity.replyToId > 0) {\r\n dCommunicationActivity.replyToId = sCommunicationActivity.replyToId;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.receiver)) {\r\n dCommunicationActivity.receiver = sCommunicationActivity.receiver;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.receiverProfileName)) {\r\n dCommunicationActivity.receiverProfileName = sCommunicationActivity.receiverProfileName;\r\n }\r\n if (sCommunicationActivity.receiverSitUserId > 0) {\r\n dCommunicationActivity.receiverSitUserId = sCommunicationActivity.receiverSitUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.receiverSitUserKey)) {\r\n dCommunicationActivity.receiverSitUserKey = sCommunicationActivity.receiverSitUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.sender)) {\r\n dCommunicationActivity.sender = sCommunicationActivity.sender;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.senderProfileName)) {\r\n dCommunicationActivity.senderProfileName = sCommunicationActivity.senderProfileName;\r\n }\r\n if (sCommunicationActivity.senderSitUserId > 0) {\r\n dCommunicationActivity.senderSitUserId = sCommunicationActivity.senderSitUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.senderSitUserKey)) {\r\n dCommunicationActivity.senderSitUserKey = sCommunicationActivity.senderSitUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.sentPic)) {\r\n dCommunicationActivity.sentPic = sCommunicationActivity.sentPic;\r\n }\r\n if (sCommunicationActivity.signedInUserId > 0) {\r\n dCommunicationActivity.signedInUserId = sCommunicationActivity.signedInUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.signedInUserKey)) {\r\n dCommunicationActivity.signedInUserKey = sCommunicationActivity.signedInUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.subject)) {\r\n dCommunicationActivity.subject = sCommunicationActivity.subject;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.timeLapsed)) {\r\n dCommunicationActivity.timeLapsed = sCommunicationActivity.timeLapsed;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sCommunicationActivity.unit)) {\r\n dCommunicationActivity.unit = sCommunicationActivity.unit;\r\n }\r\n // debugger;\r\n }\r\n return dCommunicationActivity;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyDateAssayIfExists ( destDateAssay : DateAssay, sourceDateAssay : DateAssay ) : DateAssay\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destDateAssay ) )\r\n {\r\n return sourceDateAssay;\r\n }\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay ) )\r\n {\r\n return destDateAssay;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.csTicks ) )\r\n {\r\n destDateAssay.csTicks = sourceDateAssay.csTicks;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.jsTicks ) )\r\n {\r\n destDateAssay.csTicks = sourceDateAssay.jsTicks;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.csTicksNum ) && sourceDateAssay.csTicksNum > 0 )\r\n {\r\n destDateAssay.csTicksNum = sourceDateAssay.csTicksNum;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.csTicksNum ) && sourceDateAssay.jsTicksNum > 0 )\r\n {\r\n destDateAssay.jsTicksNum = sourceDateAssay.jsTicksNum;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.UTCoffset ) )\r\n {\r\n destDateAssay.UTCoffset = sourceDateAssay.UTCoffset;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.UTCoffsetT ) )\r\n {\r\n destDateAssay.UTCoffsetT = sourceDateAssay.UTCoffsetT;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.hasDST ) )\r\n {\r\n destDateAssay.hasDST = sourceDateAssay.hasDST;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.isBool ) )\r\n {\r\n destDateAssay.isBool = sourceDateAssay.isBool;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.date ) )\r\n {\r\n destDateAssay.date = sourceDateAssay.date;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.dateFormatted ) )\r\n {\r\n destDateAssay.dateFormatted = sourceDateAssay.dateFormatted;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.millss ) && sourceDateAssay.millss > 0 )\r\n {\r\n destDateAssay.millss = sourceDateAssay.millss;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.ss ) && sourceDateAssay.ss > 0 )\r\n {\r\n destDateAssay.ss = sourceDateAssay.ss;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.mm ) && sourceDateAssay.mm > 0 )\r\n {\r\n destDateAssay.mm = sourceDateAssay.mm;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.hh ) && sourceDateAssay.hh > 0 )\r\n {\r\n destDateAssay.hh = sourceDateAssay.hh;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.dd ) && sourceDateAssay.dd > 0 )\r\n {\r\n destDateAssay.dd = sourceDateAssay.dd;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.months ) && sourceDateAssay.months > 0 )\r\n {\r\n destDateAssay.months = sourceDateAssay.months;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceDateAssay.yyyy ) && sourceDateAssay.yyyy > 0 )\r\n {\r\n destDateAssay.yyyy = sourceDateAssay.yyyy;\r\n }\r\n\r\n return destDateAssay;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyHeartbeatIfExists ( dHeartbeat : any, sHeartbeat : Heartbeat ) : Heartbeat\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dHeartbeat ) )\r\n {\r\n dHeartbeat = new Heartbeat();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat ) && typeof ( sHeartbeat ) == 'object' )\r\n {\r\n // debugger;\r\n if ( typeof ( dHeartbeat ) == 'object' )\r\n {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.callerName ) )\r\n {\r\n dHeartbeat.callerName = sHeartbeat.callerName;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.city ) )\r\n {\r\n dHeartbeat.city = sHeartbeat.city;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.country ) )\r\n {\r\n dHeartbeat.country = sHeartbeat.country;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.date ) )\r\n {\r\n dHeartbeat.date = sHeartbeat.date;\r\n }\r\n if ( sHeartbeat.distance > 0 )\r\n {\r\n dHeartbeat.distance = sHeartbeat.distance;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.distanceStr ) )\r\n {\r\n dHeartbeat.distanceStr = sHeartbeat.distanceStr;\r\n }\r\n if ( sHeartbeat.heartbeatTime > 0 )\r\n {\r\n dHeartbeat.heartbeatTime = sHeartbeat.heartbeatTime;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.gender ) )\r\n {\r\n dHeartbeat.gender = sHeartbeat.gender;\r\n }\r\n if ( sHeartbeat.id > 0 )\r\n {\r\n dHeartbeat.id = sHeartbeat.id;\r\n }\r\n // NOTE: this is very important because we compare it with now to get offOnStatusEnum value;\r\n if ( sHeartbeat.prevHeartbeat > 0 )\r\n {\r\n dHeartbeat.prevHeartbeat = sHeartbeat.prevHeartbeat;\r\n }\r\n\r\n dHeartbeat.isOnline = sHeartbeat.isOnline;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.jsDateForCs ) )\r\n {\r\n dHeartbeat.jsDateForCs = sHeartbeat.jsDateForCs;\r\n }\r\n if ( sHeartbeat.latitude !== 0 )\r\n {\r\n dHeartbeat.latitude = sHeartbeat.latitude;\r\n }\r\n if ( sHeartbeat.longitude !== 0 )\r\n {\r\n dHeartbeat.longitude = sHeartbeat.longitude;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.neighborhood ) )\r\n {\r\n dHeartbeat.neighborhood = sHeartbeat.neighborhood;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sHeartbeat.regionCode ) )\r\n {\r\n dHeartbeat.regionCode = sHeartbeat.regionCode;\r\n }\r\n if ( sHeartbeat.sitUserId > 0 )\r\n {\r\n dHeartbeat.sitUserId = sHeartbeat.sitUserId;\r\n }\r\n }\r\n else\r\n {\r\n dHeartbeat = sHeartbeat.heartbeatTime;\r\n }\r\n }\r\n else if ( typeof ( dHeartbeat ) !== 'object' )\r\n {\r\n dHeartbeat = sHeartbeat;\r\n // debugger;\r\n }\r\n else\r\n {\r\n dHeartbeat.heartBeat = sHeartbeat;\r\n // debugger;\r\n }\r\n return dHeartbeat;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyLoginSuccessIfExists ( dLoginSuccess: LoginSuccess, sLoginSuccess: LoginSuccess ): LoginSuccess\r\n {\r\n // debugger;\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dLoginSuccess ) )\r\n {\r\n dLoginSuccess = new LoginSuccess();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sLoginSuccess ) )\r\n {\r\n dLoginSuccess.cryptUserKey = sLoginSuccess.cryptUserKey;\r\n dLoginSuccess.action = sLoginSuccess.primaryImageUrl;\r\n dLoginSuccess.blogId = sLoginSuccess.blogId;\r\n // debugger;\r\n dLoginSuccess.businessKey = sLoginSuccess.businessKey;\r\n // debugger;\r\n dLoginSuccess.code = sLoginSuccess.code;\r\n dLoginSuccess.controller = sLoginSuccess.controller;\r\n dLoginSuccess.email = sLoginSuccess.email;\r\n dLoginSuccess.gender = sLoginSuccess.gender;\r\n dLoginSuccess.hasJoinedSignalR = sLoginSuccess.hasJoinedSignalR;\r\n dLoginSuccess.heartbeat = sLoginSuccess.heartbeat;\r\n dLoginSuccess.id = sLoginSuccess.id;\r\n dLoginSuccess.imagePath = sLoginSuccess.imagePath;\r\n dLoginSuccess.isAuthorized = sLoginSuccess.isAuthorized;\r\n dLoginSuccess.isEditProfile = sLoginSuccess.isEditProfile;\r\n dLoginSuccess.isEmailConfirmed = sLoginSuccess.isEmailConfirmed;\r\n dLoginSuccess.isEmployee = sLoginSuccess.isEmployee;\r\n dLoginSuccess.isForgotPassword = sLoginSuccess.isForgotPassword;\r\n dLoginSuccess.isLogout = sLoginSuccess.isLogout;\r\n dLoginSuccess.isMgmt = sLoginSuccess.isMgmt;\r\n dLoginSuccess.isPic = sLoginSuccess.isPic;\r\n dLoginSuccess.isPreferenceComplete = sLoginSuccess.isPreferenceComplete;\r\n dLoginSuccess.isPremium = sLoginSuccess.isPremium;\r\n dLoginSuccess.isPreScreenComplete = sLoginSuccess.isPreScreenComplete;\r\n dLoginSuccess.isProfileComplete = sLoginSuccess.isProfileComplete;\r\n dLoginSuccess.isProfileContentComplete = sLoginSuccess.isProfileContentComplete;\r\n dLoginSuccess.isProfileInfoComplete = sLoginSuccess.isProfileInfoComplete;\r\n dLoginSuccess.isReviewer = sLoginSuccess.isReviewer;\r\n dLoginSuccess.isSuccess = sLoginSuccess.isSuccess;\r\n dLoginSuccess.isSuperUser = sLoginSuccess.isSuperUser;\r\n dLoginSuccess.isValued = sLoginSuccess.isValued;\r\n dLoginSuccess.iv = sLoginSuccess.iv;\r\n dLoginSuccess.key = sLoginSuccess.key;\r\n dLoginSuccess.latitude = sLoginSuccess.latitude;\r\n dLoginSuccess.likedArr = sLoginSuccess.likedArr;\r\n dLoginSuccess.longitude = sLoginSuccess.longitude;\r\n dLoginSuccess.membership = sLoginSuccess.membership;\r\n dLoginSuccess.message = sLoginSuccess.message;\r\n dLoginSuccess.myBlockedArr = sLoginSuccess.myBlockedArr;\r\n dLoginSuccess.myBuddyArr = sLoginSuccess.myBuddyArr;\r\n dLoginSuccess.myLikedArr = sLoginSuccess.myLikedArr;\r\n dLoginSuccess.myTrackedArr = sLoginSuccess.myTrackedArr;\r\n dLoginSuccess.myUnlockedArr = sLoginSuccess.myUnlockedArr;\r\n dLoginSuccess.primaryImage = sLoginSuccess.primaryImage;\r\n dLoginSuccess.primaryImageUrl = sLoginSuccess.primaryImageUrl;\r\n dLoginSuccess.primaryPhotoBnId = sLoginSuccess.primaryPhotoBnId;\r\n dLoginSuccess.profileName = sLoginSuccess.profileName;\r\n dLoginSuccess.returnUrl = sLoginSuccess.returnUrl;\r\n dLoginSuccess.sexuality = sLoginSuccess.sexuality;\r\n dLoginSuccess.signedInUserId = sLoginSuccess.signedInUserId;\r\n dLoginSuccess.signedInUserKey = sLoginSuccess.signedInUserKey;\r\n dLoginSuccess.trackedArr = sLoginSuccess.trackedArr;\r\n dLoginSuccess.unlockedArr = sLoginSuccess.unlockedArr;\r\n }\r\n\r\n return dLoginSuccess;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyLoginSuccessToProfileTile (sLoginSuccess : LoginSuccess) : ProfileTile {\r\n // debugger;\r\n let dProfileTile = new ProfileTile();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sLoginSuccess)) {\r\n dProfileTile.cryptUserKey = sLoginSuccess.cryptUserKey;\r\n // debugger;\r\n dProfileTile.date = sLoginSuccess.date;\r\n dProfileTile.heartbeat = sLoginSuccess.heartbeat;\r\n dProfileTile.latitude = sLoginSuccess.latitude.toString();\r\n dProfileTile.longitude = sLoginSuccess.longitude.toString();\r\n\r\n dProfileTile.primaryImage = sLoginSuccess.primaryImage;\r\n dProfileTile.isPrimaryPhoto = true;\r\n dProfileTile.kvPhoto = this.copyLoginSuccessToKvPhoto(sLoginSuccess);\r\n dProfileTile.photoBnId = sLoginSuccess.primaryPhotoBnId;\r\n dProfileTile.profileName = sLoginSuccess.profileName;\r\n dProfileTile.sitUserId = sLoginSuccess.signedInUserId;\r\n dProfileTile.sitUserKey = sLoginSuccess.signedInUserKey;\r\n // debugger;\r\n }\r\n return dProfileTile;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This this method very carefully and sparingly.\r\n // SitUser model is inteded to be mutually exclusive to LoginSuccess model\r\n // ---------------------------------------------------------------\r\n static copyLoginSuccessToSitUser ( sLoginSuccess : LoginSuccess) : SitUser {\r\n // debugger;\r\n let dSitUser = new SitUser();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sLoginSuccess)) {\r\n dSitUser.cryptUserKey = sLoginSuccess.cryptUserKey;\r\n // debugger;\r\n dSitUser.email = sLoginSuccess.email;\r\n dSitUser.heartbeat = sLoginSuccess.heartbeat;\r\n dSitUser.id = sLoginSuccess.id;\r\n dSitUser.isEmailConfirmed = sLoginSuccess.isEmailConfirmed;\r\n dSitUser.latitude = sLoginSuccess.latitude.toString();\r\n dSitUser.longitude = sLoginSuccess.longitude.toString();\r\n \r\n dSitUser.primaryImage = sLoginSuccess.primaryImage;\r\n dSitUser.primaryPhotoBnId = sLoginSuccess.primaryPhotoBnId;\r\n dSitUser.profileName = sLoginSuccess.profileName;\r\n dSitUser.sitUserId = sLoginSuccess.signedInUserId;\r\n dSitUser.sitUserKey = sLoginSuccess.signedInUserKey;\r\n dSitUser.userName = sLoginSuccess.email;\r\n }\r\n\r\n return dSitUser;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyProfileTileToSitUser (tpTile : ProfileTile) : SitUser {\r\n // debugger;\r\n let dSitUser = new SitUser();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tpTile)) {\r\n // debugger;\r\n dSitUser.heartbeat = tpTile.heartbeat;\r\n dSitUser.id = parseInt(tpTile.id);\r\n dSitUser.isEmailConfirmed = true;\r\n //dSitUser.latitude = StringServiceStatic.string2Number(tpTile.latitude);\r\n //dSitUser.longitude = StringServiceStatic.string2Number(tpTile.longitude);\r\n dSitUser.latitude = tpTile.latitude;\r\n dSitUser.longitude = tpTile.longitude;\r\n dSitUser.primaryImage = tpTile.primaryImage;\r\n dSitUser.primaryPhotoBnId = tpTile.photoBnId;\r\n dSitUser.profileName = tpTile.profileName;\r\n dSitUser.sitUserId = tpTile.sitUserId;\r\n dSitUser.sitUserKey = tpTile.sitUserKey;\r\n dSitUser.userName = tpTile.profileName;\r\n }\r\n\r\n return dSitUser;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This this method very carefully and sparingly.\r\n // SitUser model is inteded to be mutually exclusive to LoginSuccess model\r\n // ---------------------------------------------------------------\r\n static copyLoginSuccessToKvPhoto (sLoginSuccess : LoginSuccess) : KvPhoto {\r\n // debugger;\r\n let kvp = new KvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sLoginSuccess)) {\r\n kvp.cryptUserKey = sLoginSuccess.cryptUserKey;\r\n // debugger;\r\n kvp.isPrimary = true;\r\n kvp.isPrivate = false;\r\n kvp.key = \"primary\";\r\n kvp.value = kvp.image = sLoginSuccess.primaryImage;\r\n kvp.photoBnId = sLoginSuccess.primaryPhotoBnId;\r\n kvp.signedInUserId = kvp.sitUserId = sLoginSuccess.signedInUserId;\r\n kvp.sitUserKey = sLoginSuccess.signedInUserKey;\r\n }\r\n\r\n return kvp;\r\n }\r\n // ---------------------------------------------------------------\r\n static copySitUserToKvPhoto (sitUser : SitUser) : KvPhoto {\r\n let kvp = new KvPhoto();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser)){\r\n kvp.cryptUserKey = sitUser.cryptUserKey;\r\n kvp.date = sitUser.date;\r\n // debugger;\r\n kvp.isPrimary = true;\r\n kvp.isPrivate = false;\r\n kvp.glyphName = \"Primary\";\r\n kvp.privacy = \"Public\";\r\n\r\n kvp.value = kvp.pic = kvp.image = sitUser.primaryImage;\r\n kvp.photoBnId = sitUser.primaryPhotoBnId;\r\n kvp.sitUserId = sitUser.sitUserId;\r\n kvp.sitUserKey = sitUser.sitUserKey;\r\n }\r\n\r\n return kvp;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyKvPhotoToSitUser (kvp : KvPhoto) : SitUser {\r\n let sitUser = new SitUser();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n sitUser.cryptUserKey = kvp.cryptUserKey;\r\n sitUser.date = kvp.date;\r\n // debugger;\r\n sitUser.primaryImage = kvp.value;\r\n sitUser.primaryPhotoBnId = kvp.photoBnId;\r\n sitUser.sitUserId = kvp.sitUserId;\r\n sitUser.sitUserKey = kvp.sitUserKey;\r\n }\r\n\r\n return sitUser;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyKvPhotoToProfilePics (kvp : KvPhoto) : ProfilePics {\r\n let pPics = new ProfilePics();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvp)) {\r\n pPics.cryptUserKey = kvp.cryptUserKey;\r\n pPics.date = kvp.date;\r\n pPics.entityName = kvp.entityName;\r\n // pPics.filteredKvPhotoArr = [];\r\n // pPics.unFilteredKvPhotoArr = [];\r\n pPics.id = kvp.id;\r\n pPics.sitUserId = kvp.sitUserId;\r\n pPics.sitUserKey = kvp.sitUserKey;\r\n }\r\n return pPics;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyOrderIfExists ( destOrder : PayPalOrder, sourceOrder : PayPalOrder ) : PayPalOrder\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destOrder) )\r\n {\r\n destOrder = new PayPalOrder();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceOrder ) )\r\n {\r\n destOrder.authorizedData = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceOrder.authorizedData ) ? sourceOrder.authorizedData : destOrder.authorizedData;\r\n\r\n destOrder.callerName = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.callerName) ? sourceOrder.callerName: destOrder.callerName;\r\n destOrder.create_time = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.create_time) ? sourceOrder.create_time : destOrder.create_time;\r\n destOrder.cryptUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceOrder.cryptUserKey ) ? sourceOrder.cryptUserKey : destOrder.cryptUserKey;\r\n destOrder.date = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceOrder.date ) ? sourceOrder.date : destOrder.date;\r\n destOrder.dateStr = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceOrder.dateStr ) ? sourceOrder.dateStr : destOrder.dateStr;\r\n destOrder.email = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.email) ? sourceOrder.email : destOrder.email;\r\n destOrder.fullName = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.fullName) ? sourceOrder.fullName: destOrder.fullName;\r\n destOrder.intent = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.intent) ? sourceOrder.intent : destOrder.intent;\r\n destOrder.ip = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.ip) ? sourceOrder.ip : destOrder.ip;\r\n destOrder.latitude = sourceOrder.latitude != 0 ? sourceOrder.latitude : destOrder.latitude;\r\n destOrder.longitude = sourceOrder.longitude != 0 ? sourceOrder.longitude : destOrder.longitude;\r\n destOrder.onApproved = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.onApproved) ? JSON.stringify(sourceOrder.onApproved) : destOrder.onApproved;\r\n destOrder.onApprovedDetails = JSON.stringify(sourceOrder.onApprovedDetails);\r\n destOrder.onCanceled = JSON.stringify(sourceOrder.onCanceled);\r\n destOrder.onClientAuthorization = sourceOrder.onClientAuthorization;\r\n destOrder.onError = sourceOrder.onError;\r\n destOrder.orderID = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.orderID) ? sourceOrder.orderID : destOrder.orderID;\r\n destOrder.orderNo = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.orderNo) ? sourceOrder.orderNo : destOrder.orderNo;\r\n destOrder.payPalCreditCardAddress.copy(sourceOrder.payPalCreditCardAddress);\r\n // destOrder.paypalPayee.copy( sourceOrder.paypalPayee );\r\n // TODO: for some reason, the copyFrom is not recognized as a function:( error\r\n //if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destOrder.paypalPayer ) )\r\n //{\r\n // destOrder.paypalPayer.copyFrom( sourceOrder.paypalPayer );\r\n //}\r\n destOrder.paypalPayer.copyFrom( sourceOrder.paypalPayer );\r\n destOrder.paypalPurchaseUnits.copy( sourceOrder.paypalPurchaseUnits );\r\n // destOrder.paypalShipping.copy( sourceOrder.paypalShipping );\r\n destOrder.paypalPayment.copy( sourceOrder.paypalPayment );\r\n destOrder.paymentOption = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.paymentOption) ? sourceOrder.paymentOption : destOrder.paymentOption;\r\n destOrder.paymentOptionAmount = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.paymentOptionAmount) ? sourceOrder.paymentOptionAmount : destOrder.paymentOptionAmount;\r\n destOrder.personKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.personKey) ? sourceOrder.personKey : destOrder.personKey;\r\n destOrder.sitUserId = sourceOrder.sitUserId > 0 ? sourceOrder.sitUserId : destOrder.sitUserId;\r\n destOrder.sitUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.sitUserKey) ? sourceOrder.sitUserKey : destOrder.sitUserKey;\r\n destOrder.status = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.status) ? sourceOrder.status : destOrder.status;\r\n destOrder.subscriptionMonths = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.subscriptionMonths) ? sourceOrder.subscriptionMonths : destOrder.subscriptionMonths;\r\n destOrder.subtotal = sourceOrder.subtotal > 0 ? sourceOrder.subtotal : destOrder.subtotal;\r\n destOrder.tax = sourceOrder.tax > 0 ? sourceOrder.tax : destOrder.tax;\r\n destOrder.total = sourceOrder.total > 0 ? sourceOrder.total : destOrder.total;\r\n destOrder.totalStr = sourceOrder.totalStr;\r\n destOrder.upgrade.copy( sourceOrder.upgrade );\r\n destOrder.userName = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOrder.userName) ? sourceOrder.userName : destOrder.userName;\r\n }\r\n\r\n return destOrder;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyProfileInfoIfExists ( profileInfo : ProfileInfo, inPInfo : ProfileInfo ) : ProfileInfo\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo ) )\r\n {\r\n // debugger;\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileInfo ) )\r\n {\r\n profileInfo = new ProfileInfo();\r\n }\r\n if ( inPInfo.age > 0 )\r\n {\r\n profileInfo.age = inPInfo.age;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.away ) )\r\n {\r\n profileInfo.away = inPInfo.away;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.aBstract ) )\r\n {\r\n profileInfo.aBstract = inPInfo.aBstract;\r\n }\r\n if ( inPInfo.contentId > 0 )\r\n {\r\n profileInfo.contentId = inPInfo.contentId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.city ) )\r\n {\r\n profileInfo.city = inPInfo.city;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.contents ) )\r\n {\r\n profileInfo.contents = inPInfo.contents;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.countryCode ) )\r\n {\r\n profileInfo.countryCode = inPInfo.countryCode;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.cutUncut ) )\r\n {\r\n profileInfo.cutUncut = inPInfo.cutUncut;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.date ) )\r\n {\r\n profileInfo.date = inPInfo.date;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.dickSize ) )\r\n {\r\n profileInfo.dickSize = inPInfo.dickSize;\r\n }\r\n if ( inPInfo.distance > 0 )\r\n {\r\n profileInfo.distance = inPInfo.distance;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.dob ) )\r\n {\r\n profileInfo.dob = inPInfo.dob;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.email ) )\r\n {\r\n profileInfo.email = inPInfo.email;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.gender ) )\r\n {\r\n profileInfo.gender = inPInfo.gender;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.heading ) )\r\n {\r\n profileInfo.heading = inPInfo.heading;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.heartbeatTime ) )\r\n {\r\n profileInfo.heartbeatTime = inPInfo.heartbeatTime;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.highestEducation ) )\r\n {\r\n profileInfo.highestEducation = inPInfo.highestEducation;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.image ) )\r\n {\r\n profileInfo.image = inPInfo.image;\r\n }\r\n profileInfo.isOnline = inPInfo.isOnline;\r\n profileInfo.isProfileComplete = inPInfo.isProfileComplete;\r\n profileInfo.isOnline = inPInfo.isOnline;\r\n profileInfo.isServer = inPInfo.isServer;\r\n profileInfo.isSuccess = inPInfo.isSuccess;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.link ) )\r\n {\r\n profileInfo.link = inPInfo.link;\r\n }\r\n if ( inPInfo.latitude.length !== 1 )\r\n {\r\n profileInfo.latitude = inPInfo.latitude;\r\n }\r\n if ( inPInfo.longitude.length !== 1 )\r\n {\r\n profileInfo.longitude = inPInfo.longitude;\r\n }\r\n if ( inPInfo.memberId > 0 )\r\n {\r\n profileInfo.memberId = inPInfo.memberId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.message ) )\r\n {\r\n profileInfo.message = inPInfo.message;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.name ) )\r\n {\r\n profileInfo.name = inPInfo.name;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.neighborhood ) )\r\n {\r\n profileInfo.neighborhood = inPInfo.neighborhood;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.pagedProfilePics ) && inPInfo.pagedProfilePics.length > 0 )\r\n {\r\n profileInfo.pagedProfilePics = inPInfo.pagedProfilePics;\r\n }\r\n if ( inPInfo.photoId > 0 )\r\n {\r\n profileInfo.photoId = inPInfo.photoId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.position ) )\r\n {\r\n profileInfo.position = inPInfo.position;\r\n }\r\n if ( inPInfo.profileId > 0 )\r\n {\r\n profileInfo.profileId = inPInfo.profileId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.profileName ) && inPInfo.profileName.length > 0 )\r\n {\r\n profileInfo.profileName = inPInfo.profileName;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.profilePics ) )\r\n {\r\n profileInfo.profilePics = this.copyProfilePicsIfExists( profileInfo.profilePics, inPInfo.profilePics );\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.pagedProfilePics ) )\r\n {\r\n profileInfo.pagedProfilePics = inPInfo.pagedProfilePics;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.regionCode ) )\r\n {\r\n profileInfo.regionCode = inPInfo.regionCode;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.relationshipStatus ) )\r\n {\r\n profileInfo.relationshipStatus = inPInfo.relationshipStatus;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.religion ) )\r\n {\r\n profileInfo.religion = inPInfo.religion;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.sexuality ) )\r\n {\r\n profileInfo.sexuality = inPInfo.sexuality;\r\n }\r\n if ( inPInfo.sitUserId > 0 )\r\n {\r\n profileInfo.sitUserId = inPInfo.sitUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.sitUserKey ) )\r\n {\r\n profileInfo.sitUserKey = inPInfo.sitUserKey;\r\n }\r\n if ( inPInfo.signedInUserId > 0 )\r\n {\r\n profileInfo.signedInUserId = inPInfo.signedInUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.signedInUserKey ) )\r\n {\r\n profileInfo.signedInUserKey = inPInfo.signedInUserKey;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.smokingStatus ) )\r\n {\r\n profileInfo.smokingStatus = inPInfo.smokingStatus;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( inPInfo.unit ) )\r\n {\r\n profileInfo.unit = inPInfo.unit;\r\n } else\r\n {\r\n profileInfo.unit = 'm';\r\n }\r\n }\r\n // debugger;\r\n return profileInfo;\r\n }\r\n // --------------------------------------------------------------\r\n static copyOffOnIfExists (destOffOn : OffOn, sourceOffOn : OffOn) : OffOn {\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destOffOn)) {\r\n destOffOn = new OffOn();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn)) {\r\n destOffOn.heartbeat = this.copyHeartbeatIfExists(destOffOn.heartbeat, sourceOffOn.heartbeat);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.away)\r\n && sourceOffOn.away.length > 0) {\r\n destOffOn.away = sourceOffOn.away;\r\n }\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.distance) && sourceOffOn.distance > 0) {\r\n // destOffOn.distance = sourceOffOn.distance;\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.distanceStr) && sourceOffOn.distanceStr.length > 0) {\r\n // destOffOn.distanceStr = sourceOffOn.distanceStr;\r\n //}\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnArr) && sourceOffOn.offOnArr.length > 0) {\r\n destOffOn.offOnArr = sourceOffOn.offOnArr;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnId) && sourceOffOn.offOnId.length > 0) {\r\n destOffOn.offOnId = sourceOffOn.offOnId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnElem)) {\r\n destOffOn.offOnElem = sourceOffOn.offOnElem;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnAwayElem)) {\r\n destOffOn.offOnAwayElem = sourceOffOn.offOnAwayElem;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnRadioElem)) {\r\n destOffOn.offOnRadioElem = sourceOffOn.offOnRadioElem;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnStatusEnum) && sourceOffOn.offOnStatusEnum > 0) {\r\n destOffOn.offOnStatusEnum = sourceOffOn.offOnStatusEnum;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnStatusColor) && sourceOffOn.offOnStatusColor.length > 0) {\r\n destOffOn.offOnStatusColor = sourceOffOn.offOnStatusColor;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.offOnStatusColorTimer) && sourceOffOn.offOnStatusColorTimer.toString().length > 0) {\r\n destOffOn.offOnStatusColorTimer = sourceOffOn.offOnStatusColorTimer;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.selectedOffOnIndex) && sourceOffOn.selectedOffOnIndex > -1) {\r\n destOffOn.selectedOffOnIndex = sourceOffOn.selectedOffOnIndex;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceOffOn.lastUpdatedOn) && sourceOffOn.lastUpdatedOn > 0) {\r\n destOffOn.lastUpdatedOn = sourceOffOn.lastUpdatedOn;\r\n }\r\n }\r\n return destOffOn;\r\n }\r\n // --------------------------------------------------------------\r\n static copyDistanceUnitIfExists (destUnit : Unit, sourceUnit : Unit) : Unit {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destUnit) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceUnit)) {\r\n if (sourceUnit.distance >= 0) {\r\n destUnit.distance = sourceUnit.distance;\r\n }\r\n destUnit.unit = sourceUnit.unit.length > 0 ? sourceUnit.unit : 'meter';\r\n destUnit.distanceStr = sourceUnit.distanceStr.length > 0 ? sourceUnit.distanceStr : '';\r\n destUnit.date = sourceUnit.date;\r\n destUnit.id = sourceUnit.id;\r\n }\r\n return destUnit;\r\n }\r\n // --------------------------------------------------------------\r\n static copyProfileTileIfExists ( destTile : ProfileTile, sourceTile : ProfileTile ) : ProfileTile\r\n {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(destTile)) {\r\n destTile = new ProfileTile();\r\n\t\t}\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destTile ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile ) )\r\n {\r\n if ( sourceTile.age > 0 )\r\n {\r\n destTile.age = sourceTile.age;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.offOn)) {\r\n destTile.offOn = this.copyOffOnIfExists(destTile.offOn, sourceTile.offOn);\r\n }\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distanceUnit)) {\r\n destTile.distanceUnit = this.copyDistanceUnitIfExists(destTile.distanceUnit, sourceTile.distanceUnit);\r\n }\r\n\r\n if ( sourceTile.beginIndex && sourceTile.beginIndex > 0 )\r\n {\r\n destTile.beginIndex = sourceTile.beginIndex;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.city ) && sourceTile.city.length > 0 )\r\n {\r\n destTile.city = sourceTile.city;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.countryCode ) && sourceTile.countryCode.length > 0 )\r\n {\r\n destTile.countryCode = sourceTile.countryCode;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.date ) && sourceTile.date.length > 0 )\r\n {\r\n destTile.date = sourceTile.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distance)) {\r\n destTile.distance = sourceTile.distance;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.distanceStr)) {\r\n destTile.distanceStr = sourceTile.distanceStr;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.dob ) && sourceTile.dob != null )\r\n {\r\n destTile.dob = sourceTile.dob;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.gender ) && sourceTile.gender.length > 0 )\r\n {\r\n destTile.gender = sourceTile.gender;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.heading ) && sourceTile.heading.length > 0 )\r\n {\r\n destTile.heading = sourceTile.heading;\r\n }\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.heartbeat.prevHeartbeat) && sourceTile.heartbeat.prevHeartbeat > 0 )\r\n //{\r\n // destTile.heartbeat.prevHeartbeat = sourceTile.heartbeat.prevHeartbeat;\r\n //}\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.heartbeat ) && sourceTile.heartbeat.heartbeatTime > 0 )\r\n {\r\n destTile.heartbeat = this.copyHeartbeatIfExists(destTile.heartbeat, sourceTile.heartbeat);\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.id ) && sourceTile.id.length > 0 )\r\n {\r\n destTile.id = sourceTile.id;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.primaryImage) && sourceTile.primaryImage.length > 0 )\r\n {\r\n destTile.primaryImage = sourceTile.primaryImage;\r\n }\r\n if ( sourceTile.index > -1 )\r\n {\r\n destTile.index = sourceTile.index;\r\n }\r\n if ( sourceTile.isImageRendered )\r\n {\r\n destTile.isImageRendered = sourceTile.isImageRendered.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n }\r\n if ( sourceTile.isOnline )\r\n {\r\n destTile.isOnline = sourceTile.isOnline;// sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n }\r\n if ( sourceTile.isPremiumMember )\r\n {\r\n destTile.isPremiumMember = sourceTile.isPremiumMember.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n }\r\n if ( sourceTile.isTileSetupComplete )\r\n {\r\n destTile.isTileSetupComplete = sourceTile.isTileSetupComplete.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n }\r\n\r\n if (sourceTile.kvPhoto) {\r\n destTile.kvPhoto = new KvPhoto().copy(sourceTile?.kvPhoto);\r\n }\r\n\r\n if ( sourceTile.latitude != null && sourceTile.latitude.length !== 1 )\r\n {\r\n destTile.latitude = sourceTile.latitude;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.link ) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destTile.link ) )\r\n {\r\n destTile.link = sourceTile.link;\r\n } else\r\n {\r\n destTile.link = 'view/';\r\n }\r\n\r\n if ( sourceTile.longitude != null && sourceTile.longitude.length !== 1 )\r\n {\r\n destTile.longitude = sourceTile.longitude;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.neighborhood ) && sourceTile.neighborhood.length > 0 )\r\n {\r\n destTile.neighborhood = sourceTile.neighborhood;\r\n }\r\n \r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.pElemId ) && sourceTile.pElemId.length > 0 )\r\n {\r\n destTile.pElemId = sourceTile.pElemId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.position ) && sourceTile.position.length > 0 && destTile.position != null )\r\n {\r\n destTile.position = sourceTile.position;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.profileId ) && sourceTile.profileId > 0 )\r\n {\r\n destTile.profileId = sourceTile.profileId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.profileName ) && sourceTile.profileName.length > 0 )\r\n {\r\n destTile.profileName = sourceTile.profileName;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.regionCode ) && sourceTile.regionCode.length > 0 )\r\n {\r\n destTile.regionCode = sourceTile.regionCode;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.sexuality ) && sourceTile.sexuality.length > 0 )\r\n {\r\n destTile.sexuality = sourceTile.sexuality;\r\n }\r\n \r\n if ( sourceTile.sitUserId != null && sourceTile.sitUserId > 0 )\r\n {\r\n destTile.sitUserId = sourceTile.sitUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.signedInUserId ) && sourceTile.signedInUserId > 0 )\r\n {\r\n destTile.signedInUserId = sourceTile.signedInUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.sitUserKey ) )\r\n {\r\n destTile.sitUserKey = sourceTile.sitUserKey;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.signedInUserId ) && sourceTile.signedInUserId > 0 )\r\n {\r\n destTile.signedInUserId = sourceTile.signedInUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.signedInUserKey ) )\r\n {\r\n destTile.signedInUserKey = sourceTile.signedInUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.unit)) {\r\n destTile.unit = sourceTile.unit;\r\n }\r\n }\r\n return destTile;\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n static copyKvPhotoIfExists ( dKvPhoto : KvPhoto, sKvPhoto : KvPhoto ) : KvPhoto\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dKvPhoto ) )\r\n {\r\n dKvPhoto = new KvPhoto();\r\n }\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sKvPhoto)) {\r\n // // debugger;\r\n // dKvPhoto.copy(sKvPhoto);\r\n // // debugger;\r\n //}\r\n //\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.cryptUserKey ) )\r\n {\r\n dKvPhoto.cryptUserKey = sKvPhoto.cryptUserKey; // need to be changed by caller\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.date ) )\r\n {\r\n dKvPhoto.date = sKvPhoto.date;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.description ) )\r\n {\r\n dKvPhoto.description = sKvPhoto.description;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.elemId ) )\r\n {\r\n dKvPhoto.elemId = sKvPhoto.elemId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.entityName ) )\r\n {\r\n dKvPhoto.entityName = sKvPhoto.entityName;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.glyphName ) )\r\n {\r\n dKvPhoto.glyphName = sKvPhoto.glyphName;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.image ) )\r\n {\r\n dKvPhoto.image = sKvPhoto.image;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sKvPhoto.imageBytes)) {\r\n dKvPhoto.imageBytes = sKvPhoto.imageBytes;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.index ) )\r\n {\r\n dKvPhoto.index = sKvPhoto.index;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.isPrimary ) )\r\n {\r\n dKvPhoto.isPrimary = sKvPhoto.isPrimary;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sKvPhoto.isPrivate)) {\r\n dKvPhoto.isPrivate = sKvPhoto.isPrivate;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sKvPhoto.isUnlocked)) {\r\n dKvPhoto.isUnlocked = sKvPhoto.isUnlocked;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.itemNum ) )\r\n {\r\n dKvPhoto.itemNum = sKvPhoto.itemNum;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sKvPhoto.key)) {\r\n dKvPhoto.key = sKvPhoto.key;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.privacy ) )\r\n {\r\n dKvPhoto.privacy = sKvPhoto.privacy;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.photoId ) )\r\n {\r\n dKvPhoto.photoId = sKvPhoto.photoId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.photoBnId ) )\r\n {\r\n dKvPhoto.photoBnId = sKvPhoto.photoBnId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.profileId ) )\r\n {\r\n dKvPhoto.profileId = sKvPhoto.profileId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.returnUrl ) )\r\n {\r\n dKvPhoto.returnUrl = sKvPhoto.returnUrl;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.sitUserId ) )\r\n {\r\n dKvPhoto.sitUserId = sKvPhoto.sitUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.sitUserKey ) )\r\n {\r\n dKvPhoto.sitUserKey = sKvPhoto.sitUserKey;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.file ) )\r\n {\r\n dKvPhoto.file = sKvPhoto.file;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.title ) )\r\n {\r\n dKvPhoto.title = sKvPhoto.title;\r\n } \r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sKvPhoto.value ) )\r\n {\r\n dKvPhoto.value = sKvPhoto.value;\r\n }\r\n debugger;\r\n return dKvPhoto;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyProfileImageIfExists ( dpImage : ProfileImage, spImage : ProfileImage ) : ProfileImage\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dpImage ) )\r\n {\r\n dpImage = new ProfileImage();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage ) )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.cryptUserKey ) )\r\n {\r\n dpImage.cryptUserKey = spImage.cryptUserKey;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.date ) )\r\n {\r\n dpImage.date = spImage.date;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.entityName ) )\r\n {\r\n dpImage.entityName = spImage.entityName;\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.imageBytes ) )\r\n {\r\n dpImage.imageBytes = spImage.imageBytes;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.imageFile ) )\r\n {\r\n dpImage.imageFile = spImage.imageFile;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.imageFromBytes ) )\r\n {\r\n dpImage.imageFromBytes = spImage.imageFromBytes;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.imageFile ) )\r\n {\r\n dpImage.imageFile = spImage.imageFile;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.isPrimary ) )\r\n {\r\n dpImage.isPrimary = spImage.isPrimary;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.privacy ) )\r\n {\r\n dpImage.privacy = spImage.privacy;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.photoId ) )\r\n {\r\n dpImage.photoId = spImage.photoId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.photoBnId ) )\r\n {\r\n dpImage.photoBnId = spImage.photoBnId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.profileId ) )\r\n {\r\n dpImage.profileId = spImage.profileId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.sitUserId ) )\r\n {\r\n dpImage.sitUserId = spImage.sitUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.sitUserKey ) )\r\n {\r\n dpImage.sitUserKey = spImage.sitUserKey;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spImage.type ) )\r\n {\r\n dpImage.type = spImage.type;\r\n }\r\n // debugger;\r\n }\r\n return dpImage;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyProfilePicsIfExists ( dpPics : ProfilePics, spPics : ProfilePics ) : ProfilePics\r\n {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics ) )\r\n {\r\n return dpPics;\r\n }\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dpPics ) )\r\n {\r\n return spPics;\r\n }\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.arrKv ) )\r\n {\r\n dpPics.arrKv = ArraySupportServiceStatic.mergeArraysUniq(dpPics.arrKv, spPics.arrKv);\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.arrKvAny ) )\r\n {\r\n dpPics.arrKvAny = ArraySupportServiceStatic.mergeArraysUniq(dpPics.arrKvAny, spPics.arrKvAny);\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.cryptUserKey ) )\r\n {\r\n dpPics.cryptUserKey = spPics.cryptUserKey;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.date ) )\r\n {\r\n dpPics.date = spPics.date;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.entityName ) )\r\n {\r\n dpPics.entityName = spPics.entityName;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spPics.filteredKvPhotoArr)) {\r\n // uniquely merge\r\n dpPics.filteredKvPhotoArr = ArraySupportServiceStatic.mergeArraysUniq(dpPics.filteredKvPhotoArr, spPics.filteredKvPhotoArr);\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.id ) && spPics.id > 0 )\r\n {\r\n dpPics.id = spPics.id;\r\n }\r\n\r\n dpPics.isPhotoUploadSuccessful = spPics.isPhotoUploadSuccessful; \r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.images ) )\r\n {\r\n // uniquely merge\r\n dpPics.images = ArraySupportServiceStatic.mergeArraysUniq(dpPics.images, spPics.images);\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.model ) )\r\n {\r\n dpPics.model = spPics.model;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.pagedProfilePics ) )\r\n {\r\n dpPics.pagedProfilePics = ArraySupportServiceStatic.mergeArraysUniq(dpPics.pagedProfilePics, spPics.pagedProfilePics);\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.pagedGlyphArr ) )\r\n {\r\n dpPics.pagedGlyphArr = ArraySupportServiceStatic.mergeArraysUniq(dpPics.pagedGlyphArr, spPics.pagedGlyphArr);\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.pagedKvPhotoArr ) )\r\n {\r\n dpPics.pagedKvPhotoArr = ArraySupportServiceStatic.mergeArraysUniq(dpPics.pagedKvPhotoArr, spPics.pagedKvPhotoArr);\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.profileImageArr ) && spPics.profileImageArr.length > 0 )\r\n {\r\n dpPics.profileImageArr = ArraySupportServiceStatic.mergeArraysUniq(dpPics.profileImageArr, spPics.profileImageArr);\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.profileGlyphArr ) )\r\n {\r\n dpPics.profileGlyphArr = ArraySupportServiceStatic.mergeArraysUniq(dpPics.profileGlyphArr, spPics.profileGlyphArr);\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.profileKvPhotoArr ) )\r\n {\r\n // ArrayServiceStatic.mergeArrays(dpPics.profileKvPhotoArr , spPics.profileKvPhotoArr );\r\n // dpPics.profileKvPhotoArr = ArrayServiceStatic.removeDuplicates(dpPics.profileKvPhotoArr);\r\n dpPics.profileKvPhotoArr = ArraySupportServiceStatic.mergeArraysUniq(dpPics.profileKvPhotoArr, spPics.profileKvPhotoArr);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spPics.profilePhotoDictionary)) {\r\n let values = spPics.profilePhotoDictionary.size > 0 ? spPics.profilePhotoDictionary.values() : [];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(values) && values.length > 0) {\r\n values.forEach(e => {\r\n dpPics.profilePhotoDictionary.set(e.photoId, e);\r\n let dictionaryPhoto = dpPics.profilePhotoDictionary.get(e.photoId) as Photo;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryPhoto)) {\r\n dictionaryPhoto = CopyServiceStatic.copyFromServerPhotoToClientPhoto(dictionaryPhoto, e);\r\n dpPics.profilePhotoDictionary.remove(e.photoId);\r\n dpPics.profilePhotoDictionary.set(dictionaryPhoto.photoId, dictionaryPhoto);\r\n }\r\n else {\r\n dpPics.profilePhotoDictionary.set(e.photoId, e);\r\n }\r\n })\r\n }\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.profileId ) && spPics.profileId > 0 )\r\n {\r\n dpPics.profileId = spPics.profileId;\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.sitUserId ) && spPics.sitUserId > 0 )\r\n {\r\n dpPics.sitUserId = spPics.sitUserId;\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.sitUserKey ) )\r\n {\r\n dpPics.sitUserKey = spPics.sitUserKey;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spPics.unFilteredKvPhotoArr)) {\r\n // uniquely merge\r\n // Note: tested on 20220411 and works!\r\n // debugger;\r\n dpPics.unFilteredKvPhotoArr = ArraySupportServiceStatic.mergeArraysUniq (dpPics.unFilteredKvPhotoArr, spPics.unFilteredKvPhotoArr);\r\n // debugger;\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(spPics.unFilteredKvPhotoDictionary)) {\r\n let values = spPics.unFilteredKvPhotoDictionary.size > 0 ? spPics.unFilteredKvPhotoDictionary.values() : [];\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(values) && values.length > 0) {\r\n values.forEach(e => {\r\n dpPics.unFilteredKvPhotoDictionary.set(e.photoBnId, e);\r\n let dictionaryKvPhoto = dpPics.unFilteredKvPhotoDictionary.get(e.photoBnId) as KvPhoto;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dictionaryKvPhoto)) {\r\n dictionaryKvPhoto = CopyServiceStatic.copyKvPhotoIfExists(dictionaryKvPhoto, e);\r\n dpPics.unFilteredKvPhotoDictionary.remove(e.photoBnId);\r\n dpPics.unFilteredKvPhotoDictionary.set(dictionaryKvPhoto.photoBnId, dictionaryKvPhoto);\r\n }\r\n else {\r\n dpPics.unFilteredKvPhotoDictionary.set(e.photoBnId, e);\r\n }\r\n })\r\n }\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( spPics.unsalted ) )\r\n {\r\n dpPics.unsalted = spPics.unsalted;\r\n }\r\n\r\n // debugger;\r\n return dpPics;\r\n }\r\n // --------------------------------------------------------------\r\n static copyUpgradedTileIfExists ( destTile : UpgradedTile, sourceTile : UpgradedTile ) : UpgradedTile\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destTile ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile ) )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.date ) && sourceTile.date.length > 0 )\r\n {\r\n destTile.date = sourceTile.date;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.dateStr ) && sourceTile.dateStr.length > 0 )\r\n {\r\n destTile.dateStr = sourceTile.dateStr;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.expDate ) && sourceTile.expDate.length > 0 )\r\n {\r\n destTile.expDate = sourceTile.expDate;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.expDateStr ) && sourceTile.expDateStr.length > 0 )\r\n {\r\n destTile.expDateStr = sourceTile.expDateStr;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.membership ) )\r\n {\r\n destTile.membership = sourceTile.membership;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.message ) && sourceTile.message.length > 0 )\r\n {\r\n destTile.message = sourceTile.message;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.promoCode ) && sourceTile.promoCode.length > 0 )\r\n {\r\n destTile.promoCode = sourceTile.promoCode;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.signedInUserId ) && sourceTile.signedInUserId > 0 )\r\n {\r\n destTile.signedInUserId = sourceTile.signedInUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.sitUserKey ) )\r\n {\r\n destTile.sitUserKey = sourceTile.sitUserKey;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.sitUserKeyBackup ) && sourceTile.sitUserKeyBackup.length > 0 )\r\n {\r\n destTile.sitUserKeyBackup = sourceTile.sitUserKeyBackup;\r\n }\r\n }\r\n return destTile;\r\n }\r\n \r\n // ===============================================================\r\n //to.approval = that.Approval?.length > 0 ? that.Approval : '';\r\n //to.contentType = that.ContentType;\r\n //to.cryptUserKey = that.CryptUserKey;\r\n //to.date = that.Date;\r\n //to.description = that.Description;\r\n //to.file = that.File; // TODO: warning for possible missing proterty\r\n //// to.formData = that IFormFile;\r\n //to.id = that.Id;\r\n //to.image = that.Image;\r\n //to.imageBytes = that.ImageBytes;\r\n //to.imageString = that.ImageString;\r\n //to.isPrimary = that.IsPrimary ? that.IsPrimary : false;\r\n //to.latitude = that.Latitude;\r\n //to.longitude = that.Longitude;\r\n //to.location = that.Location;\r\n //to.path = that.Path;\r\n //to.pageNo = that.pageNo > 0 ? that.pageNo : -1;\r\n //to.pic = that.pic; // Note: thisis the only lower case property on the server/back-end\r\n //to.photoId = that.PhotoId;\r\n //to.photoBnId = that.PhotoBnId;\r\n //to.privacy = that.Privacy?.length > 0 ? that.Privacy : '';\r\n //to.profileId = that.ProfileId;\r\n //to.sitUserId = that.SITUserId;\r\n //to.sitUserKey = that.SITUserKey;\r\n //// debugger;\r\n //to.signedInUserId = that.SignedInUserId;\r\n //to.sourceId = that.SourceId;\r\n //to.sourceType = that.SourceType;\r\n //to.title = that.Title;\r\n //to.url = that.Url;\r\n // return to;\r\n // ---------------------------------------------------------------\r\n static copyFromContentToProfileInfo ( content: any ) : ProfileInfo\r\n {\r\n const profileInfo = new ProfileInfo();\r\n\r\n if ( content )\r\n {\r\n profileInfo.aBstract = content.aBstract;\r\n profileInfo.contentId = content.contentId;\r\n profileInfo.contents = content.contents;\r\n profileInfo.heading = content.heading;\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileInfo.date ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( content.date ) && content.date.length > 0 )\r\n {\r\n profileInfo.date = content.date;\r\n }\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileInfo.profileId ) || ( profileInfo.profileId === 0 && content.profileId > 0 ) )\r\n {\r\n profileInfo.profileId = content.profileId;\r\n }\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileInfo.sitUserId ) || ( profileInfo.sitUserId === 0 && content.sitUserId > 0 ) )\r\n {\r\n profileInfo.sitUserId = content.sitUserId;\r\n }\r\n }\r\n return profileInfo;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyFromProfileInfoToContent ( profileInfo : ProfileInfo ) : any\r\n {\r\n const content = new Content();\r\n\r\n if (profileInfo) {\r\n content.aBstract = profileInfo.aBstract;\r\n content.contentId = profileInfo.contentId;\r\n content.contents = profileInfo.contents;\r\n content.heading = profileInfo.heading;\r\n content.date = profileInfo.date;\r\n content.profileId = profileInfo.profileId;\r\n content.sitUserId = profileInfo.sitUserId;\r\n content.sitUserKey = profileInfo.sitUserKey;\r\n content.signedInUserId = profileInfo.signedInUserId;\r\n content.signedInUserKey = profileInfo.signedInUserKey;\r\n\r\n\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( content.date ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileInfo.date ) && profileInfo.date.length > 0 )\r\n // {\r\n // content.date = profileInfo.date;\r\n // }\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( content.profileId ) && profileInfo.profileId > 0 )\r\n // {\r\n // content.profileId = profileInfo.profileId;\r\n // }\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( content.sitUserId ) && profileInfo.sitUserId > 0 )\r\n // {\r\n // content.sitUserId = profileInfo.sitUserId;\r\n // }\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(content.sitUserKey) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfo.sitUserKey) && profileInfo.sitUserKey.length > 0) {\r\n // content.sitUserKey = profileInfo.sitUserKey;\r\n // }\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(content.signedInUserId) && profileInfo.signedInUserId > 0) {\r\n // content.signedInUserId = profileInfo.signedInUserId;\r\n // }\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(content.signedInUserKey) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfo.signedInUserKey) && profileInfo.signedInUserKey.length > 0) {\r\n // content.signedInUserKey = profileInfo.signedInUserKey;\r\n // }\r\n return content;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromCommunicationActivityToENoteTile ( commAct : CommunicationActivity ) : ENoteTile\r\n {\r\n // debugger; //In copyServcie\r\n const eTile = new ENoteTile();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct ) )\r\n {\r\n // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.boxName ) )\r\n // {\r\n // eTile.boxName = commMsg.boxName;\r\n // }\r\n // if ( commMsg.commActivityId > 0 )\r\n // {\r\n // eTile.commActivityId = commMsg.commActivityId;\r\n // }\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commMsg.communicationType ))\r\n // {\r\n // eTile.communicationType = commMsg.communicationSubType;\r\n // }\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.communicationSubType ) )\r\n // {\r\n // eTile.communicationSubType = commMsg.communicationSubType;\r\n // }\r\n\r\n if (commAct.communicationMessageId > 0 )\r\n {\r\n eTile.communicationMessageId = commAct.communicationMessageId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.date ) )\r\n {\r\n eTile.date = commAct.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.dateFormatted ) )\r\n {\r\n eTile.dateFormatted = commAct.dateFormatted;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.isOnline ) )\r\n {\r\n eTile.isOnline = commAct.isOnline;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.heading ) )\r\n {\r\n eTile.heading = commAct.heading;\r\n }\r\n /*\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commMsg.isPrimaryMember)) {\r\n * eTile.isPrimaryMember = commMsg.isPrimaryMember;\r\n * }\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.sentPic ) )\r\n {\r\n eTile.image = commAct.sentPic;\r\n }\r\n if (commAct.index >= 0 )\r\n {\r\n eTile.index = commAct.index;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.isOnline ) )\r\n {\r\n eTile.isOnline = commAct.isOnline;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.isPremiumMember ) )\r\n {\r\n eTile.isPremiumMember = commAct.isPremiumMember;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.isPic ) )\r\n {\r\n eTile.isPic = commAct.isPic;\r\n }\r\n if (commAct.latitude !== 0 )\r\n {\r\n eTile.latitude = commAct.latitude;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.link ) )\r\n {\r\n eTile.link = commAct.link;\r\n }\r\n if (commAct.longitude !== 0 )\r\n {\r\n eTile.longitude = commAct.longitude;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.messageBody ) )\r\n {\r\n eTile.neighborhood = commAct.messageBody;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.pElemId ) )\r\n {\r\n eTile.pElemId = commAct.pElemId;\r\n }\r\n //if (commAct.photoId > 0 )\r\n //{\r\n // eTile.photoId = commAct.photoId;\r\n //}\r\n if (commAct.replyToId > 0 )\r\n {\r\n eTile.replyId = commAct.replyToId;\r\n }\r\n /*\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commMsg.receiverInfo)) {\r\n * eTile.receiverSitUserId = commMsg.receiverInfo.receiverSitUserId;\r\n * }\r\n */\r\n if (commAct.sender.sitUserId > 0 )\r\n {\r\n eTile.senderSitUserId = commAct.sender.sitUserId;\r\n }\r\n if (commAct.signedInUserId > 0 )\r\n {\r\n eTile.signedInUserId = commAct.signedInUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commAct.unit ) )\r\n {\r\n eTile.unit = commAct.unit;\r\n }\r\n }\r\n\r\n return ( this.eNoteTile = eTile );\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyFromCommunicationActivityToProfileTile ( commMsg : CommunicationActivity ) : ProfileTile\r\n {\r\n // debugger; //In copyServcie\r\n const pTile = new ProfileTile();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg ) )\r\n {\r\n // debugger;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.boxName ) )\r\n // {\r\n // eTile.boxName = commMsg.boxName;\r\n // }\r\n // if ( commMsg.commActivityId > 0 )\r\n // {\r\n // eTile.commActivityId = commMsg.commActivityId;\r\n // }\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commMsg.communicationType ))\r\n // {\r\n // eTile.communicationType = commMsg.communicationSubType;\r\n // }\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.communicationSubType ) )\r\n // {\r\n // eTile.communicationSubType = commMsg.communicationSubType;\r\n // }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.date ) )\r\n {\r\n pTile.date = commMsg.date;\r\n pTile.heartbeat.date = commMsg.date;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.isOnline ) )\r\n {\r\n pTile.isOnline = commMsg.isOnline;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.heading ) )\r\n {\r\n pTile.heading = commMsg.heading;\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.latitude ) )\r\n {\r\n pTile.heartbeat.latitude = commMsg.latitude;\r\n pTile.latitude = commMsg.latitude.toString();\r\n \r\n // pTile.latitude = JSON.stringify(commMsg.latitude);\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.longitude ) )\r\n {\r\n pTile.heartbeat.longitude = commMsg.longitude;\r\n pTile.longitude = commMsg.longitude.toString();\r\n }\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.sentPic ) )\r\n {\r\n pTile.primaryImage = commMsg.sentPic;\r\n }\r\n if ( commMsg.index >= 0 )\r\n {\r\n pTile.index = commMsg.index;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.isOnline ) )\r\n {\r\n pTile.isOnline = commMsg.isOnline;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.isPremiumMember ) )\r\n {\r\n pTile.isPremiumMember = commMsg.isPremiumMember;\r\n }\r\n\r\n if ( commMsg.latitude !== 0 )\r\n {\r\n pTile.latitude = commMsg.latitude.toString();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.link ) )\r\n {\r\n pTile.link = commMsg.link;\r\n }\r\n if ( commMsg.longitude !== 0 )\r\n {\r\n pTile.longitude = commMsg.longitude.toString();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.messageBody ) )\r\n {\r\n pTile.neighborhood = commMsg.messageBody;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.pElemId ) )\r\n {\r\n pTile.pElemId = commMsg.pElemId;\r\n }\r\n //if ( commMsg.photoId > 0 )\r\n //{\r\n // pTile.photoId = commMsg.photoId;\r\n //}\r\n\r\n /*\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(commMsg.receiverInfo)) {\r\n * eTile.receiverSitUserId = commMsg.receiverInfo.receiverSitUserId;\r\n * }\r\n */\r\n if (commMsg.sender.sitUserId > 0) {\r\n pTile.sitUserId = commMsg.sender.sitUserId;\r\n pTile.heartbeat.sitUserId = commMsg.sender.sitUserId;\r\n }\r\n else if (commMsg.sitUserId > 0) {\r\n pTile.sitUserId = commMsg.sitUserId;\r\n }\r\n if ( commMsg.signedInUserId > 0 )\r\n {\r\n pTile.signedInUserId = commMsg.signedInUserId;\r\n pTile.heartbeat.signedInUserId = commMsg.signedInUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commMsg.unit ) )\r\n {\r\n pTile.unit = commMsg.unit;\r\n }\r\n }\r\n\r\n return ( this.profileTile = pTile );\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromENoteTileToProfileTile(eNoteTile: ENoteTile): ProfileTile {\r\n // debugger; //In copyServcie\r\n const pTile = new ProfileTile();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile)) {\r\n // debugger;\r\n\r\n if (eNoteTile.age > 0) {\r\n pTile.age = eNoteTile.age;\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.away)) {\r\n pTile.offOn.away = eNoteTile.away;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.awayId)) {\r\n pTile.offOn.awayId = eNoteTile.awayId;\r\n }\r\n if (eNoteTile.beginIndex > 0) {\r\n pTile.beginIndex = eNoteTile.beginIndex;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.city)) {\r\n pTile.city = eNoteTile.city;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.countryCode)) {\r\n pTile.countryCode = eNoteTile.countryCode;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.date)) {\r\n pTile.date = eNoteTile.date;\r\n }\r\n if (eNoteTile.distance > 0) {\r\n pTile.distance = eNoteTile.distance;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.distanceStr)) {\r\n pTile.distanceStr = eNoteTile.distanceStr;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.heading)) {\r\n pTile.heading = eNoteTile.heading;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.id)) {\r\n pTile.id = eNoteTile.id;\r\n }\r\n pTile.isImageRendered = eNoteTile.isImageRendered;\r\n pTile.isOnline = eNoteTile.isOnline;\r\n pTile.isPremiumMember = eNoteTile.isPremiumMember;\r\n pTile.isTileSetupComplete = eNoteTile.isTileSetupComplete;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.image)) {\r\n pTile.primaryImage = eNoteTile.image;\r\n }\r\n if (eNoteTile.index >= 0) {\r\n pTile.index = eNoteTile.index;\r\n }\r\n if (eNoteTile.latitude !== 0) {\r\n pTile.latitude = eNoteTile.latitude.toString();\r\n pTile.heartbeat.latitude = eNoteTile.latitude;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.link)) {\r\n pTile.link = eNoteTile.link;\r\n }\r\n if (eNoteTile.longitude !== 0) {\r\n pTile.longitude = eNoteTile.longitude.toString();\r\n pTile.heartbeat.longitude = eNoteTile.longitude;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.neighborhood)) {\r\n pTile.neighborhood = eNoteTile.neighborhood;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.pElemId)) {\r\n pTile.pElemId = eNoteTile.pElemId;\r\n }\r\n if (eNoteTile.photoId > 0) {\r\n pTile.photoId = eNoteTile.photoId;\r\n }\r\n if (eNoteTile.profileId > 0) {\r\n pTile.profileId = eNoteTile.profileId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.profileName) && eNoteTile.profileName.length > 0) {\r\n pTile.profileName = eNoteTile.profileName;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.regionCode)) {\r\n pTile.regionCode = eNoteTile.regionCode;\r\n }\r\n if (eNoteTile.senderSitUserId > 0) {\r\n pTile.sitUserId = eNoteTile.senderSitUserId;\r\n }\r\n if (eNoteTile.signedInUserId > 0) {\r\n pTile.signedInUserId = eNoteTile.signedInUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(eNoteTile.unit)) {\r\n pTile.unit = eNoteTile.unit;\r\n }\r\n }\r\n\r\n this.eNoteTile = eNoteTile;\r\n return (this.profileTile = pTile);\r\n }\r\n // --------------------------------------------------------------\r\n static copyFromProfileTileToUpgradedTile ( destTile : UpgradedTile, sourceTile : ProfileTile ) : UpgradedTile\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destTile ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile ) )\r\n {\r\n if ( sourceTile.age > 0 )\r\n {\r\n destTile.age = sourceTile.age;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sourceTile.offOn)) {\r\n destTile.offOn = this.copyOffOnIfExists(destTile.offOn, sourceTile.offOn);\r\n } \r\n if ( sourceTile.beginIndex && sourceTile.beginIndex > 0 )\r\n {\r\n destTile.beginIndex = sourceTile.beginIndex;\r\n }\r\n if ( sourceTile.city && sourceTile.city.length > 0 )\r\n {\r\n destTile.city = sourceTile.city;\r\n }\r\n if ( sourceTile.countryCode && sourceTile.countryCode.length > 0 )\r\n {\r\n destTile.countryCode = sourceTile.countryCode;\r\n }\r\n if ( sourceTile.date && sourceTile.date.length > 0 )\r\n {\r\n destTile.date = sourceTile.date;\r\n }\r\n \r\n if ( sourceTile.dob != null && sourceTile.dob != null )\r\n {\r\n destTile.dob = sourceTile.dob;\r\n }\r\n if ( sourceTile.gender && sourceTile.gender.length > 0 )\r\n {\r\n destTile.gender = sourceTile.gender;\r\n }\r\n if ( sourceTile.heading && sourceTile.heading.length > 0 )\r\n {\r\n destTile.heading = sourceTile.heading;\r\n }\r\n if ( sourceTile.heartbeat.prevHeartbeat > 0 )\r\n {\r\n destTile.heartbeat.prevHeartbeat = sourceTile.heartbeat.prevHeartbeat;\r\n }\r\n if ( sourceTile.heartbeat )\r\n {\r\n destTile.heartbeat = sourceTile.heartbeat;\r\n }\r\n if ( sourceTile.id && sourceTile.id.length > 0 )\r\n {\r\n destTile.id = sourceTile.id;\r\n }\r\n if (sourceTile.primaryImage && sourceTile.primaryImage.length > 0 )\r\n {\r\n destTile.primaryImage = sourceTile.primaryImage;\r\n }\r\n if ( sourceTile.index > -1 )\r\n {\r\n destTile.index = sourceTile.index;\r\n }\r\n if ( sourceTile.isImageRendered )\r\n {\r\n destTile.isImageRendered = sourceTile.isImageRendered.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n }\r\n if ( sourceTile.isOnline )\r\n {\r\n destTile.isOnline = sourceTile.isOnline.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n }\r\n if ( sourceTile.isPremiumMember )\r\n {\r\n destTile.isPremiumMember = sourceTile.isPremiumMember.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n }\r\n if ( sourceTile.isTileSetupComplete )\r\n {\r\n destTile.isTileSetupComplete = sourceTile.isTileSetupComplete.toString().toLowerCase().indexOf( 'true' ) !== -1;\r\n }\r\n if (sourceTile.latitude != null && sourceTile.latitude.length !== 1 )\r\n {\r\n destTile.latitude = sourceTile.latitude;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( sourceTile.link ) && sourceTile.link.length > 0 && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( destTile.link ) )\r\n {\r\n destTile.link = sourceTile.link;\r\n } else\r\n {\r\n destTile.link = 'view/';\r\n }\r\n\r\n if (sourceTile.longitude != null && sourceTile.longitude.length !== 1 )\r\n {\r\n destTile.longitude = sourceTile.longitude;\r\n }\r\n if ( sourceTile.neighborhood && sourceTile.neighborhood.length > 0 )\r\n {\r\n destTile.neighborhood = sourceTile.neighborhood;\r\n }\r\n\r\n if ( sourceTile.pElemId && sourceTile.pElemId.length > 0 )\r\n {\r\n destTile.pElemId = sourceTile.pElemId;\r\n }\r\n if ( sourceTile.position && sourceTile.position.length > 0 && destTile.position != null )\r\n {\r\n destTile.position = sourceTile.position;\r\n }\r\n if ( sourceTile.profileId && sourceTile.profileId > 0 )\r\n {\r\n destTile.profileId = sourceTile.profileId;\r\n }\r\n if ( sourceTile.profileName && sourceTile.profileName.length > 0 )\r\n {\r\n destTile.profileName = sourceTile.profileName;\r\n }\r\n if ( sourceTile.regionCode && sourceTile.regionCode.length > 0 )\r\n {\r\n destTile.regionCode = sourceTile.regionCode;\r\n }\r\n if ( sourceTile.sexuality && sourceTile.sexuality.length > 0 )\r\n {\r\n destTile.sexuality = sourceTile.sexuality;\r\n }\r\n \r\n if ( sourceTile.sitUserId != null && sourceTile.sitUserId > 0 )\r\n {\r\n destTile.sitUserId = sourceTile.sitUserId;\r\n }\r\n if ( sourceTile.signedInUserId != null && sourceTile.signedInUserId > 0 )\r\n {\r\n destTile.signedInUserId = sourceTile.signedInUserId;\r\n }\r\n if ( sourceTile.sitUserKey != null )\r\n {\r\n destTile.sitUserKey = sourceTile.sitUserKey;\r\n }\r\n if ( sourceTile.signedInUserId != null && sourceTile.signedInUserId > 0 )\r\n {\r\n destTile.signedInUserId = sourceTile.signedInUserId;\r\n }\r\n if ( sourceTile.signedInUserKey != null )\r\n {\r\n destTile.signedInUserKey = sourceTile.signedInUserKey;\r\n } \r\n }\r\n return destTile;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromHeartbeatToProfileTile(pTile: ProfileTile, hb: Heartbeat): ProfileTile {\r\n // debugger; //In copyServcie\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n pTile = new ProfileTile();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb)) {\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.city)) {\r\n pTile.city = hb.city;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.country)) {\r\n pTile.countryCode = hb.country;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.date)) {\r\n pTile.date = hb.date;\r\n }\r\n if (hb.distance > 0) {\r\n pTile.distance = hb.distance;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.distanceStr)) {\r\n pTile.distanceStr = hb.distanceStr;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.gender)) {\r\n pTile.gender = hb.gender;\r\n }\r\n\r\n pTile.heartbeat = hb;\r\n\r\n if (hb.id > 0) {\r\n pTile.id = hb.id.toString();\r\n }\r\n if (hb.prevHeartbeat > 0) {\r\n pTile.heartbeat.prevHeartbeat = hb.prevHeartbeat;\r\n }\r\n if ( hb.heartbeatTime > 0 )\r\n {\r\n pTile.heartbeat.prevHeartbeat = hb.heartbeatTime;\r\n }\r\n pTile.isOnline = hb.isOnline;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.jsDateForCs)) {\r\n pTile.jsDateForCs = hb.jsDateForCs;\r\n }\r\n if (hb.latitude !== 0) {\r\n pTile.latitude = hb.latitude.toString();\r\n }\r\n if (hb.longitude !== 0) {\r\n pTile.longitude = hb.longitude.toString();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.neighborhood)) {\r\n pTile.neighborhood = hb.neighborhood;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hb.regionCode)) {\r\n pTile.regionCode = hb.regionCode;\r\n }\r\n if (hb.sitUserId > 0) {\r\n pTile.sitUserId = hb.sitUserId;\r\n }\r\n if ( hb.signedInUserId > 0 )\r\n {\r\n pTile.signedInUserId = hb.signedInUserId;\r\n }\r\n }\r\n\r\n return pTile;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromPagerBreadcrumToPager(pbc: PagerBreadcrum): Pager {\r\n // debugger; //In copyServcie\r\n const pager = new Pager();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbc)) {\r\n // debugger;\r\n\r\n if (pbc.pageSize > 0) {\r\n pager.pageSize = pbc.pageSize;\r\n }\r\n if (pbc.currentPage > 0) {\r\n pager.currentPageNo = pbc.currentPage;\r\n }\r\n /*\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbc.currentBrdCrmPage)) {\r\n * pager.currentBrdCrmPage = pbc.currentBrdCrmPage;\r\n * }\r\n * if (pbc.nextPage > 0) {\r\n * pager.nextPage = pbc.nextPage;\r\n * }\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbc.nextBrdCrmPage)) {\r\n * pager.nextBrdCrmPage = pbc.nextBrdCrmPage;\r\n * }\r\n * if (pbc.previousPage > 0) {\r\n * pager.previousPage = pbc.previousPage;\r\n * }\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbc.previousBrdCrmPage)) {\r\n * pager.previousBrdCrmPage = pbc.previousBrdCrmPage;\r\n * }\r\n */\r\n if (pbc.totalPagedBlocks > 0) {\r\n pager.totalPages = pbc.totalPagedBlocks;\r\n }\r\n if ( pbc.pagedStartPage > 0) {\r\n pager.startPageNo = pbc.pagedStartPage;\r\n }\r\n if ( pbc.pagedEndPage > 0) {\r\n pager.endPageNo = pbc.pagedEndPage;\r\n }\r\n if ( pbc.pagedStartIndex > 0) {\r\n pager.startIndex = pbc.pagedStartIndex;\r\n }\r\n if ( pbc.pagedEndIndex > 0) {\r\n pager.endIndex = pbc.pagedEndIndex;\r\n }\r\n if (pbc.totalItems > 0) {\r\n pager.totalItems = pbc.totalItems;\r\n }\r\n if (pbc.pagedPages.length >= 0) {\r\n pager.pages = pbc.pagedPages;\r\n }\r\n }\r\n this.pagerBrdCrm = pbc;\r\n this.pager = pager;\r\n return this.pager;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyFromPagerBreadcrumToPagerPhotoMgmt(pbc: PagerBreadcrum): PagerPhotoMgmt {\r\n // debugger; //In copyServcie\r\n const pagerPhotoMgmt = new PagerPhotoMgmt();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbc)) {\r\n // debugger;\r\n\r\n if (pbc.pageSize > 0) {\r\n pagerPhotoMgmt.pageSize = pbc.pageSize;\r\n }\r\n if (pbc.currentPage > 0) {\r\n pagerPhotoMgmt.currentPageNo = pbc.currentPage;\r\n }\r\n /*\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbc.currentBrdCrmPage)) {\r\n * pager.currentBrdCrmPage = pbc.currentBrdCrmPage;\r\n * }\r\n * if (pbc.nextPage > 0) {\r\n * pager.nextPage = pbc.nextPage;\r\n * }\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbc.nextBrdCrmPage)) {\r\n * pager.nextBrdCrmPage = pbc.nextBrdCrmPage;\r\n * }\r\n * if (pbc.previousPage > 0) {\r\n * pager.previousPage = pbc.previousPage;\r\n * }\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbc.previousBrdCrmPage)) {\r\n * pager.previousBrdCrmPage = pbc.previousBrdCrmPage;\r\n * }\r\n */\r\n if (pbc.totalPagedBlocks > 0) {\r\n pagerPhotoMgmt.totalPages = pbc.totalPagedBlocks;\r\n }\r\n if ( pbc.pagedStartPage > 0) {\r\n pagerPhotoMgmt.startPageNo = pbc.pagedStartPage;\r\n }\r\n if ( pbc.pagedEndPage > 0) {\r\n pagerPhotoMgmt.endPageNo = pbc.pagedEndPage;\r\n }\r\n if ( pbc.pagedStartIndex > 0) {\r\n pagerPhotoMgmt.startItemNo = pbc.pagedStartIndex;\r\n }\r\n if ( pbc.pagedEndIndex > 0) {\r\n pagerPhotoMgmt.endItemNo = pbc.pagedEndIndex;\r\n }\r\n if (pbc.totalItems > 0) {\r\n pagerPhotoMgmt.totalItems = pbc.totalItems;\r\n }\r\n if ( pbc.pagedPages.length >= 0) {\r\n pagerPhotoMgmt.pages = pbc.pagedPages;\r\n }\r\n pagerPhotoMgmt.currentItem = this.CopyFromBreadCrumKvToKvPhoto(pbc.currentBrdCrmPage);\r\n pagerPhotoMgmt.previousItem = this.CopyFromBreadCrumKvToKvPhoto(pbc.previousBrdCrmPage);\r\n pagerPhotoMgmt.nextItem = this.CopyFromBreadCrumKvToKvPhoto(pbc.nextBrdCrmPage);\r\n }\r\n this.pagerBrdCrm = pbc;\r\n this.pagerPhotoMgmt = pagerPhotoMgmt;\r\n return this.pagerPhotoMgmt;\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO: the conversion may be faulty! Verify that its correct.\r\n // ---------------------------------------------------------------\r\n static CopyFromBreadCrumKvToKvPhoto ( mcl: ModuleComponentLoader ): KvPhoto\r\n {\r\n const kvPhoto = new KvPhoto();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( mcl ) )\r\n {\r\n kvPhoto.index = mcl.index;\r\n kvPhoto.key = mcl.componentName;\r\n kvPhoto.sitUserId = mcl.id;\r\n kvPhoto.value = mcl.url;\r\n }\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------\r\n static CopyFromBreadCrumKvToKvPhotoOld(bcKvAny: BrdCrmKvAny): KvPhoto {\r\n const kvPhoto = new KvPhoto();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(bcKvAny)) {\r\n kvPhoto.date = bcKvAny.date;\r\n kvPhoto.index = bcKvAny.index;\r\n kvPhoto.key = bcKvAny.key;\r\n kvPhoto.sitUserId = bcKvAny.sitUserId;\r\n kvPhoto.value = bcKvAny.value;\r\n }\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromProfileImageArrToKvPhotoArr(pImages: ProfileImage[]): KvPhoto[] {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pImages ) && pImages.length > 0 )\r\n {\r\n const outKvPhotoArr: KvPhoto[] = [];\r\n\r\n pImages.map( ( e ) =>\r\n {\r\n outKvPhotoArr.push( this.copyFromProfileImageToKvPhoto( e ) );\r\n } );\r\n return outKvPhotoArr;\r\n }\r\n else\r\n {\r\n return [];\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromProfileImageDictionaryToKvPhotoArr(pImages: Dictionary): KvPhoto[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pImages) && pImages.size > 0) {\r\n const outKvPhotoArr: KvPhoto[] = [];\r\n\r\n pImages.values().map((e) => {\r\n outKvPhotoArr.push(this.copyFromProfileImageToKvPhoto(e));\r\n });\r\n return outKvPhotoArr;\r\n }\r\n else\r\n {\r\n return [];\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromProfileImageDictionaryToKvPhotoDictionary(pImages: Dictionary): Dictionary {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pImages ) && pImages.size > 0 )\r\n {\r\n const outKvPhotoDictionary: Dictionary = new Dictionary();\r\n\r\n pImages.values().map( ( e ) =>\r\n {\r\n outKvPhotoDictionary.set( e.sitUserId, this.copyFromProfileImageToKvPhoto( e ) );\r\n } );\r\n return outKvPhotoDictionary;\r\n }\r\n else\r\n {\r\n return new Dictionary();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromKvPhotoToPhoto(pkv: KvPhoto): Photo {\r\n // debugger; //In copyServcie\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pkv ) )\r\n {\r\n const photo = new Photo();\r\n // debugger;\r\n photo.copy(pkv);\r\n // debugger;\r\n // photo.copyIfExists(pkv);\r\n\r\n // photo.cryptUserKey = pkv.cryptUserKey; // need to be changed by caller\r\n // photo.date = pkv.date;\r\n // photo.entityName = pkv.entityName;\r\n // photo.description = pkv.description;\r\n // photo.imageBytes = pkv.imageBytes;\r\n // photo.imageString = pkv.image;\r\n // photo.pic = pkv.value;\r\n // photo.isPrimary = pkv.isPrimary;\r\n // photo.isUnlocked = pkv.isUnlocked;\r\n // photo.privacy = pkv.privacy;\r\n // photo.photoId = pkv.photoId;\r\n // photo.photoBnId = pkv.photoBnId;\r\n // photo.profileId = pkv.profileId;\r\n // photo.sitUserId = pkv.sitUserId;\r\n // photo.sitUserKey = pkv.sitUserKey;\r\n // photo.title = pkv.title;\r\n // debugger;\r\n\r\n return photo;\r\n }\r\n else\r\n {\r\n return new Photo();\r\n }\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyFromLoginSuccessToKvPhoto ( loginSuccess: LoginSuccess ): KvPhoto\r\n {\r\n // debugger; //In copyServcie\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( loginSuccess ) )\r\n {\r\n const kvPhoto = new KvPhoto();\r\n\r\n kvPhoto.cryptUserKey = loginSuccess.cryptUserKey;\r\n kvPhoto.entityName = 'primaryImage';\r\n kvPhoto.description = 'primaryImage';\r\n kvPhoto.image = loginSuccess.primaryImageUrl;\r\n kvPhoto.index = -1;\r\n kvPhoto.itemNum = 1;\r\n // debugger;\r\n kvPhoto.isPrimary = true;\r\n kvPhoto.isPrivate = false;\r\n kvPhoto.photoBnId = loginSuccess.primaryPhotoBnId; // TODO: watch the effect of changing photoId to photoBnId\r\n // debugger;\r\n kvPhoto.glyphName = 'primary';\r\n kvPhoto.privacy = 'public';\r\n kvPhoto.key = 'primary'; // kvPhoto.photoBnId.toString(); // 'primary';// kvPhoto.photoId.toString(); // loginSuccess.profileName;\r\n kvPhoto.sitUserId = loginSuccess.signedInUserId;\r\n kvPhoto.sitUserKey = loginSuccess.signedInUserKey;\r\n kvPhoto.title = 'primary image';\r\n kvPhoto.value = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(loginSuccess.primaryImage) ? loginSuccess.primaryImage\r\n : !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(loginSuccess.primaryImageUrl) ? loginSuccess.primaryImageUrl\r\n : '/assets/photos/DefaultImageMale.jpg';\r\n return kvPhoto;\r\n }\r\n else\r\n {\r\n return new KvPhoto();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromPhotoToKvPhoto(p: Photo): KvPhoto {\r\n // debugger; //In copyServcie\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( p ) )\r\n {\r\n let kvPhoto = new KvPhoto();\r\n // debugger;\r\n kvPhoto = kvPhoto.copySourceToDestination(kvPhoto, p as KvPhoto);\r\n // debugger;\r\n kvPhoto.entityName = 'Photo';\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.imageString)) {\r\n kvPhoto.imageString = p?.formData?.get('fileContents') as string;\r\n\t\t\t}\r\n \r\n kvPhoto.index = -1;\r\n kvPhoto.glyphName = p.isPrimary === true ? 'primary' : p.privacy; // Note: important!!\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.image) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.pic)) {\r\n kvPhoto.image = p.pic.length > 0 ? p.pic : '';\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.pic) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.image)) {\r\n kvPhoto.pic = p.image.length > 0 ? p.image : '';\r\n }\r\n kvPhoto.key = ''; // has to be provided by the PhotoBnService's getUserPhotoByPhotoBnId()\r\n kvPhoto.value = p.pic && p.pic.length > 5 ? p.pic : p.imageString && p.imageString.length > 0 ? p.imageString : kvPhoto.image;\r\n\r\n //kvPhoto.cryptUserKey = p.cryptUserKey; // need to be changed by caller\r\n //kvPhoto.date = p.date;\r\n //// kvPhoto.elemId = p.elemId;\r\n //kvPhoto.entityName = 'Photo';\r\n //kvPhoto.description = p.description;\r\n //kvPhoto.imageString = p.formData.get('fileContents') as string;\r\n //kvPhoto.glyphName = p.isPrimary === true ? 'primary' : p.privacy; // Note: important!!\r\n //kvPhoto.image = p.imageString && p.imageString.length > 0 ? p.imageString : p.pic && p.pic.length > 5 ? p.pic : '';\r\n //kvPhoto.index = -1;\r\n //kvPhoto.isPrimary = p.isPrimary;\r\n //kvPhoto.isPrivate = p.privacy.toLowerCase().indexOf('private') !== -1 ? true : false;\r\n //kvPhoto.key = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(p.photoBnId) ? p.photoBnId.toString() : ''; // has to be provided by the PhotoBnService's getUserPhotoByPhotoBnId()\r\n //kvPhoto.photoId = p.photoId;\r\n //kvPhoto.photoBnId = p.photoBnId;\r\n //kvPhoto.privacy = p.privacy;\r\n //kvPhoto.profileId = p.profileId;\r\n //kvPhoto.sitUserId = p.sitUserId;\r\n //kvPhoto.sitUserKey = p.sitUserKey;\r\n //kvPhoto.title = p.title;\r\n //kvPhoto.value = p.pic && p.pic.length > 5 ? p.pic : p.imageString && p.imageString.length > 0 ? p.imageString : kvPhoto.image;\r\n // debugger; \r\n return kvPhoto;\r\n }\r\n else\r\n {\r\n return new KvPhoto();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromProfileImageToPhoto(pImage: ProfileImage): Photo {\r\n // debugger; //In copyServcie\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pImage)) {\r\n const photo = new Photo();\r\n\r\n photo.approval = pImage.approval;\r\n photo.cryptUserKey = pImage.cryptUserKey; // need to be changed by caller\r\n photo.date = pImage.date;\r\n photo.description = pImage.description;\r\n photo.pic = pImage.image;\r\n photo.imageBytes = pImage.imageBytes;\r\n // photo.index = -1;\r\n photo.isPrimary = pImage.isPrimary;\r\n photo.privacy = pImage.privacy;\r\n // kvPhoto.key = pImage.photoId.toString(); //can be changed to something else by caller\r\n photo.photoId = pImage.photoId;\r\n // photo.profileId = pImage.profileId;\r\n photo.sitUserId = pImage.sitUserId;\r\n photo.sitUserKey = pImage.sitUserKey;\r\n photo.sourceId = pImage.sourceId;\r\n photo.sourceType = pImage.sourceType;\r\n photo.title = pImage.title;\r\n /*\r\n * kvPhoto.value = pImage.image;\r\n * photo.fileContents = pImage.imageFile?.FileContents?.toString().length > 0 ? pImage.imageFile.FileContents: '';\r\n * var file = StringServiceStatic.saveToFileSystem(pImage.imageFile.FileContents,\r\n * File(pImage.imageFile.FileContents, pImage.imageFile.FileDownloadName);\r\n * pImage.imageFile.FileDownloadName, 'image/png');\r\n * localStorage.setItem(pImage.sitUserId.toString(), JSON.stringify(file));\r\n * debugger;\r\n */\r\n return photo;\r\n }\r\n else\r\n {\r\n return new Photo();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public static photoModelToCamelCasedString (m : string) : any {\r\n let camelCased = \"\";\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(m)) {\r\n camelCased = JSON.stringify(this.photoModelToCamelCasedModel(m)); \r\n }\r\n return camelCased;\r\n }\r\n // ---------------------------------------------------------------\r\n public static photoModelToCamelCasedModel (m : string) : any {\r\n let camelCased: any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(m)) {\r\n let photoModel = JSON.parse(m) as Photo;\r\n debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoModel)) {\r\n camelCased = CopyServiceStatic.camelCasedPhotoModel(photoModel);\r\n \r\n }\r\n }\r\n return camelCased;\r\n }\r\n // ---------------------------------------------------------------\r\n static camelCasedPhotoModel (inModel : Photo) : Photo {\r\n let outModel : Photo = new Photo;\r\n return this.copyFromServerPhotoToClientPhoto(outModel, inModel);\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromServerPhotoToClientPhoto(to: Photo, that: any): Photo {\r\n to.approval = that.Approval?.length > 0 ? that.Approval : '';\r\n to.contentType = that.ContentType;\r\n to.cryptUserKey = that.CryptUserKey;\r\n to.date = that.Date;\r\n to.description = that.Description;\r\n to.file = that.File; // TODO: warning for possible missing proterty\r\n // to.formData = that IFormFile;\r\n to.id = that.Id;\r\n to.image = that.Image;\r\n to.imageBytes = that.ImageBytes;\r\n to.imageString = that.ImageString;\r\n to.isPrimary = that.IsPrimary ? that.IsPrimary : false;\r\n to.latitude = that.Latitude;\r\n to.longitude = that.Longitude;\r\n to.location = that.Location;\r\n to.path = that.Path;\r\n to.itemNum = that.itemNum > 0 ? that.itemNum : -1;\r\n to.pic = that.pic; // Note: thisis the only lower case property on the server/back-end\r\n to.photoId = that.PhotoId;\r\n to.privacy = that.Privacy?.length > 0 ? that.Privacy : '';\r\n to.profileId = that.ProfileId;\r\n to.sitUserId = that.SITUserId;\r\n to.sitUserKey = that.SITUserKey;\r\n // debugger;\r\n to.signedInUserId = that.SignedInUserId;\r\n to.sourceId = that.SourceId;\r\n to.sourceType = that.SourceType;\r\n to.title = that.Title;\r\n to.url = that.Url;\r\n return to;\r\n }\r\n // ---------------------------------------------------------------\r\n static camelCasedPhotoBnModel (inModel : PhotoBn) : PhotoBn {\r\n let outModel : PhotoBn = new PhotoBn;\r\n return this.copyFromServerPhotoBnToClientPhotoBn(outModel, inModel);\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromServerPhotoBnToClientPhotoBn (to : PhotoBn, that : any) : PhotoBn {\r\n to.approval = that.Approval?.length > 0 ? that.Approval : '';\r\n to.box = that.Box;\r\n to.contentType = that.ContentType;\r\n to.cryptUserKey = that.CryptUserKey;\r\n to.date = that.Date;\r\n to.description = that.Description;\r\n to.distance = that.Distance;\r\n to.enctype = that.Enctype;\r\n to.file = that.File; // TODO: warning for possible missing proterty\r\n // to.formData = that IFormFile;\r\n to.id = that.Id;\r\n to.image = that.Image;\r\n to.imageBytes = that.ImageBytes;\r\n to.imageString = that.ImageString;\r\n to.isPrimary = that.IsPrimary ? that.IsPrimary : false;\r\n to.latitude = that.Latitude;\r\n to.longitude = that.Longitude;\r\n to.location = that.Location;\r\n to.nonce = that.Nonce;\r\n to.path = that.Path;\r\n to.itemNum = that.pageNo > 0 ? that.pageNo : -1;\r\n to.pic = that.pic; \r\n to.photoId = that.PhotoId;\r\n to.photoBnId = that.PhotoBnId;\r\n to.privacy = that.Privacy?.length > 0 ? that.Privacy : '';\r\n to.profileId = that.ProfileId;\r\n to.sitUserId = that.SITUserId;\r\n to.sitUserKey = that.SITUserKey;\r\n // debugger;\r\n to.signedInUserId = that.SignedInUserId;\r\n to.sourceId = that.SourceId;\r\n to.sourceType = that.SourceType;\r\n to.title = that.Title;\r\n to.url = that.Url;\r\n return to;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromServerPhotoBnToClientPhoto ( to: Photo, that: any): Photo\r\n {\r\n to.approval = that.Approval?.length > 0 ? that.Approval : '';\r\n to.contentType = that.ContentType;\r\n to.cryptUserKey = that.CryptUserKey;\r\n to.date = that.Date;\r\n to.description = that.Description;\r\n to.file = that.File; // TODO: warning for possible missing proterty\r\n // to.formData = that IFormFile;\r\n to.id = that.Id;\r\n to.imageBytes = that.Image;\r\n to.imageString = that.ImageString;\r\n to.isPrimary = that.IsPrimary ? that.IsPrimary : false;\r\n to.itemNum = that.itemNum > 0 ? that.itemNum : -1;\r\n to.latitude = that.Latitude;\r\n to.location = that.Location;\r\n to.longitude = that.Longitude;\r\n to.path = that.Path;\r\n to.photoId = that.PhotoId;\r\n to.pic = that.Pic;\r\n to.privacy = that.Privacy?.length > 0 ? that.Privacy : '';\r\n to.profileId = that.ProfileId;\r\n to.sitUserId = that.SITUserId;\r\n to.sitUserKey = that.SITUserKey;\r\n // debugger;\r\n to.signedInUserId = that.SignedInUserId;\r\n to.sourceId = that.SourceId;\r\n to.sourceType = that.SourceType;\r\n to.title = that.Title;\r\n to.url = that.Url;\r\n return to;\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromPhotoBnToClientPhoto ( to: Photo, that: PhotoBn ): Photo\r\n {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(to)) {\r\n to = new Photo();\r\n }\r\n //debugger;\r\n //to.cloneIfExists(that as Photo);\r\n //debugger;\r\n //return to;\r\n\r\n to.approval = that.approval?.length > 0 ? that.approval : '';\r\n to.contentType = that.contentType;\r\n to.cryptUserKey = that.cryptUserKey;\r\n to.date = that.date;\r\n to.description = that.description;\r\n to.file = that.file;\r\n to.formData = that.formData;\r\n to.id = that.id;\r\n to.image = that.image;\r\n to.imageBytes = that.imageBytes;\r\n to.imageString = that.imageString;\r\n to.isPrimary = that.isPrimary;\r\n to.latitude = that.latitude;\r\n to.longitude = that.longitude;\r\n to.location = that.location;\r\n to.path = that.path;\r\n to.itemNum = that.itemNum > 0 ? that.itemNum : -1;\r\n to.pic = that.pic;\r\n to.photoId = that.photoId;\r\n to.privacy = that.privacy?.length > 0 ? that.privacy : '';\r\n to.profileId = that.profileId;\r\n to.sitUserId = that.sitUserId;\r\n to.sitUserKey = that.sitUserKey;\r\n // debugger;\r\n to.signedInUserId = that.signedInUserId;\r\n to.sourceId = that.sourceId;\r\n to.sourceType = that.sourceType;\r\n to.title = that.title;\r\n to.url = that.url;\r\n return to;\r\n }\r\n // ---------------------------------------------------------------\r\n // Deprecated!\r\n // ---------------------------------------------------------------\r\n //static copyFromPhotoBnToKvPhoto ( to : KvPhoto, that : PhotoBn ): KvPhoto\r\n //{\r\n // let p : Photo = new Photo();\r\n // let kvp : KvPhoto = new KvPhoto();\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(to)) {\r\n // to = new KvPhoto();\r\n // }\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(that)) {\r\n // // debugger;\r\n // p = p.copyIfExists(that as Photo);\r\n // kvp = kvp.copyIfExists(p as KvPhoto);\r\n // to.copyIfExists(kvp as KvPhoto);\r\n // // debugger;\r\n // to.glyphName = that.isPrimary === true ? 'primary' : that.privacy; // Note: important!! // to hold the glyphName for privacy\r\n // to.isPrivate = that.privacy.toLowerCase().indexOf('private') !== -1 ? true : false;\r\n // to.key = that.photoBnId > 0 ? that.photoBnId.toString() : '';\r\n // to.value = that.pic && that.pic.length > 5 ? that.pic : that.image && that.image.length > 5 ? that.image : that.imageString.length > 5 ? that.imageString : to.image;\r\n\r\n // //to.cryptUserKey = that.cryptUserKey;\r\n // //to.date = that.date;\r\n // //to.description = that.description;\r\n // //to.elemId = '';\r\n // //to.entityName = 'PhotoBn';\r\n // //to.imageString =that.formData.get('fileContents') as string;\r\n // //to.glyphName = that.isPrimary === true ? 'primary' : that.privacy; // Note: important!! // to hold the glyphName for privacy\r\n // //to.image = that.image;\r\n // //to.imageBytes = that.imageBytes;\r\n // //to.isPrivate = that.privacy.toLowerCase().indexOf('private') !== -1 ? true : false;\r\n // //to.isUnlocked = false;\r\n // //to.index = -1;\r\n // //to.isPrimary = that.isPrimary;\r\n // //to.key = that.photoBnId > 0 ? that.photoBnId.toString() : '';\r\n // //to.itemNum = 0;\r\n // //to.photoId = that.photoId;\r\n // //to.photoBnId = that.photoBnId;\r\n // //to.profileId = that.profileId;\r\n // //to.privacy = that.privacy;\r\n // //to.returnUrl = '';\r\n // //to.sitUserId = that.sitUserId;\r\n // //to.sitUserKey = that.sitUserKey;\r\n // //to.title = that.title;\r\n // //to.value = that.pic && that.pic.length > 5 ? that.pic : that.image && that.image.length > 5 ? that.image : that.imageString.length > 5 ? that.imageString : to.image;\r\n // }\r\n // return to;\r\n // }\r\n // ---------------------------------------------------------------\r\n static copyFromProfileImageToKvPhoto(pImage: ProfileImage): KvPhoto {\r\n // debugger; //In copyServcie\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pImage)) {\r\n const kvPhoto = new KvPhoto();\r\n\r\n kvPhoto.cryptUserKey = pImage.cryptUserKey; // need to be changed by caller\r\n kvPhoto.date = pImage.date;\r\n kvPhoto.entityName = pImage.entityName;\r\n kvPhoto.description = pImage.description;\r\n kvPhoto.image = pImage.image;\r\n kvPhoto.imageBytes = pImage.imageBytes;\r\n kvPhoto.index = -1;\r\n // debugger;\r\n kvPhoto.isPrimary = pImage.isPrimary;\r\n // debugger;\r\n kvPhoto.glyphName = pImage.isPrimary === true ? 'primary' : pImage.privacy; // Note: important!!\r\n kvPhoto.privacy = pImage.privacy;\r\n kvPhoto.key = kvPhoto.glyphName; // TODO: confirm if it is correct/desired.\r\n kvPhoto.photoId = pImage.photoId;\r\n kvPhoto.photoBnId = pImage.photoBnId;\r\n kvPhoto.profileId = pImage.profileId;\r\n kvPhoto.sitUserId = pImage.sitUserId;\r\n kvPhoto.sitUserKey = pImage.sitUserKey;\r\n kvPhoto.title = pImage.title;\r\n kvPhoto.value = pImage.image;\r\n kvPhoto.imageString = pImage.imageFile?.FileContents?.toString().length > 0 ? pImage.imageFile.FileContents : '';\r\n /*\r\n * File(pImage.imageFile.FileContents, pImage.imageFile.FileDownloadName);\r\n * var file = StringServiceStatic.saveToFileSystem(pImage.imageFile.FileContents, pImage.imageFile.FileDownloadName, 'image/png');\r\n * localStorage.setItem(pImage.sitUserId.toString(), JSON.stringify(file));\r\n * debugger;\r\n */\r\n return kvPhoto;\r\n }\r\n else\r\n {\r\n return new KvPhoto();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromProfilePicsToKvPhotoArr(pPics: ProfilePics, sitUser: SitUser): KvPhoto[] {\r\n // debugger; //In copyServcie\r\n const kvPhotoD: KvPhoto[] = [];\r\n let i = 0;\r\n\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.images) &&\r\n pPics.images.length > 0 &&\r\n pPics.profileImageArr.length > 0 &&\r\n pPics.profileImageArr.length === pPics.images.length\r\n ) {\r\n const firstElem = pPics.profileImageArr[0];\r\n\r\n pPics.images.map((e) => {\r\n const kvPhoto = new KvPhoto();\r\n\r\n kvPhoto.cryptUserKey = pPics.sitUserId.toString(); // need to be changed by caller\r\n kvPhoto.date = pPics.date;\r\n kvPhoto.index = -1;\r\n kvPhoto.isPrimary = sitUser.primaryPhotoBnId === firstElem.photoId; // thisProfilePics.profileImageArr[i].isPrimary;\r\n kvPhoto.privacy = firstElem.privacy;\r\n kvPhoto.key = firstElem.photoId.toString(); // can be changed to something else by caller\r\n kvPhoto.photoId = firstElem.photoId;\r\n kvPhoto.photoBnId = firstElem.photoBnId;\r\n kvPhoto.profileId = pPics.profileId;\r\n kvPhoto.sitUserId = pPics.sitUserId;\r\n kvPhoto.value = e;\r\n // debugger;\r\n kvPhotoD.push(kvPhoto);\r\n i++;\r\n });\r\n }\r\n return kvPhotoD;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: 1) a similar method exists in stringService.profilePicsToKvPhotoArr()\r\n * 2) This method is duplicate in functionality as of copyFromProfilePicsToKvPhotoArr()\r\n * ---------------------------------------------------------------\r\n */\r\n static copyProfilePicsToKvPhotoArr ( profilePics : ProfilePics ) : KvPhoto[]\r\n {\r\n // debugger; //In copyServcie\r\n const tKvPhotoD : KvPhoto[] = [];\r\n let kvPhoto = new KvPhoto();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profilePics ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profilePics.profileImageArr ) && profilePics.profileImageArr.length > 0 )\r\n {\r\n const pImages = profilePics.profileImageArr;\r\n\r\n for ( let i = 0; i < pImages.length; i++ )\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pImages[ i ].image ) )\r\n {\r\n const item = pImages[ i ];\r\n\r\n kvPhoto = new KvPhoto();\r\n kvPhoto.cryptUserKey = item.cryptUserKey;\r\n kvPhoto.date = item.date;\r\n kvPhoto.description = item.description;\r\n kvPhoto.entityName = item.entityName;\r\n kvPhoto.index = i;\r\n kvPhoto.image = item.image;\r\n kvPhoto.imageBytes = item.imageBytes;\r\n kvPhoto.isPrimary = item.isPrimary;\r\n kvPhoto.privacy = item.privacy;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( item.photoId ) )\r\n {\r\n kvPhoto.key = item.photoId.toString();\r\n }\r\n kvPhoto.photoId = item.photoId;\r\n kvPhoto.photoBnId = item.photoBnId;\r\n kvPhoto.profileId = item.profileId;\r\n kvPhoto.sitUserId = item.sitUserId;\r\n kvPhoto.sitUserKey = item.sitUserKey;\r\n kvPhoto.title = item.title;\r\n kvPhoto.value = item.image; //JsRegExpServiceStatic.normalizeImageData( item.image ); // Note: Only destination/last method will manipulate the image for display\r\n // debugger;\r\n tKvPhotoD.push( kvPhoto );\r\n }\r\n }\r\n }\r\n return tKvPhotoD;\r\n }\r\n // ---------------------------------------------------------------\r\n // copyFromProfilePicsToKvPhotoDictionary(pPics: ProfilePics, sitUser: SitUser): Collections.Dictionary {\r\n // //debugger; //In copyServcie\r\n // var kvPhotoD: Collections.Dictionary = new Collections.Dictionary();\r\n // var i = 0;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.images)\r\n // && pPics.images.length > 0\r\n // && pPics.profileImageDictionary.size() > 0\r\n // && pPics.profileImageDictionary.size() === pPics.images.length) {\r\n\r\n // var firstElem = pPics.profileImageDictionary.values()[0];\r\n\r\n /*\r\n * pPics.images.map(e => {\r\n * var kvPhoto = new KvPhoto();\r\n * kvPhoto.cryptUserKey = pPics.sitUserId.toString();//need to be changed by caller\r\n * kvPhoto.date = pPics.date;\r\n * kvPhoto.index = -1;\r\n * kvPhoto.isPrimary = sitUser.primaryPhotoBnId == firstElem.photoId ? true: false;//thisProfilePics.profileImageArr[i].isPrimary;\r\n * kvPhoto.privacy = firstElem.privacy;\r\n * kvPhoto.key = firstElem.photoId.toString();//can be changed to something else by caller\r\n * kvPhoto.photoId = firstElem.photoId;\r\n * kvPhoto.profileId = pPics.profileId;\r\n * kvPhoto.sitUserId = pPics.sitUserId;\r\n * kvPhoto.value = e;\r\n * //debugger;\r\n * kvPhotoD.setValue(kvPhoto.photoId,kvPhoto);\r\n * i++;\r\n * });\r\n * }\r\n * return kvPhotoD;\r\n * }\r\n * ---------------------------------------------------------------\r\n */\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * Begin of: Glyph-to-MemberActivity-to-Glyph\r\n * ---------------------------------------------------------------\r\n */\r\n static copyFromKvGlyphToCommunicationActivity (kvg : KvMemberActivityGlyph) : CommunicationActivity {\r\n // debugger; //In copyServcie\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvg)) {\r\n let mAct: CommunicationActivity = new CommunicationActivity();\r\n\r\n mAct.action = kvg.action;\r\n mAct.date = kvg.date;\r\n \r\n mAct.receiverSitUserId = kvg.receiverSitUserId;\r\n mAct.senderSitUserId = kvg.senderSitUserId;\r\n mAct.id = kvg.id.toString();\r\n mAct.kvGlyph.key = kvg.key; // pImage.photoId.toString(); //can be changed to something else by caller\r\n mAct.messageBody = kvg.message;\r\n mAct.kvGlyph.model = kvg.model;\r\n mAct.kvGlyph.modelName = kvg.modelName;\r\n // mAct.photoId = kvg.photoId;\r\n mAct.photoBnId = kvg.photoBnId;\r\n // mAct.profileId = kvg.profileId;\r\n mAct.signedInUserId = kvg.signedInUserId;\r\n mAct.kvGlyph.value = kvg.value;\r\n // debugger;\r\n return mAct;\r\n }\r\n else\r\n {\r\n return new CommunicationActivity();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromMemberActivityToKvGlyph (mAct : MemberActivity) : KvMemberActivityGlyph {\r\n // debugger; //In copyServcie\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct)) {\r\n const kvg = new KvMemberActivityGlyph();\r\n\r\n kvg.action = mAct.action;\r\n kvg.date = mAct.date;\r\n kvg.receiverCryptUserKey = mAct.doeeCryptUserKey;\r\n kvg.senderCryptUserKey = mAct.doerCryptUserKey;\r\n kvg.receiverSitUserId = mAct.doeeSitUserId;\r\n kvg.senderSitUserId = mAct.doerSitUserId;\r\n kvg.id = mAct.id;\r\n kvg.key = mAct.key; // can be changed to something else by caller\r\n kvg.message = mAct.message;\r\n kvg.model = mAct.model;\r\n kvg.modelName = mAct.modelName;\r\n // kvg.photoId = mAct.photoId;\r\n kvg.photoBnId = mAct.photoBnId;\r\n kvg.profileId = mAct.profileId;\r\n kvg.signedInUserId = mAct.signedInUserId;\r\n kvg.value = mAct.value;\r\n // debugger;\r\n return kvg;\r\n }\r\n else\r\n {\r\n return new KvMemberActivityGlyph();\r\n }\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * Begin of: KvAction-to-MemberActivity-to-KvAction\r\n * ---------------------------------------------------------------\r\n */\r\n static copyFromKvActionToMemberActivity(kva: KvAction): MemberActivity {\r\n // debugger; //In copyServcie\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kva)) {\r\n const mAct = new MemberActivity();\r\n // mAct.action = kva.action;\r\n\r\n mAct.date = kva.date;\r\n mAct.expiryDate = kva.expDate;\r\n // mAct.doeeCryptUserKey = kva.doeeCryptUserKey;\r\n mAct.doerCryptUserKey = kva.cryptUserKey;\r\n mAct.doeeSitUserId = kva.doeeSitUserId;\r\n mAct.doerSitUserId = kva.doerSitUserId;\r\n mAct.id = kva.memberActivityId;\r\n mAct.index = kva.index;\r\n mAct.key = kva.key; // pImage.photoId.toString(); //can be changed to something else by caller\r\n /*\r\n * mAct.message = kva.message;\r\n * mAct.model = kva.model;\r\n * mAct.modelName = kva.modelName;\r\n * mAct.photoId = kva.photoId;\r\n */\r\n mAct.receiverSitUserId = kva.receiverSitUserId;\r\n mAct.senderSitUserId = kva.senderSitUserId;\r\n mAct.profileId = kva.profileId;\r\n mAct.signedInUserId = kva.signedInUserId;\r\n mAct.value = kva.value;\r\n // debugger;\r\n return mAct;\r\n }\r\n else\r\n {\r\n return new MemberActivity();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromMemberActivityToKvAction(mAct: MemberActivity): KvAction {\r\n // debugger; //In copyServcie\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mAct)) {\r\n const kva = new KvAction();\r\n\r\n kva.date = mAct.date;\r\n kva.expDate = mAct.expiryDate;\r\n kva.cryptUserKey = mAct.doerCryptUserKey;\r\n kva.doeeSitUserId = mAct.doeeSitUserId;\r\n kva.doerSitUserId = mAct.doerSitUserId;\r\n kva.memberActivityId = mAct.id;\r\n kva.index = mAct.index;\r\n kva.key = mAct.key;\r\n kva.receiverSitUserId = mAct.receiverSitUserId;\r\n kva.senderSitUserId = mAct.senderSitUserId;\r\n kva.profileId = mAct.profileId;\r\n kva.signedInUserId = mAct.signedInUserId;\r\n kva.value = mAct.value;\r\n // debugger;\r\n return kva;\r\n }\r\n else\r\n {\r\n return new KvAction();\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * End of: KvAction-to-MemberActivity-to-KvAction\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n * Begin of: Glyph-to-Photo-to-Glyph\r\n * ---------------------------------------------------------------\r\n */\r\n static copyFromKvGlyphToKvPhoto (kvg : KvMemberActivityGlyph): KvPhoto {\r\n // debugger; //In copyServcie\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvg)) {\r\n const kvPhoto = new KvPhoto();\r\n debugger;\r\n // kvPhoto.copy(kvg.kvPhoto);\r\n debugger;\r\n // Note: even thought kvg contains kvPhoto,\r\n // we still need the kvg's field values to update kvPhoto.\r\n // because kvPhoto may be empty or has holes meaing not all\r\n // values are present.\r\n // -------------------------------------------------------\r\n kvPhoto.cryptUserKey = kvg.cryptUserKey; // need to be changed by caller\r\n kvPhoto.date = kvg.date;\r\n kvPhoto.index = kvg.index;\r\n kvPhoto.isPrimary = kvg.isPrimary;\r\n kvPhoto.isPrivate = kvg.isPrivate;\r\n kvPhoto.key = kvg.key; // pImage.photoId.toString(); //can be changed to something else by caller\r\n kvPhoto.itemNum = kvg.pageNum;\r\n kvPhoto.photoId = kvg.photoId;\r\n kvPhoto.photoBnId = kvg.photoBnId;\r\n kvPhoto.privacy = kvg.privacy;\r\n kvPhoto.profileId = kvg.profileId;\r\n kvPhoto.sitUserId = kvg.sitUserId;\r\n kvPhoto.sitUserKey = kvg.sitUserKey;\r\n kvPhoto.pic = kvPhoto.value = kvPhoto.image = kvg.value;\r\n // debugger;\r\n return kvPhoto;\r\n }\r\n else\r\n {\r\n return new KvPhoto();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static copyFromKvPhotoToKvGlyph (kvP : KvPhoto) : KvMemberActivityGlyph {\r\n // debugger; //In copyServcie\r\n const kvG = new KvMemberActivityGlyph();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvP)) {\r\n kvG.cryptUserKey = kvP.cryptUserKey;\r\n kvG.date = kvP.date;\r\n kvG.glyphName = kvP.glyphName;\r\n kvG.isPrimary = kvP.isPrimary;\r\n kvG.isPrivate = kvP.isPrivate;\r\n kvG.index = kvP.index;\r\n // debugger;\r\n kvG.key = kvP.key.toLowerCase().indexOf('primary') !== -1 ? kvP.key : kvP.glyphName; // kvP.key; //TODO: need to determine what value should key hold from KvPhoto\r\n\r\n // TODO: watch this value to be sure that it gets the deired data through casting:\r\n // debugger;\r\n // kvG.copy(kvP as KvMemberActivityGlyph);\r\n\r\n kvG.pageNum = kvP.itemNum;\r\n kvG.photoId = kvP.photoId;\r\n kvG.photoBnId = kvP.photoBnId;\r\n kvG.privacy = kvP.privacy;\r\n kvG.profileId = kvP.profileId;\r\n kvG.sitUserId = kvP.sitUserId;\r\n kvG.sitUserKey = kvP.sitUserKey;\r\n kvG.value = kvP.value;\r\n return kvG;\r\n }\r\n else\r\n {\r\n return new KvMemberActivityGlyph();\r\n }\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * End of: Glyph-to-Photo-to-Glyph\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n static copyFromProfileTileToKvPhoto(pTile: ProfileTile): KvPhoto {\r\n // debugger; //In copyServcie\r\n const kvPhoto = new KvPhoto();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n kvPhoto.copy(pTile.kvPhoto);\r\n \r\n kvPhoto.date = pTile.date;\r\n kvPhoto.elemId = pTile.pElemId;\r\n kvPhoto.image = pTile.primaryImage;\r\n kvPhoto.isPrimary = pTile.isPrimaryPhoto;\r\n kvPhoto.key = pTile.isPrimaryPhoto ? 'Primary' : pTile.privacy; // Note: or some other value\r\n kvPhoto.glyphName = pTile.isPrimaryPhoto ? 'Primary' : pTile.privacy; // Note: or some other value\r\n kvPhoto.photoId = pTile.photoId;\r\n kvPhoto.photoBnId = pTile.photoBnId;\r\n kvPhoto.privacy = pTile.privacy;\r\n kvPhoto.profileId = pTile.profileId;\r\n kvPhoto.sitUserId = pTile.sitUserId;\r\n kvPhoto.sitUserKey = pTile.sitUserKey;\r\n kvPhoto.signedInUserId = pTile.signedInUserId;\r\n kvPhoto.sourceType = pTile.source,\r\n kvPhoto.value = pTile.primaryImage;\r\n\r\n // can be changed to something else by caller\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.kvPhoto)) {\r\n kvPhoto.cryptUserKey = pTile.kvPhoto.cryptUserKey && pTile.kvPhoto.cryptUserKey.length > 0 ? pTile.kvPhoto.cryptUserKey : pTile.sitUserId.toString(); // need to be changed by caller\r\n kvPhoto.index = kvPhoto.index > -1 ? kvPhoto.index : -1;\r\n kvPhoto.key = pTile.kvPhoto.key && pTile.kvPhoto.key.length > 0 ? pTile.kvPhoto.key : pTile.sitUserId.toString();\r\n kvPhoto.photoId = pTile.kvPhoto.photoId > 0 ? pTile.kvPhoto.photoId : pTile.photoId;\r\n kvPhoto.photoBnId = pTile.kvPhoto.photoBnId > 0 ? pTile.kvPhoto.photoBnId : pTile.photoBnId;\r\n kvPhoto.profileId = pTile.kvPhoto.profileId > 0 ? pTile.kvPhoto.profileId : pTile.profileId;\r\n kvPhoto.sitUserId = pTile.kvPhoto.sitUserId > 0 ? pTile.kvPhoto.sitUserId : pTile.sitUserId;\r\n kvPhoto.sitUserKey = !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.kvPhoto.sitUserKey) ? pTile.kvPhoto.sitUserKey : pTile.sitUserKey;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.primaryImage) && pTile.primaryImage.length > 0) {\r\n // debugger;\r\n kvPhoto.pic = (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.pic) && kvPhoto.pic.length > 0) ? kvPhoto.pic : pTile.primaryImage;\r\n kvPhoto.value = (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value) && kvPhoto.value.length > 0) ? kvPhoto.value : pTile.primaryImage;\r\n kvPhoto.image = (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.image) && kvPhoto.image.length > 0) ? kvPhoto.image\r\n : (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.imageString) && kvPhoto.imageString.length > 0) ? kvPhoto.imageString\r\n : pTile.primaryImage;\r\n }\r\n }\r\n }\r\n return kvPhoto;\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * the model that displays the View for ProfileInfo\r\n * ---------------------------------------------------------------\r\n */\r\n static copyFromProfileInfoToProfileInfoView(profile: ProfileInfo): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profile)) {\r\n this.profileInfoView.age = profile.age;\r\n this.profileInfoView.away = profile.away;\r\n this.profileInfoView.city = profile.city;\r\n this.profileInfoView.countryCode = profile.countryCode;\r\n this.profileInfoView.cutUncut = profile.cutUncut;\r\n this.profileInfoView.dickSize = profile.dickSize;\r\n this.profileInfoView.distance = profile.distance;\r\n this.profileInfoView.dob = profile.dob;\r\n this.profileInfoView.gender = profile.gender;\r\n this.profileInfoView.heading = profile.heading;\r\n this.profileInfoView.highestEducation = profile.highestEducation;\r\n this.profileInfoView.image = profile.image;\r\n this.profileInfoView.latitude = profile.latitude;\r\n this.profileInfoView.longitude = profile.longitude;\r\n this.profileInfoView.message = profile.message;\r\n this.profileInfoView.name = profile.name;\r\n this.profileInfoView.neighborhood = profile.neighborhood;\r\n this.profileInfoView.photoId = profile.photoId;\r\n this.profileInfoView.position = profile.position;\r\n this.profileInfoView.profileId = profile.profileId;\r\n this.profileInfoView.profileName = profile.profileName;\r\n this.profileInfoView.regionCode = profile.regionCode;\r\n this.profileInfoView.relationshipStatus = profile.relationshipStatus;\r\n this.profileInfoView.religion = profile.religion;\r\n this.profileInfoView.sexuality = profile.sexuality;\r\n this.profileInfoView.sitUserId = profile.sitUserId;\r\n this.profileInfoView.signedInUserId = profile.signedInUserId;\r\n this.profileInfoView.sitUserKey = profile.sitUserKey;\r\n this.profileInfoView.signedInUserKey = profile.signedInUserKey;\r\n this.profileInfoView.smokingStatus = profile.smokingStatus;\r\n this.profileInfoView.unit = profile.unit;\r\n /*\r\n * this.profileInfoView.isProfileComplete = profile.isProfileComplete;\r\n * this.profileInfoView.photoId = profile.photoId;\r\n * this.profileInfoView.profileId = profile.profileID;\r\n * this.profileInfoView.sitUserId = profile.sitUserId;\r\n * this.profileInfoView.signedInUserId = profile.signedInUserId;\r\n * debugger;\r\n */\r\n return this.profileInfoView;\r\n }\r\n return null;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static copyFromProfileInfoToProfileTile ( pInfo: ProfileInfo ): ProfileTile\r\n {\r\n let pTile = new ProfileTile();\r\n // debugger; //In copyServcie\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo ) )\r\n {\r\n // debugger;\r\n if (pInfo.age > 0) {\r\n pTile.age = pInfo.age;\r\n }\r\n pTile.offOn.away = pInfo.away;\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.city ) )\r\n {\r\n pTile.city = pInfo.city;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.countryCode ) )\r\n {\r\n pTile.countryCode = pInfo.countryCode;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.date ) )\r\n {\r\n pTile.date = pInfo.date;\r\n }\r\n if ( pInfo.distance > 0 )\r\n {\r\n pTile.distance = pInfo.distance;\r\n\r\n pTile.distanceStr = pInfo.distance.toString();\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.gender ) )\r\n {\r\n pTile.gender = pInfo.gender;\r\n }\r\n\r\n pTile.heartbeat.heartbeatTime = parseInt( pInfo.heartbeatTime, 10 );\r\n \r\n pTile.isOnline = pInfo.isOnline;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.dob ) )\r\n {\r\n pTile.dob = pInfo.dob;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo.heading)) {\r\n pTile.heading = pInfo.heading;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo.isOnline)) {\r\n pTile.isOnline = pInfo.isOnline;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo.image)) {\r\n pTile.primaryImage = pInfo.image;\r\n }\r\n if ( pInfo.latitude.length !== 1 )\r\n {\r\n pTile.latitude = pInfo.latitude;\r\n }\r\n if ( pInfo.longitude.length !== 1 )\r\n {\r\n pTile.longitude = pInfo.longitude;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.neighborhood ) )\r\n {\r\n pTile.neighborhood = pInfo.neighborhood;\r\n }\r\n if (pInfo.photoId > 0) {\r\n pTile.photoId = pInfo.photoId;\r\n }\r\n if (pInfo.profileId > 0) {\r\n pTile.profileId = pInfo.profileId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo.profileName)) {\r\n pTile.profileName = pInfo.profileName;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.regionCode ) )\r\n {\r\n pTile.regionCode = pInfo.regionCode;\r\n }\r\n if ( pInfo.sitUserId > 0 )\r\n {\r\n pTile.sitUserId = pInfo.sitUserId;\r\n\r\n pTile.source = pInfo.sitUserId.toString();\r\n }\r\n if ( pInfo.signedInUserId > 0 )\r\n {\r\n pTile.signedInUserId = pInfo.signedInUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.sitUserKey ) )\r\n {\r\n pTile.sitUserKey = pInfo.sitUserKey;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( pInfo.signedInUserKey ) )\r\n {\r\n pTile.signedInUserKey = pInfo.signedInUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pInfo.unit)) {\r\n pTile.unit = pInfo.unit;\r\n }\r\n }\r\n this.profileTile = pTile\r\n return this.profileTile;\r\n }\r\n // ---------------------------------------------------------------\r\n // DO NOT call this method.\r\n // User ProfileTile Model's copyToProfileInfo() instead.\r\n // ---------------------------------------------------------------\r\n static copyFromProfileTileToProfileInfo(pTile: ProfileTile): ProfileInfo {\r\n const profileInfo = new ProfileInfo();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile)) {\r\n // debugger;\r\n profileInfo.age = pTile.age;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn.away)) {\r\n profileInfo.away = pTile.offOn.away;\r\n }\r\n profileInfo.city = pTile.city;\r\n profileInfo.countryCode = pTile.countryCode;\r\n profileInfo.date = pTile.date;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.distance) && pTile.distance > 0) {\r\n profileInfo.distance = pTile.distance + ' ' + pTile.unit;\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.offOn.offOnArr) && pTile.offOn.offOnArr.length > 0) {\r\n profileInfo.distance = pTile.offOn.offOnArr[ 0 ];\r\n }\r\n else {\r\n profileInfo.distance = '0 m';\r\n }\r\n \r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfo.distance) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.distanceStr)) {\r\n profileInfo.distance = pTile.distanceStr;\r\n }\r\n profileInfo.dob = pTile.dob;\r\n profileInfo.gender = pTile.gender;\r\n profileInfo.heading = pTile.heading;\r\n \r\n // debugger;\r\n // !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.heartbeat.prevHeartbeat) ? pTile.heartbeat.prevHeartbeat.toString() : new Date().toLocaleString();\r\n profileInfo.heartbeatTime = pTile.heartbeatTime.toString(); \r\n // debugger;\r\n let tPic: any\r\n if (pTile.primaryImage) {\r\n tPic = pTile.primaryImage;\r\n } \r\n else if (pTile.kvPhoto.value) {\r\n tPic = pTile.kvPhoto.value;\r\n }\r\n else if (pTile.kvPhoto.pic) {\r\n tPic = pTile.kvPhoto.pic;\r\n }\r\n profileInfo.image = tPic;\r\n const pImage = new ProfileImage();\r\n\r\n pImage.image = tPic;\r\n pImage.sitUserId = pTile.sitUserId;\r\n pImage.photoId = pTile.photoId > 0 ? pTile.photoId : !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.kvPhoto)? pTile.kvPhoto.photoId : 0;\r\n pImage.photoBnId = pTile.photoBnId > 0 ? pTile.photoBnId : !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pTile.kvPhoto) ? pTile.kvPhoto.photoBnId : 0;\r\n if (profileInfo.profilePics && profileInfo.profilePics.profileImageArr) {\r\n profileInfo.profilePics.profileImageArr.push(pImage);\r\n } \r\n // debugger;\r\n //profileInfo.latitude = StringServiceStatic.string2Number(pTile.latitude);\r\n //profileInfo.longitude = StringServiceStatic.string2Number(pTile.longitude);\r\n profileInfo.latitude = pTile.latitude;\r\n profileInfo.longitude = pTile.longitude;\r\n profileInfo.neighborhood = pTile.neighborhood;\r\n profileInfo.position = pTile.position;\r\n profileInfo.profileId = pTile.profileId;\r\n profileInfo.profileName = pTile.profileName;\r\n profileInfo.regionCode = pTile.regionCode;\r\n profileInfo.sexuality = pTile.sexuality;\r\n profileInfo.sitUserId = pTile.sitUserId;\r\n profileInfo.signedInUserId = pTile.signedInUserId;\r\n profileInfo.sitUserKey = pTile.sitUserKey;\r\n profileInfo.signedInUserKey = pTile.signedInUserKey;\r\n profileInfo.unit = pTile.unit;\r\n }\r\n // debugger;\r\n return profileInfo;\r\n }\r\n // ---------------------------------------------------------------\r\n // ---------------------------------------------------------------\r\n static copyFromProfilePicsToProfileInfo(pPics: ProfilePics): ProfileInfo {\r\n const profileInfo = new ProfileInfo();\r\n\r\n if (pPics) {\r\n /*\r\n * debugger;\r\n * profileInfo.age = pPics.age;\r\n * profileInfo.away = pPics.away;\r\n * profileInfo.city = pPics.city;\r\n * profileInfo.countryCode = pPics.countryCode;\r\n */\r\n profileInfo.date = pPics.date;\r\n /*\r\n * profileInfo.distance = pPics.distance > 0 ? pPics.distance: pPics.offOnArr.length > 0 ? pPics.offOnArr[0]: 0;\r\n * if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileInfo.distance) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.distanceStr))\r\n * profileInfo.distance = pPics.distanceStr;\r\n * profileInfo.dob = pPics.dob;\r\n * profileInfo.gender = pPics.gender;\r\n * profileInfo.heading = pPics.heading;\r\n * profileInfo.heartbeat = pPics.prevHeartbeat.toString();\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.profileImageArr) && pPics.profileImageArr.length > 0) {\r\n profileInfo.profilePics.profileImageArr = pPics.profileImageArr;\r\n }\r\n /*\r\n * debugger;\r\n * profileInfo.latitude = pPics.latitude;\r\n * profileInfo.longitude = pPics.longitude;\r\n * profileInfo.neighborhood = pPics.neighborhood;\r\n * profileInfo.position = pPics.position;\r\n */\r\n profileInfo.profileId = pPics.profileId;\r\n /*\r\n * profileInfo.profileName = pPics.profileName;\r\n * profileInfo.regionCode = pPics.regionCode;\r\n * profileInfo.sexuality = pPics.sexuality;\r\n */\r\n profileInfo.sitUserId = pPics.sitUserId;\r\n /*\r\n * profileInfo.isPrimaryMember = pTile.isPrimaryMember;\r\n * profileInfo.signedInUserId = pPics.signedInUserId;\r\n * profileInfo.unit = pPics.unit;\r\n */\r\n }\r\n // debugger;\r\n return profileInfo;\r\n }\r\n // ---------------------------------------------------------------\r\n static createProfilePicsFromProfileTile ( profileTile : ProfileTile ) : ProfilePics\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileTile ) && profileTile.primaryImage.length > 0 )\r\n {\r\n const dpPics = new ProfilePics();\r\n const pImage = new ProfileImage();\r\n\r\n pImage.image = profileTile.primaryImage\r\n pImage.sitUserId = profileTile.sitUserId;\r\n pImage.photoId = profileTile.photoId;\r\n if ( dpPics.profileImageArr )\r\n {\r\n dpPics.profileImageArr.push( pImage );\r\n }\r\n\r\n const kvPhoto = new KvPhoto();\r\n kvPhoto.image = profileTile.primaryImage;\r\n kvPhoto.sitUserId = profileTile.sitUserId;\r\n kvPhoto.sitUserKey = profileTile.sitUserKey;\r\n kvPhoto.key = 'primaryImage';\r\n kvPhoto.isPrimary = true;\r\n kvPhoto.isPrivate = false;\r\n kvPhoto.value = profileTile.primaryImage;\r\n\r\n dpPics.filteredKvPhotoArr.push( kvPhoto );\r\n\r\n dpPics.entityName = 'ProfileTile';\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileTile.date ) )\r\n {\r\n dpPics.date = profileTile.date;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileTile.profileId ) && profileTile.profileId > 0 )\r\n {\r\n dpPics.profileId = profileTile.profileId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileTile.sitUserId ) && profileTile.sitUserId > 0 )\r\n {\r\n dpPics.sitUserId = profileTile.sitUserId;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( profileTile.sitUserKey ) )\r\n {\r\n dpPics.sitUserKey = profileTile.sitUserKey;\r\n }\r\n\r\n return dpPics;\r\n }\r\n else\r\n {\r\n return new ProfilePics();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static createProfilePicsFromProfileImageArr(profileImageArr: ProfileImage[]): ProfilePics {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr) && profileImageArr.length > 0) {\r\n const dpPics = new ProfilePics();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr[0].cryptUserKey)) {\r\n dpPics.cryptUserKey = profileImageArr[0].cryptUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr[0].date)) {\r\n dpPics.date = profileImageArr[0].date;\r\n } \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr[0].profileId) && profileImageArr[0].profileId > 0) {\r\n dpPics.profileId = profileImageArr[0].profileId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr[0].sitUserId) && profileImageArr[0].sitUserId > 0) {\r\n dpPics.sitUserId = profileImageArr[0].sitUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr[0].sitUserKey)) {\r\n dpPics.sitUserKey = profileImageArr[0].sitUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profileImageArr[ 0 ].entityName)) {\r\n dpPics.entityName = profileImageArr[ 0 ].entityName; \r\n }\r\n profileImageArr.map((e) => {\r\n dpPics.profileImageArr.push(e);\r\n let kvPhoto = this.copyFromProfileImageToKvPhoto(e);\r\n dpPics.profileKvPhotoArr.push(kvPhoto);\r\n });\r\n\r\n // NOTE: since we cannot inject services,\r\n // the caller of this method need to filter profileKvPhotoArr\r\n // -------------------------------------------------------------\r\n // dpPics.filteredKvPhotoArr = this.photoPrivacyService.\r\n\r\n dpPics.profileImageArr = profileImageArr;\r\n return dpPics;\r\n }\r\n else\r\n {\r\n return new ProfilePics();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static createProfilePicsModelFromSitUser (sitUser : SitUser) : ProfilePics {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser) && sitUser.sitUserId > 0) {\r\n const dpPics = new ProfilePics();\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.cryptUserKey)) {\r\n dpPics.cryptUserKey = sitUser.cryptUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.date)) {\r\n dpPics.date = sitUser.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.profileId) && sitUser.profileId > 0) {\r\n dpPics.profileId = sitUser.profileId;\r\n }\r\n \r\n dpPics.sitUserId = sitUser.sitUserId;\r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sitUser.sitUserKey)) {\r\n dpPics.sitUserKey = sitUser.sitUserKey;\r\n } \r\n let tKvP = this.copySitUserToKvPhoto(sitUser) as KvPhoto;\r\n // since we created the kvPhoto from sitUser, we push it in both\r\n // filteredKvPhotoArr and unFilteredKvPhotoArr.\r\n // ---------------------------------------------------------------\r\n dpPics.unFilteredKvPhotoArr.push(tKvP);\r\n dpPics.filteredKvPhotoArr.push(tKvP);\r\n\r\n // NOTE: since we cannot inject services on Static Service,\r\n // the caller of this method need to filter profileKvPhotoArr\r\n // -------------------------------------------------------------\r\n // dpPics.filteredKvPhotoArr = this.photoPrivacyService.\r\n return dpPics;\r\n }\r\n else {\r\n return new ProfilePics();\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static createProfilePicsFromProfileImageDictionary(pImageD: Dictionary): ProfilePics {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pImageD) && pImageD.values().length > 0) {\r\n const dpPics = new ProfilePics();\r\n const pImages = pImageD.values();\r\n const firstItem = pImages[0];\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(firstItem.cryptUserKey)) {\r\n dpPics.cryptUserKey = firstItem.cryptUserKey;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(firstItem.date)) {\r\n dpPics.date = firstItem.date;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(firstItem.entityName)) {\r\n dpPics.entityName = firstItem.entityName;\r\n pImages.map((e) => {\r\n dpPics.profileImageArr.push(e);\r\n });\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(firstItem.profileId) && firstItem.profileId > 0) {\r\n dpPics.profileId = firstItem.profileId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(firstItem.sitUserId) && firstItem.sitUserId > 0) {\r\n dpPics.sitUserId = firstItem.sitUserId;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(firstItem.sitUserKey)) {\r\n dpPics.sitUserKey = firstItem.sitUserKey;\r\n }\r\n\r\n return dpPics;\r\n }\r\n else\r\n {\r\n return new ProfilePics();\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // static copyPagerToPagerPhotoMgmt (pager : Pager) : PagerPhotoMgmt {\r\n\r\n // }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n}\r\n","\r\nimport { formatDate } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { DateAssay } from '../../../models/common/dateAssay.model';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from './../stringServiceStatic.service';\r\n\r\n/*\r\n * //ref:https:// attacomsian.com/blog/unix-timestamp-javacript\r\n *const timestamp = date.getTime()();\r\n *This method returns the current UTC timestamp in milliseconds.\r\n *date.getTime()() works in almost all modern browsers except IE8 and earlier versions.\r\n *But you can easily fix this by writing a small polyfill:\r\n *\r\n *if(!date.getTime()) {\r\n * date.getTime() = () => new Date().getTime();\r\n *}\r\n *\r\n *The UNIX timestamp is an integer value that represents the number of seconds elapsed since\r\n *UNIX Epoch on January 1st, 1970 at 00:00:00 UTC.\r\n *\r\n *To convert the timestamp to seconds (UNIX time), you can do the following:\r\n *\r\n *const unixTime = Math.floor(date.getTime()() / 1000);\r\n *\r\n *Unix epoch in ISO 8601 date and time format is: '1970-01-01T00:00:00Z'\r\n * //ref:https:// en.wikipedia.org/wiki/Unix_time\r\n */\r\n\r\n/*\r\n * ========================================================================================================================\r\n * VERY IMPORTANT NOTE ABOUT DateTime, both in JavScript and C#/.NET, and it's relationship between JS and C#/.NET:\r\n *\r\n * 1. Client's datetime is captured in JS via and stored as C#/.Net-Ticks in the backend-db.\r\n * 2. Client's date is caputred via the following method: new Date().getTime();\r\n * 3. The getDateAssay() method will do all the conversion necessary and store the values in the DateAssay.model.ts model\r\n * 3.1 There are two other important methods for the conversion between JS and C# which are:\r\n * 3.1.a. getDateAssayOfCsTicks(csTicks)\r\n * 3.1.b. getDateAssayOfJsTicks(jsTicks)\r\n * 4. The DateAssay.model will contain the following important data:\r\n * 4.1. DateAssay.jsTicks (Client's datetime in JavaScript Ticks in string);\r\n * 4.2. DateAssay.jsTicksNum (Client's datetime in JavaScript Ticks in number/interger);\r\n * 4.3. DateAssay.csTicks (Client's datetime in C#/.NET Ticks in string);\r\n * 4.4. DateAssay.csTicksNum (Client's datetime in C#/.NET Ticks in number/interger);\r\n * 4.5. DataAssay.csTicks2JsDate (Client's datetime from the backend-db converted to JavaScript DateTime)\r\n * 4.6. DataAssay.csTicks2JsDateFormatted (Client's datetime from the backend-db converted to JavaScript DateTime in localeString format)\r\n * ========================================================================================================================\r\n */\r\n\r\n/*\r\n * Unix timestamp in milliseconds\r\n * ref:https:// stackoverflow.com/questions/9575790/how-to-get-time-in-milliseconds-since-the-unix-epoch-in-javascript\r\n */\r\nconst unixTimeStampMillSec = new Date().getTime();\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class DateStringServiceStatic {\r\n // ------------------------------------------------------------------------\r\n constructor ( /*private copyService: CopyService*/) {\r\n // if (!date.getTime()) {\r\n // date.getTime() = () => (this.now = new Date().getTime()); // in milliseconds\r\n // }\r\n // this.unixTimeStampSec = Math.floor(date.getTime()() / 1000); // in seconds\r\n }\r\n // private stringService! : StringService;\r\n /*\r\n * ------------------------------------------------------------------------\r\n * Ref:https:// stackoverflow.com/questions/6939685/get-client-time-zone-from-browser\r\n */\r\n // public ClientTZ = {\r\n // UTCoffset: 0, // Browser time offset from UTC in minutes\r\n // UTCoffsetDST: '',\r\n // UTCoffsetT: '+0000S', // Browser time offset from UTC in '±hhmmD' form\r\n // hasDST: false, // Browser time observes DST\r\n // };\r\n // ------------------------------------------------------------------------\r\n public static Date : Date = new Date();\r\n private static loginSuccess : LoginSuccess = new LoginSuccess();\r\n // public unixTimeStampSec = -1;\r\n public now : any;\r\n // ------------------------------------------------------------------------\r\n public static now () : number {\r\n return new Date().getTime(); // in milliseconds\r\n }\r\n // ------------------------------------------------------------------------\r\n public static unixTimeStampSec () : number {\r\n return Math.floor(new Date().getTime() / 1000); // in seconds\r\n }\r\n // ------------------------------------------------------------------------\r\n public static jsNowForOldBrowsers () : number {\r\n let date = new Date();\r\n let now : any = new Date().getTime(); // in milliseconds \r\n return now;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static jsNow () : number {\r\n return this.jsNowForOldBrowsers();\r\n }\r\n\r\n // ------------------------------------------------------------------------\r\n static compareDate (thisD : string, thatD : string) : number {\r\n const thisDateTicks = new Date(thisD).getTime();\r\n const thatDateTicks = new Date(thatD).getTime();\r\n // debugger;\r\n return thisDateTicks - thatDateTicks;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * Ref:https:// stackoverflow.com/questions/41948/how-do-i-get-the-difference-between-two-dates-in-javascript\r\n * ------------------------------------------------------------------------\r\n */\r\n static dateDiff (later : any, earlier : any, unit : string) : any {\r\n if (later && earlier) {\r\n const date2 = later;\r\n const date1 = earlier;\r\n const diff = date2 - date1;\r\n let diffSec = (date2 - date1) / 1000;\r\n\r\n diffSec = Math.abs(Math.floor(diffSec));\r\n // debugger;\r\n const years = Math.floor(diffSec / (365 * 24 * 60 * 60));\r\n let leftSec = diffSec - years * 365 * 24 * 60 * 60;\r\n\r\n const months = Math.floor(leftSec / ((365 / 12) * 24 * 60 * 60));\r\n\r\n leftSec = leftSec - months * (365 / 12) * 24 * 60 * 60;\r\n\r\n const days = Math.floor(leftSec / (24 * 60 * 60));\r\n\r\n leftSec = leftSec - days * 24 * 60 * 60;\r\n\r\n const hrs = Math.floor(leftSec / (60 * 60));\r\n\r\n leftSec = leftSec - hrs * 60 * 60;\r\n\r\n const min = Math.floor(leftSec / 60);\r\n\r\n leftSec = leftSec - min * 60;\r\n const msg = 'You have ' + days + ' days ' + hrs + ' hours ' + min + ' minutes and ' + leftSec + ' seconds between later and earlier.';\r\n\r\n if (unit) {\r\n switch (unit) {\r\n case 'year':\r\n return years;\r\n case 'month':\r\n return months;\r\n case 'day':\r\n return days;\r\n case 'hour':\r\n return hrs;\r\n case 'minute':\r\n return min;\r\n case 'second':\r\n return leftSec;\r\n case 'string':\r\n default:\r\n return msg;\r\n }\r\n } else {\r\n // debugger;\r\n return diff;\r\n }\r\n }\r\n }\r\n // ------------------------------------------------------------------------\r\n public static convertToLocalWithOffset (date : Date) : any {\r\n if (date) {\r\n /*return formatDate(date, 'dd-MM-yyyy hh:mm:ss a', 'en-US', '+0530');*/\r\n return formatDate(date, 'yyyy-MM-dd hh:mm:ss a', 'en-US', '+0530');\r\n }\r\n return date;\r\n }\r\n\r\n /*\r\n * ------------------------------------------------------------------------\r\n * output format:'dd-MM-yyyy hh:mm:ss AM/PM'\r\n * ------------------------------------------------------------------------\r\n */\r\n public static convertToLocal (date : Date) : any {\r\n if (date) {\r\n return formatDate(date, 'dd-MM-yyyy hh:mm:ss a', 'en-US');\r\n }\r\n return date;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static convertToDDMMYYYY (date : Date) : any {\r\n if (date) {\r\n return formatDate(date, 'dd-MM-yyyy hh:mm:ss a', 'en-US', '+0530');\r\n }\r\n return date;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static convertToYYYYMMDD (date : Date) : any {\r\n if (date) {\r\n return formatDate(date, 'yyyy-MM-dd hh:mm:ss a', 'en-US', '+0530');\r\n }\r\n return date;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static convertToYYYYMMDDFromJsTicks (ticks : any) : string {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ticks)) {\r\n let ts;\r\n\r\n ts = Number(ticks); // cast it to a Number\r\n let date = new Date(ts); // works\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(date)) {\r\n date = new Date(ticks);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(date)) {\r\n return formatDate(date, 'yyyy-MM-dd hh:mm:ss a', 'en-US', '+0530');\r\n }\r\n else return '';\r\n }\r\n else return '';\r\n }\r\n // ------------------------------------------------------------------------\r\n // Note: use thatTick for now/later, and thisTick for focused/target\r\n // ------------------------------------------------------------------------\r\n public static compareTicks (thisTicks : any, thatTicks : any) : number {\r\n if (thisTicks && thatTicks) {\r\n const thisTn = parseInt(thisTicks, 10);\r\n const thatTn = parseInt(thatTicks, 10);\r\n\r\n if (thisTn > 0 && thatTn > 0) {\r\n return thisTn === thatTn ? 0 : thisTn < thatTn ? -1 : 1;\r\n }\r\n }\r\n return -99;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static isOnlineFromDateTimeTicks (heartbeatTime : any) : boolean {\r\n let isOnline = false;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(heartbeatTime)) {\r\n const nowTicks = new Date().getTime();\r\n let minutes = DateStringServiceStatic.dateDiff(nowTicks, heartbeatTime, 'minute')\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(minutes)) {\r\n if (minutes > 0 && minutes < 21) {\r\n isOnline = true;\r\n // debugger;\r\n }\r\n }\r\n }\r\n return isOnline;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static convertGroupsToLocalTime (groups : any) : any {\r\n if (groups && groups.length > 0) {\r\n groups.map((e : any) => {\r\n e.displayDate = this.convertToLocal(e.date);\r\n });\r\n }\r\n return groups;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getDateOnly (date : string) : any {\r\n if (date) {\r\n const dateParts = date.split('T');\r\n\r\n if (dateParts.length > 0) {\r\n return dateParts[ 0 ].toString();\r\n }\r\n }\r\n return date;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getMDYDate (date : string) : any {\r\n if (date) {\r\n const parts = date.split('/'); // date=mm/dd/yyyy\r\n\r\n if (parts.length > 2) {\r\n return this.GetMonthName(parseInt(parts[ 0 ], 10)) + ' ' + parts[ 1 ] + ', ' + parts[ 2 ];\r\n }\r\n }\r\n return date;\r\n }\r\n // ------------------------------------------------------------------------\r\n static GetMonthName (month : any) : any {\r\n if (month > 0) {\r\n switch (month) {\r\n case 1:\r\n return 'January';\r\n case 2:\r\n return 'February';\r\n case 3:\r\n return 'March';\r\n case 4:\r\n return 'April';\r\n case 5:\r\n return 'May';\r\n case 6:\r\n return 'June';\r\n case 7:\r\n return 'July';\r\n case 8:\r\n return 'August';\r\n case 9:\r\n return 'September';\r\n case 10:\r\n return 'October';\r\n case 11:\r\n return 'November';\r\n case 12:\r\n return 'December';\r\n default:\r\n return '';\r\n }\r\n }\r\n return '';\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * Note: Tested work!\r\n * ------------------------------------------------------------------------\r\n */\r\n static getTicks (date : Date) : any {\r\n if (date) {\r\n return new Date(date).getTime();\r\n }\r\n return new Date().getTime();\r\n }\r\n // ------------------------------------------------------------------------\r\n public static getUnixTimeStampInSecond () : number {\r\n return this.unixTimeStampSec();\r\n }\r\n // ------------------------------------------------------------------------\r\n public static isCsTime (t : any) : boolean {\r\n var isCs = false;\r\n if (!StringServiceStatic.isNullOrEmpty(t)) {\r\n var tStr : string = JSON.stringify(t);\r\n if (tStr[ 0 ] == '6' && tStr.length >= 18) {\r\n isCs = true;\r\n }\r\n }\r\n return isCs;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static isJsTime (t: any) : boolean {\r\n var isJs = false;\r\n if (!StringServiceStatic.isNullOrEmpty(t)) {\r\n var tStr : string = JSON.stringify(t);\r\n if (tStr[ 0 ] !== '6' && tStr.length <= 13) {\r\n isJs = true;\r\n }\r\n }\r\n return isJs;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static isTimerFound (timerArr : any[], timer : number) : boolean {\r\n let isFound = false;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(timerArr) && timerArr.length > 0 && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(timer)) {\r\n for (const e of timerArr) {\r\n isFound = e === timer;\r\n if (isFound === true) {\r\n return isFound;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n // ------------------------------------------------------------------------\r\n // Note: When Date(jsTicks) is neded, use this method.\r\n // ------------------------------------------------------------------------\r\n public static timeStampToDate (inTs : any) : any {\r\n let ts;\r\n\r\n ts = Number(inTs); // cast it to a Number\r\n const date = new Date(ts); // works\r\n // debugger;\r\n\r\n return this.convertToLocal(date);\r\n }\r\n /*\r\n * ========================================================================\r\n * ------------------------------------------------------------------------\r\n * NOTE: BEGIN of AGE-CALCULATION-SYSTEM-JS\r\n * ------------------------------------------------------------------------\r\n * Note: dob is sent in yyyy/mm/dd format\r\n */\r\n static ageFromDobString (dob : string) : number {\r\n let age = 0;\r\n let dobYYYY = 0;\r\n let dobMM = 0;\r\n let dobDD = 0;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dob)) {\r\n const now = new Date();\r\n const nowYear = now.getFullYear();\r\n const nowMonth = now.getMonth() + 1;\r\n const nowDay = now.getDate();\r\n var dobParts = dob.split('/');\r\n if (dobParts.length < 2) {\r\n dobParts = dob.split('-');\r\n }\r\n\r\n if (dobParts.length > 2) {\r\n dobYYYY = parseInt(dobParts[ 0 ], 10);\r\n dobMM = parseInt(dobParts[ 1 ], 10);\r\n dobDD = parseInt(dobParts[ 2 ], 10);\r\n // debugger;\r\n age = nowYear - dobYYYY;\r\n if (nowMonth < dobMM && age > 0) {\r\n age--;\r\n }\r\n if (nowMonth === dobMM && nowDay < dobDD && age > 0) {\r\n age--;\r\n }\r\n }\r\n else {\r\n //debugger;\r\n age = this.ageFromDobTicks(parseInt(dob, 10));\r\n }\r\n }\r\n debugger;\r\n return age;\r\n }\r\n // ------------------------------------------------------------------------\r\n static ageFromDobTicks (ticks : number) : number {\r\n let age = 0;\r\n let dobYYYY = 0;\r\n let dobMM = 0;\r\n let dobDD = 0;\r\n // debugger;\r\n const now = new Date();\r\n const nowYear = now.getFullYear();\r\n const nowMonth = now.getMonth() + 1;\r\n const nowDay = now.getDate();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ticks) && ticks > 0) {\r\n var dateAssay = new Date(ticks); // this.jsTicksInYYMMSSmmhhssOld(ticks);\r\n // debugger;\r\n dobYYYY = dateAssay.getFullYear(); //yyyy\r\n dobMM = dateAssay.getMonth(); // months;\r\n dobDD = dateAssay.getDay();\r\n age = nowYear - dobYYYY;\r\n // debugger;\r\n if (nowMonth < dobMM && age > 0) {\r\n age--;\r\n }\r\n if (nowMonth === dobMM && nowDay < dobDD && age > 0) {\r\n age--;\r\n }\r\n }\r\n return age;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * TODO: flesh out format1, and this method\r\n */\r\n static ageFromDobFormat1 (dobInFormat1 : number) : number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dobInFormat1) && dobInFormat1 > 0) {\r\n return this.ageFromDobString(this.dateFromTicks(dobInFormat1, false));\r\n }\r\n return 0;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * TODO: flesh out format2, and this method\r\n */\r\n static ageFromDobFormat2 (dobInFormat2 : number) : number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dobInFormat2) && dobInFormat2 > 0) {\r\n return this.ageFromDobString(this.dateFromTicks(dobInFormat2, false));\r\n }\r\n return 0;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * TODO: flesh out format3, and this method\r\n */\r\n static ageFromDobFormat3 (dobInFormat3 : number) : number {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dobInFormat3) && dobInFormat3 > 0) {\r\n return this.ageFromDobString(this.dateFromTicks(dobInFormat3, false));\r\n }\r\n return 0;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * END of AGE-CALCULATION-SYSTEM-JS\r\n * ------------------------------------------------------------------------\r\n * ========================================================================\r\n */\r\n\r\n\r\n // ========================================================================\r\n // ------------------------------------------------------------------------\r\n // NOTE: BEGIN of DateAssay-SYSTEM-JS\r\n // ------------------------------------------------------------------------\r\n\r\n static dateInYYYYMMDDhhmmss (inDate : any) : any {\r\n const dA = new DateAssay();\r\n let date = 0;\r\n if (typeof inDate === 'string') {\r\n date = parseInt(inDate, 10);\r\n }\r\n else date = inDate;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(date) && date > 0) {\r\n const tDate = new Date(date);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tDate) && tDate instanceof Date) {\r\n // debugger;\r\n dA.yyyy = tDate.getFullYear();\r\n // Note: months in JS seems to start from 0, but on a calender it starts at 1\r\n dA.months = tDate.getMonth();\r\n dA.dd = tDate.getDay();\r\n dA.hh = tDate.getHours();\r\n dA.mm = tDate.getMinutes();\r\n dA.ss = tDate.getSeconds();\r\n dA.millss = tDate.getMilliseconds();\r\n dA.date = tDate;\r\n dA.dateFormatted = tDate.toLocaleString();\r\n }\r\n }\r\n // debugger;\r\n return dA;\r\n }\r\n // ------------------------------------------------------------------------\r\n // Note: HeartbeatTime number sometimes has a fractional part,\r\n // but we need only the whole number without the fractional part.\r\n // ------------------------------------------------------------------------\r\n static getHeartbeatTimeWholeNumber (hbt : any) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(hbt)) {\r\n if (hbt.toString().indexOf('.') !== -1) {\r\n let parts = hbt.toString().split('.');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts)) {\r\n if (parts.length === 2) {\r\n return parts[ 0 ];\r\n }\r\n else return parts;\r\n }\r\n else return hbt;\r\n }\r\n else return hbt;\r\n }\r\n else return hbt;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getDateAssayOfCsTicks (csTicks : any) : any {\r\n let csTicksStr = '';\r\n let date : any;\r\n let dateA : DateAssay = new DateAssay();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(csTicks)) {\r\n\r\n // debugger;\r\n if (typeof csTicks === 'number') {\r\n csTicksStr = csTicks.toString();\r\n } else {\r\n csTicksStr = csTicks;\r\n }\r\n date = this.convertNetTicsToJsDate(csTicksStr);\r\n\r\n let tDateA = this.getDateAssay(date.getTime()) as DateAssay;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tDateA)) {\r\n dateA = tDateA;\r\n }\r\n else dateA = date;\r\n }\r\n // debugger;\r\n if (dateA.yyyy > 0) {\r\n // debugger;\r\n return dateA;\r\n }\r\n else return null;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getDateAssayOfJsTicks (date : number) : DateAssay {\r\n return this.getDateAssay(date);\r\n }\r\n // ------------------------------------------------------------------------\r\n static getDateAssay (inDate : number) : any {\r\n let dAssay : DateAssay = new DateAssay();\r\n let date = 0;\r\n let inTicks = 0;\r\n\r\n if (typeof inDate === 'string') {\r\n date = parseInt(inDate, 10);\r\n }\r\n else date = inDate;\r\n\r\n if (date > 0) {\r\n dAssay = this.dateInYYYYMMDDhhmmss(date);\r\n inTicks = date / 10;\r\n\r\n dAssay.jsTicks = inTicks.toString();\r\n dAssay.jsTicksNum = Number(inTicks);\r\n dAssay.csTicksNum = this.getJsDateToNetTicks(dAssay.date);\r\n dAssay.csTicks = dAssay.csTicksNum.toString();\r\n dAssay.csTicks2JsDate = this.convertNetTicsToJsDate(dAssay.csTicks);\r\n dAssay.csTicks2JsDateFormatted = this.addDate(this.convertNetTicsToJsDate(dAssay.csTicks), 'minute', -Number(dAssay.UTCoffset)).toLocaleString();\r\n }\r\n if (dAssay.yyyy > 0) {\r\n // debugger;\r\n return dAssay;\r\n }\r\n else return null;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getDateAssayFromTicks (inTicks : any) : DateAssay {\r\n const dAssay = this.getDateAssay(inTicks * 10);\r\n\r\n return dAssay;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getDateAssayOfNow () : DateAssay {\r\n return this.getDateAssay(Number(new Date().getTime()));\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * NOTE: END of DateAssay-SYSTEM-JS\r\n * ------------------------------------------------------------------------\r\n * =======================================================================\r\n */\r\n\r\n /*\r\n * ========================================================================\r\n * Begin of The Adder-System\r\n * ------------------------------------------------------------------------\r\n * ------------------------------------------------------------------------\r\n * Ref:https:// stackoverflow.com/questions/1197928/how-to-add-30-minutes-to-a-javascript-date-object\r\n */\r\n /**\r\n * Adds time to a date. Modelled after MySQL DATE_ADD function.\r\n * Example: addDate(new Date(), 'minute', 30) // returns 30 minutes from now.\r\n * https:// stackoverflow.com/a/1214753/18511\r\n *\r\n * @param date Date to start with\r\n * @param interval One of: year, quarter, month, week, day, hour, minute, second\r\n * @param units Number of units of the given interval to add.\r\n */\r\n // ------------------------------------------------------------------------\r\n static addDate (date : Date, interval : string, units : number) : any {\r\n if (!(date instanceof Date)) {\r\n return undefined;\r\n }\r\n let ret = new Date(date); // don't change original date\r\n const checkRollover = () => {\r\n if (ret.getDate() !== date.getDate()) {\r\n ret.setDate(0);\r\n }\r\n };\r\n\r\n switch (String(interval).toLowerCase()) {\r\n case 'year':\r\n ret.setFullYear(ret.getFullYear() + units);\r\n checkRollover();\r\n break;\r\n case 'quarter':\r\n ret.setMonth(ret.getMonth() + 3 * units);\r\n checkRollover();\r\n break;\r\n case 'month':\r\n ret.setMonth(ret.getMonth() + units);\r\n checkRollover();\r\n break;\r\n case 'week':\r\n ret.setDate(ret.getDate() + 7 * units);\r\n break;\r\n case 'day':\r\n ret.setDate(ret.getDate() + units);\r\n break;\r\n case 'hour':\r\n ret.setTime(ret.getTime() + units * 3600000);\r\n break;\r\n case 'minute':\r\n ret.setTime(ret.getTime() + units * 60000);\r\n break;\r\n case 'second':\r\n ret.setTime(ret.getTime() + units * 1000);\r\n break;\r\n default:\r\n // ret = undefined;\r\n break;\r\n }\r\n return ret;\r\n }\r\n /*\r\n * Ref: https:// stackoverflow.com/questions/1197928/how-to-add-30-minutes-to-a-javascript-date-object\r\n * Tested: works!\r\n * ------------------------------------------------------------------------\r\n */\r\n static addSeconds (date : Date, seconds : number) : any {\r\n if (date) {\r\n this.Date = new Date(date);\r\n this.Date.setSeconds(this.Date.getSeconds() + seconds);\r\n return this;\r\n }\r\n }\r\n\r\n static addMinutes (date : Date, minutes : number) : any {\r\n\r\n if (date) {\r\n this.Date = new Date(date);\r\n this.Date.setMinutes(this.Date.getMinutes() + minutes);\r\n return this;\r\n }\r\n }\r\n\r\n static addHours (date : Date, hours : number) : any {\r\n if (date) {\r\n this.Date = new Date(date);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.Date)) {\r\n this.Date.setHours(this.Date.getHours() + hours);\r\n return this;\r\n }\r\n }\r\n }\r\n\r\n static addDays (date : Date, days : number) : any {\r\n if (date) {\r\n this.Date = new Date(date);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.Date)) {\r\n this.Date.setDate(this.Date.getDate() + days);\r\n return this;\r\n }\r\n }\r\n }\r\n\r\n static addWeeks (date : Date, weeks : number) : any {\r\n if (date) {\r\n this.Date = new Date(date);\r\n this.addDays(date, weeks * 7);\r\n return this;\r\n }\r\n }\r\n\r\n static addMonths (date : Date, months : number) : any {\r\n if (date) {\r\n this.Date = new Date(date);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.Date)) {\r\n const dt = this.Date.getDate();\r\n\r\n this.Date.setMonth(this.Date.getMonth() + months);\r\n const currDt = this.Date.getDate();\r\n\r\n if (dt !== currDt) {\r\n this.addDays(date, -currDt);\r\n }\r\n\r\n return this;\r\n }\r\n }\r\n }\r\n\r\n static addYears (date : Date, years : number) : any {\r\n if (date) {\r\n this.Date = new Date(date);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.Date)) {\r\n const dt = this.Date.getDate();\r\n\r\n this.Date.setFullYear(this.Date.getFullYear() + years);\r\n\r\n const currDt = this.Date.getDate();\r\n\r\n if (dt !== currDt) {\r\n this.addDays(date, -currDt);\r\n }\r\n\r\n return this;\r\n }\r\n }\r\n }\r\n /*\r\n * ========================================================================\r\n * End of The Adder-System\r\n * ------------------------------------------------------------------------\r\n * ========================================================================\r\n */\r\n\r\n /*\r\n * ------------------------------------------------------------------------\r\n * pad(n, width) {\r\n * n = n + '';\r\n * return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;\r\n * }\r\n */\r\n\r\n /*\r\n * ========================================================================\r\n * ------------------------------------------------------------------------\r\n * BEGIN of JS-Ticks-To-.Net/C#Ticks-To-JS-Date-System\r\n * ------------------------------------------------------------------------\r\n * You can translate a JavaScript Date object to .NET ticks as follows:\r\n * Ref;https:// stackoverflow.com/questions/7966559/how-to-convert-javascript-date-object-to-ticks\r\n * ------------------------------------------------------------------------\r\n */\r\n static getJsDateToNetTicks (date : Date) : any {\r\n let yourDate; // for example\r\n\r\n if (date) {\r\n yourDate = new Date(date);\r\n } else {\r\n yourDate = new Date();\r\n }\r\n\r\n // the number of .net ticks at the unix epoch\r\n const epochTicks = 621355968000000000;\r\n\r\n // there are 10000 .net ticks per millisecond\r\n const ticksPerMillisecond = 10000;\r\n\r\n // calculate the total number of .net ticks for your date\r\n const yourTicks = epochTicks + yourDate.getTime() * ticksPerMillisecond;\r\n\r\n return yourTicks;\r\n\r\n /*\r\n * OR\r\n * Note: Date in JavaScript also contains offset.If you need to get rid of it use following:\r\n * return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000);\r\n */\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * You can translate a JavaScript Date object to .NET ticks as follows:\r\n * Ref:https:// stackoverflow.com/questions/7966559/how-to-convert-javascript-date-object-to-ticks\r\n * ------------------------------------------------------------------------\r\n */\r\n static getJsDateMinusJsOffsetToNetTicks (date : any) : any {\r\n // Note: Date in JavaScript also contains offset.If you need to get rid of it use following:\r\n if (date) {\r\n const dt = new Date(date);\r\n\r\n return dt.getTime() * 10000 + 621355968000000000 - dt.getTimezoneOffset() * 600000000;\r\n }\r\n else { \r\n const dt = new Date();\r\n\r\n return dt.getTime() * 10000 + 621355968000000000 - dt.getTimezoneOffset() * 600000000;\r\n }\r\n }\r\n\r\n /*\r\n * ------------------------------------------------------------------------\r\n * Note: Tested and works! August 14, 2020.\r\n * But this method does not consider 'TimezoneOffset'\r\n * ------------------------------------------------------------------------\r\n */\r\n\r\n // ------------------------------------------------------------------------\r\n static convertNetTicsToJsDateTicks (netTicks : string) : any {\r\n if (netTicks) {\r\n // the number of .net ticks at the unix epoch\r\n const epochTicks = 621355968000000000;\r\n\r\n // there are 10000 .net ticks per millisecond\r\n const ticksPerMillisecond = 10000;\r\n\r\n let jsDateTicks;\r\n\r\n /*\r\n * calculate the total number of .net ticks for your date\r\n * var yourTicks = epochTicks + (jsDateTicks * ticksPerMillisecond);\r\n */\r\n\r\n jsDateTicks = (Number(netTicks) - epochTicks) / ticksPerMillisecond;\r\n // var localDate = this.convertToLocal(date);\r\n // debugger;\r\n return jsDateTicks;\r\n }\r\n return null;\r\n }\r\n // ------------------------------------------------------------------------\r\n static convertNetTicsToJsDate (netTicks : string) : any {\r\n if (netTicks) {\r\n var jsDateTicks = this.convertNetTicsToJsDateTicks(netTicks);\r\n // debugger;\r\n const date = new Date(jsDateTicks); // works\r\n return date;\r\n }\r\n return null;\r\n }\r\n // ------------------------------------------------------------------------\r\n static convertNetTicsToJsDateString (netTicks : string) : string {\r\n if (netTicks) {\r\n const jsDateTicks = this.convertNetTicsToJsDate(netTicks);\r\n const localDate = this.convertToLocalWithOffset(new Date(jsDateTicks));\r\n // debugger;\r\n\r\n return localDate;\r\n }\r\n return '';\r\n }\r\n // ------------------------------------------------------------------------\r\n // date.toJSON(); // this is the JavaScript date as a c# DateTime !!\r\n // Note: The result will be in UTC time\r\n // ref: https://stackoverflow.com/questions/6702705/how-to-convert-javascript-datetime-to-c-sharp-datetime\r\n // ------------------------------------------------------------------------\r\n /*\r\n * ------------------------------------------------------------------------\r\n * END of JS-Ticks-To-.Net/C#Ticks-To-JS-Date-System\r\n * ------------------------------------------------------------------------\r\n * ========================================================================\r\n */\r\n\r\n /*\r\n * ========================================================================\r\n * ------------------------------------------------------------------------\r\n * BEGIN of SitUserKey-Comparison-System\r\n * ------------------------------------------------------------------------\r\n * NOTE: This method should be used whenever we need to compare sitUserKeys!!!!\r\n * Note: This method can compare the SITUserKeys of the following tow forms:\r\n * 1. dateTime-in-tics&user@email.com\r\n * 2.dateTime-in-format&user@email.com\r\n * Note: compared return values: 0 == this equals that, 1 == this > that, -1 == this < that\r\n * ------------------------------------------------------------------------\r\n */\r\n static compareOldSitUserKeys (thisSitUserKey : string, thatSitUserKey : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(thisSitUserKey) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(thatSitUserKey)) {\r\n const thisSitUserKeyParts = this.getSitUserKeyPartsArr(thisSitUserKey);\r\n const thatSitUserKeyParts = this.getSitUserKeyPartsArr(thatSitUserKey);\r\n const thisSitUserKeyDate = thisSitUserKeyParts[ 0 ];\r\n const thatSitUserKeyDate = thatSitUserKeyParts[ 0 ];\r\n let thisSitUserKeyTicks = 0;\r\n let thatSitUserKeyTicks = 0;\r\n /*\r\n * if the emails are equal\r\n */\r\n // debugger;\r\n if (thisSitUserKeyParts[ 1 ].toLocaleLowerCase().indexOf(thatSitUserKeyParts[ 1 ].toLocaleLowerCase()) !== -1) {\r\n // debugger;\r\n if (thisSitUserKeyParts[ 0 ].toLocaleLowerCase().indexOf(thatSitUserKeyParts[ 0 ].toLocaleLowerCase()) !== -1) {\r\n // debugger;\r\n return 0;\r\n }\r\n // compare the dateTime-ticks\r\n if (thisSitUserKeyParts[ 0 ].indexOf('/') === -1 && thisSitUserKeyParts[ 0 ].indexOf('-') === -1 && thisSitUserKeyParts[ 0 ].indexOf(':') === -1) {\r\n thisSitUserKeyTicks = Number(thisSitUserKeyParts[ 0 ]);\r\n }\r\n if (thatSitUserKeyParts[ 0 ].indexOf('/') === -1 && thatSitUserKeyParts[ 0 ].indexOf('-') === -1 && thisSitUserKeyParts[ 0 ].indexOf(':') === -1) {\r\n thatSitUserKeyTicks = Number(thatSitUserKeyParts[ 0 ]);\r\n }\r\n /*\r\n * if both dateTimes are in ticks, then compare ticks\r\n */\r\n if (thisSitUserKeyTicks > 0 && thatSitUserKeyTicks > 0) {\r\n // debugger;\r\n return this.compareTicks(thisSitUserKeyTicks, thatSitUserKeyTicks);\r\n }\r\n /*\r\n * compare the dateTimes (possibly in different format such as\r\n * DateTime format = yy-mm-dd hh:mm:ss AMPM or mm/dd/yyy hh:mm:ss AMPM)\r\n */\r\n // debugger;\r\n const thisDate = new Date(thisSitUserKeyParts[ 0 ]);\r\n const thatDate = new Date(thatSitUserKeyParts[ 0 ]);\r\n const diff = thisDate.getTime() - thatDate.getTime();\r\n // debugger;\r\n\r\n return diff;\r\n }\r\n return -1;\r\n }\r\n }\r\n // ------------------------------------------------------------------------\r\n static compareSitUserKeys (thisSitUserKey : string, thatSitUserKey : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(thisSitUserKey) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(thatSitUserKey)) {\r\n const thisSitUserKeyParts = this.getSitUserKeyPartsArr(thisSitUserKey);\r\n const thatSitUserKeyParts = this.getSitUserKeyPartsArr(thatSitUserKey);\r\n const thisSitUserKeyTicks = Number(thisSitUserKeyParts[ 0 ]);\r\n const thatSitUserKeyTicks = Number(thatSitUserKeyParts[ 0 ]);\r\n /*\r\n * if the emails are equal\r\n */\r\n // debugger;\r\n if (thisSitUserKeyParts[ 1 ].toLocaleLowerCase().indexOf(thatSitUserKeyParts[ 1 ].toLocaleLowerCase()) !== -1) {\r\n \r\n /*\r\n * if both dateTimes are in ticks, then compare ticks\r\n */\r\n if (thisSitUserKeyTicks > 0 && thatSitUserKeyTicks > 0) {\r\n // debugger;\r\n return this.compareTicks(thisSitUserKeyTicks, thatSitUserKeyTicks);\r\n } \r\n else return -1;\r\n }\r\n else return -1;\r\n }\r\n else return -1;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getSitUserKeyPartsArr (sITUserKey : string) : string[] {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(sITUserKey)) {\r\n const parts = sITUserKey.split('&');\r\n\r\n if (parts != null && parts.length > 1) {\r\n return parts;\r\n }\r\n }\r\n return null as any;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getEmailFromSitUserKey (sitUserKey : string) : string {\r\n const parts = this.getSitUserKeyPartsArr(sitUserKey);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length > 1) {\r\n return parts[ 0 ];\r\n }\r\n return '';\r\n }\r\n // ------------------------------------------------------------------------\r\n static getProfileNameFromEmail (email : any) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(email)) {\r\n let parts = email.split('@');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length > 1) {\r\n return parts[ 0 ];\r\n }\r\n return '';\r\n }\r\n }\r\n // ------------------------------------------------------------------------\r\n static getProfileNameFromSitUserKey (sitUserKey : string) : string {\r\n let email = this.getEmailFromSitUserKey(sitUserKey);\r\n return this.getProfileNameFromEmail(email);\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/14350148/convert-ticks-to-time-format-hhmmss\r\n */\r\n static getDateFromTicks (inTicks : any) : any {\r\n if (inTicks) {\r\n const ticksInSecs = inTicks / 1000;\r\n const ticks = ticksInSecs;\r\n const hh = Math.floor(ticks / 3600);\r\n const mm = Math.floor((ticks % 3600) / 60);\r\n const ss = ticks % 60;\r\n\r\n return this.pad(hh, 2) + ':' + this.pad(mm, 2) + ':' + this.pad(ss, 2);\r\n }\r\n return null as any;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * END of SitUserKey-Comparison-System\r\n * ------------------------------------------------------------------------\r\n * ========================================================================\r\n * ------------------------------------------------------------------------\r\n * NOTE: BEGIN of BROWSER-TIMEZONE-SYSTEM-JS\r\n *\r\n * This system/method is not needed since\r\n * Date.getTimezoneOffset() does pretty much the same things.\r\n * ------------------------------------------------------------------------\r\n */\r\n static getBrowserTZ (isT : boolean) : any {\r\n const dAssay = this.getBrowserTZInDateAssay();\r\n\r\n if (isT) {\r\n return dAssay.UTCoffsetT;\r\n }\r\n return dAssay.UTCoffset;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * Ref:https:// stackoverflow.com/questions/6939685/get-client-time-zone-from-browser\r\n * Determine browser's timezone and DST\r\n * ------------------------------------------------------------------------\r\n */\r\n static getBrowserTZInDateAssay () : DateAssay {\r\n let ClientTZ = {\r\n UTCoffset: 0, // Browser time offset from UTC in minutes\r\n UTCoffsetDST: '',\r\n UTCoffsetT: '+0000S', // Browser time offset from UTC in '±hhmmD' form\r\n hasDST: false, // Browser time observes DST\r\n };\r\n const self = ClientTZ;\r\n\r\n // Determine UTC time offset\r\n const now = new Date();\r\n const date1 = new Date(now.getFullYear(), 1 - 1, 1, 0, 0, 0, 0); // Jan\r\n const diff1 = -date1.getTimezoneOffset();\r\n\r\n self.UTCoffset = diff1; // West of GMT ?\r\n\r\n // Determine DST use\r\n const date2 = new Date(now.getFullYear(), 6 - 1, 1, 0, 0, 0, 0); // Jun\r\n let diff2 = -date2.getTimezoneOffset();\r\n\r\n if (diff1 !== diff2) {\r\n self.hasDST = true;\r\n if (diff1 - diff2 >= 0) {\r\n self.UTCoffset = diff2; // East of GMT\r\n // else self.UTCoffset = diff1; //West of GMT ?; (I added this line.)\r\n }\r\n }\r\n\r\n // Convert UTC offset to ±hhmmD form\r\n diff2 = (diff1 < 0 ? -diff1 : diff1) / 60;\r\n const hr = Math.floor(diff2);\r\n const min = diff2 - hr;\r\n\r\n diff2 = hr * 100 + min * 60;\r\n self.UTCoffsetT = (diff1 < 0 ? '-' : '+') + (hr < 10 ? '0' : '') + diff2.toString() + (self.hasDST ? 'D' : 'S');\r\n\r\n /*\r\n * if (isT) return self.UTCoffsetT;\r\n * else return self.UTCoffset;\r\n */\r\n\r\n const dateAssay = new DateAssay();\r\n\r\n dateAssay.UTCoffsetT = self.UTCoffsetT;\r\n dateAssay.UTCoffset = self.UTCoffset.toString();\r\n dateAssay.hasDST = self.hasDST;\r\n\r\n return dateAssay;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * NOTE: END of BROWSER-TIMEZONE-SYSTEM-JS\r\n * ------------------------------------------------------------------------\r\n * ------------------------------------------------------------------------\r\n * Note: This does not work!\r\n * ------------------------------------------------------------------------\r\n */\r\n static jsTicksInYYMMSSmmhhssOld (millsecs : number) : DateAssay {\r\n const secs = millsecs / 1000;\r\n const years = Math.floor(secs / (365 * 24 * 60 * 60));\r\n let leftSec = secs - years * 365 * 24 * 60 * 60;\r\n\r\n const months = Math.floor(leftSec / ((365 / 12) * 24 * 60 * 60));\r\n\r\n leftSec = leftSec - months * (365 / 12) * 24 * 60 * 60;\r\n\r\n const days = Math.floor(leftSec / (24 * 60 * 60));\r\n\r\n leftSec = leftSec - days * 24 * 60 * 60;\r\n\r\n const hrs = Math.floor(leftSec / (60 * 60));\r\n\r\n leftSec = leftSec - hrs * 60 * 60;\r\n\r\n const min = Math.floor(leftSec / 60);\r\n\r\n leftSec = leftSec - min * 60;\r\n const msg = 'Your date has: ' + days + ' days, ' + hrs + ' hours, ' + min + ' minutes, and ' + leftSec + ' seconds.';\r\n\r\n const dA : DateAssay = new DateAssay();\r\n\r\n dA.ss = leftSec;\r\n dA.mm = min;\r\n dA.hh = hrs;\r\n dA.dd = days;\r\n dA.months = months;\r\n dA.yyyy = years;\r\n dA.date = new Date(secs);\r\n debugger;\r\n dA.dateFormatted = years + '/' + months + '/' + days + ' T ' + hrs + ':' + min + ':' + leftSec;\r\n return dA;\r\n /*\r\n * if (unit) {\r\n * switch (unit) {\r\n * case 'year':\r\n * return years;\r\n * case 'month':\r\n * return months;\r\n * case 'day':\r\n * return days;\r\n * case 'hour':\r\n * return hrs;\r\n * case 'minute':\r\n * return min\r\n * case 'second':\r\n * return leftSec;\r\n * case 'string': default:\r\n * return msg;\r\n * }\r\n * }\r\n */\r\n }\r\n /*\r\n * ------------------------------------------------------------------------\r\n * NOTE: This does not work!\r\n * ------------------------------------------------------------------------\r\n */\r\n static dateFromTicks (inTicks : any, isBool : boolean) : any {\r\n const ticks = parseInt(inTicks, 10);\r\n // original code\r\n const ss = ticks % 60;\r\n const mm = Math.floor((ticks % 3600) / 60);\r\n const hh = Math.floor(ticks / 3600);\r\n const dd = Math.floor(hh / 24);\r\n const months = Math.floor(dd / 30);\r\n const yyyy = Math.floor(months / 12);\r\n\r\n // Note: 10*tick = millisec\r\n const millss = ticks * 10;\r\n\r\n const dateAssay = new DateAssay();\r\n\r\n dateAssay.millss = millss;\r\n dateAssay.ss = ss;\r\n dateAssay.mm = mm;\r\n dateAssay.hh = hh;\r\n dateAssay.dd = dd;\r\n dateAssay.yyyy = yyyy;\r\n dateAssay.months = months;\r\n dateAssay.jsTicksNum = ticks;\r\n dateAssay.jsTicks = ticks.toString();\r\n dateAssay.date = new Date(millss);\r\n\r\n /*\r\n * let ss = Math.floor((ticks / 10 / 1000) % 60);\r\n * let mm = Math.floor(((ticks / 10 / 100) % 3600) / 60);\r\n * let hh = Math.floor((ticks / 10 / 1000) / 3600);\r\n * -----------------------------------------------------\r\n * ss = Math.floor((millss / 1000) % 60);\r\n * mm = Math.floor(((millss / 1000) % 3600) / 60);\r\n * hh = Math.floor((millss / 1000) / 3600);\r\n * -----------------------------------------------------\r\n * let dd = Math.floor(hh / 24);\r\n * let months = Math.floor(dd / 30);\r\n * let yyyy = Math.floor(months / 12);\r\n * -----------------------------------------------------\r\n * + 'T' + this.pad(hh, 2) + ':' + this.pad(mm, 2) + ':' + this.pad(ss, 2);\r\n */\r\n const result = this.padYear(yyyy) + '/' + this.padMMDD(months) + '/' + this.padMMDD(dd);\r\n /*\r\n * alert ('age: ' + this.ageFromDobString(result) + '=>' + this.pad(yyyy, 2) + '/' + this.pad(months, 2) +;\r\n * '/' + this.pad(dd, 2) + this.pad(hh, 2) + ':' + this.pad(mm, 2) + ':' + this.pad(ss, 2));\r\n * debugger;\r\n */\r\n\r\n dateAssay.dateFormatted = this.convertToLocal(new Date(inTicks));\r\n if (isBool) {\r\n return dateAssay;\r\n }\r\n return result;\r\n }\r\n // ------------------------------------------------------------------------\r\n static pad (n : any, width : any) : any {\r\n n = n + '';\r\n return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;\r\n }\r\n static padMMDD (num : any) : any {\r\n num = '0' + num;\r\n return num.substr(num.length - 2);\r\n }\r\n static padYear (num : any) : any {\r\n num = '0' + num;\r\n return num.substr(num.length - 4);\r\n }\r\n // ------------------------------------------------------------------------\r\n // Ref:https:// docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks?view=netframework-4.8\r\n // Tested on: 202301091521\r\n // ------------------------------------------------------------------------\r\n static timeAgoSince (date : Date) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(date)) {\r\n var diff : any;\r\n diff = Date.now() - date.getTime();\r\n\r\n var diffDate = this.getDateAssayFromTicks(diff);\r\n\r\n var ago = '';\r\n var totalMilliseconds = 0;\r\n var totalSeconds = 0;\r\n var totalMinutes = 0;\r\n var totalHours = 0;\r\n var totalDays = 0;\r\n var totalMonths = 0;\r\n var totalYears = 0;\r\n // debugger;\r\n if (diff > 1000) {\r\n totalSeconds = Math.floor(diff / 1000);\r\n totalMilliseconds = Math.ceil(diff - totalSeconds * 1000);\r\n // debugger;\r\n if (totalSeconds > 60) {\r\n totalMinutes = Math.floor(totalSeconds / 60);\r\n totalSeconds = Math.ceil(totalSeconds - totalMinutes * 60);\r\n // debugger;\r\n if (totalMinutes > 60) {\r\n totalHours = Math.floor(totalMinutes / 60);\r\n totalMinutes = Math.ceil(totalMinutes - totalHours * 60);\r\n // debugger;\r\n if (totalHours > 24) {\r\n totalDays = Math.floor(totalHours / 24);\r\n totalHours = Math.ceil(totalHours - totalDays * 24);\r\n // debugger;\r\n if (totalDays > 30.41667) {\r\n totalMonths = Math.floor(totalDays / 30.41667);\r\n totalDays = Math.ceil(totalDays - totalMonths * 30.41667);\r\n // debugger;\r\n if (totalMonths > 12) {\r\n totalYears = Math.floor(totalMonths / 12);\r\n totalMonths = Math.ceil(totalMonths - totalYears * 12);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else totalMilliseconds = diff;\r\n\r\n // debugger;\r\n var years = totalYears;\r\n var months = totalMonths;\r\n var days = totalDays;\r\n var hours = totalHours;\r\n var minutes = totalMinutes;\r\n var seconds = totalSeconds;;\r\n var milliseconds = totalMilliseconds;\r\n\r\n years > 0 ? ago = years + \" years \" + months + \" months \" + days + \" days \" + hours + \" hours \" + minutes + \" minutes \" + seconds + \" seconds \" + milliseconds + \" milliseconds ago.\"\r\n :\r\n months < 12 && months > 0 ? ago = months + \" months \" + days + \" days \" + hours + \" hours \" + minutes + \" minutes \" + seconds + \" seconds \" + milliseconds + \" milliseconds ago.\"\r\n :\r\n days < 30 && days > 0 ? ago = days + \" days \" + hours + \" hours \" + minutes + \" minutes \" + seconds + \" seconds \" + milliseconds + \" milliseconds ago.\"\r\n :\r\n hours < 24 && hours > 0 ? ago = hours + \" hours \" + minutes + \" minutes \" + seconds + \" seconds \" + milliseconds + \" milliseconds ago.\"\r\n :\r\n minutes < 60 && minutes > 0 ? ago = minutes + \" minutes \" + seconds + \" seconds \" + milliseconds + \" milliseconds ago.\"\r\n :\r\n seconds < 60 && seconds > 0 ? ago = seconds + \" seconds \" + milliseconds + \" milliseconds ago.\"\r\n :\r\n milliseconds < 1000 && milliseconds > 0 ? ago = milliseconds + \" milliseconds ago.\"\r\n :\r\n milliseconds > 1 ? ago = milliseconds + \" milliseconds ago.\"\r\n : ago = \"couldn't determine time ago. :(\";\r\n // debugger;\r\n return ago;\r\n }\r\n }\r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { HammerGestureConfig } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { RedirectionService } from '../../commonServiceService/redirectionService.service';\r\nimport { EmitterSubjectService } from '../emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { ScrollTopServiceStatic } from './scrollTopServiceStatic.service';\r\nimport { WhenScrollEndsServiceStatic } from './whenScrollEndsServiceStatic.service';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport abstract class HammerServiceStatic implements OnDestroy {\r\n overrides = {\r\n // I will only use the swap gesture so \r\n // I will deactivate the others to avoid overlaps\r\n 'pinch': { enable: false },\r\n 'rotate': { enable: false }\r\n }\r\n static redirectionService : RedirectionService;\r\n static currentPage : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n static elemId = '';\r\n private emitterDestroyed$ : Subject = new Subject();\r\n static eventAction : string = '';\r\n static hammer : any;\r\n static isActive = true;\r\n static isPhotoMgmt = true;\r\n static isViewMember = true;\r\n static loginSuccess : LoginSuccess = new LoginSuccess();\r\n static mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n static message = '';\r\n static myElement : any;\r\n static mc : any;\r\n static profileImageKvPhotos : KvPhoto[] = [];\r\n static router : any;\r\n static timer : any;\r\n static timerArray : any[] = [];\r\n //mc.add(new Hammer.Swipe({ direction: Hammer.DIRECTION_HORIZONTAL }));\r\n //mc.add(new Hammer.Pan({ direction: Hammer.DIRECTION_HORIZONTAL }));\r\n\r\n constructor (\r\n @Inject(Document) document : any,\r\n private _redirectionService: RedirectionService,\r\n @Inject(Window) window : any,\r\n public Hammer : HammerGestureConfig\r\n ) {\r\n HammerServiceStatic.hammer = Hammer;\r\n HammerServiceStatic.redirectionService = _redirectionService;\r\n // debugger;\r\n }\r\n \r\n \r\n \r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n // prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n // (2) https:// www.concretepage.com/angular-2/angular-4-renderer2-example\r\n // (3) https:// stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n // (4) https:// stackblitz.com/edit/timer-with-pdestroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n HammerServiceStatic.timerArray.forEach(timer => clearInterval(timer));\r\n // debugger;\r\n }\r\n // --------------------------------------------------------------\r\n static executeAction (evType: string, elemId: string): void {\r\n // debugger;\r\n let currentPage : any;\r\n let pageNo = -1;\r\n switch (evType.toLowerCase()) {\r\n case 'swipeleft': /*next*/\r\n case 'panleft':\r\n if (elemId.indexOf('navbarComponentId') !== -1) {\r\n EmitterSubjectService.emitGesture(evType);\r\n }\r\n else {\r\n //debugger;\r\n EmitterSubjectService.emitPagerBreadcrumDirection('next');\r\n ScrollTopServiceStatic.scrollToTop('allScrollToId');\r\n }\r\n break;\r\n case 'swiperight': /*prev*/\r\n case 'panright':\r\n if (elemId.indexOf('navbarComponentId') !== -1) {\r\n EmitterSubjectService.emitGesture(evType);\r\n }\r\n else {\r\n // debugger;\r\n EmitterSubjectService.emitPagerBreadcrumDirection('prev');\r\n ScrollTopServiceStatic.scrollToTop('allScrollToId');\r\n }\r\n break;\r\n case 'swipedown':\r\n case 'pandown':\r\n debugger;\r\n if (elemId.indexOf('appRootId') !== -1) {\r\n debugger;\r\n // let returnUrl = window.location.pathname + window.location.search;\r\n // RedirectionServiceStatic.appStartUrlStringParser(this.router);\r\n this.redirectionService.redirectToAction(HammerServiceStatic.router).subscribe(data => {\r\n console.log(data); // do nothing\r\n });\r\n }\r\n // ScrollTopServiceStatic.scrollToBottom(elemId);\r\n // debugger;\r\n break;\r\n case 'swipeup':\r\n case 'panup':\r\n debugger;\r\n ScrollTopServiceStatic.scrollToTop(elemId);\r\n // debugger;\r\n break;\r\n // case 'whenscrollends':\r\n // this.whenScrollEndsService.whenScrollEnds();\r\n // debugger;\r\n // break;\r\n case 'swipe':\r\n // debugger;\r\n if (elemId.indexOf('navbarComponentId') !== -1) {\r\n EmitterSubjectService.emitGesture(evType);\r\n }\r\n else {\r\n EmitterSubjectService.emitPagerBreadcrumDirection('next');\r\n }\r\n // debugger;\r\n break;\r\n default:\r\n debugger;\r\n // RedirectionServiceStatic.appStartUrlStringParser(this.router);\r\n this.redirectionService.redirectToAction(this.router).subscribe(data => {\r\n console.log(data); // do nothing\r\n });\r\n\r\n //if (elemId.indexOf('navbarComponentId') !== -1) {\r\n // EmitterSubjectService.emitGesture(evType);\r\n //}\r\n //else {\r\n // EmitterSubjectService.emitPagerBreadcrumDirection('next');\r\n //}\r\n break;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n private static executePanAction (evType : string, elemId : string) : void {\r\n // debugger;\r\n let currentPage : any;\r\n let pageNo = -1;\r\n switch (evType.toLowerCase()) {\r\n case 'panleft': /*next*/\r\n if (elemId.indexOf('navbarComponentId') !== -1) {\r\n EmitterSubjectService.emitGesture(evType);\r\n }\r\n else {\r\n currentPage = EmitterSubjectService.getCurrentPage();\r\n pageNo = parseInt(currentPage.pageNo, 0);\r\n pageNo++;\r\n EmitterSubjectService.emitCurrentPage(pageNo);\r\n EmitterSubjectService.emitSetPage(pageNo);\r\n debugger;\r\n }\r\n break;\r\n case 'panright': /*prev*/\r\n if (elemId.indexOf('navbarComponentId') !== -1) {\r\n EmitterSubjectService.emitGesture(evType);\r\n }\r\n else {\r\n currentPage = EmitterSubjectService.getCurrentPage();\r\n pageNo = currentPage.pageNo;\r\n pageNo--;\r\n EmitterSubjectService.emitCurrentPage(pageNo);\r\n EmitterSubjectService.emitSetPage(pageNo);\r\n debugger;\r\n }\r\n break;\r\n case 'pandown':\r\n ScrollTopServiceStatic.scrollToBottom(elemId);\r\n debugger;\r\n break;\r\n case 'pandup':\r\n ScrollTopServiceStatic.scrollToTop(elemId);\r\n debugger;\r\n break;\r\n case 'whenscrollends':\r\n WhenScrollEndsServiceStatic.whenScrollEnds();\r\n debugger;\r\n break;\r\n case 'pan':\r\n case 'tap':\r\n case 'press':\r\n if (elemId.indexOf('navbarComponentId') !== -1) {\r\n EmitterSubjectService.emitGesture(evType);\r\n }\r\n // debugger;\r\n break;\r\n default:\r\n if (elemId.indexOf('navbarComponentId') !== -1) {\r\n EmitterSubjectService.emitGesture(evType);\r\n }\r\n break;\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // API:\r\n // ref: https://codepen.io/jtangelder/pen/bGLmMw\r\n // ---------------------------------------------------------------------------------\r\n static hammeredElement (elemId : string, evt: Event, router: Router) : any {\r\n // debugger;\r\n this.router = router;\r\n let message = '';\r\n let actionType = '';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n var element = document.getElementById(elemId) as HTMLElement;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(element)) {\r\n actionType = evt.type;\r\n }\r\n // create a simple instance\r\n // by default, it only adds horizontal recognizers\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(element)) {\r\n var mc = this.hammer.buildHammer(element); // use HammerGestureConfig-provided method here \r\n\r\n // let the pan gesture support all directions.\r\n // this will block the vertical scrolling on a touch-device while on the element\r\n mc.get('pan').set({ direction: this.hammer.DIRECTION_ALL });\r\n\r\n // let the swipe gesture support all directions.\r\n // this will block the vertical scrolling on a touch-device while on the element\r\n mc.get('swipe').set({ direction: this.hammer.DIRECTION_ALL });\r\n\r\n if (actionType.indexOf('pan') !== -1 || actionType.indexOf('tap') !== -1 || actionType.indexOf('paress') !== -1 ) {\r\n // debugger;\r\n this.executeAction(actionType, elemId);\r\n }\r\n else if (actionType.indexOf('swipe') !== -1) {\r\n // debugger;\r\n this.executeAction(actionType, elemId);\r\n }\r\n this.message = message;\r\n // debugger;\r\n // EmitterSubjectService.emitMessage(this.message);\r\n element.remove();\r\n }\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { EmitterSubjectService } from '../../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { DomUtilsServiceStatic } from './../domUtilsServiceStatic.service';\r\n\r\n// Note: Important!!\r\n// For routing purpose, in cases where signedInUserId is required,\r\n// we obtain it from the EmitterServiceStatic instead of passing it as a parameter.\r\n//\r\n// The sitUserId in the ModuleComponentLoader model is deprecated.!!\r\n//\r\n// Hence, only non-singedInUserId and other Ids can be passed as parameter.\r\n// This decision is made on 20240923, and the entire application's routing is overhauled.\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport abstract class ModuleComponentLoaderServiceStatic\r\n{\r\n \r\n public elementRef = EmitterSubjectService.getElementRef();\r\n public emitterDestroyed$ : Subject = new Subject();\r\n static randomNumberGenerator$ : Observable;\r\n static randomNumber = 0;\r\n static loginSuccess : LoginSuccess = new LoginSuccess();\r\n static mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n // ---------------------------------------------------------\r\n constructor (private router : Router) {\r\n \r\n // -------------------------------------------------------------------------\r\n EmitterSubjectService.removeComponentEmitter\r\n .pipe(takeUntil(this.emitterDestroyed$))\r\n .subscribe((result) => {\r\n // debugger;\r\n if (result) {\r\n let tMcLoader = result as ModuleComponentLoader;\r\n let timer = setTimeout(() => {\r\n // debugger;\r\n\r\n // alert( this.mcLoader.callerName + '<-- is unloading -->' + this.mcLoader.componentName );\r\n DomUtilsServiceStatic.unloadComponent(tMcLoader.componentName);\r\n\r\n this.emitterDestroyed$.unsubscribe();\r\n clearInterval(timer);\r\n }, 5);\r\n clearTimeout(timer);\r\n }\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n /*\r\n * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n * (2) https:// www.concretepage.com/angular-2/angular-4-renderer2-example\r\n * (3) https:// stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n * (4) https:// stackblitz.com/edit/timer-with-pdestroyed\r\n */\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ---------------------------------------------------------\r\n static getRandomNumber () : Observable {\r\n this.randomNumber++;\r\n\r\n if (!this.randomNumberGenerator$) {\r\n this.randomNumberGenerator$ = Observable.create((subject : Subject) => {\r\n let timer = setInterval(() => {\r\n const num = Math.floor(Math.random() * 10);\r\n subject.next(num);\r\n clearInterval(timer);\r\n }, 5);\r\n\r\n clearInterval(timer);\r\n });\r\n }\r\n return this.randomNumberGenerator$;\r\n }\r\n // ---------------------------------------------------------\r\n // ---------------------------------------------------------\r\n public static isValidModuleComponentLoader (mcl : ModuleComponentLoader) : boolean {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl)\r\n && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl?.componentName)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl?.moduleName))\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcl?.url)) {\r\n return true;\r\n }\r\n else return false;\r\n }\r\n // ----------------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------------------------\r\n static getMcLoaderComponentId (mcLoader : any) : any {\r\n let mcLoaderComponentId = '';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.componentName)) {\r\n mcLoaderComponentId = mcLoader.componentName + 'ComponentId';\r\n }\r\n return mcLoaderComponentId;\r\n }\r\n // --------------------------------------------------------------\r\n // Note: this method guarantees that a non-empty McLoader is returned\r\n // It is used by other components & services\r\n // --------------------------------------------------------------\r\n public static setupMcLoaderModel (mcLoader : ModuleComponentLoader) : any {\r\n let comparator : string = '';\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader)) {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.componentName)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.action)) {\r\n // debugger;\r\n comparator = mcLoader.action = mcLoader.componentName;\r\n }\r\n }\r\n else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.action)) {\r\n comparator = mcLoader.componentName = mcLoader.action;\r\n }\r\n mcLoader.returnUrl = window.location.pathname + window.location.search;\r\n \r\n // debugger;\r\n switch (comparator.toLowerCase()) {\r\n case 'buddies':\r\n case 'iblocked':\r\n case 'ifriended':\r\n case 'iliked':\r\n case 'istarred':\r\n case 'itracked':\r\n case 'utracked':\r\n case 'iwinked':\r\n case 'uwinked':\r\n case 'iunlocked':\r\n // debugger;\r\n mcLoader.moduleName = 'activitym';\r\n break;\r\n\r\n case 'memexpdate':\r\n mcLoader.moduleName = 'appadminm'\r\n break;\r\n\r\n case 'mychats':\r\n case 'chathistory':\r\n case 'chat':\r\n mcLoader.moduleName = 'chatm';\r\n // debugger;\r\n break;\r\n\r\n case 'myemails':\r\n case 'myenotes':\r\n case 'viewemail':\r\n case 'viewenote':\r\n case 'composeemail':\r\n case 'composeenote':\r\n mcLoader.moduleName = 'communicationm';\r\n break;\r\n\r\n case 'about':\r\n case 'chatui':\r\n case 'features':\r\n case 'comparememberships':\r\n case 'contactus':\r\n case 'membercontactus':\r\n case 'notfound':\r\n case 'privacy':\r\n case 'terms':\r\n mcLoader.moduleName = 'publicm';\r\n break;\r\n\r\n case 'forgot':\r\n case 'forgotpassword':\r\n case 'login':\r\n case 'logout':\r\n case 'resetpassword':\r\n // debugger;\r\n mcLoader.moduleName = 'loginm';\r\n break;\r\n\r\n case 'register':\r\n mcLoader.moduleName = 'registerm';\r\n break;\r\n\r\n case 'prescreen':\r\n case 'signup':\r\n mcLoader.moduleName = 'signupm';\r\n // debugger;\r\n break;\r\n\r\n case 'members':\r\n case 'membersindividually': \r\n mcLoader.moduleName = 'membersm';\r\n break;\r\n\r\n case 'memberscroll':\r\n mcLoader.moduleName = 'memberscrollm';\r\n break;\r\n\r\n case 'profiletilescroll':\r\n mcLoader.moduleName = 'profiletilescrollm';\r\n break;\r\n\r\n //case 'memberviewmgmt':\r\n // mcLoader.moduleName = 'memberViewMgmtm';\r\n // break;\r\n\r\n case 'memberview':\r\n case 'upgradedmembers':\r\n mcLoader.moduleName = 'memberViewAndUpgradedm';\r\n break;\r\n\r\n case 'memberedit':\r\n case 'profile':\r\n case 'preference':\r\n case 'profilecontent':\r\n mcLoader.moduleName = 'profilem';\r\n break;\r\n \r\n case 'dialog':\r\n case 'message':\r\n case 'spinner':\r\n mcLoader.moduleName = 'modalm';\r\n break;\r\n\r\n case 'myprofileviewmgmt':\r\n case 'myphotomgmt':\r\n mcLoader.moduleName = 'mym';\r\n // debugger;\r\n break;\r\n\r\n case 'distance':\r\n case 'gayatriyantra':\r\n case 'sandbox':\r\n case 'csjstime':\r\n mcLoader.moduleName = 'sandboxm';\r\n break;\r\n\r\n case 'payment':\r\n case 'upgraded':\r\n mcLoader.moduleName = 'salesm';\r\n break;\r\n\r\n case 'paymenttest':\r\n case 'upgradetest':\r\n mcLoader.moduleName = 'salestestm';\r\n break;\r\n\r\n case 'signup':\r\n mcLoader.moduleName = 'signupm';\r\n break;\r\n\r\n case 'animation':\r\n case 'boxnoncetest':\r\n case 'errorlog':\r\n case 'gesturetest':\r\n case 'imageresizer':\r\n mcLoader.moduleName = 'staffm';\r\n break;\r\n\r\n //case 'chatui':\r\n // mcLoader.moduleName = 'publicm';\r\n // break;\r\n\r\n default:\r\n // debugger;\r\n mcLoader.moduleName = 'app';\r\n mcLoader.componentName = 'index';\r\n break;\r\n }\r\n }\r\n else {\r\n // debugger;\r\n mcLoader.moduleName = 'app';\r\n mcLoader.componentName = 'index';\r\n mcLoader.controller = mcLoader.moduleName;\r\n mcLoader.action = mcLoader.componentName;\r\n }\r\n mcLoader.controller = mcLoader.moduleName;\r\n mcLoader = this.getUrl(mcLoader);\r\n mcLoader.url = this.getUrlWithBackSlashPrefix(mcLoader.url);\r\n // debugger;\r\n EmitterSubjectService.setMCLoader(mcLoader);\r\n // debugger;\r\n return mcLoader;\r\n }\r\n // --------------------------------------------------------------\r\n public static getUrl (mcloader : ModuleComponentLoader) : any {\r\n let path = '';\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcloader.moduleName) && mcloader.moduleName.length > 0\r\n && mcloader.componentName && mcloader.componentName.length > 0) { \r\n let compName = mcloader.componentName.toLowerCase();\r\n // debugger;\r\n\r\n switch (compName) {\r\n case 'index':\r\n path = mcloader.componentName;\r\n console.log('path: ' + path);\r\n break;\r\n case 'about':\r\n case 'buddies':\r\n case 'buddy':\r\n case 'chatui':\r\n case 'contactus':\r\n case 'dialog':\r\n case 'distance':\r\n case 'displayinvoice':\r\n case 'gayatriyantra':\r\n case 'features':\r\n case 'forgot':\r\n case 'forgotpassword':\r\n case 'iblocked':\r\n case 'ifriended':\r\n case 'iliked':\r\n case 'istarred':\r\n case 'itracked':\r\n case 'iunlocked':\r\n case 'iwinked':\r\n case 'login':\r\n case 'logout':\r\n case 'memexpdate': // ?\r\n case 'message': \r\n case 'notfound':\r\n case 'privacy':\r\n case 'profiletilescroll':\r\n case 'register': \r\n case 'spinner':\r\n case 'signup':\r\n case 'terms': \r\n // debugger;\r\n // Note: this condition is required for finding out which path is failing to capture on console.log().\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcloader.moduleName) && mcloader.moduleName.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcloader.componentName) && mcloader.componentName.length > 0) {\r\n path = mcloader.moduleName + '/' + mcloader.componentName;\r\n }\r\n else {\r\n console.log('path not found: ' + path);\r\n }\r\n console.log('path: ' + path);\r\n break;\r\n\r\n // Note: these routes are initiated by and for the signedInUser:\r\n case 'comparememberships':\r\n case 'memberedit':\r\n case 'mychats':\r\n case 'myemails':\r\n case 'myenotes':\r\n case 'myfriends':\r\n case 'myphotomgmt':\r\n case 'myprofileviewmgmt':\r\n case 'payment':\r\n case 'paymenttest':\r\n case 'memberedit':\r\n case 'profile':\r\n case 'preference':\r\n case 'profilecontent':\r\n case 'sandbox':\r\n case 'upgradedmembers':\r\n case 'upgradetest':\r\n // debugger;\r\n if (this.loginSuccess.signedInUserId > 0) {\r\n path = mcloader.moduleName + '/' + mcloader.componentName;\r\n }\r\n else {\r\n console.log('path not found: ' + path);\r\n };\r\n console.log('path: ' + path);\r\n break;\r\n // Note: these routes are initiated about or by the non-signedInUser:\r\n case 'chathistory':\r\n case 'chat':\r\n case 'composeemail':\r\n case 'composeenote':\r\n case 'membercontactus':\r\n case 'memberview': \r\n case 'viewemail':\r\n case 'viewenote':\r\n // debugger;\r\n if (mcloader.id > 0) {\r\n path = mcloader.moduleName + '/' + mcloader.componentName + '/' + mcloader.id;\r\n }\r\n else {\r\n console.log('path not found: ' + path);\r\n };\r\n console.log('path: ' + path);\r\n break;\r\n default:\r\n // debugger;\r\n if (mcloader.id > 0) {\r\n path = mcloader.moduleName + '/' + mcloader.componentName + '/' + mcloader.id.toString();\r\n }\r\n else {\r\n path = mcloader.moduleName + '/' + mcloader.componentName;\r\n }\r\n console.log('default path: ' + path);\r\n break;\r\n }\r\n }\r\n // debugger;\r\n mcloader.url = path;\r\n // debugger;\r\n return mcloader;\r\n }\r\n // --------------------------------------------------------------\r\n public static getUrlWithBackSlashPrefix (path : any) : any {\r\n let tPath = ''\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(path)) {\r\n tPath = '/' + path;\r\n }\r\n return tPath;\r\n }\r\n // --------------------------------------------------------------\r\n \r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport abstract class ScrollTopServiceStatic {\r\n static container: any;\r\n \r\n static scrollY = new BehaviorSubject( 0 );\r\n static scrollY$ = ScrollTopServiceStatic.scrollY.asObservable();\r\n\r\n constructor(@Inject(Window) window: Window, @Inject(Document) document: Document) { }\r\n // --------------------------------------------------------------\r\n static currentFocus (focus : any): any {\r\n if (focus) {\r\n const tempElem = document.querySelectorAll('#' + focus);\r\n\r\n if (tempElem && tempElem.length > 0) {\r\n this.container = tempElem[0];\r\n if (this.container) {\r\n window.scrollTo(0, this.container.parentNode.offsetTop - 100);\r\n return true;\r\n }\r\n /*\r\n * Note: The following JQuery code will animate the scroll to top of the page\r\n * But need to plug in JQuery into Angular\r\n * $('html, body').animate({\r\n * scrollTop: $('#body').offset().top\r\n * }, 1000);\r\n * returntrue;\r\n */\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static scrollToLocation (focus : any, location : any): any {\r\n if (focus) {\r\n // debugger;\r\n const tempElem = document.querySelectorAll('#' + focus);\r\n\r\n if (tempElem && tempElem.length > 0) {\r\n // debugger;\r\n this.container = tempElem[0];\r\n if (this.container) {\r\n // window.scrollTo(0, this.container.offsetTop - 100);\r\n this.container.scrollIntoView({ behavior: 'smooth', block: location, inline: 'nearest'});\r\n return true;\r\n }\r\n\r\n /*\r\n * if (this.container) this.container.scrollIntoView({ behavior: 'smooth', block: location, inline: 'nearest' });\r\n * this.container = document.getElementById(focus);\r\n * if (this.container) this.container.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' });\r\n * Note: some browsers do not support this\r\n * this.container.scrollIntoView(false);//Note: All browsers support this\r\n */\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n static scrollToBottom (focus : any): any {\r\n if (focus) {\r\n // debugger;\r\n const tempElem = document.querySelectorAll('#' + focus);\r\n\r\n if (tempElem && tempElem.length > 0) {\r\n // debugger\r\n this.container = tempElem[0];\r\n if (this.container) {\r\n // window.scrollTo(0, this.container.parentNode.offsetTop - 200);\r\n this.container.parentNode.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest'});\r\n return true;\r\n }\r\n /*\r\n * this.container = document.getElementById(focus);\r\n * if (this.container) this.container.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' });\r\n * Note: some browsers do not support this\r\n * this.container.scrollIntoView(false);//Note: All browsers support this\r\n */\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n static scrollToTop (focus : any): any {\r\n if (focus) {\r\n // debugger;\r\n const tempElem = document.querySelectorAll('#' + focus);\r\n\r\n if (tempElem && tempElem.length > 0) {\r\n // window.scrollTo(0, this.container.parentNode.offsetTop - 200);\r\n tempElem[0].scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest'});\r\n return true;\r\n }\r\n /*\r\n * if (this.container) this.container.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' });\r\n * Note: some browsers do not support this\r\n * this.container.scrollIntoView(false);//Note: All browsers support this\r\n */\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n // ref: https://itnext.io/4-ways-to-listen-to-page-scrolling-for-dynamic-ui-in-angular-ft-rxjs-5a83f91ee487\r\n static updateScrollY ( value : number ) : void\r\n {\r\n this.scrollY.next( value );\r\n }\r\n // --------------------------------------------------------------\r\n static scroll (id) {\r\n ScrollTopServiceStatic.scrollToTop(id);\r\n let timer = setTimeout(() => {\r\n ScrollTopServiceStatic.scrollToTop(id);\r\n clearTimeout(timer);\r\n }, 1000);\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n","'use strict'\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport * as nacl from 'tweetnacl';\r\nimport * as naclUtil from 'tweetnacl-util';\r\n// import * as Enums from 'enums.json'; // ref:https:// www.techiediaries.com/angular-local-json-files/\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { NaclPairClient } from '../../../models/crypto/naclPairClient.model';\r\nimport { Salt } from '../../../models/crypto/salt.model';\r\nimport { KvAny } from '../../../models/keyValue/kvAny.model';\r\nimport { HttpService } from '../../coreServiceService/httpService.service';\r\nimport { DateStringServiceStatic } from './dateStringServiceStatic.service';\r\nimport { EmitterSubjectService } from '../../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { InMemoryDataServiceStatic } from './../inMemoryDataServiceStatic.service';\r\nimport { StaticServiceService } from './../staticServiceService.service';\r\n// import { StringServiceStatic } from './../stringServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from '../stringServiceStatic.service';\r\nimport { PhotoBn } from '../../../models/common/photoBn.model';\r\n\r\n\r\n// --------------------------------------\r\n\r\n\r\n // Documentation\r\n // nacl.util.decodeUTF8(string)\r\n\r\n // Decodes string and returns Uint8Array of bytes.\r\n // nacl.util.encodeUTF8(array)\r\n\r\n // Encodes Uint8Array or Array of bytes into string.\r\n // nacl.util.decodeBase64(string)\r\n\r\n // Decodes Base - 64 encoded string and returns Uint8Array of bytes.\r\n // nacl.util.encodeBase64(array)\r\n\r\n // Encodes Uint8Array or Array of bytes into string using Base - 64 encoding.\r\n // --------------------------------------\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n/*\r\n * ======================================================================================\r\n * tweetnacl\r\n * Ref:http:// ed25519.cr.yp.to/\r\n * Ref:https:// medium.com/sharenowtech/high-speed-static-key-cryptography-in-javascript-part-2-digital-signatures-3e58876d1dff\r\n * Ref:https:// medium.com/sharenowtech/high-speed-static-key-cryptography-in-javascript-part-1-3eefb6f91f77\r\n * Note: Specifically, NaCl uses elliptic-curve cryptography, not RSA; it uses an elliptic curve, Curve25519,\r\n * that has several advanced security features;\r\n * it uses Salsa20, not AES(although it does include an AES implementation on the side); it uses Poly1305, not HMAC;\r\n * and it uses EdDSA, not ECDSA.\r\n * --------------------------------------------------------------------------------------\r\n * The following are example of TextEncoder/TextDecoder:\r\n * var uint8array = new TextEncoder('utf-8').encode(string);\r\n * var string = new TextDecoder('utf-8').decode(uint8array);\r\n */\r\nexport abstract class SlakezSaltServiceStatic implements OnDestroy\r\n{\r\n \r\n;\r\n constructor (\r\n nacl, naclUtil\r\n )\r\n {\r\n nacl.util = require('tweetnacl-util');\r\n SlakezSaltServiceStatic.initialize();\r\n }\r\n static httpService : HttpService;\r\n static inMemoryDataServiceStatic : InMemoryDataServiceStatic;\r\n // -------------------------------------------\r\n public static chabi : 'KA8j/zeXyTPXt0+UTogm1tQk2r0+mUQ9G34PBtxYnHA=';\r\n public static chabiGopon : 'dJKh9zxbQquNHzKCIkyR11h9svmQBzazOcAuqmWPb/A=';\r\n static enums: any;\r\n static keyType: string[] = ['pair', 'sign', 'shared'];\r\n static saltType: string[] = ['Public', 'Secret', 'PassP'];\r\n static loginSuccess: LoginSuccess = new LoginSuccess();\r\n static passPhrase: any;\r\n static naclPairClient: NaclPairClient = new NaclPairClient();\r\n static saltBn: BoxNonceEntity = new BoxNonceEntity();\r\n static salt : Salt = new Salt();\r\n static signedInUserId = 0;\r\n static talaChabi : any;\r\n static timer : any;\r\n static timerArray : any[] = [];\r\n static unsalted : string = '';\r\n // -------------------------------------------\r\n private static emitterDestroyed$ : Subject = new Subject();\r\n\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () : any {\r\n // prevent memory leak when component destroyed\r\n SlakezSaltServiceStatic.emitterDestroyed$.next(true);\r\n SlakezSaltServiceStatic.emitterDestroyed$.complete();\r\n SlakezSaltServiceStatic.timerArray.forEach((timer) => clearInterval(timer));\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n // ref: nacl-util.js:\r\n // apis: 1) util.decodeUTF8\r\n // 2) util.encodeUTF8\r\n // 3) util.encodeBase64\r\n // 4) util.decodeBase64\r\n\r\n public validateBase64 (s) {\r\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\r\n throw new TypeError('invalid encoding');\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static processTwoChabi (): any\r\n {\r\n let twoChabi = InMemoryDataServiceStatic.getTwoChabi();\r\n // debugger;\r\n let salt = new Salt();\r\n // Jump-start the application's communication channel:\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( twoChabi ) && twoChabi.length > 1 )\r\n {\r\n // debugger;\r\n salt.publicKey = SlakezSaltServiceStatic.chabi = twoChabi[ 0 ].value;\r\n salt.secretKey = SlakezSaltServiceStatic.chabiGopon = twoChabi[ 1 ].value;\r\n salt = SlakezSaltServiceStatic.resetSaltShaker( salt );\r\n return salt;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: The Tala-chabi story:\r\n // 'chabi' can be found in InMemoryDataServiceStatic.\r\n // This service always have a default value and in addition\r\n // fetches the freshed one from the server.\r\n // This should be the only place where other than in-memory-data chabi can be found.\r\n // ---------------------------------------------------------------\r\n static setSaltShaker(): any {\r\n\r\n\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( salt.pk ) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( salt.sk ) )\r\n // {\r\n // SlakezSaltServiceStatic.naclPairClient.publicKey = salt.pk; // naclUtil.decodeBase64(this.salt.pk);\r\n // SlakezSaltServiceStatic.naclPairClient.secretKey = salt.sk; // naclUtil.decodeBase64(this.salt.sk);\r\n // SlakezSaltServiceStatic.naclPairClient.modelName = 'saltyPair';\r\n // SlakezSaltServiceStatic.naclPairClient.id = SlakezSaltServiceStatic.loginSuccess.signedInUserId;\r\n // SlakezSaltServiceStatic.naclPairClient.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // }\r\n // else {\r\n\r\n SlakezSaltServiceStatic.salt = this.processTwoChabi();\r\n // debugger;\r\n\r\n const localSaltyPair = new NaclPairClient();\r\n localSaltyPair.publicKey = SlakezSaltServiceStatic.salt.publicKey;\r\n localSaltyPair.secretKey = SlakezSaltServiceStatic.salt.secretKey;\r\n localSaltyPair.id = SlakezSaltServiceStatic.loginSuccess.signedInUserId;\r\n localSaltyPair.modelName = 'saltyPair'; // key\r\n localSaltyPair.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n\r\n EmitterSubjectService.setSaltyPair( localSaltyPair ); // set it on emitterService\r\n // cdebugger;\r\n\r\n SlakezSaltServiceStatic.naclPairClient = localSaltyPair;\r\n return localSaltyPair;\r\n // }\r\n // return '';\r\n }\r\n // ---------------------------------------------------------------\r\n static resetSaltShaker (salt: Salt) : any\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( salt ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( salt.publicKey ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( salt.secretKey ) )\r\n {\r\n this.naclPairClient.publicKey = SlakezSaltServiceStatic.salt.publicKey = salt.publicKey; // naclUtil.decodeBase64(this.salt.pk);\r\n this.naclPairClient.secretKey = SlakezSaltServiceStatic.salt.secretKey = salt.secretKey; // naclUtil.decodeBase64(this.salt.sk);\r\n }\r\n else\r\n {\r\n this.naclPairClient.publicKey = SlakezSaltServiceStatic.salt.publicKey = this.chabi;\r\n this.naclPairClient.secretKey = SlakezSaltServiceStatic.salt.secretKey = this.chabiGopon;\r\n // debugger;\r\n }\r\n this.naclPairClient.id = SlakezSaltServiceStatic.loginSuccess.signedInUserId;\r\n this.naclPairClient.modelName = 'saltyPair'; // key\r\n this.naclPairClient.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n\r\n EmitterSubjectService.setSaltyPair( this.naclPairClient ); // set it on emitterService\r\n\r\n return SlakezSaltServiceStatic.naclPairClient;\r\n }\r\n /*\r\n * =========================================================================\r\n * Note: the original 'NaclPair' has only static&private key fields, no date or other information\r\n * hence if NaclPairClient 's date is null or empty, it could not copy from 'NaclPair',\r\n * hence has to be considered 'Not-Expired'\r\n * -------------------------------------------------------------------------\r\n * TODO: Test!!\r\n */\r\n static hasPairExpired(pair: NaclPairClient): boolean {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pair)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pair.date)) {\r\n return false;\r\n }\r\n return DateStringServiceStatic.compareTicks(pair.date, DateStringServiceStatic.getTicks(DateStringServiceStatic.addMonths(new Date(), -3))) <= 0;\r\n }\r\n return true;\r\n }\r\n // --------------------------------------------------------------------------------------\r\n // ref:https://stackoverflow.com/questions/11616630/how-can-i-print-a-circular-structure-in-a-json-like-format\r\n static getCircularReplacer = () =>\r\n {\r\n const seen = new WeakSet();\r\n return (key : any, value : any ) =>\r\n {\r\n if ( typeof value === 'object' && value !== null )\r\n {\r\n if ( seen.has( value ) )\r\n {\r\n return;\r\n }\r\n seen.add( value );\r\n }\r\n return value;\r\n };\r\n } \r\n // usage: JSON.stringify ( circularReference, getCircularReplacer());\r\n // --------------------------------------------------------------------------------------\r\n\r\n static saltModel (model : any): BoxNonceEntity {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n return this.boxSalt( JSON.stringify( model, this.getCircularReplacer())) as BoxNonceEntity;\r\n }\r\n return null as any;\r\n }\r\n\r\n // -----------------------------------------------------------\r\n unSaltModel (model : any) : any {\r\n // debugger;\r\n if (model) {\r\n return SlakezSaltServiceStatic.boxUnsalt(model);\r\n }\r\n return null;\r\n }\r\n /*\r\n * --------------------------------------------------------------------------------------\r\n * To be used when cipherbox needs to be in bytes (box and nonce)\r\n */\r\n static boxUnsalt (cipherbox : BoxNonceEntity) : any {\r\n let payload : any;\r\n let tNaclPairClient : any;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.nonce) && cipherbox.box.length > 0) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient)\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient.publicKey)\r\n || SlakezSaltServiceStatic.naclPairClient.publicKey.length === 0) {\r\n this.naclPairClient = SlakezSaltServiceStatic.setSaltShaker();\r\n }\r\n\r\n // since the emitGetKeys may have been called, retrive the SaltyPair once again.\r\n // this.naclPairClient = (this.emitterService as EmitterService).getSaltyPair();\r\n // let boxString = cipherbox.boxStr// JSON.stringify(cipherbox.box, this.getCircularReplacer());\r\n // let nonceString = JSON.stringify(cipherbox.nonce, this.getCircularReplacer());\r\n // let boxAb = StringServiceStatic.b64ToArrBuff(cipherbox.box);\r\n // let boxStrAb = StringServiceStatic.b64ToArrBuff(cipherbox.boxStr);\r\n // let nonceAb = StringServiceStatic.b64ToArrBuff(cipherbox.nonce);\r\n // debugger;\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient.publicKey) &&\r\n this.naclPairClient.publicKey.toString().length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient.secretKey) &&\r\n this.naclPairClient.secretKey.toString().length > 0\r\n ) {\r\n //let boxUnit8Arr = FrequentlyUsedFunctionsServiceStatic.b64ToArrBuff(cipherbox.box.toString());\r\n //let nonceUnit8Arr = FrequentlyUsedFunctionsServiceStatic.b64ToArrBuff(cipherbox.nonce.toString());\r\n let pkUnit8Arr = naclUtil.decodeBase64(SlakezSaltServiceStatic.naclPairClient.publicKey);\r\n let skUnit8Arr = naclUtil.decodeBase64(SlakezSaltServiceStatic.naclPairClient.secretKey);\r\n // debugger;\r\n payload = nacl.box.open(\r\n //naclUtil.decodeBase64(cipherbox.boxAb),\r\n //naclUtil.decodeBase64(cipherbox.nonceAb),\r\n\r\n //original-working:\r\n //naclUtil.decodeBase64(cipherbox.box),\r\n //naclUtil.decodeBase64(cipherbox.nonce),\r\n // ---------------------------------------------------\r\n // original:\r\n // ---------------------------------------------------\r\n naclUtil.decodeBase64(cipherbox.box.toString()),\r\n naclUtil.decodeBase64(cipherbox.nonce.toString()),\r\n //boxUnit8Arr,\r\n //nonceUnit8Arr,\r\n pkUnit8Arr,\r\n skUnit8Arr\r\n // ---------------------------------------------------\r\n //naclUtil.decodeBase64(boxString),\r\n //naclUtil.decodeBase64(nonceString),\r\n //naclUtil.decodeBase64( SlakezSaltServiceStatic.naclPairClient.publicKey),\r\n //naclUtil.decodeBase64( SlakezSaltServiceStatic.naclPairClient.secretKey),\r\n );\r\n try {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(payload)) {\r\n // const decoded1 = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(payload);\r\n const decoded1 = naclUtil.encodeUTF8(payload);\r\n // debugger;\r\n\r\n return decoded1;\r\n }\r\n }\r\n catch (e) {\r\n console.log('error occured during unsalting. error.message: ' + e.message);\r\n // debugger;\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n // -----------------------------------------------------------\r\n\r\n /*\r\n * --------------------------------------------------------------------------------------\r\n * To be used when cipherbox needs to be in bytes (box and nonce)\r\n */\r\n static isBoxUnsalt(cipherbox: BoxNonceEntity): any {\r\n let payload: any;\r\n let tNaclPairClient : any;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.nonce) && cipherbox.box.length > 0) {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient )\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient.publicKey )\r\n || SlakezSaltServiceStatic.naclPairClient.publicKey.length === 0 )\r\n {\r\n this.naclPairClient = SlakezSaltServiceStatic.setSaltShaker();\r\n }\r\n\r\n // since the emitGetKeys may have been called, retrive the SaltyPair once again.\r\n // this.naclPairClient = (this.emitterService as EmitterService).getSaltyPair();\r\n // let boxString = cipherbox.boxStr// JSON.stringify(cipherbox.box, this.getCircularReplacer());\r\n // let nonceString = JSON.stringify(cipherbox.nonce, this.getCircularReplacer());\r\n // let boxAb = StringServiceStatic.b64ToArrBuff(cipherbox.box);\r\n // let boxStrAb = StringServiceStatic.b64ToArrBuff(cipherbox.boxStr);\r\n // let nonceAb = StringServiceStatic.b64ToArrBuff(cipherbox.nonce);\r\n // debugger;\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient.publicKey) &&\r\n this.naclPairClient.publicKey.toString().length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient.secretKey) &&\r\n this.naclPairClient.secretKey.toString().length > 0\r\n ) {\r\n //let boxUnit8Arr = FrequentlyUsedFunctionsServiceStatic.b64ToArrBuff(cipherbox.box.toString());\r\n //let nonceUnit8Arr = FrequentlyUsedFunctionsServiceStatic.b64ToArrBuff(cipherbox.nonce.toString());\r\n let pkUnit8Arr = naclUtil.decodeBase64(SlakezSaltServiceStatic.naclPairClient.publicKey);\r\n let skUnit8Arr = naclUtil.decodeBase64(SlakezSaltServiceStatic.naclPairClient.secretKey);\r\n // debugger;\r\n payload = nacl.box.open(\r\n //naclUtil.decodeBase64(cipherbox.boxAb),\r\n //naclUtil.decodeBase64(cipherbox.nonceAb),\r\n\r\n //original-working:\r\n //naclUtil.decodeBase64(cipherbox.box),\r\n //naclUtil.decodeBase64(cipherbox.nonce),\r\n // ---------------------------------------------------\r\n // original:\r\n // ---------------------------------------------------\r\n naclUtil.decodeBase64(cipherbox.box.toString()),\r\n naclUtil.decodeBase64(cipherbox.nonce.toString()),\r\n //boxUnit8Arr,\r\n //nonceUnit8Arr,\r\n pkUnit8Arr,\r\n skUnit8Arr\r\n // ---------------------------------------------------\r\n //naclUtil.decodeBase64(boxString),\r\n //naclUtil.decodeBase64(nonceString),\r\n //naclUtil.decodeBase64( SlakezSaltServiceStatic.naclPairClient.publicKey),\r\n //naclUtil.decodeBase64( SlakezSaltServiceStatic.naclPairClient.secretKey),\r\n );\r\n try {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(payload)) {\r\n // const decoded1 = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(payload);\r\n const decoded1 = naclUtil.encodeUTF8(payload);\r\n // debugger;\r\n\r\n this.unsalted = decoded1;\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n console.log('error occured during unsalting. error.message: ' + e.message);\r\n // debugger;\r\n return false;\r\n\t\t\t\t}\r\n }\r\n else return false;\r\n }\r\n else return false;\r\n }\r\n /*\r\n * --------------------------------------------------------------------------------------\r\n * To be used when ciphertext needs to be in bytes i.e. cipherbox == {box, nonce}\r\n */\r\n static boxSalt(message: string): any {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(message) && message.toString().length > 0) {\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient )\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient.publicKey )\r\n || SlakezSaltServiceStatic.naclPairClient.publicKey.length === 0 )\r\n {\r\n this.naclPairClient = SlakezSaltServiceStatic.setSaltShaker();\r\n }\r\n\r\n // since the emitGetKeys may have been called, retrive the SaltyPair once again.\r\n // this.naclPairClient = EmitterSubjectService.getSaltyPair();\r\n // debugger;\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient.publicKey) &&\r\n this.naclPairClient.publicKey.toString().length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.naclPairClient.secretKey) &&\r\n this.naclPairClient.secretKey.toString().length > 0\r\n ) {\r\n // generating one time nonce for encryption\r\n const nonce = nacl.randomBytes(24);\r\n /*\r\n * for test only\r\n * var nonceStr = naclUtil.encodeBase64(nonce);\r\n * var nonceStr2 = new TextDecoder('utf-8').decode(nonce);\r\n * debugger;\r\n */\r\n //let pkUnit8Arr = FrequentlyUsedFunctionsServiceStatic.b64ToArrBuff(SlakezSaltServiceStatic.naclPairClient.publicKey);\r\n //let skUnit8Arr = FrequentlyUsedFunctionsServiceStatic.b64ToArrBuff(SlakezSaltServiceStatic.naclPairClient.secretKey);\r\n\r\n let pkUnit8Arr = naclUtil.decodeBase64(SlakezSaltServiceStatic.naclPairClient.publicKey);\r\n let skUnit8Arr = naclUtil.decodeBase64(SlakezSaltServiceStatic.naclPairClient.secretKey);\r\n \r\n // debugger;\r\n \r\n const box = nacl.box(naclUtil.decodeUTF8(JSON.stringify(message)), nonce,\r\n // const box = nacl.box(FrequentlyUsedFunctionsServiceStatic.strTobase64(message), nonce,\r\n pkUnit8Arr,\r\n skUnit8Arr);\r\n //naclUtil.decodeBase64( SlakezSaltServiceStatic.naclPairClient.publicKey ),\r\n //naclUtil.decodeBase64( SlakezSaltServiceStatic.naclPairClient.secretKey ) );\r\n // debugger;\r\n\r\n return { box, nonce};\r\n }\r\n }\r\n return '';\r\n }\r\n // ----------------------------------------------------------------\r\n static unsaltPrimaryPicPhotoBnJson (photoBn : PhotoBn) : any {\r\n let pic = '';\r\n let boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.nonce)\r\n && photoBn.box.length > 0 && photoBn.nonce.length > 0) {\r\n // debugger;\r\n boxNonceEntity.box = photoBn.box;\r\n boxNonceEntity.nonce = photoBn.nonce;\r\n photoBn = SlakezSaltServiceStatic.boxUnsalt(boxNonceEntity);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn)\r\n && (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.image)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.imageString)\r\n || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(photoBn.pic))) {\r\n return photoBn;\r\n }\r\n else return null;\r\n }\r\n // debugger;\r\n\r\n }\r\n /*\r\n * --------------------------------------------------------------------------------------\r\n * To be used when cipherbox needs to be in bytes (box and nonce)\r\n */\r\n /*\r\n static boxUnsaltFromUnit8Arr (cipherbox : BoxNonceEntity) : any {\r\n let payload : any;\r\n let tNaclPairClient : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.box) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cipherbox.nonce) && cipherbox.box.length > 0) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient)\r\n || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient.publicKey)\r\n || SlakezSaltServiceStatic.naclPairClient.publicKey.length === 0) {\r\n this.naclPairClient = SlakezSaltServiceStatic.setSaltShaker();\r\n }\r\n\r\n // since the emitGetKeys may have been called, retrive the SaltyPair once again.\r\n // this.naclPairClient = (this.emitterService as EmitterService).getSaltyPair();\r\n // let boxString = cipherbox.boxStr// JSON.stringify(cipherbox.box, this.getCircularReplacer());\r\n // let nonceString = JSON.stringify(cipherbox.nonce, this.getCircularReplacer());\r\n // let boxAb = StringServiceStatic.b64ToArrBuff(cipherbox.box);\r\n // let boxStrAb = StringServiceStatic.b64ToArrBuff(cipherbox.boxStr);\r\n // let nonceAb = StringServiceStatic.b64ToArrBuff(cipherbox.nonce);\r\n // debugger;\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient.publicKey) &&\r\n this.naclPairClient.publicKey.toString().length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(SlakezSaltServiceStatic.naclPairClient.secretKey) &&\r\n this.naclPairClient.secretKey.toString().length > 0\r\n ) {\r\n let tcipherbox = naclUtil.encodeUTF8(cipherbox.box);\r\n let tciphernonce = naclUtil.encodeUTF8(cipherbox.nonce);\r\n payload = nacl.box.open(\r\n //naclUtil.decodeBase64(cipherbox.boxAb),\r\n //naclUtil.decodeBase64(cipherbox.nonceAb),\r\n\r\n //original-working:\r\n //naclUtil.decodeBase64(cipherbox.box),\r\n //naclUtil.decodeBase64(cipherbox.nonce),\r\n\r\n naclUtil.decodeBase64(tcipherbox),\r\n naclUtil.decodeBase64(tcipherbox),\r\n // ---------------------------------------------------\r\n // original:\r\n // ---------------------------------------------------\r\n //naclUtil.decodeBase64(cipherbox.box.toString()),\r\n //naclUtil.decodeBase64(cipherbox.nonce.toString()),\r\n // ---------------------------------------------------\r\n //naclUtil.decodeBase64(boxString),\r\n //naclUtil.decodeBase64(nonceString),\r\n naclUtil.decodeBase64(SlakezSaltServiceStatic.naclPairClient.publicKey),\r\n naclUtil.decodeBase64(SlakezSaltServiceStatic.naclPairClient.secretKey),\r\n );\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(payload)) {\r\n const decoded1 = naclUtil.encodeUTF8(payload);\r\n // debugger;\r\n\r\n return decoded1;\r\n }\r\n }\r\n }\r\n return '';\r\n } */\r\n /*\r\n * --------------------------------------------------------------------------------------\r\n * To be used when ciphertext needs to be in string\r\n */\r\n /* static stringSalt(message: string): string {\r\n if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(message) &&\r\n message.toString().length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.naclPairClient) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.naclPairClient.publicKey) &&\r\n this.naclPairClient.publicKey.toString().length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.naclPairClient.secretKey) &&\r\n this.naclPairClient.secretKey.toString().length > 0\r\n ) {\r\n // generating one time nonce for encryption\r\n const nonce = nacl.randomBytes(24);\r\n\r\n const box = nacl.box(naclUtil.decodeUTF8(message), nonce, this.naclPairClient.publicKey, this.naclPairClient.secretKey);\r\n\r\n return naclUtil.encodeUTF8(box) + '#' + naclUtil.encodeUTF8(nonce);\r\n }\r\n return '';\r\n }\r\n /*\r\n * --------------------------------------------------------------------------------------\r\n * To be used when ciphertext is in string\r\n */\r\n /* static stringUnsalt(ciphertext: string): string {\r\n let boxUnit8Arr: any;\r\n let nonceUnit8Arr: any;\r\n let payload: any;\r\n /*\r\n * if (this.staticKey.toString().length < 5) this.getSalt('Public');\r\n * if (this.secretKey.toString().length < 5) this.getSalt('Pecret');\r\n */\r\n\r\n /* if (\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ciphertext) &&\r\n ciphertext.length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.naclPairClient) &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.naclPairClient.publicKey) &&\r\n this.naclPairClient.publicKey.toString().length > 0 &&\r\n !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.naclPairClient.secretKey) &&\r\n this.naclPairClient.secretKey.toString().length > 0\r\n ) {\r\n const parts = ciphertext.split('#');\r\n\r\n if (parts.length === 2) {\r\n boxUnit8Arr = naclUtil.decodeBase64(parts[0]);\r\n nonceUnit8Arr = naclUtil.decodeBase64(parts[1]);\r\n }\r\n payload = nacl.box.open(boxUnit8Arr, nonceUnit8Arr, this.naclPairClient.publicKey, this.naclPairClient.secretKey);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(payload)) {\r\n const decoded = naclUtil.encodeUTF8(payload);\r\n\r\n return decoded;\r\n }\r\n }\r\n return '';\r\n } */\r\n // ---------------------------------------------------------------------------------\r\n // debugger;: )\r\n private static initialize ()\r\n {\r\n \r\n\r\n\r\n // debugger;\r\n SlakezSaltServiceStatic.inMemoryDataServiceStatic = StaticServiceService.getInMemoryDataServiceStatic();\r\n SlakezSaltServiceStatic.httpService = EmitterSubjectService.getHttpService();\r\n // debugger;\r\n // SlakezSaltServiceStatic.enums = ( Enums as any).default; // ref:https:// www.techiediaries.com/angular-local-json-files/\r\n fetch('./json/products.json').then(res => res.json())\r\n .then(jsonData => {\r\n SlakezSaltServiceStatic.enums = jsonData;\r\n });\r\n\r\n SlakezSaltServiceStatic.salt = SlakezSaltServiceStatic.processTwoChabi();\r\n\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.enums ) )\r\n {\r\n\r\n EmitterSubjectService.setEnums( SlakezSaltServiceStatic.enums );\r\n // debugger;\r\n }\r\n\r\n // debugger;\r\n EmitterSubjectService.loginSuccessEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n // debugger;\r\n SlakezSaltServiceStatic.loginSuccess = result; // JSON.parse(JSON.stringify(result));\r\n this.emitterDestroyed$.unsubscribe();\r\n\r\n } );\r\n\r\n\r\n SlakezSaltServiceStatic.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n SlakezSaltServiceStatic.signedInUserId = SlakezSaltServiceStatic.loginSuccess.signedInUserId;\r\n\r\n debugger;\r\n EmitterSubjectService.resetSaltShakerEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n debugger;\r\n SlakezSaltServiceStatic.resetSaltShaker( result as Salt ); // JSON.parse(JSON.stringify(result));\r\n this.emitterDestroyed$.unsubscribe();\r\n\r\n } );\r\n\r\n // this.salt = (this.emitterService as EmitterService).getSalty();\r\n // var tNaclPairClient = (this.emitterService as EmitterService).getSaltyPair();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tNaclPairClient) && !tNaclPairClient) {\r\n // //debugger;\r\n // this.naclPairClient = tNaclPairClient;\r\n // }\r\n\r\n /*\r\n * debugger;\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.naclPairClient) && this.hasPairExpired(this.naclPairClient)) {\r\n * debugger;\r\n * this.getKeys(this.keyType[0]);\r\n * }\r\n */\r\n }\r\n /*\r\n * -------------------------------------------------------------------------\r\n * NOTE: DO NOT DELETE THIS.!!!\r\n * NOTE: This has been moved to httpService inorder to eliminate circular-di\r\n * -------------------------------------------------------------------------\r\n * getKeys(ktype): any {\r\n * this.salt.ktype = ktype;\r\n * var url = '/SlakezSalt/GetKeys';\r\n * this.httpService.post(url, this.salt, 'json')\r\n * .subscribe((data: any) => {\r\n * //debugger;\r\n * if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data)) {\r\n * this.salt = data as Salt; //Note: server-send variables are all lower-case\r\n * if (this.salt.ktype.indexOf('pair') != -1) {\r\n * this.naclPairClient.staticKey = this.salt.publicKey// naclUtil.decodeBase64(this.salt.publicKey);\r\n * this.naclPairClient.secretKey = this.salt.secretKey// naclUtil.decodeBase64(this.salt.secretKey);\r\n * var localSaltyPair = new NaclPairClient();\r\n * localSaltyPair.staticKey = this.naclPairClient.staticKey;\r\n * localSaltyPair.secretKey = this.naclPairClient.secretKey;;\r\n * localSaltyPair.id = this.loginSuccess.signedInUserId;\r\n * localSaltyPair.modelName = 'saltyPair'; // key\r\n * localSaltyPair.date = DateStringServiceStatic.getTicks(new Date()).toString();\r\n */\r\n\r\n /*\r\n * var message = 'the size of SaltyPair data is: ' + localSaltyPair.toString().length;\r\n * //alert (message);\r\n * console.log(message);\r\n * //(this.emitterService as EmitterService).emitMyErrorLog(message);\r\n */\r\n\r\n // (this.emitterService as EmitterService).setSaltyPair(localSaltyPair); //set it on emitterService\r\n // this.localStorageService.setSaltyPair(localSaltyPair); // save to localStorage\r\n // //debugger;\r\n // }\r\n // else if (this.salt.ktype.indexOf('sign') != -1) { /*TODO:capture sign-keys*/ }\r\n // else if (this.salt.ktype.indexOf('shared') != -1) { /*TODO:capture shared-keys*/ }\r\n // }\r\n // });\r\n // return;\r\n // }\r\n\r\n // --------------------------------------------------------------------------------------\r\n // TODO: deprecate\r\n // --------------------------------------------------------------------------------------\r\n // static getEmitterSaltyPair () : any\r\n // {\r\n // let tNaclPairClient = EmitterSubjectService.getSaltyPair();;\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( SlakezSaltServiceStatic.httpService ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.httpService ) )\r\n // {\r\n // SlakezSaltServiceStatic.httpService = EmitterSubjectService.getHttpService();\r\n // }\r\n // else\r\n // {\r\n // SlakezSaltServiceStatic.httpService.getEnumsFromServer();\r\n // }\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tNaclPairClient ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tNaclPairClient.publicKey ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( tNaclPairClient.secretKey ) )\r\n // {\r\n // // debugger;\r\n // this.naclPairClient = tNaclPairClient as NaclPairClient;\r\n // } else\r\n // {\r\n // debugger;\r\n\r\n // this.timer = setTimeout( () =>\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.enums ) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.enums.talaChabi ) )\r\n // {\r\n // debugger;\r\n // this.talaChabi = InMemoryDataServiceStatic.enums.talaChabi;\r\n // this.naclPairClient.publicKey = InMemoryDataServiceStatic.enums.talaChabi.chabi;\r\n // this.naclPairClient.secretKey = InMemoryDataServiceStatic.enums.talaChabi.chabiGopon;\r\n // debugger;\r\n // }\r\n // }, 2000 );\r\n // this.timerArray.push( this.timer );\r\n // debugger;\r\n\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.naclPairClient.secretKey ) || FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.naclPairClient.publicKey ) )\r\n // {\r\n // EmitterSubjectService.emitGetKeys( this.keyType[ 0 ] );\r\n // // since the emitGetKeys may have been called, retrive the SaltyPair once again.\r\n // this.timer = setTimeout( () =>\r\n // {\r\n // this.naclPairClient = EmitterSubjectService.getSaltyPair();\r\n\r\n // }, 2000 );\r\n // this.timerArray.push( this.timer );\r\n // debugger;\r\n // }\r\n // }\r\n // return this.naclPairClient;\r\n // }\r\n // --------------------------------------------------------------------------------------\r\n}\r\n","'use strict'\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class WhenScrollEndsServiceStatic {\r\n static server = 'https:// localhost:44382/';\r\n static apiUrl = 'api/';\r\n static serverWithApiUrl = WhenScrollEndsServiceStatic.server + WhenScrollEndsServiceStatic.apiUrl;\r\n\r\n // ------------------------------------------------------------------------\r\n public constructor () { \r\n }\r\n\r\n // ------------------------------------------------------------------------\r\n // Ref:https:// www.ibm.com/developerworks/community/blogs/3d274f0f-f47a-4bf0-91ec-8ebad479881b/\r\n // entry/how_to_implement_a_table_with_lazy_loading_infinite_scroll_in_angularjs?lang=en\r\n static whenScrollEnds()\r\n {\r\n return {\r\n restrict: ':A',\r\n link: (scope : any, element : any, attrs : any) => {\r\n const visibleHeight = element.height();\r\n const threshold = 100;\r\n\r\n element.scroll( () => {\r\n const scrollableHeight = element.prop('scrollHeight');\r\n const hiddenContentHeight = scrollableHeight - visibleHeight;\r\n\r\n if (hiddenContentHeight - element.scrollTop() <= threshold) {\r\n // Scroll is almost at the bottom. Loading more rows\r\n scope.$apply(attrs.whenScrollEnds);\r\n }\r\n });\r\n },\r\n };\r\n }\r\n}\r\n","\r\nimport { Injectable, InjectionToken } from '@angular/core';\r\n// import { Idle } from '@ng-idle/core';\r\n// import { Keepalive } from '@ng-idle/keepalive';\r\n// import { DBConfig, NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from './stringServiceStatic.service';\r\n\r\n// export const NGXSERVICE_TOKEN = new InjectionToken('NgxIndexedDBService'); // custon-injector-token\r\n// export const IDLE_TOKEN = new InjectionToken('IdleToken'); // custon-injector-token\r\n// export const KEEPALIVE_TOKEN = new InjectionToken('KeepAliveToken'); // custon-injector-token\r\n\r\n// ref:https:// www.npmjs.com/package/ngx-indexed-db\r\n/* export const dbConfig: DBConfig = {\r\n name: 'SlakezIndexedDb',\r\n version: 1,\r\n objectStoresMeta: [\r\n {\r\n store: 'chatHistory', // uses BoxNonce model\r\n storeConfig: { keyPath: 'key', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'chatHistoryId', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n }, \r\n // -------------------------------------------------------------------------\r\n // {\r\n // store: 'DefaultPic', // uses BoxNonce model\r\n // storeConfig: { keyPath: 'id', autoIncrement: false },\r\n // storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n // { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n // },\r\n // -------------------------------------------------------------------------\r\n // For actual email tiles:\r\n \r\n {\r\n store: 'emailTile', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'emailTileId', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n }, \r\n {\r\n store: 'enoteTile', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'enoteTileId', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'errorLog', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'kvPhoto', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'loginSuccess', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'myChat', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'myChatId', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'myEmailTile', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'myEmailTileId', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'myNotification', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'myNotificationId', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n }, \r\n {\r\n store: 'myMemberActivity', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'myMemberLockingActivity', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'myMemberStarTrackWinkActivity', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'photo', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'photoBn', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'preference', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n {\r\n store: 'profileInfo', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n // -------------------------------------------------------------------------\r\n {\r\n store: 'profilePics', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n // -------------------------------------------------------------------------\r\n {\r\n store: 'profileTile', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n // -------------------------------------------------------------------------\r\n // Note: profileTiles are fetched using sitUserId, hence we save the sitUserIds\r\n //{\r\n // store: 'ProfileTileIds', // uses BoxNonce model\r\n // storeConfig: { keyPath: 'id', autoIncrement: false },\r\n // storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n // { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n //},\r\n // -------------------------------------------------------------------------\r\n {\r\n store: 'sitUserId', // uses BoxNonce model\r\n storeConfig: { keyPath: 'key', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n // -------------------------------------------------------------------------\r\n {\r\n store: 'sitUser', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n // -------------------------------------------------------------------------\r\n // {\r\n // store: 'TempFile', // uses BoxNonce model\r\n // storeConfig: { keyPath: 'id', autoIncrement: false },\r\n // storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n // { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n // },\r\n // -------------------------------------------------------------------------\r\n // NOTE: intend to deprecate PhotoId store and photo store\r\n // however, Photo\r\n // {\r\n // store: 'PhotoId', // uses BoxNonce model\r\n // storeConfig: { keyPath: 'id', autoIncrement: false },\r\n // storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n // { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n // },\r\n // -------------------------------------------------------------------------\r\n // {\r\n // store: 'Photo', // uses BoxNonce model\r\n // storeConfig: { keyPath: 'id', autoIncrement: false },\r\n // storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n // { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n // },\r\n // -------------------------------------------------------------------------\r\n // {\r\n // store: 'PhotoBnId', // uses BoxNonce model\r\n // storeConfig: { keyPath: 'id', autoIncrement: false },\r\n // storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n // { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n // },\r\n // -------------------------------------------------------------------------\r\n \r\n {\r\n store: 'YourMemberActivity', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n // -------------------------------------------------------------------------\r\n {\r\n store: 'yourMemberLockingActivity', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n // -------------------------------------------------------------------------\r\n {\r\n store: 'yourMemberStarTrackWinkActivity', // uses BoxNonce model\r\n storeConfig: { keyPath: 'id', autoIncrement: false },\r\n storeSchema: [ { name: 'bne', keypath: 'bne', options: { unique: true } },\r\n { name: 'key', keypath: 'key', options: { unique: true } } ],\r\n },\r\n // -------------------------------------------------------------------------\r\n ],\r\n}; */\r\n\r\n// const IndexedDbDelimiter = \"<%&%>\";\r\nconst dbName : string = \"slakezDexieDb\";\r\nconst version : number = 5;\r\nconst dbInitialVersion = 1;\r\nconst dbNewVersion = 4;\r\n\r\nexport enum ConstantEnums\r\n{\r\n IndexedDbDelimiter = 0,\r\n IndexDbTiles = 1,\r\n IndexDbTileIds = 2,\r\n ServerTilesIndividually = 3,\r\n ServerTilesAll = 4,\r\n}\r\n\r\nexport enum KEY_CODE\r\n{\r\n UP_ARROW = 0,\r\n DOWN_ARROW = 0,\r\n RIGHT_ARROW = 39,\r\n LEFT_ARROW = 37,\r\n ENTER = 13\r\n}\r\n\r\nexport enum MemberActionEnums\r\n{\r\n buddy = 0,\r\n block = 1,\r\n dislike = 2,\r\n friend = 3,\r\n like = 4,\r\n lock = 5,\r\n inblock = 6,\r\n track = 7,\r\n unfriend = 8,\r\n unlock = 9,\r\n\r\n Buddy = 10,\r\n Block = 11,\r\n Dislike = 12,\r\n Friend = 13,\r\n Like = 14,\r\n Lock = 15,\r\n Track = 16,\r\n Unblock = 17,\r\n Unfriend = 18,\r\n Unlock = 19,\r\n\r\n buddies = 20,\r\n iblocked = 21,\r\n iliked = 22,\r\n ifriended = 23,\r\n istarred = 24,\r\n itracked = 25,\r\n iunlocked = 26,\r\n iwinked = 27,\r\n myfriends = 28,\r\n\r\n}\r\n\r\nexport enum StoreNameEnum\r\n{\r\n chatHistory = 0,\r\n chatHistoryId =1,\r\n defaultPic = 2,\r\n emailTileId = 3,\r\n emailTile = 4,\r\n enoteTile = 5,\r\n enoteTileId = 6,\r\n errorLog = 7,\r\n loginSuccess = 8,\r\n myChat = 9,\r\n myEmailTile = 10,\r\n myEmailTileId = 11,\r\n myMemberActivity = 12,\r\n myMemberLockingActivity = 13,\r\n myMemberStarTrackWinkActivity = 14,\r\n myNotification = 15,\r\n myNotificationId = 16,\r\n preference = 17,\r\n profileInfo = 18,\r\n profilePic = 19,\r\n profileTile = 20,\r\n profileTileId = 21,\r\n photo = 22,\r\n photoId = 23,\r\n photoBn = 24,\r\n photoBnId = 25,\r\n sitUser = 26,\r\n sitUserId = 31,\r\n tempFile = 27,\r\n yourMemberActivity = 28,\r\n yourMemberLockingActivity = 29,\r\n yourMemberStarTrackWinkActivity = 30,\r\n}\r\n\r\n@Injectable({ providedIn: 'any'})\r\nexport abstract class ConstantServiceStatic {\r\n static db : any;\r\n static dbName = 'SlakezIndexedDb';\r\n static version = 5;\r\n static initialVersion = 1;\r\n static newVersion = 6;\r\n static storeNames = [ 'chatHistory', 'chatHistoryId', 'emailTile', 'emailTileId',\r\n 'enoteTile', 'enoteTileId', 'errorLog', 'eoginSuccess', 'myChat', 'myChatId', 'myEmailTile', 'myEmailTileId', 'myMemberActivity', 'myMemberLockingActivity',\r\n 'myMemberStarTrackWinkActivity', 'myNotification', 'myNotificationId', 'preference', 'profileInfo', 'profilePic', 'profileTile',\r\n 'profileTileId', 'photoBn', 'photoBnId', 'photo', 'photoId', 'sitUser', 'sitUserId', 'tempFile', 'yourMemberActivity', 'yourMemberLockingActivity',\r\n 'yourMemberStarTrackWinkActivity'];\r\n public server = 'https:// localhost:44382/';\r\n public apiUrl = 'api/';\r\n public serverWithApiUrl = this.server + this.apiUrl;\r\n static encrDecrKey = 'HU9CQ9Ahrp9vHx0GFxIQkzE5NzE=';\r\n static loginSuccessCount = 0;\r\n\r\n static dbJsSchema : {\r\n name : 'SlakezIndexedDb',\r\n version : 2,\r\n initialVersion : 1,\r\n newVersion : 2,\r\n key : {\r\n keyPath : [ 'chatHistory', 'chatHistoryId', 'emailTile', 'emailTileId',\r\n 'enoteTile', 'enoteTileId', 'errorLog', 'eoginSuccess', 'myChat', 'myChatId', 'myEmailTile', 'myEmailTileId', 'myMemberActivity', 'myMemberLockingActivity',\r\n 'myMemberStarTrackWinkActivity', 'myNotification', 'myNotificationId', 'preference', 'profileInfo', 'profilePic', 'profileTile',\r\n 'profileTileId', 'photoBn', 'photoBnId', 'photo', 'photoId', 'sitUser', 'sitUserId', 'tempFile', 'yourMemberActivity', 'yourMemberLockingActivity',\r\n 'yourMemberStarTrackWinkActivity' ]\r\n },\r\n indexes : {\r\n name : {\r\n keyPath : [ 'id' ]\r\n }\r\n\r\n }\r\n };\r\n \r\n //static chatHistoryObjectStore : any;\r\n //static chatHistoryIdObjectStore : any;\r\n\r\n //static emailTileIdObjectStore : any;\r\n //static emailTileObjectStore : any;\r\n\r\n //static enoteTileIdObjectStore : any;\r\n //static enoteTileObjectStore : any;\r\n\r\n //static errorLogObjectStore : any;\r\n //static kvPhotoObjectStore : any;\r\n //static loginSuccessObjectStore : any;\r\n\r\n //static myBlockObjectStore : any;\r\n\r\n //static myChatIdObjectStore : any;\r\n //static myChatObjectStore : any;\r\n\r\n //static myEmailIdObjectStore : any;\r\n //static myEmailObjectStore : any;\r\n\r\n //static myFriendObjectStore : any;\r\n //static myLikeObjectStore : any;\r\n\r\n //static myMemberActivityObjectStore : any;\r\n //static myMemberLockingActivityObjectStore : any;\r\n //static myMemberStarTrackWinkActivityObjectStore : any;\r\n //static myStarObjectStore : any;\r\n //static myTrackObjectStore : any;\r\n //static myWinkObjectStore : any;\r\n //static myUnlockObjectStore : any;\r\n //static myNotificationIdObjectStore : any;\r\n //static myNotificationObjectStore : any;\r\n\r\n //static photoObjectStore : any;\r\n //static photoBnIdObjectStore : any;\r\n //static photoBnObjectStore : any;\r\n\r\n //static preferenceObjectStore : any;\r\n //static profileTileObjectStore : any;\r\n //static profileInfoObjectStore : any;\r\n //static profilePicsObjectStore : any;\r\n\r\n //static yourBlockObjectStore : any;\r\n //static yourFriendObjectStore : any;\r\n //static yourLikeObjectStore : any;\r\n\r\n //static yourMemberActivityObjectStore : any;\r\n //static yourMemberLockingActivityObjectStore : any;\r\n //static yourMemberStarTrackWinkActivityObjectStore : any;\r\n //static yourStarObjectStore : any;\r\n //static yourTrackObjectStore : any;\r\n //static yourWinkObjectStore : any;\r\n //static yourUnlockObjectStore : any;\r\n\r\n\r\n\r\n\r\n // ---------------------------------------------------------------------------\r\n // Note: The following two lines is for a create-promise-template that\r\n // does not casue errors of delay by certain time:\r\n // ---------------------------------------------------------------------------\r\n static resolvedPromise = typeof Promise == 'undefined' ? null : Promise.resolve();\r\n static nextTick = ConstantServiceStatic.resolvedPromise ? function (fn : any)\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(ConstantServiceStatic.resolvedPromise))\r\n {\r\n ConstantServiceStatic.resolvedPromise?.then(fn);\r\n }\r\n } : function (fn : any) { let timer = setTimeout(fn); clearTimeout(this.timer);};\r\n // ---------------------------------------------------------------------------\r\n // Usage:\r\n // ------\r\n // nextTick(function() {\r\n // your code...\r\n // });\r\n // ---------------------------------------------------------------------------\r\n constructor () {\r\n // ConstantServiceStatic.createObjectStoresInDB(ConstantServiceStatic.db)\r\n }\r\n // ---------------------------------------------------------------------------\r\n\r\n // static getDbConfig(): DBConfig {\r\n // return dbConfig;\r\n // }\r\n // static getKeyCode () : KEY_CODE\r\n // {\r\n // return KEY_CODE;\r\n // }\r\n static getConstantEnums () : any {\r\n return ConstantEnums;\r\n }\r\n\r\n\r\n // -----------------------------------------------------\r\n // ref: https://stackoverflow.com/questions/36016862/indexeddb-dataerror-data-provided-to-an-operation-does-not-meet-requirements\r\n // Create object store in indexedDB:\r\n // ---------------------------------\r\n //static createObjectStoresInDB (db) : any {\r\n // // this.db.version(ConstantServiceStatic.version = 2);\r\n // // example: static s4 = db.createObjectStore('s4', { keyPath: 'id', autoIncrement: true });\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(db)) {\r\n // this.chatHistoryObjectStore = db.createObjectStore('chatHistoryObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.chatHistoryIdObjectStore = db.createObjectStore('chatHistoryIdObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.emailTileIdObjectStore = db.createObjectStore('emailTileIdObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.emailTileObjectStore = db.createObjectStore('emailTileObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.enoteTileIdObjectStore = db.createObjectStore('enoteTileIdObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.enoteTileObjectStore = db.createObjectStore('enoteTileObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.errorLogObjectStore = db.createObjectStore('errorLogObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.kvPhotoObjectStore = db.createObjectStore('kvPhotoObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.loginSuccessObjectStore = db.createObjectStore('loginSuccessObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.myBlockObjectStore = db.createObjectStore('myBlockObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.myChatIdObjectStore = db.createObjectStore('myChatIdObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myChatObjectStore = db.createObjectStore('myChatObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.myEmailIdObjectStore = db.createObjectStore('myEmailIdObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myEmailObjectStore = db.createObjectStore('myEmailObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.myFriendObjectStore = db.createObjectStore('myFriendObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myLikeObjectStore = db.createObjectStore('myLikeObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.myMemberActivityObjectStore = db.createObjectStore('myMemberActivityObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myMemberLockingActivityObjectStore = db.createObjectStore('myMemberLockingActivityObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myMemberStarTrackWinkActivityObjectStore = db.createObjectStore('myMemberStarTrackWinkActivityObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myStarObjectStore = db.createObjectStore('myStarObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myTrackObjectStore = db.createObjectStore('myTrackObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myWinkObjectStore = db.createObjectStore('myWinkObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myUnlockObjectStore = db.createObjectStore('myUnlockObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myNotificationIdObjectStore = db.createObjectStore('myNotificationIdObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.myNotificationObjectStore = db.createObjectStore('myNotificationObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.photoObjectStore = db.createObjectStore('photoObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.photoBnIdObjectStore = db.createObjectStore('photoBnIdObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.photoBnObjectStore = db.createObjectStore('photoBnObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.preferenceObjectStore = db.createObjectStore('preferenceObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.profileTileObjectStore = db.createObjectStore('profileTileObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.profileInfoObjectStore = db.createObjectStore('profileInfoObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.profilePicsObjectStore = db.createObjectStore('profilePicsObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.yourBlockObjectStore = db.createObjectStore('yourBlockObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.yourFriendObjectStore = db.createObjectStore('yourFriendObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.yourLikeObjectStore = db.createObjectStore('yourLikeObjectStore', { keyPath: 'id', autoIncrement: false });\r\n\r\n // this.yourMemberActivityObjectStore = db.createObjectStore('yourMemberActivityObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.yourMemberLockingActivityObjectStore = db.createObjectStore('yourMemberLockingActivityObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.yourMemberStarTrackWinkActivityObjectStore = db.createObjectStore('yourMemberStarTrackWinkActivityObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.yourStarObjectStore = db.createObjectStore('yourStarObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.yourTrackObjectStore = db.createObjectStore('yourTrackObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.yourWinkObjectStore = db.createObjectStore('yourWinkObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // this.yourUnlockObjectStore = db.createObjectStore('yourUnlockObjectStore', { keyPath: 'id', autoIncrement: false });\r\n // }\r\n //}\r\n\r\n}\r\n\r\nexport interface AssetGroup\r\n{\r\n name: string;\r\n installMode: 'prefetch' | 'lazy';\r\n updateMode: 'prefetch' | 'lazy';\r\n resources: {\r\n files: string[];\r\n urls: string[];\r\n };\r\n}\r\n\r\nexport interface DataGroup\r\n{\r\n name: string;\r\n urls: string[];\r\n version?: number;\r\n cacheConfig: {\r\n maxSize: number;\r\n maxAge: string;\r\n timeout?: string;\r\n strategy?: 'freshness' | 'performance';\r\n };\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n\r\n// =====================================================================\r\n\r\n// =====================================================================\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport abstract class DefaultSetterServiceStatic\r\n{\r\n static randomNumberGenerator$ : Observable;\r\n static randomNumber = 0;\r\n\r\n \r\n static clearUserData () : void {\r\n // ----------------------------------------------------------------------------\r\n // Note: if this method is called, then any user data is to be erased as well,\r\n // that way the target-page does not have to clear them.\r\n // If the target-pages were to clear these data, then these lines of\r\n // code would have to be repeated in all the target-pages.\r\n // ----------------------------------------------------------------------------\r\n EmitterSubjectService.emitClearUserData(true);\r\n EmitterSubjectService.emitClearPagerPhotoNavData(true);\r\n EmitterSubjectService.emitClearProfileImages([]);\r\n EmitterSubjectService.emitRunNgAfterViewInit(true);\r\n }\r\n\r\n // ----------------------------------------------------------------------\r\n\r\n // ----------------------------------------------------------------------\r\n\r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\n// //import { Injectable, OnDestroy, OnInit } from '@angular/core';\r\n// //import { Subject } from 'rxjs';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Dictionary } from 'dictionaryjs';\r\n// import { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { Chat } from '../../models/chat/chat.model';\r\nimport { Heartbeat } from '../../models/common/heartbeat.model';\r\nimport { LogError } from '../../models/common/logError.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { SpinnerModel } from '../../models/common/spinnerModel.model';\r\nimport { CommunicationActivity } from '../../models/communication/communicationActivity.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { MemberActivity } from '../../models/member/memberActivity.model';\r\nimport { Preference } from '../../models/profile/preference.model';\r\nimport { ProfileInfo } from '../../models/profile/profileInfo.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../models/profile/profileTile.model';\r\n// import { IndexedDbService } from '../dictionaryServiceService/indexedDbService.service';\r\nimport { BinarySearchService } from '../searchSortServiceService/binarySearchService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { ArrayServiceStatic } from './arrayServiceStatic.service';\r\nimport { ArraySupportServiceStatic } from './arraySupportServiceStatic.service';\r\nimport { CopyServiceStatic } from './commonStaticServices/copyServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from './commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n\r\nexport enum staticDictionaryEnum\r\n{\r\n myBlockDictionary = 1,\r\n myFriendDictionary = 2,\r\n myLikeDictionary = 3,\r\n myMemberActivityDictionary = 4,\r\n myStarDictionary = 5,\r\n myTrackDictionary = 6,\r\n myUnlockDictionary = 7,\r\n myWinkDictionary = 8,\r\n myProfilePicsDictionary = 9,\r\n\r\n buddyDictionary = 10,\r\n heartbeatDictionary = 11,\r\n preferenceDictionary = 12,\r\n profileImageDictionary = 13,\r\n profileInfoDictionary = 14,\r\n profilePicsDictionary = 15,\r\n profileTileIdDictionary = 16,\r\n profileTileDictionary = 17,\r\n sitUserDictionary = 18,\r\n sitUserIdDictionary = 19,\r\n\r\n yourBlockDictionary = 20,\r\n yourFriendDictionary = 21,\r\n yourLikeDictionary = 22,\r\n yourMemberActivityDictionary = 23,\r\n yourStarDictionary = 24,\r\n yourTrackDictionary = 25,\r\n yourUnlockDictionary = 26,\r\n yourWinkDictionary = 27,\r\n\r\n preferenceBnDictionary = 30,\r\n profileInfoBnDictionary = 31,\r\n photoBnArrDictionary = 32,\r\n profileTileIdBnDictionary = 33,\r\n profileTileBnDictionary = 34,\r\n sitUserBnDictionary = 35,\r\n \r\n\r\n chatHistoryIdictionary = 40,\r\n chatHistoryictionary = 41,\r\n myChatDictionary = 42,\r\n emailTileIdDictionary = 43,\r\n emailTileDictionary = 44,\r\n notificationIdDictionary = 45,\r\n notificationDictionary = 46,\r\n\r\n\r\n // ------------------------------------------------------------------------------------------------------------------------\r\n // New PhotoToPhotoBnToPhotoSystem:\r\n // ---------------------------------\r\n // When a user uploads a photo, it will be saved in the backendDB first, then the client-sent\r\n // Photo's box and nonce along with the saved photo's data will be populated in a PhotoBn Model and be saved in backendDB.\r\n // This is a one-time-one-way transaction.\r\n //\r\n // Subsequestly, whenever the client requests for a photo, the respective PhotoBn will be sent by the photoId/PhotoBnId.\r\n //\r\n // The client will always get a photoBn or a set of PhotoBns when a photo or set of photos are requested.\r\n // Upon receiving the photoBn(s), client will decrypt to get photoBn/PhotoBns to get the respective Photo/Photos,\r\n // and populate them to the PhotoDictionary for the view to use.\r\n // This photoDictionary will NOT be saved in indexedDb, neither any PhotoIds.\r\n //\r\n // The client will also populate the received PhotoBn(s) to the PhotoBnDictionary that will be saved to the indexedDb,\r\n // which the client will use to create the PhotoDictionary for the View upon launching or as needed basis.\r\n //\r\n // The client will save a UserPhotoBnIdArr(all the photoBnIds of one user in an array) in the UserPhotoBnIdDictionary\r\n // that will be saved in the indexedDb. Therefore, wheneve the user saves a new Photo, or whenever the user gets a\r\n // PhotoBn from the server, the respective PhotoBnId will be first saved to the UserPhotoBnIdArray, and update the\r\n // UserPhotoBnIdDictionary and the dictionary will be saved in the indexedDb.\r\n // It's noteworthy that the signedInUser's photoBnIdArr will contain the signedInUser's data, and any other user's\r\n // photoBnIds will be in an array saved using the respective sitUserId, such that signedInUserId != sitUserId.\r\n // Hence the PhotoBnIdDitionary will contain any/all phootoBnIds of a member viewed by the signedInUser.\r\n //\r\n // This UserPhotoBnIdDictionary will be used to create/lookup a specific user's Photo(s). \r\n // \r\n // ------------------------------------------------------------------------------------------------------------------------\r\n\r\n // photoIdDictionary = 50, // will be deprecated since photoDictionary will contain PhotoId\r\n photoDictionary = 51, // will be used by View Only, and will not presist in indexedDb\r\n userPhotoBnIdDictionary = 52, //will be renamed to UserPhotoBnIds since a user may have more than one photo,\r\n photoBnDictionary = 53, // will NOT be used by the View since PhotoDictionary will be used by the View, but will persist in indexedDb\r\n pageNumItemArrDictionary = 54,\r\n \r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n/*\r\n * ref:https:// github.com/basarat/typescript-collections/blob/release/README.md#a-sample-on-dictionary\r\n * TODO: This service should read data from the indexedDB and save it to indexedDb periodically.\r\n */\r\nexport abstract class DictionaryServiceStatic implements OnDestroy {\r\n static allDictionaries = new Dictionary>();\r\n static allDictionaryDataCount = new Dictionary();\r\n static binarySearchService : BinarySearchService = new BinarySearchService();\r\n\r\n static buddyDictionary = new Dictionary ();\r\n\r\n static chatHistoryDictionary = new Dictionary();\r\n static count : number = 0;\r\n static chatHistoryIdDictionary = new Dictionary();\r\n\r\n static dexieTableDictionary : any;\r\n\r\n static eMailTileDictionary = new Dictionary(); // DO NOT save Picture in Email\r\n static eMailTileIdDictionary = new Dictionary();\r\n static eNoteTileDictionary = new Dictionary();\r\n static eNoteTileIdDictionary = new Dictionary();\r\n static errorLogDictionary = new Dictionary();\r\n static heartbeatDictionary = new Dictionary();\r\n static idbStoreIndexDictionary = new Dictionary();\r\n static idbStoreTransactionDictionary = new Dictionary();\r\n static kvPhotoDictionary = new Dictionary();\r\n static loginSuccessDictionary = new Dictionary();\r\n\r\n\r\n static masterErrorLogMap = new Map(); // key==JsDate.Ticks\r\n // ================================================================================\r\n // MVC (Model-View-Controller) Dictionaries:\r\n // -----------------------------------------\r\n \r\n static componentDictionary = new Dictionary();\r\n public static filteredKvPhotoDictionary = new Dictionary();\r\n static serviceDictionary = new Dictionary();\r\n static moduleDictionary = new Dictionary(); \r\n static scssClassDictionary = new Dictionary();\r\n static scssFileDictionary = new Dictionary();\r\n static scssIdDictionary = new Dictionary(); \r\n static modelDictionary = new Dictionary>();\r\n\r\n public static unFilteredKvPhotoDictionary = new Dictionary();\r\n static viewDictionary = new Dictionary>();\r\n static controllerDictionary = new Dictionary>();\r\n\r\n\r\n // communication dictionaries:\r\n static myChatIdDictionary = new Dictionary();\r\n static myChatDictionary = new Dictionary();\r\n static myEmailIdDictionary = new Dictionary();\r\n static myEmailDictionary = new Dictionary();\r\n static myNotificationIdDictionary = new Dictionary();\r\n static myNotificationDictionary = new Dictionary();\r\n\r\n static myErrorLogMap = new Map(); // key==JsDate.Ticks\r\n\r\n // first group of memberActivities: Block/Friend/Like: //for indexedDb\r\n static myMemberActivityDictionary = new Dictionary();\r\n static myBlockDictionary = new Dictionary();\r\n static myFriendDictionary = new Dictionary();\r\n static myLikeDictionary = new Dictionary();\r\n\r\n // second group of memberStarTrackWinkActivities: Star/Track/Wink: //for indexedDb\r\n static myMemberStarTrackWinkActivityDictionary = new Dictionary();\r\n static myStarDictionary = new Dictionary();\r\n static myTrackDictionary = new Dictionary();\r\n static myWinkDictionary = new Dictionary();\r\n\r\n // third group of memberLockingActivities: Unlock: //for indexedDb\r\n static myMemberLockingActivityDictionary = new Dictionary();\r\n static myUnlockDictionary = new Dictionary();\r\n\r\n // Note: These dictionaries has a matching counterparts in MemberActivitiesService where used to populate these dictionaries:\r\n // --------------------------------------------------------------------------------------------------------------------------\r\n static myProfilePicsDictionary : any; \r\n\r\n static preferenceDictionary = new Dictionary();\r\n static photoDictionary = new Dictionary();\r\n\r\n // static profileImageDictionary = new Dictionary(); // key=sitUserId, value=ProfilePics\r\n static profileInfoDictionary = new Dictionary();\r\n static profilePicsDictionary = new Dictionary();\r\n static profileTileIdDictionary = new Dictionary();\r\n static profileTileDictionary = new Dictionary();\r\n static sitUserDictionary = new Dictionary();\r\n\r\n // SitUserIds are used to create ProfileTiles at MembersIndividually\r\n static sitUserIdDictionary = new Dictionary();\r\n static profileTileDexieDictionary = new Dictionary(); // for testing purpose onloy. delete before deployment\r\n static storeNameDictionary = new Dictionary();\r\n \r\n // Note: These dictionaries has a matching counterparts in MemberActivitiesService where used to populate these dictionaries:\r\n // --------------------------------------------------------------------------------------------------------------------------\r\n\r\n // first group of memberActivities: Block/Friend/Like: //for indexedDb\r\n static yourMemberActivityDictionary = new Dictionary();\r\n static yourBlockDictionary = new Dictionary();\r\n static yourFriendDictionary = new Dictionary();\r\n static yourLikeDictionary = new Dictionary();\r\n\r\n // second group of memberStarTrackWinkActivities: Star/Track/Wink: //for indexedDb\r\n static yourMemberStarTrackWinkActivityDictionary = new Dictionary();\r\n static yourStarDictionary = new Dictionary();\r\n static yourTrackDictionary = new Dictionary();\r\n static yourWinkDictionary = new Dictionary();\r\n\r\n\r\n // third group of memberLockingActivities: Unlock: //for indexedDb\r\n static yourMemberLockingActivityDictionary = new Dictionary();\r\n static yourUnlockDictionary = new Dictionary();\r\n\r\n // --------------------------------------------------------------------------------\r\n // Note: Bn dictionaries are used to hold encrypted data that when complete for a certain user, will be saved in indexedDb.\r\n // When indexedDb data is read, it will be unencrypted and stored in respected regular-unencrypted-dictionary (non-Bn-dictionary).\r\n // -------------------------------------------------------------------------------\r\n static preferenceBnDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n static profileInfoBnDictionary = new Dictionary(); // key=sitUserId, value=ProfileInfo\r\n // static photoBnArrDictionary = new Dictionary(); // key=sitUserId, value=BoxNonceEntity[]\r\n\r\n\r\n static profileTileIdBnDictionary = new Dictionary(); // key=sitUserId, value=ProfileTileId[]\r\n static profileTileBnDictionary = new Dictionary(); // key=sitUserId, value=ProfileTile\r\n // static sitUserBnDictionary = new Dictionary(); // key=sitUserId, value=SitUser\r\n\r\n // static photoBnIdDictionary = new Dictionary(); // key=sitUserId, value=PhotoBnIds[]\r\n static photoBnDictionary = new Dictionary(); // key=sitUserId, value=BoxNonceEntity[]\r\n // static photoDictionary = new Dictionary(); // key=photoId, value=Photo \r\n static userPhotoBnIdDictionary = new Dictionary(); // key=sitUserId, value=PhotoBnId[]\r\n // static photoBnDictionary = new Dictionary(); // key=photoBnId, value=PhotoBn\r\n static loginSuccess : LoginSuccess = new LoginSuccess();\r\n static sitUser : SitUser = new SitUser();\r\n\r\n // static pageNumKvPhotoDictionary = new Dictionary(); // key=pageNum, value=KvPhoto[]\r\n static spinnerTimerDictionary = new Dictionary(); // key=sitUserId, value=PhotoBn\r\n private emitterDestroyed$ : Subject = new Subject();\r\n // --------------------------------------------------------------------------------\r\n \r\n // ================================================================================\r\n // All components' dictonaries:\r\n static myAllEnoteDictionary : Dictionary = new Dictionary();\r\n // --------------------------------------------------------------------------------\r\n constructor () {\r\n // this.inInitialize();\r\n // DictionaryServiceStatic.allDictionaries = new Dictionary>(); // = new Dictionary>();\r\n // DictionaryServiceStatic.allDictionaryDataCount = new Dictionary();\r\n DictionaryServiceStatic.storeNameDictionary = new Dictionary();\r\n DictionaryServiceStatic.populateStoreNameDictionary();\r\n DictionaryServiceStatic.populateAllDictionaries();\r\n }\r\n // --------------------------------------------------------------------------------\r\n\r\n static populateAllDictionaries () : void {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(DictionaryServiceStatic.storeNameDictionary) || DictionaryServiceStatic.storeNameDictionary.size === 0) {\r\n DictionaryServiceStatic.populateStoreNameDictionary();\r\n // debugger;\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(DictionaryServiceStatic.allDictionaries) || DictionaryServiceStatic.allDictionaries.size === 0) {\r\n DictionaryServiceStatic.allDictionaries = new Dictionary>();\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(DictionaryServiceStatic.allDictionaries)) {\r\n DictionaryServiceStatic.storeNameDictionary?.values()?.map((k : any) => {\r\n // debugger;\r\n\r\n // TODO: add each dictionary to one of the three dictionaries: i) modelDictionary ii) viewDictionary iii) controllerDictionary\r\n // i.e categorize each doctionary to the appropriate one: i) modelDictionary ii) viewDictionary iii) controllerDictionary\r\n switch (k.toLowerCase()) {\r\n case 'buddy':\r\n // this.buddyDictionary = new Dictionary();\r\n this.allDictionaries.set('buddyDictionary', this.buddyDictionary);\r\n break;\r\n case 'chathistoryid':\r\n // this.chatHistoryIdDictionary = new Dictionary(); // DO NOT save Picture in Chat\r\n this.allDictionaries.set('chatHistoryIdDictionary', this.chatHistoryIdDictionary);\r\n break;\r\n case 'chathistory':\r\n // this.chatHistoryDictionary = new Dictionary(); // DO NOT save Picture in Chat\r\n this.allDictionaries.set('chatHistoryDictionary', this.chatHistoryDictionary);\r\n break;\r\n case 'dexietable':\r\n this.dexieTableDictionary = new Dictionary>(); // key=storeName, value=objecStore === dexieTable // (indexedDb.objectStore)\r\n this.allDictionaries.set('dexieTableDictionary', this.dexieTableDictionary);\r\n break;\r\n case 'emailtileid':\r\n // this.eMailTileIdDictionary = new Dictionary();\r\n this.allDictionaries.set('eMailTileIdDictionary', this.eMailTileIdDictionary);\r\n break;\r\n case 'emailtile':\r\n // this.eMailTileDictionary = new Dictionary();\r\n this.allDictionaries.set('eMailTileDictionary', this.eMailTileDictionary);\r\n break;\r\n case 'enotetileid':\r\n // this.eNoteTileIdDictionary = new Dictionary();\r\n this.allDictionaries.set('eNoteTileIdDictionary', this.eNoteTileIdDictionary);\r\n break;\r\n case 'enotetile':\r\n // this.eNoteTileDictionary = new Dictionary(); // DO NOT save Picture in Notification\r\n this.allDictionaries.set('eNoteTileDictionary', this.eNoteTileDictionary);\r\n break;\r\n case 'errorlog':\r\n // this.errorLogDictionary = new Dictionary();\r\n this.allDictionaries.set('errorLogDictionary', this.errorLogDictionary);\r\n break;\r\n case 'heartbeat':\r\n // this.heartbeatDictionary = new Dictionary();\r\n this.allDictionaries.set('heartbeatDictionary', this.heartbeatDictionary);\r\n break;\r\n case 'idbstoreindex':\r\n // this.idbStoreIndexDictionary = new Dictionary(); // key=storeName, value=objectStore // (indexedDb.objectStore)\r\n this.allDictionaries.set('idbStoreIndexDictionary', this.idbStoreIndexDictionary);\r\n break;\r\n case 'idbstoretransaction':\r\n // this.idbStoreTransactionDictionary = new Dictionary(); // key=storeName, value=objectStoreTransaction\r\n this.allDictionaries.set('idbStoreTransactionDictionary', this.idbStoreTransactionDictionary);\r\n break;\r\n case 'kvphoto':\r\n // this.kvPhotoDictionary = new Dictionary();\r\n this.allDictionaries.set('kvPhotoDictionary', this.kvPhotoDictionary);\r\n break;\r\n case 'loginsuccess':\r\n // this.loginSuccessDictionary = new Dictionary();\r\n this.allDictionaries.set('loginSuccessDictionary', this.loginSuccessDictionary);\r\n break;\r\n case 'myblock':\r\n // this.myBlockDictionary = new Dictionary(); // for view\r\n this.allDictionaries.set('myBlockDictionary', this.myBlockDictionary);\r\n break;\r\n case 'mychatid':\r\n // this.myChatIdDictionary = new Dictionary();\r\n this.allDictionaries.set('myChatIdDictionary', this.myChatIdDictionary);\r\n break;\r\n case 'mychat':\r\n // this.myChatDictionary = new Dictionary();\r\n this.allDictionaries.set('myChatDictionary', this.myChatDictionary);\r\n break;\r\n case 'myemailid':\r\n // this.myEmailIdDictionary = new Dictionary();\r\n this.allDictionaries.set('myEmailIdDictionary', this.myEmailIdDictionary);\r\n break;\r\n case 'myemail':\r\n // this.myEmailDictionary = new Dictionary();\r\n this.allDictionaries.set('myEmailDictionary', this.myEmailDictionary);\r\n break;\r\n case 'myfriend':\r\n // this.myFriendDictionary = new Dictionary(); // for view\r\n this.allDictionaries.set('myFriendDictionary', this.myFriendDictionary);\r\n break;\r\n case 'mylike':\r\n // this.myLikeDictionary = new Dictionary(); // for view\r\n this.allDictionaries.set('myLikeDictionary', this.myLikeDictionary);\r\n break;\r\n case 'mymemberactivity':\r\n // this.myMemberActivityDictionary = new Dictionary(); // key==(action-name).(member-activity-id) //for indexedDb\r\n this.allDictionaries.set('myMemberActivityDictionary', this.myMemberActivityDictionary);\r\n break;\r\n case 'mymemberlockingactivity':\r\n // this.myMemberLockingActivityDictionary = new Dictionary();\r\n this.allDictionaries.set('myMemberLockingActivityDictionary', this.myMemberLockingActivityDictionary);\r\n break;\r\n case 'mymemberstartrackwinkactivity':\r\n // this.myMemberStarTrackWinkActivityDictionary = new Dictionary();\r\n this.allDictionaries.set('myMemberStarTrackWinkActivityDictionary', this.myMemberStarTrackWinkActivityDictionary);\r\n break;\r\n case 'mynotificationid':\r\n // this.myNotificationIdDictionary = new Dictionary();\r\n this.allDictionaries.set('myNotificationIdDictionary', this.myNotificationIdDictionary);\r\n break;\r\n case 'mynotification':\r\n // this.myNotificationDictionary = new Dictionary();\r\n this.allDictionaries.set('myNotificationDictionary', this.myNotificationDictionary);\r\n break;\r\n case 'mystar':\r\n // this.myStarDictionary = new Dictionary(); // for view\r\n this.allDictionaries.set('myStarDictionary', this.myStarDictionary);\r\n break;\r\n case 'mytrack':\r\n // this.myTrackDictionary = new Dictionary(); // for view\r\n this.allDictionaries.set('myTrackDictionary', this.myTrackDictionary);\r\n break;\r\n case 'myunlock':\r\n // this.myUnlockDictionary = new Dictionary(); // for view\r\n this.allDictionaries.set('myUnlockDictionary', this.myUnlockDictionary);\r\n break;\r\n case 'mywink':\r\n // this.myWinkDictionary = new Dictionary(); // for view\r\n this.allDictionaries.set('myWinkDictionary', this.myWinkDictionary);\r\n break;\r\n case 'photo':\r\n // this.photoDictionary = new Dictionary(); // key=photoId, value=Photo;\r\n this.allDictionaries.set('photoDictionary', this.photoDictionary);\r\n break;\r\n case 'photobn':\r\n // this.photoBnDictionary = new Dictionary(); // key=photoId, value=Photo;\r\n this.allDictionaries.set('photoBnDictionary', this.photoBnDictionary);\r\n break;\r\n case 'photobnid':\r\n this.userPhotoBnIdDictionary = new Dictionary(); // key=photoId, value=Photo;\r\n this.allDictionaries.set('userPhotoBnIdDictionary', this.userPhotoBnIdDictionary);\r\n break;\r\n case 'preference':\r\n // this.preferenceDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n this.allDictionaries.set('preferenceDictionary', this.preferenceDictionary);\r\n break;\r\n case 'profileinfo':\r\n // this.profileInfoDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n this.allDictionaries.set('profileInfoDictionary', this.profileInfoDictionary);\r\n break;\r\n case 'profilepics':\r\n // this.profilePicsDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n this.allDictionaries.set('profilePicsDictionary', this.profilePicsDictionary);\r\n break;\r\n case 'profiletile':\r\n // this.profileTileDictionary = new Dictionary(); // key=sitUserId, value=Preference\r\n this.allDictionaries.set('profileTileDictionary', this.profileTileDictionary);\r\n break;\r\n case 'situserid':\r\n // this.sitUserIdDictionary = new Dictionary(); // key=sitUserId, value=sitUserId\r\n this.allDictionaries.set('sitUserIdDictionary', this.sitUserIdDictionary);\r\n break;\r\n case 'situser':\r\n // this.sitUserDictionary = new Dictionary(); // key=sitUserId, value=sitUserId\r\n this.allDictionaries.set('sitUserDictionary', this.sitUserDictionary);\r\n break;\r\n case 'yourblock':\r\n // this.yourBlockDictionary = new Dictionary();\r\n this.allDictionaries.set('yourBlockDictionary', this.yourBlockDictionary);\r\n break;\r\n case 'yourfriend':\r\n // this.yourFriendDictionary = new Dictionary();\r\n this.allDictionaries.set('yourFriendDictionary', this.yourFriendDictionary);\r\n break;\r\n case 'yourlike':\r\n // this.yourLikeDictionary = new Dictionary();\r\n this.allDictionaries.set('yourLikeDictionary', this.yourLikeDictionary);\r\n break;\r\n case 'yourmemberactivity':\r\n // this.yourMemberActivityDictionary = new Dictionary();\r\n this.allDictionaries.set('yourMemberActivityDictionary', this.yourMemberActivityDictionary);\r\n break;\r\n case 'yourmemberlockingactivity':\r\n // this.yourMemberLockingActivityDictionary = new Dictionary();\r\n this.allDictionaries.set('yourMemberLockingActivityDictionary', this.yourMemberLockingActivityDictionary);\r\n break;\r\n case 'yourmemberstartrackwinkactivity':\r\n // this.yourMemberStarTrackWinkActivityDictionary = new Dictionary();\r\n this.allDictionaries.set('yourMemberStarTrackWinkActivityDictionary', this.yourMemberStarTrackWinkActivityDictionary);\r\n break;\r\n case 'yourstar':\r\n // this.yourStarDictionary = new Dictionary();\r\n this.allDictionaries.set('yourStarDictionary', this.yourStarDictionary);\r\n break;\r\n case 'yourtrack':\r\n // this.yourTrackDictionary = new Dictionary();\r\n this.allDictionaries.set('yourTrackDictionary', this.yourTrackDictionary);\r\n break;\r\n case 'yourunlock':\r\n // this.yourUnlockDictionary = new Dictionary();\r\n this.allDictionaries.set('yourUnlockDictionary', this.yourUnlockDictionary);\r\n break;\r\n case 'yourwink':\r\n // this.yourWinkDictionary = new Dictionary();\r\n this.allDictionaries.set('yourWinkDictionary', this.yourWinkDictionary);\r\n break;\r\n }\r\n // debugger;\r\n })\r\n // debugger;\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n static populateStoreNameDictionary () {\r\n // debugger;\r\n let i = 0;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.storeNameDictionary) || this.storeNameDictionary.size === 0) {\r\n this.storeNameDictionary = new Dictionary();\r\n }\r\n this.storeNameDictionary.set(i++, \"buddy\");\r\n this.storeNameDictionary.set(i++, \"chatHistory\");\r\n this.storeNameDictionary.set(i++, \"chatHistoryId\");\r\n this.storeNameDictionary.set(i++, \"dexieTable\");\r\n this.storeNameDictionary.set(i++, \"emailTile\");\r\n this.storeNameDictionary.set(i++, \"emailTileId\");\r\n this.storeNameDictionary.set(i++, \"enoteTile\");\r\n this.storeNameDictionary.set(i++, \"enoteTileId\");\r\n this.storeNameDictionary.set(i++, \"errorLog\");\r\n this.storeNameDictionary.set(i++, \"heartbeat\");\r\n this.storeNameDictionary.set(i++, \"idbStoreIndex\");\r\n this.storeNameDictionary.set(i++, \"idbStoreTransaction\");\r\n this.storeNameDictionary.set(i++, \"kvPhoto\");\r\n this.storeNameDictionary.set(i++, \"loginSuccess\");\r\n\r\n this.storeNameDictionary.set(i++, \"myBlock\");\r\n this.storeNameDictionary.set(i++, \"myChat\");\r\n this.storeNameDictionary.set(i++, \"myChatId\");\r\n this.storeNameDictionary.set(i++, \"myEmail\");\r\n this.storeNameDictionary.set(i++, \"myEmailId\");\r\n this.storeNameDictionary.set(i++, \"myFriend\");\r\n this.storeNameDictionary.set(i++, \"myLike\");\r\n this.storeNameDictionary.set(i++, \"myMemberActivity\");\r\n this.storeNameDictionary.set(i++, \"myMemberLockingActivity\");\r\n this.storeNameDictionary.set(i++, \"myMemberStarTrackWinkActivity\");\r\n this.storeNameDictionary.set(i++, \"myNotification\");\r\n this.storeNameDictionary.set(i++, \"myNotificationId\");\r\n this.storeNameDictionary.set(i++, \"myStar\");\r\n this.storeNameDictionary.set(i++, \"myTrack\");\r\n this.storeNameDictionary.set(i++, \"myUnlock\");\r\n this.storeNameDictionary.set(i++, \"myWink\");\r\n \r\n this.storeNameDictionary.set(i++, \"photo\");\r\n this.storeNameDictionary.set(i++, \"photoBn\");\r\n this.storeNameDictionary.set(i++, \"preference\");\r\n this.storeNameDictionary.set(i++, \"profileInfo\");\r\n this.storeNameDictionary.set(i++, \"profilePics\");\r\n this.storeNameDictionary.set(i++, \"profileTile\");\r\n\r\n this.storeNameDictionary.set(i++, \"sitUser\");\r\n this.storeNameDictionary.set(i++, \"sitUserId\");\r\n\r\n this.storeNameDictionary.set(i++, \"yourBlock\");\r\n this.storeNameDictionary.set(i++, \"yourFriend\");\r\n this.storeNameDictionary.set(i++, \"yourLike\");\r\n this.storeNameDictionary.set(i++, \"yourMemberActivity\");\r\n this.storeNameDictionary.set(i++, \"yourMemberLockingActivity\");\r\n this.storeNameDictionary.set(i++, \"yourMemberStarTrackWinkActivity\");\r\n this.storeNameDictionary.set(i++, \"yourStar\");\r\n this.storeNameDictionary.set(i++, \"yourTrack\");\r\n this.storeNameDictionary.set(i++, \"yourUnlock\");\r\n this.storeNameDictionary.set(i++, \"yourWink\");\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this method gets only unFilteredKvPhotoArray of ProfilePics.\r\n // ---------------------------------------------------------------\r\n static getProfilePicsFromKvPhotoDictionary (sitUserId : number) : ProfilePics | any {\r\n let outKvPhotoArr : KvPhoto[] = [];\r\n let profilePics = new ProfilePics();\r\n if (sitUserId > 0) {\r\n profilePics.unFilteredKvPhotoArr = this.getUserKvPhotoArrFromKvPhotoDictionary(sitUserId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.unFilteredKvPhotoArr) && profilePics.unFilteredKvPhotoArr.length > 0) {\r\n // debugger;\r\n profilePics.unFilteredKvPhotoArr.forEach(e => {\r\n if (e) {\r\n profilePics.unFilteredKvPhotoDictionary.set(e.photoBnId, e);\r\n }\r\n });\r\n\r\n // Note: the calling function should filter the KvPhotos:\r\n // ------------------------------------------------------\r\n //this.photoPrivacyService.filterKvPhotoArr(profilePics.unFilteredKvPhotoArr).then(result => {\r\n // profilePics.filteredKvPhotoArr = result;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(profilePics.filteredKvPhotoArr) && profilePics.filteredKvPhotoArr.length > 0) {\r\n // // debugger;\r\n // profilePics.filteredKvPhotoArr.forEach(e => {\r\n // if (e) {\r\n // profilePics.filteredKvPhotoDictionary.set(e.photoBnId, e);\r\n // }\r\n // })\r\n // }\r\n //});\r\n }\r\n return profilePics;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n static getUserKvPhotoArrFromKvPhotoDictionary (sitUserId : number) : KvPhoto[] | any {\r\n let outKvPhotoArr : KvPhoto[] = [];\r\n if (sitUserId > 0 && this.kvPhotoDictionary.size > 0) {\r\n this.kvPhotoDictionary.values().forEach((e : any) => {\r\n if (e.sitUserId === sitUserId) {\r\n outKvPhotoArr.push(e);\r\n }\r\n })\r\n }\r\n return outKvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: this method gets a profileTile from the dictionary by\r\n // a non-key propertiy==sitUserId where the key=profileTileId\r\n //\r\n // This is a quentasential example of how to get a dictionary's\r\n // value by a non-key-property of the model.\r\n // ---------------------------------------------------------------\r\n static getProfileTileBySitUserId (sitUserId : number) : any {\r\n if (sitUserId > 0) {\r\n let pTileArr = this.profileTileDictionary.size > 0 ? this.profileTileDictionary.values() : [];\r\n pTileArr = pTileArr.sort((a : any, b : any) => a.sitUserId - b.sitUserId);\r\n // debugger;\r\n let index = this.binarySearchService.nonRecursiveBinarySearchProfileTile(pTileArr, sitUserId);\r\n let tpTile = pTileArr[ index ];\r\n // debugger;\r\n return tpTile;\r\n }\r\n else return null;\r\n }\r\n\r\n // --------------------------------------------------------------------------------\r\n static getMasterErrorLogMap () : Map {\r\n // debugger;\r\n return this.masterErrorLogMap;\r\n }\r\n static setMasterErrorLogMap (bDic : Map) : void {\r\n this.masterErrorLogMap = bDic;\r\n }\r\n static resetMasterErrorLogMap () : void {\r\n this.masterErrorLogMap = new Map();\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyErrorLogMap () : Map {\r\n // debugger;\r\n return this.myErrorLogMap;\r\n }\r\n static setMyErrorLogMap (bDic : Map) : void {\r\n this.myErrorLogMap = bDic;\r\n }\r\n static resetMyErrorLogMap () : void {\r\n this.myErrorLogMap = new Map();\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Begin of Communication Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n // ---------------------------------------------------------------\r\n static getChatHistoryDictionary () : Dictionary {\r\n // debugger;\r\n return this.chatHistoryDictionary;\r\n }\r\n static setChatHistoryDictionary (chDic : Dictionary) : void {\r\n this.chatHistoryDictionary = chDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getChatHistoryIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.chatHistoryIdDictionary;\r\n }\r\n static setChatHistoryIdDictionary (chiDic : Dictionary) : void {\r\n this.chatHistoryIdDictionary = chiDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getEmailTileIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.eMailTileIdDictionary;\r\n }\r\n static setEmailTileIdDictionary (emDic : Dictionary) : void {\r\n this.eMailTileIdDictionary = emDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getEnoteTileIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.eNoteTileIdDictionary;\r\n }\r\n static setEnoteTileIdDictionary (chiDic : Dictionary) : void {\r\n this.eNoteTileIdDictionary = chiDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getEmailTileDictionary () : Dictionary {\r\n // debugger;\r\n return this.eMailTileDictionary;\r\n }\r\n static setEmailTileDictionary (emDic : Dictionary) : void {\r\n this.eMailTileDictionary = emDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getEnoteTileDictionary () : Dictionary {\r\n // debugger;\r\n return this.eNoteTileDictionary;\r\n }\r\n static setEnoteTileDictionary (enDic : Dictionary) : void {\r\n this.eNoteTileDictionary = enDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyChatDictionary () : Dictionary {\r\n // debugger;\r\n return this.myChatDictionary;\r\n }\r\n static setMyChatDictionary (cDic : Dictionary) : void {\r\n this.myChatDictionary = cDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyEmailTileDictionary () : Dictionary {\r\n // debugger;\r\n return this.myEmailDictionary;\r\n }\r\n static setMyEmailTileDictionary (eDic : Dictionary) : void {\r\n this.myEmailDictionary = eDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyNotificationIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.myNotificationIdDictionary;\r\n }\r\n static setMyNotificationIdDictionary (nIdDic : Dictionary) : void {\r\n this.myNotificationIdDictionary = nIdDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyNotificationDictionary () : Dictionary {\r\n // debugger;\r\n return this.myNotificationDictionary;\r\n }\r\n static setMyNotificationDictionary (nDic : Dictionary) : void {\r\n this.myNotificationDictionary = nDic;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * End of Communication Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n /*\r\n * ---------------------------------------------------------------\r\n * Begin of MemberAcvitiy Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n static getBuddyDictionary () : Dictionary {\r\n // debugger;\r\n return this.buddyDictionary;\r\n }\r\n static setBuddyDictionary (bDic : Dictionary) : void {\r\n this.buddyDictionary = bDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyBlockDictionary () : Dictionary {\r\n // debugger;\r\n return this.myBlockDictionary;\r\n }\r\n static setMyBlockDictionary (bDic : Dictionary) : void {\r\n this.myBlockDictionary = bDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getMyFriendDictionary () : Dictionary {\r\n // debugger;\r\n return this.myFriendDictionary;\r\n }\r\n static setMyFriendDictionary (fDic : Dictionary) : void {\r\n this.myFriendDictionary = fDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getHeartbeatDictionary () : Dictionary {\r\n // debugger;\r\n return this.heartbeatDictionary;\r\n }\r\n static setHeartbeatDictionary (hbDic : Dictionary) : void {\r\n this.heartbeatDictionary = hbDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyLikeDictionary () : Dictionary {\r\n // debugger;\r\n return this.myLikeDictionary;\r\n }\r\n static setMyLikeDictionary (lDic : Dictionary) : void {\r\n this.myLikeDictionary = lDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getMyUnlockDictionary () : Dictionary {\r\n // debugger;\r\n return this.myUnlockDictionary;\r\n }\r\n static setMyUnlockDictionary (uDic : Dictionary) : void {\r\n this.myUnlockDictionary = uDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getMyStarDictionary () : Dictionary {\r\n // debugger;\r\n return this.myStarDictionary;\r\n }\r\n static setMyStarDictionary (tDic : Dictionary) : void {\r\n this.myStarDictionary = tDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyTrackDictionary () : Dictionary {\r\n // debugger;\r\n return this.myTrackDictionary;\r\n }\r\n static setMyTrackDictionary (tDic : Dictionary) : void {\r\n this.myTrackDictionary = tDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyWinkDictionary () : Dictionary {\r\n // debugger;\r\n return this.myWinkDictionary;\r\n }\r\n static setMyWinkDictionary (wDic : Dictionary) : void {\r\n this.myWinkDictionary = wDic;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n static getYourBlockDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourBlockDictionary;\r\n }\r\n static setYourBlockDictionary (bDic : Dictionary) : void {\r\n this.yourBlockDictionary = bDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getYourFriendDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourFriendDictionary;\r\n }\r\n static setYourFriendDictionary (fDic : Dictionary) : void {\r\n this.yourFriendDictionary = fDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getMyYourLikeDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourLikeDictionary;\r\n }\r\n static setYourLikeDictionary (lDic : Dictionary) : void {\r\n this.yourLikeDictionary = lDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getYourUnlockDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourUnlockDictionary;\r\n }\r\n static setYourUnlockDictionary (uDic : Dictionary) : void {\r\n this.yourUnlockDictionary = uDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getYourStarDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourStarDictionary;\r\n }\r\n static setYourStarDictionary (tDic : Dictionary) : void {\r\n this.yourStarDictionary = tDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getYourTrackDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourTrackDictionary;\r\n }\r\n static setYourTrackDictionary (tDic : Dictionary) : void {\r\n this.yourTrackDictionary = tDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getYourWinkDictionary () : Dictionary {\r\n // debugger;\r\n return this.yourWinkDictionary;\r\n }\r\n static setYourWinkDictionary (wDic : Dictionary) : void {\r\n this.yourWinkDictionary = wDic;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * End of MemberAcvitiy Dictionaries:\r\n * ---------------------------------------------------------------\r\n * ---------------------------------------------------------------\r\n */\r\n /*\r\n * ---------------------------------------------------------------\r\n * Begin of Member(View/Profile) Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n \r\n // ---------------------------------------------------------------\r\n \r\n // ---------------------------------------------------------------\r\n static getMyProfilePicsDictionary () : Dictionary {\r\n // debugger;\r\n return this.myProfilePicsDictionary;\r\n }\r\n static setMyProfilePicsDictionary (profPicDic : Dictionary) : void {\r\n this.myProfilePicsDictionary = profPicDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getKvPhotoDictionary () : Dictionary {\r\n // debugger;\r\n return this.kvPhotoDictionary;\r\n }\r\n static setKvPhotoDictionary (pnumKvpDic : Dictionary) : void {\r\n this.kvPhotoDictionary = pnumKvpDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getPreferenceDictionary () : Dictionary {\r\n // debugger;\r\n return this.preferenceDictionary;\r\n }\r\n static setPreferenceDictionary (prefDic : Dictionary) : void {\r\n this.preferenceDictionary = prefDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getProfilePicsDictionary () : Dictionary {\r\n // debugger;\r\n return this.profilePicsDictionary;\r\n }\r\n static setProfilePicsDictionary (profPicDic : Dictionary) : void {\r\n this.profilePicsDictionary = profPicDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getProfileInfoDictionary () : Dictionary {\r\n // debugger;\r\n return this.profileInfoDictionary;\r\n }\r\n static setProfileInfoDictionary (profInfoDic : Dictionary) : void {\r\n this.profileInfoDictionary = profInfoDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getProfileTileIdsDictionary () : Dictionary {\r\n return this.profileTileIdDictionary;\r\n }\r\n static setProfileTileIdDictionary (pTileIdDic : Dictionary) : void {\r\n this.profileTileIdDictionary = pTileIdDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getProfileTileDictionary () : Dictionary {\r\n return this.profileTileDictionary;\r\n }\r\n static setProfileTileDictionary (pTileDic : Dictionary) : void {\r\n this.profileTileDictionary = pTileDic;\r\n\r\n this.profileTileDexieDictionary = pTileDic;\r\n // debugger;\r\n }\r\n // ---------------------------------------------------------------\r\n static getSitUserDictionary () : Dictionary {\r\n // debugger;\r\n return this.sitUserDictionary;\r\n }\r\n static setSitUserDictionary (sUserDic : Dictionary) : void {\r\n this.sitUserDictionary = sUserDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getSitUserIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.sitUserIdDictionary;\r\n }\r\n static setSitUserIdDictionary (sUserDic : Dictionary) : void {\r\n this.sitUserIdDictionary = sUserDic;\r\n }\r\n // ---------------------------------------------------------------\r\n // static getPhotoIdDictionary () : Dictionary\r\n // {\r\n // // debugger;\r\n // return this.photoIdDictionary;\r\n // }\r\n // static setPhotoIdDictionary ( userPhIdDic : Dictionary ) : void\r\n // {\r\n // this.photoIdDictionary = userPhIdDic;\r\n // }\r\n // ---------------------------------------------------------------\r\n static getPhotoDictionary () : Dictionary {\r\n // debugger;\r\n return this.photoDictionary;\r\n }\r\n static setPhotoDictionary (userPhDic : Dictionary) : void {\r\n this.photoDictionary = userPhDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getUserPhotoBnIdDictionary () : Dictionary {\r\n // debugger;\r\n return this.userPhotoBnIdDictionary;\r\n }\r\n static setUserPhotoBnIdDictionary (userPhBnIdDic : Dictionary) : void {\r\n this.userPhotoBnIdDictionary = userPhBnIdDic;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n //static getPhotoBnDictionary () : Dictionary {\r\n // // debugger;\r\n // return this.photoBnDictionary;\r\n //}\r\n //static setPhotoBnDictionary (userPhBnDic : Dictionary) : void {\r\n // this.photoBnDictionary = userPhBnDic;\r\n //}\r\n\r\n // ---------------------------------------------------------------\r\n static getSpinnerTimerDictionary () : Dictionary {\r\n // debugger;\r\n return this.spinnerTimerDictionary;\r\n }\r\n static setSpinnerTimerDictionary (spinnerDic : Dictionary) : void {\r\n this.spinnerTimerDictionary = spinnerDic;\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * End of Member(View/Profile) Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n\r\n // ---------------------------------------------------------------\r\n // Note: Utility Methods for Dictionary Service:\r\n // ---------------------------------------------------------------\r\n static populateMasterErrorLogMap (bn : BoxNonceEntity) : any {\r\n // MemberActivity Dictionaries:\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n this.sitUser = EmitterSubjectService.getSitUserModel();\r\n\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n // debugger;\r\n const mErrorLogs = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as Map;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mErrorLogs) && mErrorLogs.size > 0) {\r\n mErrorLogs.forEach((e) => {\r\n this.masterErrorLogMap.set(e.key, e);\r\n });\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n static populateMyErrorLogMapFromIndexedDb (errLogArr : LogError[]) : void {\r\n /*\r\n * MyErrorLog Dictionary:\r\n * debugger;\r\n */\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(errLogArr) && errLogArr.length > 0) {\r\n errLogArr.map((e) => {\r\n this.myErrorLogMap.set(e.key, e);\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not Used under current scheme:\r\n // ---------------------------------------------------------------\r\n static modelArrayToDictionary (modelArr : any[], modelDic : Dictionary) : void {\r\n if (!!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelArr) && modelArr.length > 0) {\r\n modelArr.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.doerSitUserId)) {\r\n modelDic.set(e.doerSitUserId, e);\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.sitUserId)) {\r\n modelDic.set(e.sitUserId, e);\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not Used under current scheme:\r\n // ---------------------------------------------------------------\r\n static modelActivityArrayToDictionary (modelArr : any[], modelDic : Dictionary) : void {\r\n if (!!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelArr) && modelArr.length > 0) {\r\n modelArr.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.doerSitUserId)) {\r\n modelDic.set(e.doerSitUserId, e);\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.sitUserId)) {\r\n modelDic.set(e.sitUserId, e);\r\n }\r\n });\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Not Used under current scheme:\r\n // ---------------------------------------------------------------\r\n static modelArrayToMemberActivityDictionary (modelArr : any[], modelDictionary : Dictionary) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelArr) && modelArr.length > 0) {\r\n modelArr.map((e) => {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.key)) {\r\n modelDictionary.set(e.key, e);\r\n } else if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.id)) {\r\n modelDictionary.set(e.id.toString(), e);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // ----------------------------------------------------------------\r\n static populateKvPhotoOfUserInProfilePicsDictionary (data : KvPhoto, pPics : ProfilePics) : any {\r\n let index : number = -99;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data) && (data.photoId > 0 || data.photoBnId > 0)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) && pPics.sitUserId > 0) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.value) || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(data.image)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.unFilteredKvPhotoDictionary) && pPics.unFilteredKvPhotoDictionary.size >= 0) {\r\n if (data.photoBnId > 0) {\r\n if (!pPics.unFilteredKvPhotoDictionary.has(data.photoBnId)) {\r\n pPics.unFilteredKvPhotoDictionary.set(data.photoBnId, data);\r\n // debugger;\r\n }\r\n }\r\n }\r\n\r\n if (data.photoId > 0) {\r\n let tPhoto = CopyServiceStatic.copyFromKvPhotoToPhoto(data);\r\n if (!pPics.profilePhotoDictionary.has(data.photoId)) {\r\n pPics.profilePhotoDictionary.set(data.photoId, tPhoto);\r\n // debugger;\r\n }\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics.filteredKvPhotoDictionary) && pPics.filteredKvPhotoDictionary?.values?.length >= 0) {\r\n // debugger;\r\n index = ArrayServiceStatic.getIndexOfKvPhotoInKvPhotoArr(pPics.filteredKvPhotoArr, data);\r\n if (index !== -1) {\r\n pPics.filteredKvPhotoArr = ArrayServiceStatic.mergeArraysUniq(pPics.filteredKvPhotoArr, [ data ]);\r\n }\r\n else {\r\n pPics.filteredKvPhotoArr.push(data);\r\n }\r\n\r\n if (data.photoBnId > 0) {\r\n if (!pPics.filteredKvPhotoDictionary.has(data.photoBnId)) {\r\n pPics.filteredKvPhotoDictionary.set(data.photoBnId, data);\r\n // debugger;\r\n }\r\n }\r\n }\r\n }\r\n return pPics;\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n\r\n /*\r\n * ---------------------------------------------------------------\r\n * NOTE: This can be used as general template for\r\n * all other dictionaries with case -statement:\r\n * ---------------------------------------------------------------\r\n * TODO: Test,\r\n * ---------------------------------------------------------------\r\n */\r\n static updateDictionary (inModel : any, modelName : string, id? : number) : any | void {\r\n \r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inModel) ) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelName)) {\r\n // debugger;\r\n this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // debugger;\r\n // let model = FrequentlyUsedFunctionsServiceStatic.deepCloneJson(inModel) as any; //deepCloneJson, deepCloneJson\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(inModel)) {\r\n let model = inModel; // JSON.parse(JSON.stringify(inModel)); // <--deep clone\r\n // let modelNameLowerCased = modelName.toLowerCase();\r\n // debugger;\r\n switch (modelName.toLowerCase()) {\r\n\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n case 'buddy':\r\n this.count = 0;\r\n debugger;\r\n this.buddyDictionary.set(id, model);\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // Note: chathistoryId must appear beore chathistory\r\n // -------------------------------------------------------------------------\r\n case 'chathistoryid':\r\n this.chatHistoryIdDictionary.set(id, model);\r\n // debugger;\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n // NOTE: \r\n // if (id !== null | undefined ) { return id; }else {return model.id; } \r\n // the above expression is equal to this expression == id? id : model.id\r\n // -------------------------------------------------------------------------\r\n case 'chathistory':\r\n // this.chatHistoryDictionary.set(id, model);\r\n // debugger;\r\n if (model instanceof Array) {\r\n // debugger;\r\n model.map(e => {\r\n this.chatHistoryDictionary.set(e.communicationActivityId, e);\r\n })\r\n }\r\n else if (typeof (model) === 'object') {\r\n // debugger;\r\n this.chatHistoryDictionary.set(model.communicationActivityId, model);\r\n // this.saveDictionaryToDbDexie( this.photoIdDictionary, 'PhotoId', this.loginSuccess.signedInUserId );\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: emailtileId must appear beore emailtile\r\n // -------------------------------------------------------------------------\r\n case 'emailtileid':\r\n debugger;\r\n this.eMailTileIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'emailtile':\r\n debugger;\r\n this.eMailTileDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: enotetileId must appear beore enotetile\r\n // -------------------------------------------------------------------------\r\n case 'enotetileid':\r\n // debugger;\r\n this.eNoteTileIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'enotetile':\r\n // debugger;\r\n this.eNoteTileDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'errorlog':\r\n // debugger;\r\n this.errorLogDictionary.set(id, model);\r\n break;\r\n // ----------------------------------------------\r\n case 'kvphoto':\r\n // debugger;\r\n this.kvPhotoDictionary?.set(id, model);\r\n break;\r\n // ----------------------------------------------\r\n case 'loginsuccess':\r\n // debugger;\r\n this.loginSuccessDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myblock':\r\n case 'yourblock':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myBlockDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourBlockDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myfriend':\r\n case 'yourfriend':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myFriendDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourFriendDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mylike':\r\n case 'yourlike':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myLikeDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourLikeDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mystar':\r\n case 'yourstar':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myStarDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourStarDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mytrack':\r\n case 'yourtrack':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myTrackDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourTrackDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mywink':\r\n case 'yourwink':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myTrackDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourTrackDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myunlock':\r\n case 'yourunlock':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myUnlockDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourUnlockDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mymemberactivity':\r\n case 'yourmemberactivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myMemberActivityDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourMemberActivityDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mymemberlockingactivity':\r\n case 'yourMemberLockingActivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myMemberLockingActivityDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourMemberLockingActivityDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mymemberstartrackwinkactivity':\r\n case 'yourMemberStarTrackWinkActivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // --------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n this.myMemberStarTrackWinkActivityDictionary.set(model.receiverUserId, model);\r\n }\r\n else if (id == model.senderUserId) {\r\n this.yourMemberStarTrackWinkActivityDictionary.set(model.senderUserId, model);\r\n }\r\n }\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // Note: mychatId must appear beore mychat\r\n // -------------------------------------------------------------------------\r\n case 'mychatid':\r\n // debugger;\r\n this.myChatIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mychat':\r\n // debugger;\r\n this.myChatDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: myEmailId must appear beore myEmail\r\n // -------------------------------------------------------------------------\r\n case 'myemailid':\r\n // debugger;\r\n // this.myEmailIdDictionary.set(id, model);\r\n // debugger;\r\n let eArr : any[] = [];\r\n if (this.myEmailIdDictionary?.size > 0) {\r\n eArr = this.myEmailIdDictionary?.get(this.loginSuccess.signedInUserId) as number[];\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n if (typeof (model) === 'number') {\r\n // debugger;\r\n eArr = ArraySupportServiceStatic.mergeArraysUniq(eArr, [ model ]);\r\n this.myEmailIdDictionary?.set(this.loginSuccess.signedInUserId, eArr);\r\n }\r\n else if (model instanceof Array) {\r\n eArr = ArraySupportServiceStatic.mergeArraysUniq(eArr, model);\r\n this.myEmailIdDictionary?.set(this.loginSuccess.signedInUserId, eArr);\r\n // debugger;\r\n }\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myemail':\r\n // debugger;\r\n this.myEmailDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: myNotificationId must appear beore myNotificationr\r\n // -------------------------------------------------------------------------\r\n case 'mynotificationid':\r\n // debugger;\r\n this.myNotificationIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mynotification':\r\n // debugger;\r\n this.myNotificationDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: photoBnId must appear beore photoBn\r\n // -------------------------------------------------------------------------\r\n case 'photobnid':\r\n // debugger;\r\n if (typeof (model) === 'number') {\r\n // debugger;\r\n this.userPhotoBnIdDictionary.set(id, [ model ]);\r\n }\r\n else if (model instanceof Array) {\r\n // debugger;\r\n this.userPhotoBnIdDictionary.set(id, model);\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'photobn':\r\n // debugger;\r\n // this.photoBnDictionary.set(id, model);\r\n if (model instanceof Array) {\r\n // debugger;\r\n model.map(e => {\r\n this.photoBnDictionary.set(e.photoBnId, e);\r\n })\r\n }\r\n else if (typeof (model) === 'object' || model instanceof BoxNonceEntity) {\r\n // debugger;\r\n this.photoBnDictionary.set(model.photoBnId, model);\r\n }\r\n break;\r\n\r\n // ---------------------------------------------------------------------------------------------------------\r\n case 'photo':\r\n // debugger;\r\n this.photoDictionary.set(model.id, model);\r\n break;\r\n // ---------------------------------------------------------------------------------------------------------\r\n case 'preference':\r\n // debugger;\r\n this.preferenceDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n //case 'profileimage':\r\n // // debugger;\r\n // this.profileImageDictionary.set(model.sitUserId, model);\r\n // // this.saveDictionaryToDbDexie( this.profileImageDictionary, 'ProfileImage', this.loginSuccess.signedInUserId );\r\n // break;\r\n // -------------------------------------------------------------------------\r\n case 'profileinfo':\r\n // debugger;\r\n this.profileInfoDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'profilepics':\r\n // debugger;\r\n this.profilePicsDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // model == number[]\r\n case 'profiletileid':\r\n // debugger;\r\n this.profileTileIdDictionary.set(id, model);\r\n\r\n // if ( typeof ( model ) === 'number' )\r\n // {\r\n // // debugger;\r\n // this.profileTileIdsDictionary.set( model, model );\r\n // // this.saveDictionaryToDbDexie( this.profileTileIdDictionary, 'ProfileTileId', this.loginSuccess.signedInUserId );\r\n // }\r\n // else if ( model instanceof Array )\r\n // {\r\n // // debugger;\r\n // model.map( e =>\r\n // {\r\n // // debugger;\r\n // this.profileTileIdsDictionary.set( e, e );\r\n // // this.saveDictionaryToDbDexie( this.profileTileIdDictionary, 'ProfileTileId', this.loginSuccess.signedInUserId );\r\n // } );\r\n // }\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n case 'profiletile':\r\n // debugger;\r\n this.profileTileDictionary.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : model.id, model); \r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: sitUserId must appear beore sitUser\r\n // -------------------------------------------------------------------------\r\n // NOte: model == number[]\r\n case 'situserid':\r\n // debugger;\r\n let tArr : any[] = [];\r\n if (this.sitUserIdDictionary?.values().length > 0) {\r\n tArr = this.sitUserIdDictionary?.get(this.loginSuccess.signedInUserId) as number[];\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tArr)) {\r\n if (typeof (model) === 'number') {\r\n // debugger;\r\n tArr = ArraySupportServiceStatic.mergeArraysUniq(tArr, [ model ]);\r\n this.sitUserIdDictionary?.set(id, tArr);\r\n }\r\n else if (model instanceof Array) {\r\n tArr = ArraySupportServiceStatic.mergeArraysUniq(tArr, model);\r\n this.sitUserIdDictionary?.set(id, tArr);\r\n // debugger;\r\n }\r\n }\r\n else {\r\n this.sitUserIdDictionary?.set(id, model);\r\n }\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'situser':\r\n // debugger;\r\n if (model instanceof Array) {\r\n // debugger;\r\n\r\n model.map(e => {\r\n // debugger;\r\n this.sitUserDictionary?.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : e.id, e);\r\n });\r\n }\r\n else if (model) {\r\n if (id > 0) {\r\n // debugger;\r\n this.sitUserDictionary?.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : model.id, model);\r\n }\r\n else if (model.sitUserId > 0) {\r\n // debugger;\r\n this.sitUserDictionary?.set(model.sitUserId, model);\r\n }\r\n }\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n case 'filteredkvphoto':\r\n // debugger;\r\n this.filteredKvPhotoDictionary.set(model.photoBnId, model);\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'unfilteredkvphoto':\r\n // debugger;\r\n this.unFilteredKvPhotoDictionary.set(model.photoBnId, model);\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'spinnertimer':\r\n // debugger;\r\n this.spinnerTimerDictionary.set(model.startTimer, model);\r\n // this.saveDictionaryToDbDexie( this.spinnerTimerDictionary, 'SpinnerTimer', this.loginSuccess.signedInUserId );\r\n\r\n break;\r\n default:\r\n // ;\r\n break;\r\n // -------------------------------------------------------------------------\r\n }\r\n // debugger;\r\n // Note: TODO: figure out if it is still in use:\r\n // ----------------------------------------------\r\n //this.count = this.allDictionaryDataCount.getValue(modelName);\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.count) && this.count >= 0) {\r\n // this.count++;\r\n //}\r\n //else this.count = 1;\r\n\r\n //this.allDictionaryDataCount.set(modelName, this.count);\r\n }\r\n }\r\n }\r\n }\r\n // -------------------------------------------------------------------------------------\r\n static resetDictionary (modelName : string) : any | void { \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(modelName)) { \r\n // debugger;\r\n switch (modelName.toLowerCase()) {\r\n\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n case 'buddy':\r\n this.buddyDictionary = new Dictionary();\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // Note: chathistoryId must appear beore chathistory\r\n // -------------------------------------------------------------------------\r\n case 'chathistoryid':\r\n this.chatHistoryIdDictionary = new Dictionary();\r\n // debugger;\r\n\r\n break;\r\n // -------------------------------------------------------------------------\r\n // NOTE: \r\n // if (id !== null | undefined ) { return id; }else {return model.id; } \r\n // the above expression is equal to this expression == id? id : model.id\r\n // -------------------------------------------------------------------------\r\n case 'chathistory':\r\n // this.chatHistoryDictionary.set(id, model);\r\n // debugger;\r\n this.chatHistoryDictionary = new Dictionary();\r\n \r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: emailtileId must appear beore emailtile\r\n // -------------------------------------------------------------------------\r\n case 'emailtileid':\r\n debugger;\r\n this.eMailTileIdDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'emailtile':\r\n debugger;\r\n this.eMailTileDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: enotetileId must appear beore enotetile\r\n // -------------------------------------------------------------------------\r\n case 'enotetileid':\r\n // debugger;\r\n this.eNoteTileIdDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'enotetile':\r\n // debugger;\r\n this.eNoteTileDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'errorlog':\r\n // debugger;\r\n this.errorLogDictionary = new Dictionary();\r\n break;\r\n // ----------------------------------------------\r\n case 'kvphoto':\r\n // debugger;\r\n this.kvPhotoDictionary = new Dictionary();\r\n break;\r\n // ----------------------------------------------\r\n case 'loginsuccess':\r\n // debugger;\r\n this.loginSuccessDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myblock':\r\n this.myBlockDictionary = new Dictionary();\r\n break;\r\n case 'yourblock':\r\n this.yourBlockDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'myfriend':\r\n this.myFriendDictionary = new Dictionary(); \r\n break;\r\n case 'yourfriend':\r\n this.yourFriendDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mylike':\r\n this.myLikeDictionary = new Dictionary();\r\n break;\r\n case 'yourlike':\r\n this.yourLikeDictionary = new Dictionary();\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mystar':\r\n case 'yourstar':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myStarDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourStarDictionary.set(model.senderUserId, model);\r\n // }\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mytrack':\r\n case 'yourtrack':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myTrackDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourTrackDictionary.set(model.senderUserId, model);\r\n // }\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mywink':\r\n case 'yourwink':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myTrackDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourTrackDictionary.set(model.senderUserId, model);\r\n // }\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myunlock':\r\n case 'yourunlock':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myUnlockDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourUnlockDictionary.set(model.senderUserId, model);\r\n // }\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myMemberActivity':\r\n case 'yourmemberactivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myMemberActivityDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourMemberActivityDictionary.set(model.senderUserId, model);\r\n // }\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mymemberlockingactivity':\r\n case 'yourMemberLockingActivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // ---------------------------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myMemberLockingActivityDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourMemberLockingActivityDictionary.set(model.senderUserId, model);\r\n // }\r\n // }\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mymemberstartrackwinkactivity':\r\n case 'yourMemberStarTrackWinkActivity':\r\n // determine myMemberActivity and yourMemberActivity then update:\r\n // --------------------------------------------------------------\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.loginSuccess)) {\r\n // if (this.loginSuccess.signedInUserId === id && id == model.receiverSitUserId) {\r\n // this.myMemberStarTrackWinkActivityDictionary.set(model.receiverUserId, model);\r\n // }\r\n // else if (id == model.senderUserId) {\r\n // this.yourMemberStarTrackWinkActivityDictionary.set(model.senderUserId, model);\r\n // }\r\n //}\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // Note: mychatId must appear beore mychat\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mychatid':\r\n // debugger;\r\n // this.myChatIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mychat':\r\n // debugger;\r\n // this.myChatDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: myEmailId must appear beore myEmail\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myemailid':\r\n // debugger;\r\n // this.myEmailIdDictionary.set(id, model);\r\n // debugger;\r\n //let eArr : any[] = [];\r\n //if (this.myEmailIdDictionary?.size() > 0) {\r\n // eArr = this.myEmailIdDictionary?.getValue(this.loginSuccess.signedInUserId) as number[];\r\n //}\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n // if (typeof (model) === 'number') {\r\n // // debugger;\r\n // eArr = ArraySupportServiceStatic.mergeArraysUniq(eArr, [ model ]);\r\n // this.myEmailIdDictionary?.set(this.loginSuccess.signedInUserId, eArr);\r\n // }\r\n // else if (model instanceof Array) {\r\n // eArr = ArraySupportServiceStatic.mergeArraysUniq(eArr, model);\r\n // this.myEmailIdDictionary?.set(this.loginSuccess.signedInUserId, eArr);\r\n // // debugger;\r\n // }\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'myemail':\r\n // debugger;\r\n // this.myEmailDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: myNotificationId must appear beore myNotificationr\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'mynotificationid':\r\n // debugger;\r\n // this.myNotificationIdDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n case 'mynotification':\r\n // debugger;\r\n // this.myNotificationDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: photoBnId must appear beore photoBn\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'photobnid':\r\n // debugger;\r\n //if (typeof (model) === 'number') {\r\n // // debugger;\r\n // this.userPhotoBnIdDictionary.set(id, [ model ]);\r\n //}\r\n //else if (model instanceof Array) {\r\n // // debugger;\r\n // this.userPhotoBnIdDictionary.set(id, model);\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'photobn':\r\n // debugger;\r\n // this.photoBnDictionary.set(id, model);\r\n //if (model instanceof Array) {\r\n // // debugger;\r\n // model.map(e => {\r\n // this.photoBnDictionary.set(e.photoBnId, e);\r\n // })\r\n //}\r\n //else if (typeof (model) === 'object' || model instanceof BoxNonceEntity) {\r\n // // debugger;\r\n // // this.photoBnDictionary.set(model.photoBnId, model);\r\n //}\r\n break;\r\n\r\n // ---------------------------------------------------------------------------------------------------------\r\n // TODO:\r\n case 'photo':\r\n // debugger;\r\n // this.photoDictionary.set(model.id, model);\r\n break;\r\n // ---------------------------------------------------------------------------------------------------------\r\n // TODO:\r\n case 'preference':\r\n // debugger;\r\n // this.preferenceDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: This does not have a store in indexedDb:\r\n // ----------------------------------------------\r\n //case 'profileimage':\r\n // // debugger;\r\n // this.profileImageDictionary.set(model.sitUserId, model);\r\n // // this.saveDictionaryToDbDexie( this.profileImageDictionary, 'ProfileImage', this.loginSuccess.signedInUserId );\r\n // break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'profileinfo':\r\n // debugger;\r\n // this.profileInfoDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'profilepics':\r\n // debugger;\r\n // this.profilePicsDictionary.set(id, model);\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n // model == number[]\r\n case 'profiletileid':\r\n // debugger;\r\n // this.profileTileIdDictionary.set(id, model);\r\n\r\n // if ( typeof ( model ) === 'number' )\r\n // {\r\n // // debugger;\r\n // this.profileTileIdsDictionary.set( model, model );\r\n // // this.saveDictionaryToDbDexie( this.profileTileIdDictionary, 'ProfileTileId', this.loginSuccess.signedInUserId );\r\n // }\r\n // else if ( model instanceof Array )\r\n // {\r\n // // debugger;\r\n // model.map( e =>\r\n // {\r\n // // debugger;\r\n // this.profileTileIdsDictionary.set( e, e );\r\n // // this.saveDictionaryToDbDexie( this.profileTileIdDictionary, 'ProfileTileId', this.loginSuccess.signedInUserId );\r\n // } );\r\n // }\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'profiletile':\r\n // debugger;\r\n // this.profileTileDictionary.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : model.id, model)\r\n\r\n //if (this.profileTileDictionary.size() == 0 || !this.profileTileDictionary.has(model.sitUserId)) {\r\n // this.profileTileDictionary.set(model.sitUserId, model);\r\n //}\r\n //else {\r\n // // debugger;\r\n // let dTile : ProfileTile = this.profileTileDictionary.getValue(model.sitUserId) as ProfileTile;\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(dTile)) {\r\n // // debugger;\r\n // // CopyServiceStatic.copyProfileTileIfExists(dTile, model);\r\n // dTile.copyIfExists(model);\r\n // this.profileTileDictionary.set(dTile.sitUserId, dTile);\r\n // }\r\n\r\n //}\r\n // debugger;\r\n\r\n // debugger;\r\n break;\r\n // -------------------------------------------------------------------------\r\n // Note: sitUserId must appear beore sitUser\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n // NOte: model == number[]\r\n case 'situserid':\r\n // debugger;\r\n //let tArr : any[] = [];\r\n //if (this.sitUserIdDictionary?.values().length > 0) {\r\n // tArr = this.sitUserIdDictionary?.getValue(this.loginSuccess.signedInUserId) as number[];\r\n //}\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tArr)) {\r\n // if (typeof (model) === 'number') {\r\n // // debugger;\r\n // tArr = ArraySupportServiceStatic.mergeArraysUniq(tArr, [ model ]);\r\n // this.sitUserIdDictionary?.set(id, tArr);\r\n // }\r\n // else if (model instanceof Array) {\r\n // tArr = ArraySupportServiceStatic.mergeArraysUniq(tArr, model);\r\n // this.sitUserIdDictionary?.set(id, tArr);\r\n // // debugger;\r\n // }\r\n //}\r\n //else {\r\n // this.sitUserIdDictionary?.set(id, model);\r\n //}\r\n break;\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'situser':\r\n // debugger;\r\n //if (model instanceof Array) {\r\n // // debugger;\r\n\r\n // model.map(e => {\r\n // // debugger;\r\n // this.sitUserDictionary?.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : e.id, e);\r\n // });\r\n //}\r\n //else if (model) {\r\n // if (id > 0) {\r\n // // debugger;\r\n // this.sitUserDictionary?.set(!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id) ? id : model.id, model);\r\n // }\r\n // else if (model.sitUserId > 0) {\r\n // // debugger;\r\n // this.sitUserDictionary?.set(model.sitUserId, model);\r\n // }\r\n //}\r\n break;\r\n\r\n // -------------------------------------------------------------------------\r\n // TODO:\r\n case 'spinnertimer':\r\n // debugger;\r\n // this.spinnerTimerDictionary.set(model.startTimer, model);\r\n // this.saveDictionaryToDbDexie( this.spinnerTimerDictionary, 'SpinnerTimer', this.loginSuccess.signedInUserId );\r\n\r\n break;\r\n case 'filteredkvphoto':\r\n // debugger;\r\n this.filteredKvPhotoDictionary = new Dictionary();\r\n\r\n break;\r\n case 'unfilteredkvphoto':\r\n this.unFilteredKvPhotoDictionary = new Dictionary();\r\n\r\n break;\r\n default:\r\n // ;\r\n break;\r\n // -------------------------------------------------------------------------\r\n }\r\n // debugger;\r\n // Note: TODO: figure out if it is still in use:\r\n // ----------------------------------------------\r\n //this.count = this.allDictionaryDataCount.getValue(modelName);\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.count) && this.count >= 0) {\r\n // this.count++;\r\n //}\r\n //else this.count = 1;\r\n\r\n //this.allDictionaryDataCount.set(modelName, this.count);\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO: comment/remove before deployment. Keep until testing.\r\n // ---------------------------------------------------------------\r\n //static updateChatHistoryDictionary ( chatArr: Chat[] ): void\r\n //{\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( chatArr ) && chatArr.length > 0 )\r\n // {\r\n // chatArr.map( e =>\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e )\r\n // && e.receiverSitUserId === this.loginSuccess.signedInUserId // make sure that I am the recipient\r\n // && this.chatHistoryDictionary.has( e.senderSitUserId ) ) // Note: dictionary key==senderSitUserId\r\n // {\r\n // this.chatHistoryDictionary.remove( e.senderSitUserId );\r\n // }\r\n // this.chatHistoryDictionary.set( e.senderSitUserId, e );\r\n // } );\r\n // }\r\n //}\r\n // ---------------------------------------------------------------\r\n // Intend to deprecate.\r\n // ---------------------------------------------------------------\r\n static updateMyChatDictionary ( chatarr : any ): void\r\n {\r\n // debugger;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( chatarr ) && chatarr.length > 0)\r\n {\r\n let chatArr = JSON.parse(chatarr);\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatArr) && chatArr.length > 0) {\r\n for (var i = 0; i < chatArr.length; i++) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(chatArr[ i ])\r\n && chatArr[ i ].receiverSitUserId === this.loginSuccess.signedInUserId // make sure that I am the recipient\r\n && this.myChatDictionary.has(chatArr[ i ].senderSitUserId)) // Note: dictionary key==senderSitUserId\r\n {\r\n this.myChatDictionary.remove(chatArr[ i ].senderSitUserId);\r\n }\r\n this.myChatDictionary.set(chatArr[ i ].senderSitUserId, chatArr[ i ]);\r\n };\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // static updateMyEmailTileDictionary ( commActArr: CommunicationActivity[] ): void\r\n // {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commActArr ) && commActArr.length > 0 )\r\n // {\r\n // // debugger;\r\n // commActArr.map( e =>\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e.communicationType )\r\n // && ( e.communicationType.toLowerCase().indexOf( 'email' ) !== -1) // TODO: check the magic-string\r\n // && ( e.receiverSitUserId === this.loginSuccess.signedInUserId // make sure that I am the recipient\r\n // || e.senderSitUserId === this.loginSuccess.signedInUserId)) // or sender\r\n // {\r\n\r\n // // if ( this.myEmailTileDictionary.has( e.senderSitUserId ) ) // Note: dictionary key==senderSitUserId\r\n // // {\r\n // // // debugger;\r\n // // this.myEmailTileDictionary.remove( e.senderSitUserId );\r\n // // }\r\n // // debugger;\r\n // this.myEmailTileDictionary.set( e.senderSitUserId, e );\r\n // // debugger;\r\n // }\r\n // } );\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n // static updateMyNotificationDictionary ( commActArr: CommunicationActivity[] ): void\r\n // {\r\n // // debugger;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( commActArr ) && commActArr.length > 0 )\r\n // {\r\n // commActArr.map( e =>\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e )\r\n // && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( e.communicationType )\r\n // && ( e.communicationType.toLowerCase().indexOf( 'note' ) !== -1\r\n // || e.communicationType.toLowerCase().indexOf( 'notification' ) !== -1 ) // TODO: check the magic-string\r\n // && e.receiverSitUserId === this.loginSuccess.signedInUserId )// make sure that I am the recipient\r\n // {\r\n // if (this.myNotificationDictionary.has( e.senderSitUserId ) ) // Note: dictionary key==senderSitUserId\r\n // {\r\n // // debugger;\r\n // let dictEnote = this.myNotificationDictionary.getValue( e.senderSitUserId ) as CommunicationActivity;\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( dictEnote ) && dictEnote.communicationSubType.toLowerCase().indexOf( e.communicationSubType.toLowerCase() ) !== -1 )\r\n // {\r\n // // debugger;\r\n // this.myNotificationDictionary.remove( e.senderSitUserId );\r\n // }\r\n // }\r\n // // debugger;\r\n // this.myNotificationDictionary.set( e.senderSitUserId, e );\r\n // }\r\n // } );\r\n // }\r\n // }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ===============================================================\r\n * BoxNonceEntity(Bn) Dictionaries:\r\n * ---------------------------------------------------------------\r\n */\r\n static getPreferenceDicBn () : Dictionary\r\n {\r\n return this.preferenceBnDictionary;\r\n }\r\n static setPreferenceDictionaryBn ( prefDic : Dictionary ) : void\r\n {\r\n this.preferenceBnDictionary = prefDic;\r\n }\r\n // ---------------------------------------------------------------\r\n // static getPhotoBnArrDictionarytionary () : Dictionary\r\n // {\r\n // return this.photoBnArrDictionary;\r\n // }\r\n // static setPhotoBnArrDictionarytionary ( profPicDic : Dictionary ) : void\r\n // {\r\n // this.photoBnArrDictionary = profPicDic;\r\n // }\r\n // ---------------------------------------------------------------\r\n static getProfileInfoDictionaryBn () : Dictionary\r\n {\r\n return this.profileInfoBnDictionary;\r\n }\r\n static setProfileInfoDictionaryBn ( profInfoDic : Dictionary ) : void\r\n {\r\n this.profileInfoBnDictionary = profInfoDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getProfileTileIdDictionaryBn () : Dictionary\r\n {\r\n return this.profileTileIdBnDictionary;\r\n }\r\n static setProfileTileIdDictionaryBn ( pTileIdDic : Dictionary ) : void\r\n {\r\n this.profileTileIdBnDictionary = pTileIdDic;\r\n }\r\n // ---------------------------------------------------------------\r\n static getProfileTileDictionaryBn () : Dictionary\r\n {\r\n return this.profileTileBnDictionary;\r\n }\r\n static setProfileTileDictionaryBn ( pTileDic : Dictionary ) : void\r\n {\r\n this.profileTileBnDictionary = pTileDic;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n //static populateBnDictionariesFromIndexedDb (): void\r\n //{\r\n // // debugger;\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // this.indexedDbService.getAllStoreData( 'Preference', this.loginSuccess.signedInUserId.toString()).then( modelArr =>\r\n // {\r\n // this.modelArrayToDictionary( modelArr, this.preferenceDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('ProfileInfo', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.profileInfoDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('ProfilePics', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.profilePicsDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('ProfileTile', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.profileTileDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('ProfileTileId', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.profileTileIdsDictionary );\r\n // } );\r\n // this.indexedDbService.getAllStoreData('SitUser', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.sitUserDictionary );\r\n // } );\r\n // // this.indexedDbService.getAllStoreData( 'PhotoId', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // // this.modelArrayToDictionary( modelArr, this.photoIdDictionary );\r\n // // } );\r\n // this.indexedDbService.getAllStoreData('Photo', this.loginSuccess.signedInUserId.toString() ).then( modelArr => {\r\n // this.modelArrayToDictionary( modelArr, this.photoDictionary );\r\n // } );\r\n // // this.indexedDbService.getAllStoreData( 'PhotoBnId', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // // this.modelArrayToDictionary( modelArr, this.photoBnIdDictionary );\r\n // // } );\r\n // this.indexedDbService.getAllStoreData('PhotoBn', this.loginSuccess.signedInUserId.toString() ).then( modelArr =>{\r\n // this.modelArrayToDictionary( modelArr, this.photoBnDictionary );\r\n // } );\r\n\r\n // // debugger;\r\n //}\r\n // ---------------------------------------------------------------\r\n static modelArrayToBnDictionary ( modelArr : any[], modelDic : Dictionary ) : void\r\n {\r\n if ( !!modelArr && modelArr.length > 0 )\r\n {\r\n modelArr.map( ( e ) =>\r\n {\r\n modelDic.set( e.sitUserId, e );\r\n } );\r\n }\r\n }\r\n // ---------------------------------------------------------------------------\r\n // private inInitialize (): void\r\n // {\r\n // DictionaryServiceStatic.httpService = new HttpService(this.httpClient, this.router);\r\n // DictionaryServiceStatic.photoPrivacyService = new PhotoPrivacyService(DictionaryServiceStatic.httpService);\r\n // }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n /*\r\n * prevent memory leak when component /how-can-i-select-an-element-in-a-component-template\r\n * (2) https:// www.concretepage.com/angular-2/angular-4-renderer2-example\r\n * (3) https:// stackoverflow.com/questions/7439519/setinterval-to-loop-through-array-in-javascript/7440323\r\n * (4) https:// stackblitz.com/edit/timer-with-pdestroyed\r\n */\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n /*\r\n * this.timerArray.forEach(timer => clearInterval(timer));\r\n * debugger;\r\n */\r\n }\r\n // ---------------------------------------------------------------\r\n}\r\n\r\n// =================================================================\r\n\r\n // ---------------------------------------------------------------\r\n // savePhotoIdsInDictionaryAndIndexedDb ( sitUserId: number, result: number[] ) : void\r\n // {\r\n // if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( result ) && result.length > 0 )\r\n // {\r\n // this.userPhotoIds = result;\r\n // EmitterSubjectService.setUserPhotoIds( this.userPhotoIds );\r\n\r\n // DictionaryServiceStatic.updateDictionary( this.userPhotoIds, 'UserPhotoId', sitUserId );\r\n\r\n // this.indexedDbToDictionaryService\r\n // .saveDictionaryToDbDexie(\r\n // DictionaryServiceStatic.photoIdDictionary, 'UserPhotoId', this.loginSuccess.signedInUserId );\r\n\r\n // // since successfully unsalted UserPhotoIds, we can save the BoxNonce of it in indexedDb:\r\n // // --------------------------------------------------------------------------------------\r\n // // this.boxNonceEntity = SlakezSaltServiceStatic.boxSalt( result.toString() );\r\n // // this.boxNonceEntity.box = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.box );\r\n // // this.boxNonceEntity.nonce = FrequentlyUsedFunctionsServiceStatic.arrBufferToB64( this.boxNonceEntity.nonce );\r\n // // this.boxNonceEntity.date = DateStringServiceStatic.getTicks( new Date() ).toString();\r\n // // this.boxNonceEntity.id = sitUserId;\r\n // // this.boxNonceEntity.key = this.boxNonceEntity.id.toString();\r\n // // this.boxNonceEntity.entityName = 'PhotoId';\r\n // // this.boxNonceEntity.sitUserId = sitUserId;\r\n // // debugger;\r\n // // this.triageAllDataForIndexedDbAndDictionaryService.savePhotoIdDictionaryToIndexedDb( this.boxNonceEntity );\r\n\r\n // // debugger; // TODO: check to see the values\r\n // // return this.userPhotoIds;\r\n // // debugger;\r\n // }\r\n // }\r\n\r\n\r\n\r\n","\r\nimport { ElementRef, Inject, Injectable, NgZone, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { interval, Observable, Subject, Subscription, } from 'rxjs';\r\nimport { map, takeUntil, distinctUntilChanged, filter, take, startWith, tap } from 'rxjs/operators';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { ModuleComponentLoader } from '../../models/common/moduleComponentLoader.model';\r\nimport { OffOn } from '../../models/offOn/offOn.model';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from './stringServiceStatic.service';\r\n\r\n// =====================================================================\r\n// Use Case:\r\n// ----------\r\n// In a Component:\r\n// import { Subject } from 'rxjs;\r\n// import { takeUntil } from 'rxjs/operators';\r\n// ...\r\n// private onDestroy$: Subject = new Subject();\r\n// ...\r\n// this.RandomNumberGeneratorObservableServiceStatic.getRandomNumber()\r\n// .pipe( takeUntil( this.onDestroy$ ) )\r\n// .subscribe( ( luckyNumber : number ) =>\r\n// {\r\n// this.number1 = luckyNumber;\r\n// ...\r\n// public ngOnDestroy(): void {\r\n// this.onDestroy$.next();\r\n// }\r\n// =====================================================================\r\ndeclare var $ : any;\r\n@Injectable({ providedIn: 'root'})\r\nexport abstract class DomUtilsServiceStatic\r\n{\r\n static renderer : Renderer2;\r\n static domUtilsElementRef : ElementRef;\r\n static domUtilsHTMLElement : HTMLElement;\r\n static randomNumberGenerator$ : Observable;\r\n static randomNumber = 0;\r\n static loginSuccess : LoginSuccess = new LoginSuccess();\r\n static mcLoader : ModuleComponentLoader = new ModuleComponentLoader();\r\n static navigationStart$ : NavigationStart;\r\n static router : Router;\r\n static stable : any;\r\n static zone : NgZone;\r\n static document : Document;\r\n static timer : any;\r\n // ---------------------------------------------------------\r\n constructor (\r\n private renderer2Factory : RendererFactory2,\r\n private routerC : Router,\r\n private ngZone : NgZone,\r\n @Inject(Document) _document : Document,\r\n ) {\r\n DomUtilsServiceStatic.document = _document;\r\n DomUtilsServiceStatic.initService(renderer2Factory, routerC, ngZone);\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static triggerClick () {\r\n // let el : HTMLElement = this.pTileButton.nativeElement as HTMLElement;\r\n // Note: before getting the angularElementById, we need to set the Document\r\n // and ElementRef without which it will fail!\r\n let el = DomUtilsServiceStatic.getAngularElementById('pTileButton');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(el)) {\r\n this.timer = setTimeout(() => {\r\n el.click();\r\n clearTimeout(this.timer);\r\n }, 5000);\r\n }\r\n\r\n }\r\n // ---------------------------------------------------------\r\n public static initService (renderer2Factory : RendererFactory2, routerI: Router, ngZoneI: NgZone) {\r\n this.renderer = renderer2Factory.createRenderer(null, null);\r\n this.router = routerI;\r\n this.zone = ngZoneI;\r\n // this.document = document;\r\n }\r\n // ---------------------------------------------------------\r\n public static getRandomNumber () : Observable {\r\n this.randomNumber++;\r\n\r\n if (!this.randomNumberGenerator$) {\r\n this.randomNumberGenerator$ = Observable.create((subject : Subject) => {\r\n let timer = setInterval(() => {\r\n const num = Math.floor(Math.random() * 10);\r\n subject.next(num);\r\n clearInterval(timer);\r\n }, 1000);\r\n\r\n clearInterval(timer);\r\n });\r\n }\r\n return this.randomNumberGenerator$;\r\n }\r\n // ---------------------------------------------------------\r\n public static getDomUtilsElementRef () : ElementRef {\r\n return this.domUtilsElementRef;\r\n }\r\n // ---------------------------------------------------------\r\n public static setDomUtilsElementRef (elemRef : ElementRef): void {\r\n this.domUtilsElementRef = elemRef;\r\n }\r\n // ---------------------------------------------------------\r\n public static setDomUtilsDocument (doc : Document) : void {\r\n this.document = doc;\r\n }\r\n // ---------------------------------------------------------\r\n // TODO: need to revisit for logic modification\r\n // ---------------------------------------------------------\r\n public static removeComponent (componentName : string) : any {\r\n let componentId : any;\r\n let domElements : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(componentName) ) {\r\n componentId = componentName + 'ComponentId';\r\n domElements = this.document.getElementById(componentId);\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(domElements) || domElements.length === 0) {\r\n componentId = '#' + componentId;\r\n domElements = this.document.getElementById(componentId);\r\n }\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(domElements) && domElements.length >= 1) {\r\n // debugger;\r\n for (let i = 0; i <= domElements.length - 2; i++) // remove all but the last one\r\n {\r\n // debugger;\r\n domElements[ i ].parentNode.removeChild(domElements[ i ]);\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(domElements)) {\r\n domElements.remove();\r\n }\r\n }\r\n }\r\n // ----------------------------------------------------------------------\r\n public static getMcLoaderComponentId (mcLoader: any) : any {\r\n let mcLoaderComponentId = '';\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(mcLoader.componentName)) {\r\n mcLoaderComponentId = mcLoader.componentName + 'ComponentId';\r\n }\r\n return mcLoaderComponentId;\r\n }\r\n // ----------------------------------------------------------------\r\n static getAngularElementById (id : string) : any {\r\n let tempElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n tempElem = this.document.getElementById(id);\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.domUtilsElementRef)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.domUtilsElementRef.nativeElement)) {\r\n tempElem = this.domUtilsElementRef.nativeElement.querySelector(id);\r\n }\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.domUtilsElementRef)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.domUtilsElementRef.nativeElement) ) {\r\n tempElem = this.domUtilsElementRef.nativeElement.querySelector('#' + id);\r\n }\r\n }\r\n // debugger;\r\n \r\n return tempElem; \r\n }\r\n // ----------------------------------------------------------------\r\n // TODO: Test\r\n // ----------------------------------------------------------------\r\n static getElementById (id : string) : any {\r\n let tempElem : any;\r\n // debugger;\r\n // get it from document-tree if available:\r\n // ---------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.document)) {\r\n this.document = EmitterSubjectService.getDocument(); \r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.document)) {\r\n tempElem = this.document.getElementById(id) as HTMLElement;\r\n\r\n // debugger;\r\n // Note: throws error on both: id, and #id:\r\n // ----------------------------------------\r\n //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n // tempElem = this._document.querySelector(id);\r\n //}\r\n //if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n // tempElem = this._document.querySelector('#' + id);\r\n //}\r\n }\r\n\r\n // get it from elemRef if still not found:\r\n // ---------------------------------------\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n // this.domUtilsElementRef = EmitterSubjectService.getElementRef();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.domUtilsElementRef) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.domUtilsElementRef.nativeElement)) {\r\n\r\n // // Note: throws error on id:\r\n // // -------------------------------\r\n // tempElem = this.domUtilsElementRef.nativeElement.querySelector(id);\r\n // }\r\n // }\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n // debugger;\r\n this.domUtilsElementRef = EmitterSubjectService.getElementRef();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.domUtilsElementRef) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.domUtilsElementRef.nativeElement)) {\r\n tempElem = this.domUtilsElementRef.nativeElement.querySelector('#' + id);\r\n }\r\n }\r\n }\r\n \r\n // debugger;\r\n return tempElem; \r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getHtmlElementById (id : string) : HTMLElement {\r\n let tElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n // debugger;\r\n tElem = document.getElementById(id) as HTMLElement;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n // debugger;\r\n return tElem;\r\n }\r\n else {\r\n tElem = document.getElementById('#' + id) as HTMLElement;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n // debugger;\r\n return tElem;\r\n }\r\n else {\r\n tElem = document.querySelector('#' + id) as HTMLElement;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n // debugger;\r\n return tElem;\r\n }\r\n else {\r\n tElem = document.querySelectorAll('#' + id)[ 0 ] as HTMLElement;\r\n }\r\n }\r\n }\r\n }\r\n // debugger;\r\n return tElem;\r\n }\r\n // ---------------------------------------------------------------\r\n static getHtmlElementByClass (cName : string) : HTMLElement {\r\n let tElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cName)) {\r\n // debugger;\r\n tElem = document.getElementsByClassName(cName)[ 0 ];\r\n }\r\n // debugger;\r\n return tElem;\r\n }\r\n // ---------------------------------------------------------------\r\n static getHtmlElementByClassForOffOn (offOn : OffOn, name : string) : OffOn {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(offOn) || !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(name)) {\r\n let cName = '';\r\n let tElem : any;\r\n let parts = name.split('.');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length > 1) {\r\n cName = parts[ 1 ];\r\n }\r\n else cName = name;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cName)) {\r\n tElem = document.getElementsByClassName(cName)[ 0 ];\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n // debugger;\r\n\r\n if (cName.indexOf(\"spanA\") !== -1) {\r\n // debugger;\r\n offOn.offOnAwayElem = tElem as HTMLElement;\r\n EmitterSubjectService.setOffOnElement(tElem as HTMLElement, 'spanAway');\r\n }\r\n else if (cName.indexOf(\"spanR\") !== -1) {\r\n // debugger;\r\n offOn.offOnRadioElem = tElem as HTMLElement;\r\n EmitterSubjectService.setOffOnElement(tElem as HTMLElement, 'spanRadio');\r\n }\r\n }\r\n }\r\n return offOn;\r\n }\r\n // ----------------------------------------------------------------------\r\n public static doesElementWithIdHasThisClass (elemId : string, className : string) : boolean {\r\n let elem = this.getElementById(elemId);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n const outsideClasses = elem.classList;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outsideClasses)) {\r\n if (outsideClasses.contains(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n elem.remove();\r\n }\r\n return false;\r\n }\r\n // ----------------------------------------------------------------------\r\n static doesElementHasThisClass (elem : any, className : string) : boolean {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n const outsideClasses = elem.classList;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outsideClasses)) {\r\n if (outsideClasses.contains(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------------\r\n public static removeClassForElementUsingElemId (elemId : string, className : string) : any {\r\n this.removeClass(elemId, className);\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public static removeClass (elemId :string, className : string) : any {\r\n let tempElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n tempElem = this.getElementById(elemId);\r\n }\r\n\r\n this.removeClassForElement(tempElem, className);\r\n tempElem.remove();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public static removeClassForElement (elem : HTMLElement, className : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n const outsideClasses = elem.classList;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outsideClasses)) {\r\n if (outsideClasses.contains(className)) {\r\n this.renderer?.removeClass(elem, className);\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public static addClass (elemId : string, className : string) : any {\r\n let tempElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n tempElem = document.getElementById(elemId);\r\n }\r\n\r\n this.addClassForElement(tempElem, className);\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n tempElem.remove();\r\n }\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public static addClassForElement (elem : HTMLElement, className : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elem)) {\r\n const outsideClasses = elem.classList;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outsideClasses)) {\r\n if (!outsideClasses.contains(className)) {\r\n this.renderer?.addClass(elem, className);\r\n }\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n public static toggleClass (elemId : string, className : string) : any {\r\n let tempElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n tempElem = this.getElementById(elemId);\r\n }\r\n\r\n tempElem = document.getElementById(elemId) as HTMLElement;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n this.toggleClassForElement(tempElem, className);\r\n }\r\n tempElem.remove();\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n public static toggleClassForElement (elemId : string, className : string) : any {\r\n let tempElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n tempElem = this.getElementById(elemId);\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n const outsideClasses = tempElem.classList;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outsideClasses)) {\r\n if (outsideClasses.contains(className)) {\r\n this.renderer?.removeClass(tempElem, className);\r\n }\r\n else {\r\n this.renderer?.addClass(tempElem, className);\r\n }\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n tempElem.remove();\r\n\t\t}\r\n return true;\r\n }\r\n // ---------------------------------------------------------------------------\r\n // Note: This method changes the style of the element that is outise of Angular\r\n // ---------------------------------------------------------------------------\r\n static getElementOutsideAngular (elemId : string) : any {\r\n let tElem : any;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(document)) {\r\n tElem = document.getElementById(elemId) as HTMLElement;\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n tElem = this.getAngularElementById(elemId) as HTMLElement;\r\n }\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n tElem = this.getHtmlElementById(elemId) as HTMLElement;\r\n }\r\n // debugger;\r\n return tElem;\r\n }\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.zone)) {\r\n this.zone.runOutsideAngular(() => {\r\n // debugger;\r\n tElem = document.getElementById(elemId) as HTMLElement;\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n tElem = this.getHtmlElementById(elemId) as HTMLElement;\r\n }\r\n // debugger;\r\n return tElem;\r\n });\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static addCssClassToElement (elemId : string, cName : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n const tempElem = document.getElementById(elemId) as HTMLElement;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cName)) {\r\n if (this.elementHasThisClass(tempElem, cName)) {\r\n this.renderer?.removeClass(tempElem, cName);\r\n }\r\n // debugger;\r\n this.renderer?.addClass(tempElem, cName);\r\n tempElem.focus();\r\n tempElem.remove();\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n static addFocusToElement (elemId : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n let tempElem = document.getElementById(elemId) as HTMLElement;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n tempElem.focus();\r\n tempElem.remove();\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static addRemoveClasses (count : number) : any {\r\n switch (count) {\r\n case 0:\r\n this.addFocusToElement('profileMsgId');\r\n this.removeCssClassFromElement('profileMsgId', 'messageBannerBigger');\r\n this.addCssClassToElement('profileMsgId', 'messageBannerBigger');\r\n return true;\r\n case 1:\r\n this.addFocusToElement('profileMsgId');\r\n this.removeCssClassFromElement('profileMsgId', 'messageBannerBigger');\r\n this.addCssClassToElement('profileMsgId', 'messageBannerSmaller');\r\n return true;\r\n case 2:\r\n this.addFocusToElement('profileMsgId');\r\n this.removeCssClassFromElement('profileMsgId', 'messageBannerSmaller');\r\n this.addCssClassToElement('profileMsgId', 'messageBanner');\r\n return true;\r\n }\r\n return false;\r\n }\r\n // --------------------------------------------------------------\r\n static elementHasThisClass (pElem : any, className : string) : boolean {\r\n let isClassPresent = false;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(className)) {\r\n if ($(this).hasClass(className)) {\r\n // debugger;\r\n isClassPresent = true;\r\n pElem.focus();\r\n } else if ($(pElem).hasClass(className)) {\r\n // debugger;\r\n isClassPresent = true;\r\n pElem.focus();\r\n }\r\n }\r\n // debugger;\r\n return isClassPresent;\r\n }\r\n // ---------------------------------------------------------------\r\n static removeCssClassFromElement (elemId : string, cName : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId)) {\r\n const tempElem = document.getElementById(elemId) as HTMLElement;\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(cName)) {\r\n if (this.elementHasThisClass(tempElem, cName)) {\r\n // debugger;\r\n this.renderer?.removeClass(tempElem, cName);\r\n tempElem.focus();\r\n tempElem.remove();\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n // ----------------------------------------------------------------------\r\n static getValuefromInputElement (id:any) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(id)) {\r\n var inputElem = this.getAngularElementById(id);\r\n return inputElem.value;\r\n }\r\n }\r\n // ----------------------------------------------------------------------\r\n public static unloadComponent (componentId : string) : any {\r\n // debugger;\r\n let tElem : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(componentId) /*&& !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( this.elementRef )*/) {\r\n // debugger;\r\n tElem = this.getElementById(componentId);\r\n \r\n \r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem.parentNode)) {\r\n // debugger;\r\n tElem.parentNode.removeChild(tElem); // Tested, works!\r\n }\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tElem)) {\r\n tElem.remove();\r\n }\r\n return true;\r\n }\r\n // ------------------------------------------------------------------------\r\n // Begin-of-Element-Rendering-Measurement-System:\r\n // ref: https://dev.to/herodevs/route-fully-rendered-detection-in-angular-2nh4\r\n // ------------------------------------------------------------------------\r\n public static detectNavigationStart (router : Router) : Observable {\r\n let navStartObservable = new Observable(observer => {\r\n let navStart$ = router.events.pipe(\r\n filter(event => event instanceof NavigationStart),\r\n startWith(null), // Start with something, because the app doesn't fire this on appload, only on subsequent route changes\r\n tap(event => /* Place code to track NavigationStart here */ EmitterSubjectService.emitElementFullyRendered(true)),\r\n ).subscribe();\r\n return navStart$;\r\n });\r\n return navStartObservable;\r\n }\r\n // ------------------------------------------------------------------------\r\n\r\n public static isElementRendered (router: Router, zone: NgZone) : boolean {\r\n // Once NavigationStart has fired, start checking regularly until there are\r\n // no more pending macrotasks in the zone\r\n\r\n // Have to run this outside of the zone, because the call to `interval`\r\n // is itself a macrotask. Running that `interval` inside the zone will\r\n // prevent the macrotasks from ever reaching zero. Running this outside\r\n // of Angular will not track this `interval` as a macrotask. IMPORTANT!!\r\n let isStateStable = false;\r\n let timer : any;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(zone) && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(router)) {\r\n debugger;\r\n zone.runOutsideAngular(() => {\r\n // Check very regularly to see if the pending macrotasks have all cleared\r\n timer = interval(50)\r\n .pipe(\r\n startWith(0), // So that we don't initially wait\r\n // To prevent a memory leak on two closely times route changes, take until the next nav start\r\n // takeUntil(this.navigationStart$),\r\n takeUntil(this.detectNavigationStart(router)),\r\n // Turn the interval number into the current state of the zone\r\n map(() => !zone.hasPendingMacrotasks),\r\n // Don't emit until the zone state actually flips from `false` to `true`\r\n distinctUntilChanged(),\r\n // Filter out unstable event. Only emit once the state is stable again\r\n filter(stateStable => stateStable === true),\r\n // Complete the observable after it emits the first result\r\n take(1),\r\n tap(stateStable => {\r\n // FULLY RENDERED!!!!\r\n // Add code here to report Fully Rendered\r\n debugger;\r\n isStateStable = true;\r\n // EmitterSubjectService.emitElementFullyRendered(true);\r\n })\r\n ).subscribe();\r\n\r\n });\r\n\r\n // clearTimeout(timer);\r\n }\r\n return isStateStable;\r\n }\r\n // ------------------------------------------------------------------------\r\n public static detectElementRendered2 (zone : NgZone) : Observable {\r\n debugger;\r\n let isStableObservable = new Observable(observer => {\r\n let stableSub : Subscription;\r\n let unstableSub : Subscription;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(zone)) {\r\n zone.runOutsideAngular(() => {\r\n stableSub = zone.onStable.subscribe(() => {\r\n NgZone.assertNotInAngularZone();\r\n if (!this.stable && !zone.hasPendingMacrotasks &&\r\n !zone.hasPendingMicrotasks) {\r\n this.stable = true;\r\n observer.next(true);\r\n }\r\n });\r\n });\r\n \r\n unstableSub = zone.onUnstable.subscribe(() => {\r\n NgZone.assertInAngularZone();\r\n if (this.stable) {\r\n this.stable = false;\r\n zone.runOutsideAngular(() => {\r\n observer.next(false);\r\n });\r\n }\r\n });\r\n }\r\n return () => {\r\n stableSub.unsubscribe();\r\n unstableSub.unsubscribe();\r\n debugger;\r\n isStableObservable;\r\n };\r\n });\r\n debugger;\r\n return isStableObservable;\r\n }\r\n /*\r\n * usage:\r\n * this.isStableObservable.pipe(debounceTime(1000)).subscribe(val => {\r\n console.log('completely stable');\r\n });\r\n */\r\n\r\n // -----------------------------------------------------------\r\n static nullPromise (data : any) : any {\r\n let timer = setTimeout(() => {\r\n // debugger;\r\n clearTimeout(timer);\r\n return data;\r\n }, 50);\r\n clearTimeout(timer);\r\n }\r\n // -----------------------------------------------------------\r\n static nullObservable () : Observable {\r\n return new Observable(observer => {\r\n observer.next(null);\r\n observer.complete();\r\n });\r\n }\r\n // ------------------------------------------------------------------------\r\n}\r\n","\r\nimport { ChangeDetectorRef, ElementRef, Injectable, OnDestroy, Output, ViewContainerRef } from '@angular/core';\r\nimport { Dictionary } from \"dictionaryjs\"; // ref: https://github.com/phanxgames/dictionaryjs\r\nimport { AsyncSubject, Observable, Subject, Subscription } from 'rxjs';\r\nimport { LogRegModel } from '../../../models/account/logReg.model';\r\nimport { LoginSuccess } from '../../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../../models/boxNonce/boxNonceEntity.model';\r\nimport { BrdCrmKvAny } from '../../../models/breadcrum/brdcrmKvAny.model';\r\nimport { PagerBreadcrum } from '../../../models/breadcrum/pagerBreadcrum.model';\r\nimport { Chat } from '../../../models/chat/chat.model';\r\nimport { ChatActivity } from '../../../models/chat/chatActivity.model';\r\nimport { ActionId } from '../../../models/common/actionId.model';\r\nimport { AppFeature } from '../../../models/common/appFeture.model';\r\nimport { Bool } from '../../../models/common/bool.model';\r\nimport { Content } from '../../../models/common/content.model';\r\nimport { EmitCheckboxResult } from '../../../models/common/emitCheckboxResult.model';\r\nimport { EmitDatePickerResult } from '../../../models/common/emitDatePicResult.model';\r\nimport { EmitDropDownResult } from '../../../models/common/emitDropDownResult.model';\r\nimport { EmitOffOnResult } from '../../../models/common/emitOffOnResult.model';\r\nimport { EmitRadioboxResult } from '../../../models/common/emitRadioboxResult.model';\r\nimport { Heartbeat } from '../../../models/common/heartbeat.model';\r\nimport { LogError } from '../../../models/common/logError.model';\r\nimport { ModalModel } from '../../../models/common/modalModel.model';\r\nimport { ModuleComponentLoader } from '../../../models/common/moduleComponentLoader.model';\r\nimport { Photo } from '../../../models/common/photo.model';\r\nimport { PhotoMgmtAction } from '../../../models/common/photoMgmtAction.model';\r\nimport { SpinnerModel } from '../../../models/common/spinnerModel.model';\r\nimport { UserAndPageTitle } from '../../../models/common/userAndPageTitle.model';\r\nimport { BoxEmailBn } from '../../../models/communication/boxEmailBn.model';\r\nimport { CommunicationActivity } from '../../../models/communication/communicationActivity.model';\r\nimport { Communicator } from '../../../models/communication/communicator.model';\r\nimport { ENoteTile } from '../../../models/communication/eNoteTile.model';\r\nimport { MailBox } from '../../../models/communication/mailBox.model';\r\nimport { SenderReceiverEmails } from '../../../models/communication/senderReceiverEmails.model';\r\nimport { NaclPairClient } from '../../../models/crypto/naclPairClient.model';\r\nimport { Salt } from '../../../models/crypto/salt.model';\r\nimport { IndexedDbData } from '../../../models/data/indexedDbData.model';\r\nimport { RemoteDataModel } from '../../../models/data/remoteDataModel.model';\r\nimport { User } from '../../../models/data/user.model';\r\nimport { ProfileTileArrEmitterModel } from '../../../models/emitter/profileTileArrEmitterModel';\r\nimport { Group } from '../../../models/group/group.model';\r\nimport { KeyValueResult } from '../../../models/keyValue/keyValueResult.model';\r\nimport { KV } from '../../../models/keyValue/kv.model';\r\nimport { KvAny } from '../../../models/keyValue/kvAny.model';\r\nimport { KvMemberActivityGlyph } from '../../../models/keyValue/kvMemberActivityGlyph.model';\r\nimport { KvPhoto } from '../../../models/keyValue/kvPhoto.model';\r\nimport { Member } from '../../../models/member/member.model';\r\nimport { MemberActivity } from '../../../models/member/memberActivity.model';\r\nimport { MemberViewMgmtModel } from '../../../models/member/memberViewMgmtModel.model';\r\nimport { CenterCoordinates } from '../../../models/misc/centerCoordinates.model';\r\nimport { OffOn } from '../../../models/offOn/offOn.model';\r\nimport { BasicPagerModel } from '../../../models/pagination/basicPagerModel.model';\r\nimport { Pager } from '../../../models/pagination/pager.model';\r\nimport { PagerChat } from '../../../models/pagination/pagerChat.model';\r\nimport { PagerPhotoMgmt } from '../../../models/pagination/pagerPhotoMgmt.model';\r\nimport { Preference } from '../../../models/profile/preference.model';\r\nimport { Profile } from '../../../models/profile/profile.model';\r\nimport { ProfileImage } from '../../../models/profile/profileImage.model';\r\nimport { ProfileInfo } from '../../../models/profile/profileInfo.model';\r\nimport { ProfilePics } from '../../../models/profile/profilePics.model';\r\nimport { ProfileTile } from '../../../models/profile/profileTile.model';\r\nimport { AmountModel } from '../../../models/sales/amountModel.model';\r\nimport { PayPalOrder } from '../../../models/sales/payPalOrder';\r\nimport { Upgrade } from '../../../models/upgrade/upgrade.model';\r\nimport { HttpService } from '../../coreServiceService/httpService.service';\r\nimport { DbDexieToDictionaryService } from '../../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from '../frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { HttpEvent } from '@angular/common/http';\r\n\r\n@Injectable( { providedIn: 'root' } )\r\n\r\nexport abstract class EmitterSubjectService implements OnDestroy\r\n{\r\n \r\n public static chabi : 'KA8j/zeXyTPXt0+UTogm1tQk2r0+mUQ9G34PBtxYnHA=';\r\n public static chabiGopon : 'dJKh9zxbQquNHzKCIkyR11h9svmQBzazOcAuqmWPb/A=';\r\n static talaChabi : any;\r\n // -------------------------------------------\r\n @Output() static actedGlyphNamesEmitter : Subject = new Subject(); //\r\n @Output() static actedGlyphEmitter : Subject = new Subject(); //\r\n @Output() static actedUnlockAndBlockGlyphNamesEmitter : Subject = new Subject();\r\n @Output() static actionIdEmitter: Subject = new Subject();\r\n @Output() static activatedRouteEmitter : Subject = new Subject();\r\n @Output() static addressEmitter : Subject = new Subject();\r\n @Output() static amountModelEmitter : Subject = new Subject();\r\n @Output() static articleRejectedEmitter : Subject = new Subject(); // \r\n @Output() static isAppFeaturePageEmitter : Subject = new Subject();\r\n @Output() static appFeatureArrEmitter : Subject = new Subject();\r\n // to determine the appropriate module and component to load after app initializes\r\n @Output() static appInitUrlEmitter: Subject = new Subject();\r\n @Output() static articleDownloadFileNameEmitter: Subject = new Subject();\r\n @Output() static articleSubjectsEmitter : Subject = new Subject(); // \r\n @Output() static avatarProfileTileEmitter : Subject = new Subject();\r\n @Output() static backgroundProcessMethodDataForComponentEmitter : Subject = new Subject(); // bacgroundProcessMethodEmitter\r\n @Output() static backgroundProcessMethodDataForServiceEmitter : Subject = new Subject();\r\n @Output() static basicPagerEmitter : Subject = new Subject();\r\n @Output() static batchOfProfileTileIdsEmitter : Subject = new Subject();\r\n @Output() static blackListCredentialArrEmitter : Subject = new Subject();\r\n @Output() static boxEmailBnEmitter: Subject = new Subject();\r\n @Output() static boxNonceEmitter: Subject = new Subject();\r\n @Output() static breadcrumRingEmitter : Subject = new Subject();\r\n @Output() static catchAllBackgroundImageEmitter : Subject = new Subject();\r\n @Output() static centerCoordinatesEmitter : Subject = new Subject();\r\n @Output() static chatActivityHistoryEmitter : Subject = new Subject();\r\n @Output() static chatMessageEmitter : Subject = new Subject();\r\n @Output() static chatModelToSetupComponentEmitter : Subject = new Subject();\r\n @Output() static checkLocalStorageForLoginSuccessEmitter : Subject = new Subject();\r\n @Output() static checkboxResultEmitter : Subject = new Subject();\r\n @Output() static checkOffOnStatusEmitter : Subject = new Subject();\r\n @Output() static checkOffOnStatusFromProfileTileEmitter : Subject = new Subject();\r\n @Output() static clearCreditCardDataEmitter : Subject = new Subject();\r\n @Output() static clearGlyphiconMenuEmitter: Subject = new Subject();\r\n @Output() static clearMembersTilesEmitter : Subject = new Subject();\r\n @Output() static clearMessageEmitter : Subject = new Subject();\r\n @Output() static clearPageTitleEmitter : Subject = new Subject();\r\n @Output() static clearPagerPhotoNavDataEmitter : Subject = new Subject();\r\n @Output() static clearProfileImagesEmitter : Subject = new Subject();\r\n @Output() static clearUserDataEmitter : Subject = new Subject();\r\n @Output() static channelStreamMessageEmitter : Subject = new Subject();\r\n @Output() static chatImageUploadDataEmitter : Subject = new Subject(); \r\n @Output() static chatModelEmitter : Subject = new Subject(); \r\n @Output() static closeSidebarEmitter : Subject = new Subject();\r\n @Output() static commActivityBoxNonceEmitter : Subject = new Subject(); \r\n @Output() static communicationActivityEmitter : Subject = new Subject();\r\n @Output() static commTypeEmitter: Subject = new Subject();\r\n @Output() static communicatorEmitter: Subject = new Subject();\r\n @Output() static connectionTokenEmitter : Subject = new Subject();\r\n @Output() static computeDistanceEmitter : Subject = new Subject();\r\n @Output() static conversationEmitter : Subject = new Subject();\r\n @Output() static createDictionaryFromDbDixieEmitter : Subject = new Subject();\r\n @Output() static currentFocusEmitter: Subject = new Subject();\r\n @Output() static currentPageEmitter : Subject = new Subject(); // \r\n @Output() static currentPageOnGlyphiconChangeEmitter : Subject = new Subject();\r\n \r\n @Output() static currentPageNumEmitter : Subject = new Subject();\r\n @Output() static currentMemActGlyphForViewMemberEmitter : Subject = new Subject();\r\n @Output() static currentMemActGlyphForPhotoMgmtEmitter : Subject = new Subject();\r\n /*\r\n * @Output() static nextPageKvEmitter: Subject = new Subject();\r\n * @Output() static previousPageKvEmitter: Subject = new Subject();\r\n */\r\n @Output() static datePickerEmitter : Subject = new Subject();\r\n @Output() static dictionariesUpdatedEmitter : Subject = new Subject();\r\n @Output() static displayDefaultGlyphiconMenuEmitter : Subject = new Subject(); \r\n @Output() static displayDifferentMemberViewEmitter : Subject = new Subject();\r\n @Output() static displayViewMemberGlyphiconMenuEmitter : Subject = new Subject(); // \r\n @Output() static displayViewMemberGlyphiconMenuForSitUserEmitter : Subject = new Subject(); \r\n @Output() static displayPhotoMgmtGlyphiconMenuEmitter : Subject = new Subject();\r\n @Output() static displayGlyphiconMenuEmitter : Subject = new Subject();\r\n // @Output() static displayGlyphMenuForKvPhotoMgmtPageEmitter: Subject = new Subject();\r\n @Output() static displayProfileViewEmitter : Subject = new Subject(); \r\n @Output() static displayPrimaryImageEmitter : Subject = new Subject(); \r\n @Output() static displayBgiOutsideAngularEmitter : Subject = new Subject();\r\n @Output() static displayMyPagerVKvPhotoNavEmitter : Subject = new Subject();\r\n @Output() static displayPagerVKvPhotoNavEmitter : Subject = new Subject();\r\n @Output() static displayUserPicsFromServerEmitter : Subject = new Subject();\r\n @Output() static distanceEmitter : Subject = new Subject();\r\n @Output() static dobEmitter : Subject = new Subject();\r\n @Output() static dropDownResultEmitter : Subject = new Subject();\r\n @Output() static editImageEmitter: Subject = new Subject();\r\n @Output() static editParagraphEmitter : Subject = new Subject();\r\n @Output() static elementFullyRenderedEmitter : Subject = new Subject();\r\n @Output() static emailTileEmitter: Subject = new Subject();\r\n @Output() static enoteTileEmitter: Subject = new Subject();\r\n @Output() static enoteBoxNonceEmitter: Subject = new Subject();\r\n // @Output() static errorLogEmitter: Subject = new Subject();\r\n @Output() static executeProfileInfoTasksEmitter : Subject = new Subject();\r\n @Output() static exitPageEmitter : Subject = new Subject();\r\n @Output() static facilitatorAccessTokenEmitter : Subject = new Subject();\r\n // @Output() static fetchSitUserEmitter: Subject = new Subject();\r\n @Output() static fileEmitter: Subject = new Subject();\r\n @Output() static fileChunkCountEmitter: Subject = new Subject();\r\n @Output() static filesEmitter: Subject = new Subject();\r\n @Output() static fileImageEmitter: Subject = new Subject();\r\n @Output() static fileImagesEmitter: Subject = new Subject();\r\n @Output() static fileNameEmitter : Subject = new Subject();\r\n @Output() static fireMcLoaderRouteEmitter : Subject = new Subject();\r\n @Output() static formDataEmitter : Subject = new Subject();\r\n @Output() static gestureDivIdEmitter: Subject = new Subject();\r\n @Output() static gestureEmitter: Subject = new Subject();\r\n @Output() static getKeysEmitter : Subject = new Subject(); // to get the NaclPair vai httpService\r\n /*\r\n * @Output() static groupChatMessageEmitter: Subject = new Subject();\r\n * @Output() static groupConversationEmitter: Subject = new Subject();\r\n */\r\n @Output() static groupEmitter: Subject = new Subject();\r\n @Output() static groupChatMessageEmitter: Subject = new Subject();\r\n @Output() static groupConversationEmitter: Subject = new Subject();\r\n\r\n @Output() static heartbeatEmitter: Subject = new Subject();\r\n @Output() static heightWidthEmitter : Subject = new Subject();\r\n @Output() static httpEventEmitter : Subject> = new Subject();\r\n @Output() static imageEmitter: Subject = new Subject();\r\n @Output() static imageFileEmitter: Subject = new Subject();\r\n @Output() static indexDbBoxNonceDataEmitter: Subject = new Subject();\r\n @Output() static indexDbChatHistoryEmitter: Subject = new Subject();\r\n @Output() static indexDbChatHistoryIdsEmitter: Subject = new Subject();\r\n @Output() static indexDbDataEmitter: Subject = new Subject();\r\n @Output() static indexDbDataFoundWithIndexEmitter: Subject = new Subject();\r\n @Output() static indexDbDataFoundWithKeyEmitter: Subject = new Subject();\r\n @Output() static indexDbDefaultPicsEmitter: Subject = new Subject();\r\n @Output() static indexDbEmailTileIdsEmitter: Subject = new Subject();\r\n @Output() static indexDbEmailTilesEmitter: Subject = new Subject();\r\n @Output() static indexDbEnoteTileIdsEmitter: Subject = new Subject();\r\n @Output() static indexDbEnoteTilesEmitter: Subject = new Subject();\r\n @Output() static indexDbLoginSuccessEmitter: Subject = new Subject();\r\n @Output() static indexDbMemberActivitiesEmitter: Subject = new Subject();\r\n @Output() static indexDbMyErrorLogsEmitter: Subject = new Subject();\r\n @Output() static indexDbMyMemberActivitiesEmitter: Subject = new Subject();\r\n @Output() static indexDbProfileImageDictionaryEmitter: Subject> = new Subject();\r\n @Output() static indexDbProfilePicsEmitter: Subject = new Subject();\r\n @Output() static indexDbPreferenceEmitter: Subject = new Subject();\r\n @Output() static indexDbProfileInfoEmitter: Subject = new Subject();\r\n @Output() static indexDbProfileTileIdsEmitter: Subject = new Subject();\r\n @Output() static indexDbProfileTilesEmitter: Subject = new Subject();\r\n @Output() static indexDbSaveSuccessfulEmitter : Subject = new Subject();\r\n @Output() static indexDbNgxSaveSuccessfulEmitter : Subject = new Subject();\r\n @Output() static indexDbSaveStoreEmitter : Subject = new Subject();\r\n @Output() static indexDbSitUserEmitter: Subject = new Subject();\r\n @Output() static indexDbSitUsersEmitter: Subject = new Subject();\r\n @Output() static indexDbTempFilesEmitter: Subject = new Subject();\r\n @Output() static indexDbUserEmitter: Subject = new Subject();\r\n @Output() static indexDbUserPhotoIdsEmitter: Subject = new Subject();\r\n @Output() static indexDbSitUserBoxNonceDataEmitter: Subject = new Subject();\r\n @Output() static indexDbYourMemberActivitiesEmitter: Subject = new Subject();\r\n @Output() static initModalDialogueComponentEmitter: Subject = new Subject();\r\n // to control spinner; isBusy==true=>start-spinnner; isBusy==false=>stop-spinner\r\n @Output() static isAddressCompleteEmitter : Subject = new Subject();\r\n @Output() static isBrowsingPicEmitter : Subject = new Subject(); //\r\n @Output() static isCameraVisibleEmitter : Subject = new Subject(); // for photoMgmt-camera-control\r\n @Output() static isCameraGlyphVisibleEmitter : Subject = new Subject(); // for photoMgmt-camera-control\r\n @Output() static isCameraClosedBoolEmitter : Subject = new Subject(); // for memberView-camera-control\r\n @Output() static isConnectionEstablishedEmitter : Subject = new Subject();\r\n @Output() static isCreditCardCompleteEmitter : Subject = new Subject();\r\n @Output() static isEditProfileEmitter : Subject = new Subject(); \r\n @Output() static isImageUploadFormVisibleEmitter : Subject = new Subject();\r\n @Output() static isHomeEmitter : Subject = new Subject();\r\n @Output() static isLoginSuccessEmitter : Subject = new Subject();\r\n @Output() static isMobileEmitter: Subject = new Subject();\r\n @Output() static isModalEmitter : Subject = new Subject();\r\n @Output() static isMyStuffOpenEmitter : Subject = new Subject();\r\n @Output() static isMyProfileEmitter : Subject = new Subject();\r\n @Output() static isModalVisibleEmitter : Subject = new Subject();\r\n @Output() static isNewPhotoUploadedEmitter : Subject = new Subject();\r\n @Output() static isOpenEmitter : Subject = new Subject();\r\n @Output() static isPhotoMgmtEmitter: Subject = new Subject();\r\n @Output() static isReplyEmitter: Subject = new Subject();\r\n @Output() static isShowPhotoUploadEmitter : Subject = new Subject();\r\n @Output() static isSidebarOpenEmitter : Subject = new Subject();\r\n @Output() static isSignupModalEmitter : Subject = new Subject(); \r\n @Output() static isToggleCameraEmitter : Subject = new Subject();\r\n @Output() static isToggleFileUploadEmitter : Subject = new Subject();\r\n @Output() static isUnlockedEmitter: Subject = new Subject();\r\n @Output() static isViewMemberEmitter: Subject = new Subject();\r\n @Output() static isVsScrollEmitter: Subject = new Subject();\r\n @Output() static isWaitingOnCurrStateOfUserEmitter: Subject = new Subject();\r\n @Output() static keyValueResultEmitter : Subject = new Subject(); \r\n @Output() static kvMemberActivityGlyphEmitter : Subject = new Subject();\r\n @Output() static loadActivityComponentEmitter: Subject = new Subject();\r\n @Output() static loadAppComponentEmitter: Subject = new Subject();\r\n @Output() static loadChatComponentEmitter: Subject = new Subject();\r\n @Output() static loadCheckboxRadioComponentEmitter: Subject = new Subject();\r\n @Output() static loadChildrenEmitter: Subject = new Subject();\r\n @Output() static loadCommunicationComponentEmitter: Subject = new Subject();\r\n @Output() static loadGestureComponentEmitter: Subject = new Subject();\r\n @Output() static loadKeyValueComponentEmitter: Subject = new Subject();\r\n @Output() static loadLandingPageEmitter: Subject = new Subject();\r\n @Output() static loadLogregComponentEmitter: Subject = new Subject();\r\n @Output() static loadMasterComponentEmitter: Subject = new Subject();\r\n @Output() static loadMemberComponentEmitter: Subject = new Subject();\r\n @Output() static loadModalComponentEmitter: Subject = new Subject(); // aka mcLoader\r\n @Output() static loadModuleEmitter: Subject = new Subject();\r\n @Output() static loadProfileComponentEmitter : Subject = new Subject(); \r\n // @Output() static loadRemoteDataInBackgroundEmitter : Subject = new Subject();\r\n @Output() static loadSharedComponentEmitter: Subject = new Subject();\r\n @Output() static loadSlaveComponentEmitter: Subject = new Subject();\r\n @Output() static loadSpinnerComponentEmitter: Subject = new Subject();\r\n @Output() static loadStaffComponentEmitter: Subject = new Subject();\r\n @Output() static localStorageLoginSuccessEmitter: Subject = new Subject();\r\n @Output() static loginSuccessEmitter : Subject = new Subject();\r\n @Output() static logRegModelEmitter : Subject = new Subject();\r\n @Output() static logoutEmitter: Subject = new Subject();\r\n @Output() static mailBoxEmitter: Subject = new Subject();\r\n @Output() static mainTopCssEmitter: Subject = new Subject();\r\n @Output() static masterErrorLogEmitter: Subject = new Subject();\r\n @Output() static mcLoaderEmitter : Subject = new Subject();\r\n @Output() static mcLoaderToNavigateEmitter : Subject = new Subject()\r\n // @Output() static mcLoaderObservableEmitter : Subject> = new Subject();\r\n @Output() static membersEmitter: Subject = new Subject();\r\n @Output() static memberActivityEmitter : Subject = new Subject();\r\n @Output() static communicationActivitiesEmitter : Subject = new Subject();\r\n @Output() static memberViewMgmtModelEmitter : Subject = new Subject();\r\n @Output() static myErrorLogEmitter: Subject = new Subject();\r\n @Output() static myActivityArrEmitter : Subject = new Subject();\r\n // @Output() static myEmailBoxNonceEmitter : Subject = new Subject();\r\n @Output() static memberPhotoEmitter: Subject = new Subject();\r\n @Output() static messageEmitter: Subject = new Subject();\r\n @Output() static modelEmitter: Subject = new Subject();\r\n @Output() static myConversationsEmitter: Subject = new Subject();\r\n @Output() static myGroupsEmitter: Subject = new Subject();\r\n @Output() static naclEmitter: Subject = new Subject();\r\n @Output() static navbarActionTypeEmitter : Subject = new Subject();\r\n @Output() static notificationActivityEmitter : Subject = new Subject();\r\n /*\r\n * @Output() static profileAuthorEmitter: Subject = new Subject();\r\n * @Output() static signedInAuthorEmitter: Subject = new Subject();\r\n * @Output() static totalPaidEmitter: Subject = new Subject();\r\n * @Output() static myConversationsEmitter: Subject = new Subject();\r\n * @Output() static myGroupsEmitter: Subject = new Subject();\r\n */\r\n\r\n @Output() static offOnEmitter : Subject = new Subject();\r\n @Output() static offOnResultEmitter: Subject = new Subject();\r\n @Output() static offOnStatusChangeEmitter : Subject = new Subject();\r\n @Output() static onKvPhotoSelectionChangeEmitter : Subject = new Subject();\r\n @Output() static openModalEmitter : Subject = new Subject();\r\n @Output() static pagedProfileImagesEmitter: Subject = new Subject();\r\n @Output() static pagerEmitter : Subject = new Subject();\r\n @Output() static pagerBreadcrumEmitter : Subject = new Subject();\r\n @Output() static pagerBreadcrumDirectionEmitter : Subject = new Subject(); // for gesture based page-nagivation via nav-arrows\r\n @Output() static pagerChatEmitter : Subject = new Subject();\r\n @Output() static pagedChatsEmitter : Subject = new Subject();\r\n @Output() static paragraphEmitter : Subject = new Subject(); // \r\n @Output() static pageSizeEmitter : Subject = new Subject();\r\n @Output() static pagerPhotoMgmtEmitter : Subject = new Subject();\r\n @Output() static pagerVKvPhotoNavEmitter : Subject = new Subject();\r\n @Output() static photoBnEmitter : Subject = new Subject();\r\n @Output() static photoLockUnLockEmitter: Subject = new Subject();\r\n @Output() static photoMgmtMenuObservableEmitter: Subject> = new Subject();\r\n @Output() static photoMgmtActionEmitter : Subject = new Subject(); // \r\n @Output() static photoMgmtPrimaryActionEmitter : Subject = new Subject();\r\n @Output() static preferenceKvAnyArrEmitter : Subject = new Subject();\r\n @Output() static profileEmitter : Subject = new Subject();\r\n @Output() static profileContentKvAnyArrEmitter : Subject = new Subject();\r\n @Output() static profileImageEmitter: Subject = new Subject(); // Need to send the image in ProfileTile\r\n @Output() static profileImagesEmitter : Subject = new Subject();\r\n @Output() static profileImageArrEmitter: Subject = new Subject();\r\n @Output() static profileImageKvArrEmitter : Subject = new Subject();\r\n @Output() static profileInfoEmitter : Subject = new Subject();\r\n @Output() static profileInfoKvAnyArrEmitter : Subject = new Subject();\r\n @Output() static profileInfoViewEmitter : Subject = new Subject();\r\n @Output() static profileTileEmitter: Subject = new Subject();\r\n @Output() static profileTileCompleteEmitter: Subject = new Subject();\r\n @Output() static profileTilesArrEmitter: Subject = new Subject();\r\n @Output() static profileTilesArrayUpdatedEmitter: Subject = new Subject();\r\n @Output() static profilePicsEmitter: Subject = new Subject();\r\n @Output() static radioboxResultEmitter: Subject = new Subject();\r\n @Output() static receiverSitUserIdEmitter: Subject = new Subject();\r\n @Output() static refreshPageEmitter : Subject = new Subject(); // \r\n @Output() static refreshMemberTileEmitter : Subject = new Subject();\r\n @Output() static removeComponentEmitter: Subject = new Subject();\r\n @Output() static resetDbgiEmitter: Subject = new Subject();\r\n @Output() static resetPickedDateEmitter: Subject = new Subject();\r\n @Output() static resetPasswordCodeEmitter : Subject = new Subject();\r\n @Output() static resetSaltShakerEmitter : Subject = new Subject();\r\n @Output() static returnUrlEmitter : Subject = new Subject();\r\n @Output() static runBackgroundProcessMethodEmitter : Subject = new Subject();\r\n @Output() static runBiasModuleComponentNgAfterViewInitEmitter : Subject = new Subject();\r\n @Output() static runGetEnumsFromServerEmitter : Subject = new Subject();\r\n @Output() static runMemberTileAfterViewInitEmitter: Subject = new Subject();\r\n @Output() static runNgAfterViewInitEmitter : Subject = new AsyncSubject(); //\r\n @Output() static runOffOnComponentNgAfterViewInitEmitter : Subject = new Subject(); //\r\n @Output() static saveSitUserToIndexedDbAndDictionaryEmitter : Subject = new Subject();\r\n @Output() static selectedProfileTileEmitter : Subject = new Subject();\r\n @Output() static senderReceiverEmailsEmitter : Subject = new Subject();\r\n @Output() static setBreadcrumPageEmitter : Subject = new Subject(); // to be used by any cancel() button-action.\r\n @Output() static setBreadcrumForPageSwitchEmitter : Subject = new Subject(); \r\n @Output() static setPageEmitter: Subject = new Subject();\r\n @Output() static setPhotoMgmtPageEmitter: Subject = new Subject();\r\n @Output() static setPhotoMgmtPageGlyphEmitter : Subject = new Subject();\r\n @Output() static setMemberViewPageEmitter : Subject = new Subject();\r\n @Output() static setMemberViewGlyphMenuEmitter : Subject = new Subject(); \r\n @Output() static setPhotoNavItemEmitter : Subject = new Subject();\r\n @Output() static setProfilePicsPageEmitter : Subject = new Subject();\r\n @Output() static setSignedInUserBackgroundImageEmitter : Subject = new Subject();\r\n @Output() static signedInUserEmitter : Subject = new Subject(); // emitSaveSitUserToIndexedDbAndDictionary\r\n @Output() static sitUserEmitter : Subject = new Subject(); // emitSaveSitUserToIndexedDbAndDictionary\r\n @Output() static sitUserBoxNonceEmitter : Subject = new Subject();\r\n @Output() static staffActionTypeEmitter : Subject = new Subject();\r\n // @Output() static startBiasAnimationEmitter : Subject = new Subject();\r\n @Output() static showSpinnerEmitter : Subject = new Subject();\r\n @Output() static hideSpinnerEmitter : Subject = new Subject();\r\n @Output() static streamMessageEmitter: Subject = new Subject();\r\n @Output() static submitArticleSuccessfulEmitter: Subject = new Subject();\r\n @Output() static tempFileEmitter: Subject = new Subject();\r\n @Output() static theirActivityArrEmitter: Subject = new Subject();\r\n @Output() static toggleAccordionEmitter : Subject = new Subject();\r\n @Output() static toggleCameraGlyphEmitter : Subject = new Subject();\r\n @Output() static toggleFaderAnimEmitter : Subject = new Subject();\r\n @Output() static toggleIsCancelZipInstructionEmitter: Subject = new Subject();\r\n @Output() static toggleThisEmitter: Subject = new Subject();\r\n @Output() static toggleIsMobileEmitter: Subject = new Subject();\r\n @Output() static toggleIsSendFileEmitter: Subject = new Subject();\r\n @Output() static toggleIsUploadEmitter: Subject = new Subject();\r\n @Output() static toggleIsWritePadEmitter: Subject = new Subject();\r\n @Output() static toggleModalDialogEmitter : Subject = new Subject();\r\n @Output() static toSetMemberViewMgmtModelEmitter : Subject = new Subject();\r\n @Output() static totalPhotoCountEmitter : Subject = new Subject();\r\n @Output() static updateBrdCrumRingEmitter : Subject = new Subject(); // \r\n @Output() static updateDistanceAndProfileNameAndOffOnEmitter : Subject = new Subject();\r\n @Output() static updateKvPhotoOnUserActionEmitter : Subject = new Subject();\r\n @Output() static updatePrimaryImageEmitter : Subject = new Subject();\r\n @Output() static upgradeEmitter : Subject = new Subject();\r\n @Output() static upgradedEmitter : Subject = new Subject();\r\n @Output() static uploadedKvPhotoEmitter : Subject = new Subject();\r\n @Output() static uploadedProfilePicsEmitter: Subject = new Subject();\r\n @Output() static uploadedPicsBoxNonceEmitter: Subject = new Subject();\r\n @Output() static userAndPageTitleEmitter : Subject = new Subject();\r\n @Output() static viewMemberEmitter : Subject = new Subject();\r\n @Output() static whenScrollEndsEmitter: Subject = new Subject();\r\n @Output() static yourLoginSuccessEmitter : Subject = new Subject();\r\n @Output() static yourCommunicatorEmitter : Subject = new Subject();\r\n // @Output() static treeNodeEmitter: Subject = new Subject();\r\n\r\n /*\r\n * private loginSuccessSource = new Subject();\r\n * loginSuccess$ = this.loginSuccessSource.asObservable();\r\n */\r\n\r\n static anchor: ViewContainerRef; // ref:https:// medium.com/angular-in-depth/lazy-loading-angular-modules-with-ivy-92c3a890eae1\r\n static actionId: ActionId = new ActionId();\r\n static activatedComponentDictionary : Dictionary = new Dictionary();\r\n static activatedRoute : any;\r\n static appFeatureArr : AppFeature[];\r\n static articleDownloadFileName = '';\r\n // static articleIndex: Article[] = [];\r\n static articleSubjects: string[] = [];\r\n static articlePagedParagraphs: Content[] = [];\r\n // static appModuleFactory: any;\r\n static avatarProfileTile : ProfileTile = new ProfileTile();\r\n static basicPagerModel : BasicPagerModel = new BasicPagerModel();\r\n static breadcrumRing : ModuleComponentLoader[] = [];\r\n // ------------------------------------------------------------------------------------------------------------\r\n // calledSitUserArr array is used for checking if a sitUserId is used to fetch the respective sitUser or not\r\n // sitUserService checks for the presence of a SitUser in the SitUserDictionary.\r\n // fetchSitUser() method checks calledSitUSerArr to see if a sitUserId is used to make the fetchCall or not.\r\n // fetchSitUSer will call only if a particular sitUserId is abnsent in the\r\n // calledSitUserArr in order to prevent multiple calls to get the sitUser data\r\n // ------------------------------------------------------------------------------------------------------------\r\n static calledSitUserArr : number[] = []; \r\n // ------------------------------------------------------------------------------------------------------------\r\n static cdr : any; // plaeholder for 'ChangeDetectorRef'\r\n static chatHistoryArr : ChatActivity[] = [];\r\n static chatMessage : Chat = new Chat();\r\n static chatMap : Map = new Map();\r\n static chatModel : Chat = new Chat();\r\n /*\r\n * static chatModuleFactory: any;\r\n * static communicationModuleFactory: any;\r\n */\r\n static connectionTokenArr: string[] = [];\r\n static connectionToken = '';\r\n static conversation: Chat[] = [];\r\n static currentPage : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n static currentPageGlyph : KvMemberActivityGlyph = new KvMemberActivityGlyph(); \r\n static currentMemActGlyphForPhotoMgmt : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n static currentMemActGlyphForViewMember : KvMemberActivityGlyph = new KvMemberActivityGlyph();\r\n static currentPageNo = 1;\r\n static currentKvPhoto: KvPhoto = new KvPhoto();\r\n static currentPhoto: Photo = new Photo();\r\n static currentBrdcrmPage : BrdCrmKvAny = new BrdCrmKvAny();\r\n static dbDexieToDictionaryService : DbDexieToDictionaryService;\r\n static deviceInfo : any;\r\n static document : Document;\r\n static window : Window;\r\n static elementRef : ElementRef;\r\n static offOnAwayElementRef : ElementRef | HTMLElement;\r\n static offOnRadioElementRef : ElementRef | HTMLElement;\r\n static enums: any;\r\n static environment = 'Development';\r\n static eNoteTile: ENoteTile = new ENoteTile();\r\n\r\n // static getSitUser : GetSitUser = new GetSitUser();\r\n static glyphKvArr : KvMemberActivityGlyph[] = [];\r\n \r\n // static groupChatMessage: Chat = new Chat();\r\n // static groupConversation: Chat[] = [];\r\n static group: Group = new Group();\r\n static heartbeat: Heartbeat = new Heartbeat();\r\n static hostName = '';\r\n static httpService : HttpService;\r\n static hubConnection : signalR.HubConnection;\r\n static isAppFeaturePage = false;\r\n static isDevEnvironment = false;\r\n static isEditProfile = false;\r\n static isHome = false;\r\n static isMobilevar = false;\r\n static isTablet = false;\r\n static isDesktop = false;\r\n static isOnLine = false;\r\n static isModal = false;\r\n static isModalVisible = false;\r\n static isMyProfile = false;\r\n static isInizializationComplete = true;\r\n static isLoggedOutByUser = false;\r\n static isNewPhotoUploaded = false;\r\n static isPhotoMgmt = false;\r\n static isShowPhotoUploadUi : Bool = new Bool();\r\n static isProfileTileDictionaryCreatedFromIndexDb = false;\r\n static isToggleCamera = false;\r\n static isUnlocked = false;\r\n static isViewMember = false;\r\n static routerKvAny = new BrdCrmKvAny();\r\n static kvGlyphArrForPhotoMgmt : KvMemberActivityGlyph[] = []; // TODO: keep this and delete the duplicate with photoMgmtGlyphMenuKvArr\r\n static kvGlyphArrForViewMember : KvMemberActivityGlyph[] = []; \r\n static kvPhotoLock: KvPhoto = new KvPhoto(); // lock.png\r\n static kvPhotoUnLock: KvPhoto = new KvPhoto(); // unlock.png\r\n static kvPhotoPrivate: KvPhoto = new KvPhoto(); // lock.jpg\r\n static kvPhotoPublic: KvPhoto = new KvPhoto(); // unlock.jpg\r\n // static keyValueModuleFactory: any;\r\n static logRegModel : LogRegModel = new LogRegModel();\r\n static loginSuccess: LoginSuccess = new LoginSuccess();\r\n // static logregModuleFactory: any;\r\n static masterData: any;\r\n static masterErrorLogs: LogError[] = [];\r\n static mcLoader: ModuleComponentLoader = new ModuleComponentLoader();\r\n static memberActivity : CommunicationActivity = new CommunicationActivity();\r\n static commActivities: CommunicationActivity[] = [];\r\n static memberModuleFactory: any;\r\n static members: Member[] = [];\r\n static memberPhoto : KvPhoto = new KvPhoto();\r\n static memberViewMgmtModel : MemberViewMgmtModel = new MemberViewMgmtModel();\r\n static message = '';\r\n static anyModel : any;\r\n static modalModel: ModalModel = new ModalModel();\r\n static moduleFactory : any;\r\n static myActivityArr : CommunicationActivity[] = [];\r\n static myConversations : ChatActivity[] = [];\r\n static myOutboxConversations : ChatActivity[] = [];\r\n static myErrorLogs: LogError[] = [];\r\n static myGroups: Group[] = [];\r\n static myInfo : Communicator = new Communicator();\r\n static numberOfTicks = 0;\r\n static pagerBreadcrum : PagerBreadcrum = new PagerBreadcrum();\r\n static pageSize = 0;\r\n static pagerChat : PagerChat = new PagerChat();\r\n static pagedChats : Chat[] = [];\r\n static pagerPhotoMgmt : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n static pagerVKvPhotoNav : PagerPhotoMgmt = new PagerPhotoMgmt();\r\n static payPalOrder : PayPalOrder = new PayPalOrder();\r\n static photoMgmtAction : PhotoMgmtAction = new PhotoMgmtAction();\r\n static photoMgmtGlyphMenuKvArr : KvMemberActivityGlyph[] = []; // TODO: reesolve the duplicate with glyphKvArrForPhotoMgmt\r\n static photoMgmtServiceSitUser: SitUser = new SitUser();\r\n static primaryImageKvPhoto: KvPhoto = new KvPhoto();\r\n static primaryImageGlyphMenuKvArr : KvMemberActivityGlyph[] = [];\r\n static profileContentKvArr : KvAny[] = [];\r\n static profileImages: KvPhoto[] = [];\r\n static profileInfo : ProfileInfo = new ProfileInfo();\r\n static profileInfoView : ProfileInfo = new ProfileInfo();\r\n static profileModuleFactory: any;\r\n static profileTile: ProfileTile = new ProfileTile();\r\n static profileTilesArr: ProfileTile[] = [];\r\n static profileTileArrEmitterModel: ProfileTileArrEmitterModel = new ProfileTileArrEmitterModel();\r\n static profilePics : ProfilePics = new ProfilePics();\r\n static rdm :RemoteDataModel = new RemoteDataModel();\r\n static returnUrl = '';\r\n static resetPasswordCode = '';\r\n static router : any;\r\n static remoteDateLoadID : number = 0;\r\n static salty: Salt = new Salt();\r\n static saltyPair : NaclPairClient = new NaclPairClient();\r\n static selectedProfileTile : ProfileTile = new ProfileTile();\r\n static senderInfoArr: Communicator[] = [];\r\n static senderReceiverEmails: SenderReceiverEmails = new SenderReceiverEmails();\r\n static sharedModuleFactory: any;\r\n static sitUser : SitUser = new SitUser();\r\n static signedInUser : SitUser = new SitUser();\r\n // static staffModuleFactory : any;\r\n static spinnerCounter = 0;\r\n static spinnerModel : SpinnerModel = new SpinnerModel();\r\n static subscription: Subscription;\r\n static theirActivityArr: CommunicationActivity[] = [];\r\n static timer : any;\r\n static toggleCameraGlyphCounter = 0;\r\n static unionModuleFactory: any;\r\n static upgrade : Upgrade = new Upgrade();\r\n static userAndPageTitle : UserAndPageTitle = new UserAndPageTitle();\r\n static userPhotoIds: number[] = [];\r\n static userPhotoBnIds : number[] = [];\r\n static yourInfo : Communicator = new Communicator();\r\n static yourLoginSuccess: LoginSuccess = new LoginSuccess();\r\n static whenScrollEnds = false;\r\n /*\r\n * private senderReceiverEmails: SenderReceiverEmails = new SenderReceiverEmails();\r\n * --------------------------------------------\r\n * Note: variables for componet-container-listeners:\r\n */\r\n static createListeners: any[] = [];\r\n static destroyListeners: any[] = [];\r\n /*\r\n * --------------------------------------------\r\n * Note: variables for lazy-loading:\r\n */\r\n static activityElementRef: any;\r\n static appElementRef: any;\r\n static chatElementRef: any;\r\n static communicationElementRef: any;\r\n static keyValueElementRef: any;\r\n static logregElementRef: any;\r\n static memberElementRef : any;\r\n static profileElementRef: any;\r\n static staffElementRef: any;\r\n static CopyServiceStatic: any;\r\n protected timerArray: any[] = [];\r\n protected emitterDestroyed$: any;\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: On an Onservable, the view gets rendered each time it is\r\n * subscribed (i.e. listened to via next()).\r\n * This method is to be used by any method of that needs to\r\n * refresh the view with new data where Angular does not\r\n * refresh to render the updated data.\r\n *\r\n * A good way to combine this method with a subscriber of\r\n * an emitter would make it behave like an observable.\r\n * ---------------------------------------------------------------\r\n */\r\n // public reRender(): void {\r\n // /*\r\n // * Re-rendering the view on changeDetection:\r\n // * ref:https:// stackoverflow.com/questions/50383003/how-to-re-render-a-component-manually-angular-5\r\n // */\r\n // this.timer = setTimeout(() => {\r\n // this.numberOfTicks++;\r\n // // the following is required, otherwise the view will not be updated\r\n // this.cdr.markForCheck();\r\n // // console.log('re-rendering-timer-Ticks: ' + this.numberOfTicks);\r\n // }, 1000);\r\n // this.timerArray.push(this.timer);\r\n // }\r\n /*\r\n * -----------------------------------------------------------\r\n * Begin of registering and removing component-containers:\r\n * ref: https://indepth.dev/posts/1057/here-is-how-to-get-viewcontainerref-before-viewchild-query-is-evaluated\r\n * -----------------------------------------------------------\r\n */\r\n // --------------------------------------------\r\n constructor (public dbServiceService) {\r\n EmitterSubjectService.dbDexieToDictionaryService = this.dbServiceService.getDbDexieToDictionaryService();''\r\n // debugger;\r\n }\r\n // -------------------------------------------\r\n // ---------------------------------------------------------------\r\n static getDataFromLoginSuccess ()\r\n {\r\n this.myInfo.email = this.loginSuccess.email;\r\n this.myInfo.profileName = this.loginSuccess.profileName;\r\n this.myInfo.sitUserId = this.loginSuccess.signedInUserId;\r\n this.myInfo.primaryImage = this.loginSuccess.primaryImage;\r\n }\r\n // ---------------------------------------------------------------\r\n static onContainerCreated (fn : any) {\r\n this.createListeners.push(fn);\r\n }\r\n static onContainerDestroyed (fn : any) {\r\n this.destroyListeners.push(fn);\r\n }\r\n static registerContainer (container : any) {\r\n // debugger;\r\n this.createListeners.forEach((fn) => {\r\n fn(container);\r\n });\r\n }\r\n static destroyContainer (container : any) {\r\n this.destroyListeners.forEach((fn) => {\r\n fn(container);\r\n });\r\n }\r\n /*\r\n * -----------------------------------------------------------\r\n * End of registering and removing component-containers:\r\n * -----------------------------------------------------------\r\n */\r\n // ---------------------------------------------------------------\r\n // Note: This is to be used with the novel-centering-system\r\n // ---------------------------------------------------------------\r\n static getCenteringHeightWidth (elemId: any) : any\r\n {\r\n let point = {\r\n height: 0,\r\n width: 0,\r\n };\r\n // debugger;\r\n let parentElemWidth = window.innerWidth;\r\n let parentElemHeight = window.innerHeight;\r\n // To be used when @ViewChild( 'loginComponentId' ) childElement ! : ElementRef; can be used\r\n // ------------------------------------------------------------------------------------------\r\n // let childElemWidth = this.childElement.nativeElement.offsetWidth;\r\n // let childElemHeight = this.childElement.nativeElement.offsetHeight;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(elemId))\r\n {\r\n let childElem = document.getElementById( elemId ) as HTMLElement;\r\n let childElemWidth : any;\r\n let childElemHeight : any;\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( childElem ) )\r\n {\r\n let childWidth = childElem.style.width;\r\n let childeight = childElem.style.height;\r\n\r\n if ( childWidth.toLowerCase().indexOf( '%' ) !== -1 ) // if the width is in %\r\n {\r\n let parts = childWidth.split( '%' );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( parts ) )\r\n {\r\n let childWidthValue = parseInt( parts[ 0 ] );\r\n childElemWidth = parentElemWidth * ( childWidthValue / 100 );\r\n }\r\n }\r\n else if ( childWidth.toLowerCase().indexOf( 'px' ) !== -1 ) // if the width is in px\r\n {\r\n let parts = childWidth.split( 'px' );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( parts ) )\r\n {\r\n let childWidthValue = parseInt( parts[ 0 ] );\r\n childElemWidth = childWidthValue;\r\n }\r\n }\r\n else if ( childWidth.toLowerCase().indexOf( 'rem' ) !== -1 )\r\n { // if the width is in rem\r\n {\r\n let parts = childWidth.split( 'rem' );\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( parts ) )\r\n {\r\n let childWidthValue = parseInt( parts[ 0 ] );\r\n childElemWidth = childWidthValue;\r\n }\r\n }\r\n }\r\n let centerWidth = Math.ceil( parentElemWidth / 2 - childElemWidth / 2 );\r\n let centerHeight = Math.ceil( parentElemHeight / 2 - childElemHeight / 2 );\r\n // debugger;\r\n point.width = centerWidth;\r\n point.height = centerHeight;\r\n // alert( 'in emitter-Service! \\n centerWidth: ' + centerWidth + '\\n centerHeight: ' + centerHeight );\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(childElem)) {\r\n childElem.remove();\r\n }\r\n }\r\n \r\n return point;\r\n }\r\n // ---------------------------------------------------------------\r\n /*\r\n * ------------------------------------------------------------\r\n * setSitUserId(id: number) {\r\n * this.sitUserIdSource.next(id);\r\n * }\r\n */\r\n static setupLockPhotos(): any {\r\n // debugger;\r\n this.kvPhotoLock.cryptUserKey = 'tala';\r\n this.kvPhotoLock.value = '/assets/photos/lock.png';\r\n\r\n this.kvPhotoUnLock.cryptUserKey = 'unlock';\r\n this.kvPhotoUnLock.value = '/assets/photos/unlock.png';\r\n\r\n this.kvPhotoPrivate.cryptUserKey = 'private';\r\n this.kvPhotoPrivate.value = '/assets/photos/private.png';\r\n\r\n this.kvPhotoPublic.cryptUserKey = 'static';\r\n this.kvPhotoPublic.value = '/assets/photos/static.png';\r\n\r\n if (this.loginSuccess && this.loginSuccess.signedInUserId > 0) {\r\n this.kvPhotoLock.sitUserId = this.loginSuccess.signedInUserId;\r\n this.kvPhotoUnLock.sitUserId = this.loginSuccess.signedInUserId;\r\n this.kvPhotoPrivate.sitUserId = this.loginSuccess.signedInUserId;\r\n this.kvPhotoPublic.sitUserId = this.loginSuccess.signedInUserId;\r\n // debugger;\r\n }\r\n return true;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n // static isSenderFound(sender: Communicator): number {\r\n // let i = 0;\r\n\r\n // if (this.senderInfoArr.length > 0 && sender) {\r\n // for (const e of this.senderInfoArr) {\r\n // if (e.sitUserId === sender.sitUserId) {\r\n // return i;\r\n // }\r\n // i++;\r\n // }\r\n // }\r\n // return -1;\r\n // }\r\n // ------------------------------------------------------------\r\n // static uniqueAddSenderInfoArr(sender: Communicator) {\r\n // if (sender && this.loginSuccess.signedInUserId !== sender.sitUserId) {\r\n // const index = this.isSenderFound(sender);\r\n\r\n // if (index > -1) {\r\n // this.senderInfoArr[index] = sender;\r\n // } else {\r\n // this.senderInfoArr.push(sender);\r\n // }\r\n // }\r\n // }\r\n /*\r\n * -----------------------------------------------------------\r\n * Begin of Lazy-Loading:\r\n * ref: https://medium.com/angular-in-depth/lazy-loading-angular-modules-with-ivy-92c3a890eae1\r\n * -----------------------------------------------------------\r\n */\r\n static getDocument(): any {\r\n return this.document;\r\n }\r\n static setDocument(value: any) {\r\n this.document = value;\r\n }\r\n static getWindow () : any\r\n {\r\n return this.window;\r\n }\r\n static setWindow ( value : any )\r\n {\r\n this.window = value;\r\n }\r\n static geAppFeatureArr () : AppFeature[]\r\n {\r\n return this.appFeatureArr;\r\n }\r\n static setAppFeatureArr ( value : AppFeature[]) : void\r\n {\r\n this.appFeatureArr = value;\r\n }\r\n static getAnchor () : any\r\n {\r\n return this.anchor;\r\n }\r\n static setAnchor ( value : any )\r\n {\r\n this.anchor = value;\r\n }\r\n static getAppElementRef(): ElementRef {\r\n return this.appElementRef;\r\n }\r\n static setAppElementRef ( value : ElementRef): void {\r\n this.appElementRef = value;\r\n }\r\n // ----------------------------------------------------------\r\n static isSitUserIdCalled (sitUserId : number) : boolean {\r\n let isFound = false;\r\n this.calledSitUserArr.forEach(e => {\r\n isFound = e === sitUserId;\r\n });\r\n return isFound;\r\n }\r\n // ----------------------------------------------------------\r\n static setSitUserIdCalled (sitUserId : number) {\r\n if (!EmitterSubjectService.isSitUserIdCalled(sitUserId)) {\r\n this.calledSitUserArr.push(sitUserId);\r\n }\r\n }\r\n // ----------------------------------------------------------\r\n static getChats () : any[] {\r\n var chatArr : any[] = [];\r\n chatArr.push(...this.chatMap.values());\r\n return chatArr;\r\n }\r\n // ----------------------------------------------------------\r\n static setChats (values : Chat[]) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(values) && values.length > 0) {\r\n values.map(v => {\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.chatMap.get(v.communicationActivityId))){\r\n this.chatMap.set(v.communicationActivityId, v);\r\n\t\t\t\t} \r\n }) \r\n\t\t} \r\n }\r\n // ----------------------------------------------------------\r\n // \r\n static getIsAppFeaturePage () : boolean {\r\n return this.isAppFeaturePage;\r\n }\r\n static setIsAppFeaturePage (value : boolean) {\r\n this.isAppFeaturePage = value;\r\n }\r\n\r\n static getChatElementRef () : any {\r\n return this.chatElementRef;\r\n }\r\n static setChatElementRef (value : any) {\r\n this.chatElementRef = value;\r\n }\r\n static getCommunicationElementRef(): any {\r\n return this.communicationElementRef;\r\n }\r\n static setCommunicationElementRef(value: any) {\r\n this.communicationElementRef = value;\r\n }\r\n // ---------------------------------------------------------------\r\n static getDbDexieToDictionaryService (): any {\r\n this.dbDexieToDictionaryService;\r\n }\r\n static setDbDexieToDictionaryService (value : DbDexieToDictionaryService) : void {\r\n this.dbDexieToDictionaryService = value;\r\n }\r\n // ---------------------------------------------------------------\r\n static getGlyphs () : KvMemberActivityGlyph[]\r\n {\r\n return this.glyphKvArr;\r\n }\r\n static setGlyphs (value : KvMemberActivityGlyph[] ) : void\r\n {\r\n this.glyphKvArr = value;\r\n }\r\n // ---------------------------------------------------------------\r\n static getViewMemberGlyphs () : KvMemberActivityGlyph[] {\r\n return this.kvGlyphArrForViewMember;\r\n }\r\n static setViewMemberGlyphs (value : KvMemberActivityGlyph[]) : void {\r\n this.kvGlyphArrForViewMember = value;\r\n }\r\n // ---------------------------------------------------------------\r\n static getPhotoMgmtGlyphs () : KvMemberActivityGlyph[] {\r\n return this.kvGlyphArrForPhotoMgmt;\r\n }\r\n static setPhotoMgmtGlyphs (value : KvMemberActivityGlyph[]) : void {\r\n this.kvGlyphArrForPhotoMgmt = value;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIsInizializationComplete () : boolean\r\n {\r\n return this.isInizializationComplete;\r\n }\r\n static setIsInizializationComplete ( value : boolean ): any\r\n {\r\n this.isInizializationComplete = value;\r\n return true;\r\n }\r\n // ---------------------------------------------------------------\r\n static setIsObjectStoreNameFoundInTables (value : boolean) : void {\r\n this.isProfileTileDictionaryCreatedFromIndexDb = value;\r\n }\r\n // ---------------------------------------------------------------\r\n static getIsObjectStoreNameFoundInTables () : boolean {\r\n return this.isProfileTileDictionaryCreatedFromIndexDb;\r\n }\r\n static getKeyValueElementRef(): any {\r\n return this.keyValueElementRef;\r\n }\r\n static setKeyValueElementRef(value: any) {\r\n this.keyValueElementRef = value;\r\n }\r\n // \r\n static getLogRegModel () : any {\r\n return this.logRegModel;\r\n }\r\n static setLogRegModel (value : any) {\r\n this.logRegModel = value;\r\n }\r\n\r\n static getLogregElementRef(): any {\r\n return this.logregElementRef;\r\n }\r\n static setLogregElementRef(value: any) {\r\n this.logregElementRef = value;\r\n }\r\n static getMasterData(): any {\r\n return this.masterData;\r\n }\r\n static setMasterData(value: any) {\r\n this.masterData = value;\r\n }\r\n // -----------------------------------------------\r\n static getMemberElementRef(): any {\r\n return this.memberElementRef;\r\n }\r\n static setMemberElementRef(value: any) {\r\n this.memberElementRef = value;\r\n }\r\n static getMemberActivityElementRef(): any {\r\n return this.activityElementRef;\r\n }\r\n static setMemberActivityElementRef(value: any) {\r\n this.activityElementRef = value;\r\n }\r\n // -----------------------------------------------\r\n static getMemberViewMgmtModel () : any {\r\n return this.memberViewMgmtModel;\r\n }\r\n static setMemberViewMgmtModel (value : any) {\r\n this.memberViewMgmtModel = value;\r\n }\r\n // -----------------------------------------------\r\n static getElementRef () : ElementRef\r\n {\r\n return this.elementRef;\r\n }\r\n static setElementRef ( value : ElementRef ) : void\r\n {\r\n this.elementRef = value;\r\n }\r\n // -----------------------------------------------\r\n static getOffOnElement (name : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(name)) {\r\n if (name.indexOf('spanAway') !== -1) {\r\n return this.offOnAwayElementRef;\r\n }\r\n else if (name.indexOf('spanRadio') !== -1) {\r\n return this.offOnRadioElementRef;\r\n }\r\n }\r\n return null;\r\n }\r\n static setOffOnElement (value : (ElementRef | HTMLElement), name : string) : void {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(name)) {\r\n if (name.indexOf('spanAway') !== -1) {\r\n this.offOnAwayElementRef = value;\r\n }\r\n else if (name.indexOf('spanRadio') !== -1) {\r\n this.offOnRadioElementRef = value;\r\n }\r\n }\r\n }\r\n // -----------------------------------------------\r\n static getPageSize () : any {\r\n return this.pageSize;\r\n }\r\n static setPageSize (value : any) {\r\n this.pageSize = value;\r\n }\r\n // -----------------------------------------------\r\n static getPagedChats () : Chat[] {\r\n return this.pagedChats;\r\n }\r\n static setPagedChats (value : Chat[]) {\r\n this.pagedChats = value;\r\n }\r\n // -----------------------------------------------\r\n static getPagerPhotoMgmt () : PagerPhotoMgmt {\r\n return this.pagerPhotoMgmt;\r\n }\r\n static setPagerPhotoMgmt (value : PagerPhotoMgmt) {\r\n this.pagerPhotoMgmt = value;\r\n }\r\n // -----------------------------------------------\r\n static getPagerVKvPhotoNav () : PagerPhotoMgmt {\r\n return this.pagerVKvPhotoNav;\r\n }\r\n static setPagerVKvPhotoNav (value : PagerPhotoMgmt) {\r\n this.pagerVKvPhotoNav = value;\r\n }\r\n // -----------------------------------------------\r\n static getProfileElementRef(): any {\r\n return this.profileElementRef;\r\n }\r\n static setProfileElementRef(value: any) {\r\n this.profileElementRef = value;\r\n } // static spinnerTimerArr : any[] = [];\r\n // remoteDateLoadID\r\n static getRemoteDateLoadID () : any {\r\n return this.remoteDateLoadID;\r\n }\r\n static setRemoteDateLoadID (value : any) {\r\n this.remoteDateLoadID = value;\r\n }\r\n\r\n static getStaffElementRef(): any {\r\n return this.staffElementRef;\r\n }\r\n static setStaffElementRef(value: any) {\r\n this.staffElementRef = value;\r\n }\r\n /*\r\n * -----------------------------------------------------------\r\n * End of Lazy-Loading:\r\n * -----------------------------------------------------------\r\n * ------------------------------------------------------------\r\n */\r\n static getActionId(): ActionId {\r\n return this.actionId;\r\n }\r\n static setActionId(value: ActionId) {\r\n this.actionId = value;\r\n }\r\n // ------------------------------------------------------------\r\n static setChangeDetectorRef(_cdr: ChangeDetectorRef): void {\r\n this.cdr = _cdr;\r\n }\r\n // ------------------------------------------------------------\r\n\r\n /*\r\n * getArticlePagedParagraphs(): any {\r\n * return this.articlePagedParagraphs;\r\n * }\r\n * setArticlePagedParagraphs(data: Content[]) {\r\n * this.articlePagedParagraphs = data;\r\n * }\r\n * getArticleSubjects(): any {\r\n * return this.articleSubjects;\r\n * }\r\n * setArticleSubjets(data: string[]): void {\r\n * this.articleSubjects = data;\r\n * }\r\n */\r\n\r\n static getActivedComponentDictionary () : Dictionary {\r\n return this.activatedComponentDictionary;\r\n }\r\n static setActivedComponentDictionary ( dictionary : Dictionary): void {\r\n this.activatedComponentDictionary = dictionary;\r\n }\r\n static getActivatedRoute(): any {\r\n return this.activatedRoute;\r\n }\r\n static setActivatedRoute(data: any): void {\r\n this.activatedRoute = data;\r\n }\r\n static getAnyModel () : any {\r\n return this.anyModel;\r\n }\r\n static setAnyModel (data : any) : void {\r\n this.anyModel = data;\r\n }\r\n \r\n static getAvatarProfileTile () : ProfileTile {\r\n return this.avatarProfileTile;\r\n }\r\n static setAvatarProfileTile(data : ProfileTile) : void {\r\n this.avatarProfileTile = data;\r\n }\r\n\r\n static getBasicPager (): BasicPagerModel {\r\n return this.basicPagerModel;\r\n }\r\n\r\n static setBasicPager (pager : BasicPagerModel) : void {\r\n this.basicPagerModel = pager;\r\n }\r\n // chatHistoryArr\r\n static getChatHistoryArr () : any[] {\r\n return this.chatHistoryArr;\r\n }\r\n\r\n static setChatHistoryArr (ca : any[]) : void {\r\n this.chatHistoryArr = ca;\r\n }\r\n /*\r\n * ------------------------------------------------------------\r\n * Begin of module-factories:\r\n * ------------------------------------------------------------\r\n */\r\n static getModuleFactory(): any {\r\n return this.moduleFactory;\r\n }\r\n static setModuleFactory(value: any) {\r\n this.moduleFactory = value;\r\n }\r\n static getSharedModuleFactory(): any {\r\n return this.sharedModuleFactory;\r\n }\r\n static setSharedModuleFactory(value: any) {\r\n this.sharedModuleFactory = value;\r\n }\r\n static getEnvironment(): string {\r\n return this.environment;\r\n }\r\n static setEnvironment(value: string) {\r\n this.environment = value;\r\n }\r\n static getHostName(): string {\r\n return this.hostName;\r\n }\r\n static setHostName(value: string) {\r\n this.hostName = value;\r\n }\r\n static getUnionModuleFactory(): any {\r\n return this.unionModuleFactory;\r\n }\r\n static setUnionModuleFactory(value: any) {\r\n this.unionModuleFactory = value;\r\n }\r\n /*\r\n * ------------------------------------------------------------\r\n * End of module-factories:\r\n * ------------------------------------------------------------\r\n */\r\n // ------------------------------------------------------------\r\n // Begin of GlyphMenues\r\n // ------------------------------------------------------------\r\n\r\n static getMemberViewGlyphMenuKvArr () : KvMemberActivityGlyph[]\r\n {\r\n return this.kvGlyphArrForViewMember;\r\n }\r\n\r\n static setMemberViewGlyphMenuKvArr (glyphs : KvMemberActivityGlyph[] ) : void\r\n {\r\n this.kvGlyphArrForViewMember = glyphs;\r\n }\r\n // ------------------------------------------------------------\r\n static getPhotoMgmteGlyphMenuKvArr () : KvMemberActivityGlyph[]\r\n {\r\n return this.kvGlyphArrForPhotoMgmt; //this.photoMgmtGlyphMenuKvArr;\r\n }\r\n // Note: photoMgmtGlyphMenuKvArr === glyphKvArrForPhotoMgmt\r\n static setPhotoMgmteGlyphMenuKvArr (glyphs : KvMemberActivityGlyph[] ) : void\r\n {\r\n this.kvGlyphArrForPhotoMgmt = glyphs; // this.photoMgmtGlyphMenuKvArr = \r\n }\r\n // ------------------------------------------------------------\r\n static getPrimaryImageGlyphMenuKvArr () : KvMemberActivityGlyph[]\r\n {\r\n return this.primaryImageGlyphMenuKvArr;\r\n }\r\n static setPrimaryImageGlyphMenuKvArr (glyphs : KvMemberActivityGlyph[]) : void\r\n {\r\n this.primaryImageGlyphMenuKvArr = glyphs;\r\n }\r\n // ------------------------------------------------------------\r\n // End of GlyphMenues\r\n // ------------------------------------------------------------\r\n static getBreadcrumRing () : ModuleComponentLoader[] {\r\n return this.breadcrumRing;\r\n }\r\n static setBreadcrumRing ( value : ModuleComponentLoader[]): void {\r\n this.breadcrumRing = value;\r\n }\r\n static getChatModel () : Chat {\r\n return this.chatModel;\r\n }\r\n static setChatModel (value : Chat) {\r\n this.chatModel = value;\r\n }\r\n static getConnectionToken(): any {\r\n return this.connectionToken;\r\n }\r\n static setConnectionToken(value: any) {\r\n this.connectionToken = value;\r\n }\r\n // ------------------------------------------------------------\r\n static getCurrentBreadcrumPage(): any {\r\n return this.currentBrdcrmPage;\r\n }\r\n static setCurrentBreadcrumPage(data: BrdCrmKvAny): void {\r\n this.currentBrdcrmPage = data;\r\n }\r\n static getCurrentPage () : KvMemberActivityGlyph {\r\n return this.currentPage;\r\n }\r\n static setCurrentPage (data : KvMemberActivityGlyph): void {\r\n this.currentPage = data;\r\n }\r\n static getCurrentKvPhoto(): KvPhoto {\r\n return this.currentKvPhoto;\r\n }\r\n static setCurrentKvPhoto(data: KvPhoto): void {\r\n this.currentKvPhoto = data;\r\n }\r\n static getCurrentPhoto(): Photo {\r\n return this.currentPhoto;\r\n }\r\n static setCurrentPhoto(data: Photo): void {\r\n this.currentPhoto = data;\r\n }\r\n // ------------------------------------------------------------\r\n static getEnums(): any {\r\n return this.enums;\r\n }\r\n static setEnums(value: any): void {\r\n this.enums = value;\r\n }\r\n static getENoteTile(): ENoteTile {\r\n return this.eNoteTile;\r\n }\r\n static setENoteTile(value: ENoteTile): void {\r\n this.eNoteTile = value;\r\n }\r\n // static getFetchSitUserModel(): GetSitUser {\r\n // return this.getSitUser;\r\n //}\r\n static getHttpService () : HttpService\r\n {\r\n return this.httpService;\r\n }\r\n static setHttpService ( data : HttpService ) : void\r\n {\r\n this.httpService = data;\r\n }\r\n static getHubConnection () : signalR.HubConnection {\r\n return this.hubConnection;\r\n }\r\n static setHubConnection (data : signalR.HubConnection): void {\r\n this.hubConnection = data;\r\n }\r\n // ------------------------------\r\n static getDeviceInfo () : any {\r\n return this.deviceInfo;\r\n }\r\n static setDeviceInfo (data : any) : void {\r\n this.deviceInfo = data;\r\n }\r\n static getIsMobile(): boolean {\r\n return this.isMobilevar;\r\n }\r\n static setIsMobile(data: boolean): void {\r\n this.isMobilevar = data;\r\n }\r\n static getIsTablet () : boolean {\r\n return this.isTablet;\r\n }\r\n static setIsTablet (data : boolean) : void {\r\n this.isTablet = data;\r\n }\r\n static getIsDesktop () : boolean {\r\n return this.isDesktop;\r\n }\r\n static setIsDesktop (data : boolean) : void {\r\n this.isDesktop = data;\r\n }\r\n // ------------------------------ \r\n static getIsDevelopment(): boolean {\r\n return this.isDevEnvironment;\r\n }\r\n static setIsDevelopment(data: boolean): any {\r\n this.isDevEnvironment = data;\r\n return true;\r\n }\r\n static getIsEditProfile () : boolean {\r\n return this.isEditProfile;\r\n }\r\n static setIsEditProfile(data: boolean) {\r\n this.isEditProfile = data;\r\n }\r\n static getHeartbeat () : Heartbeat {\r\n return this.heartbeat;\r\n }\r\n static setHeartbeat (data : Heartbeat) : any {\r\n this.heartbeat = data;\r\n return true;\r\n } \r\n static getLoginSuccess(): LoginSuccess {\r\n return this.loginSuccess;\r\n }\r\n static setLoginSuccess(value: LoginSuccess): void {\r\n this.loginSuccess = value; //CopyServiceStatic.copyLoginSuccessIfExists(this.loginSuccess, logSuccess);\r\n }\r\n static getMasterErrorLogs(): LogError[] {\r\n return this.masterErrorLogs;\r\n }\r\n static setMasterErrorLogs(value: LogError[]): any {\r\n this.masterErrorLogs = value;\r\n return true;\r\n }\r\n static getMCLoader(): ModuleComponentLoader {\r\n return this.mcLoader;\r\n }\r\n static setMCLoader(data: ModuleComponentLoader): void {\r\n this.mcLoader = data;\r\n }\r\n static getMemberActivity () : CommunicationActivity {\r\n return this.memberActivity;\r\n }\r\n static setMemberActivity (data : CommunicationActivity): void {\r\n this.memberActivity = data;\r\n }\r\n static getCommunicationActivities(): CommunicationActivity[] {\r\n return this.commActivities;\r\n }\r\n static setCommunicationActivities (data : CommunicationActivity[]): void {\r\n this.commActivities = data;\r\n }\r\n static getMyActivityArr () : CommunicationActivity[] {\r\n return this.myActivityArr;\r\n }\r\n static setMyActivityArr (value : CommunicationActivity[]): void {\r\n this.myActivityArr = value;\r\n }\r\n static getMemberPhoto(): KvPhoto {\r\n return this.memberPhoto;\r\n }\r\n static getMembers(): any {\r\n return this.members;\r\n }\r\n static setMembers(data: Member[]): void {\r\n this.members = data;\r\n }\r\n static getMessage(): any {\r\n return this.message;\r\n }\r\n static setMessage(data: string): void {\r\n this.message = data;\r\n }\r\n static getIsModalVisible () : boolean {\r\n return this.isModalVisible;\r\n }\r\n static setIsModalVisible (data : boolean) : boolean {\r\n this.isModalVisible = data;\r\n return true;\r\n }\r\n static getMyConversations() {\r\n return this.myConversations;\r\n }\r\n static setMyConversations(data: ChatActivity[]) {\r\n this.myConversations = data;\r\n }\r\n static getMyOutboxConversations () {\r\n return this.myOutboxConversations;\r\n }\r\n static setMyOutboxConversations (data : ChatActivity[]) {\r\n this.myOutboxConversations = data;\r\n }\r\n static getMyErrorLogs(): LogError[] {\r\n return this.myErrorLogs;\r\n }\r\n static setMyErrorLogs(value: LogError[]): any {\r\n this.myErrorLogs = value;\r\n return true;\r\n }\r\n static getMyGroup() {\r\n return this.myGroups;\r\n }\r\n static setMyGroups(data: Group[]) {\r\n this.myGroups = data;\r\n } \r\n static getIsMyProfile () : boolean {\r\n return this.isMyProfile;\r\n }\r\n static setIsMyProfile (data : boolean) : void {\r\n this.isMyProfile = data;\r\n }\r\n static getIsOnLine () : boolean {\r\n return this.isOnLine;\r\n }\r\n static setIsOnLine (data : boolean) : void {\r\n this.isOnLine = data;\r\n }\r\n static getIsLoggedOutByUser () : boolean {\r\n return this.isLoggedOutByUser;\r\n }\r\n static setIsLoggedOutByUser (data : boolean) : void {\r\n this.isLoggedOutByUser = data;\r\n }\r\n\r\n static getIsPhotoMgmt () : boolean {\r\n return this.isPhotoMgmt;\r\n }\r\n static setIsPhotoMgmt (data : boolean) : void {\r\n this.isPhotoMgmt = data;\r\n }\r\n static getIsShowPhotoUpload () : boolean {\r\n return this.isShowPhotoUploadUi.isOpened;\r\n }\r\n static setIsShowPhotoUpload (data : boolean) : void {\r\n this.isShowPhotoUploadUi.isOpened = data;\r\n }\r\n static getIsToggleCamera () : boolean {\r\n return this.isToggleCamera;\r\n }\r\n static setIsToggleCamera (data : boolean) : void {\r\n this.isToggleCamera = data;\r\n }\r\n static getIsUnlocked () : boolean {\r\n return this.isUnlocked;\r\n }\r\n static setIsUnlocked (data : boolean) : any {\r\n this.isUnlocked = data;\r\n return true;\r\n }\r\n static getIsViewMember () : boolean {\r\n // debugger;\r\n return this.isViewMember;\r\n }\r\n static setIsViewMember (data : boolean) : void {\r\n this.isViewMember = data;\r\n }\r\n static getPagerBreadcrum () : PagerBreadcrum\r\n {\r\n return this.pagerBreadcrum;\r\n }\r\n static setPagerBreadcrum ( value : PagerBreadcrum ) : void\r\n {\r\n this.pagerBreadcrum = value;\r\n this.breadcrumRing = this.pagerBreadcrum.breadcrumRing;\r\n }\r\n static getPagerChat () : PagerChat {\r\n return this.pagerChat;\r\n }\r\n static setPagerChat (value : PagerChat) : void {\r\n this.pagerChat = value;\r\n }\r\n static getPhotoLock(): KvPhoto {\r\n return this.kvPhotoLock;\r\n }\r\n static setPhotoLock(value: KvPhoto): void {\r\n this.kvPhotoLock = value;\r\n }\r\n static getPhotoUnLock(): KvPhoto {\r\n return this.kvPhotoUnLock;\r\n }\r\n static setPhotoUnLock(value: KvPhoto): void {\r\n this.kvPhotoUnLock = value;\r\n }\r\n static getPhotoMgmtAction(): PhotoMgmtAction {\r\n return this.photoMgmtAction;\r\n }\r\n static setPhotoMgmtAction(value: PhotoMgmtAction): any {\r\n this.photoMgmtAction = value;\r\n return true;\r\n }\r\n static getPhotoMgmtServiceSitUser(): SitUser {\r\n return this.photoMgmtServiceSitUser;\r\n }\r\n static setPhotoMgmtServiceSitUser(value: SitUser): void {\r\n this.photoMgmtServiceSitUser = value;\r\n }\r\n static getPhotoPrivate(): KvPhoto {\r\n return this.kvPhotoPrivate;\r\n }\r\n static setPhotoPrivate(value: KvPhoto): void {\r\n this.kvPhotoPrivate = value;\r\n }\r\n static getPhotoPublic(): KvPhoto {\r\n return this.kvPhotoPublic;\r\n }\r\n static setPhotoPublic(value: KvPhoto): void {\r\n this.kvPhotoPublic = value;\r\n }\r\n static getPrimaryImageKvPhoto(): KvPhoto {\r\n return this.primaryImageKvPhoto;\r\n }\r\n static setPrimaryImageKvPhoto(value: KvPhoto): void {\r\n this.primaryImageKvPhoto = value;\r\n }\r\n static getProfileImages(): KvPhoto[] {\r\n return this.profileImages;\r\n }\r\n static setProfileImages(data: KvPhoto[]) {\r\n this.profileImages = data;\r\n }\r\n static getProfileInfo(): ProfileInfo {\r\n return this.profileInfo;\r\n }\r\n static setProfileInfo(data: ProfileInfo) {\r\n this.profileInfo = data;\r\n }\r\n static getNewProfileTile () : ProfileTile {\r\n return new ProfileTile();\r\n }\r\n \r\n static getProfileTile(): ProfileTile {\r\n return this.profileTile;\r\n }\r\n static setProfileTile(data: ProfileTile): void {\r\n this.profileTile = data;\r\n }\r\n static getProfileTilesArr(): ProfileTile[] {\r\n return this.profileTilesArr;\r\n }\r\n static setProfileTilesArr(data: ProfileTile[]): void {\r\n this.profileTilesArr = data;\r\n }\r\n static getProfilePics(): ProfilePics {\r\n return this.profilePics;\r\n }\r\n static setProfilePics(data: ProfilePics): any {\r\n this.profilePics = data;\r\n return true;\r\n }\r\n static getRemoteDataModel () : RemoteDataModel {\r\n return this.rdm;\r\n }\r\n static setRemoteDataModel (value : RemoteDataModel) : void {\r\n this.rdm = value;;\r\n }\r\n static getResetPasswordCode(): any {\r\n return this.resetPasswordCode;\r\n }\r\n static setResetPasswordCode(data: string): void {\r\n this.resetPasswordCode = data;\r\n }\r\n static getReturnUrl(): any {\r\n return this.returnUrl;\r\n }\r\n static setReturnUrl(data: string): void {\r\n this.returnUrl = data;\r\n }\r\n static getRouter () : any {\r\n return this.router;\r\n }\r\n static setRouter (data : any) : void {\r\n this.router = data;\r\n }\r\n // ------------------------------------------------------------\r\n static getSalty(): any {\r\n return this.salty;\r\n }\r\n static setSalty(data: Salt): void {\r\n this.salty = data;\r\n }\r\n static getSaltyPair(): any {\r\n return this.saltyPair;\r\n }\r\n static setSaltyPair(data: NaclPairClient): void {\r\n this.saltyPair = data;\r\n }\r\n // \r\n static getSelectedProfileTile () : ProfileTile {\r\n return this.selectedProfileTile;\r\n }\r\n static setSelectedProfileTile (data : ProfileTile) : void {\r\n this.selectedProfileTile = data;\r\n }\r\n /*\r\n * ------------------------------------------------------------\r\n * Note: This is a unique method in meitterService!!\r\n * ------------------------------------------------------------\r\n * getKeysPromise(): Promise {\r\n * return this.saltyPair;\r\n * }\r\n * ------------------------------------------------------------\r\n */\r\n static getSenderInfoArr(): Communicator[] {\r\n return this.senderInfoArr;\r\n }\r\n static setSenderInfoArr(value: Communicator[]) {\r\n this.senderInfoArr = value;\r\n }\r\n static getSenderAndReceiverEmails() {\r\n return this.senderReceiverEmails;\r\n }\r\n static setSenderAndReceiverEmails (senderReceiverEmails : any): void {\r\n this.senderReceiverEmails = senderReceiverEmails;\r\n }\r\n static getSpinner () : SpinnerModel {\r\n return this.spinnerModel;\r\n }\r\n static setSpinner (data : SpinnerModel) : void {\r\n this.spinnerModel = data;\r\n } \r\n \r\n static setSitUserModel(value: SitUser): void {\r\n this.sitUser = value;\r\n }\r\n static getSignedInUser () : SitUser {\r\n return this.signedInUser;\r\n }\r\n static setSignedInUser (value : SitUser) : void {\r\n this.signedInUser = value;\r\n }\r\n static getSpinnerCounter () : any {\r\n return this.spinnerCounter;\r\n }\r\n static setSpinnerCounter (data :number) : void {\r\n this.spinnerCounter = data;\r\n }\r\n \r\n static getToggleCameraGlyphCounter () : number {\r\n return this.toggleCameraGlyphCounter;\r\n }\r\n static setToggleCameraGlyphCounter (data : number) : void {\r\n this.toggleCameraGlyphCounter = data;\r\n }\r\n // -------------------------------------------------------\r\n // Note: there is no getter/setter for SitUser but these:\r\n // emitSitUser() will set the value of sitUser\r\n // -------------------------------------------------------\r\n static getSitUserModel () : SitUser {\r\n return this.sitUser;\r\n } \r\n static getTheirActivityArr () : CommunicationActivity[] {\r\n return this.theirActivityArr;\r\n }\r\n static setTheirActivityArr (value : CommunicationActivity[]): void {\r\n this.theirActivityArr = value;\r\n }\r\n \r\n // ----------------------------------------\r\n static getUpgrade () : PayPalOrder\r\n {\r\n return this.payPalOrder;\r\n }\r\n static setUpgrade (value : PayPalOrder ) : any\r\n {\r\n this.payPalOrder = value;\r\n this.upgrade = value.upgrade;\r\n return true;\r\n }\r\n // ----------------------------------------\r\n static getUserAndPageTitle () : UserAndPageTitle{\r\n return this.userAndPageTitle;\r\n }\r\n static setUserAndPageTitle (value : UserAndPageTitle) : void {\r\n this.userAndPageTitle = value;\r\n }\r\n // ----------------------------------------\r\n static getUserPhotoIds(): number[] {\r\n return this.userPhotoIds;\r\n }\r\n static setUserPhotoIds(value: number[]): any {\r\n this.userPhotoIds = value;\r\n return true;\r\n }\r\n static getUserPhotoBnIds () : number[]\r\n {\r\n return this.userPhotoBnIds;\r\n }\r\n static setUserPhotoBnIds ( value : number[] ) : any\r\n {\r\n this.userPhotoBnIds = value;\r\n return true;\r\n } \r\n static getCommunicator () : Communicator {\r\n return this.yourInfo;\r\n }\r\n // your info is an alias for yourInfo:\r\n static setCommunicator (value : Communicator): void {\r\n this.yourInfo = value;\r\n }\r\n // ------------------------------------------------------------\r\n static getYourCommunicator () : Communicator {\r\n return this.yourInfo;\r\n }\r\n // your info is an alias for yourInfo:\r\n static setYourCommunicator (value : Communicator) : void {\r\n this.yourInfo = value;\r\n }\r\n static getYourLoginSuccess () : LoginSuccess {\r\n return this.yourLoginSuccess;\r\n }\r\n static setYourLoginSuccess (value : LoginSuccess) : void {\r\n this.yourLoginSuccess = value;\r\n }\r\n static getWhenScrollEnds(): any {\r\n return this.whenScrollEnds;\r\n }\r\n static setWhenScrollEnds(value: boolean): void {\r\n this.whenScrollEnds = value;\r\n }\r\n // ------------------------------------------------------------\r\n static emitStaffActionType(value: string): void {\r\n // debugger;\r\n this.staffActionTypeEmitter.next(value);\r\n }\r\n \r\n // ============================================================\r\n // Begin of all Emitters:\r\n // ============================================================\r\n // SpinnerEmitters:\r\n // ----------------\r\n static emitShowSpinner (value : any) : void {\r\n if (value) {\r\n // debugger;\r\n if (typeof value === 'string') {\r\n this.spinnerModel = new SpinnerModel();\r\n this.spinnerModel.message = value && value.length > 0 ? '' + value + '...' + '' : 'Loading...';\r\n this.spinnerModel.isSpinner = this.spinnerModel.isOpen = true; // == isOpen\r\n this.spinnerModel.callerName = '';\r\n }\r\n else if(value instanceof SpinnerModel) {\r\n // debugger;\r\n this.spinnerModel = value;\r\n }\r\n else {\r\n // debugger;\r\n this.spinnerModel = new SpinnerModel();\r\n this.spinnerModel.message = 'Busy...';\r\n this.spinnerModel.isSpinner = this.spinnerModel.isOpen = true; // == isOpen\r\n this.spinnerModel.callerName = '';\r\n }\r\n }\r\n else {\r\n // debugger;\r\n this.spinnerModel = new SpinnerModel();\r\n this.spinnerModel.message = 'Busy...';\r\n this.spinnerModel.isSpinner = this.spinnerModel.isOpen = true; // == isOpen\r\n this.spinnerModel.callerName = '';\r\n }\r\n this.showSpinnerEmitter.next(this.spinnerModel);\r\n }\r\n // ------------------------------------------------------------\r\n static emitHideSpinner (value : any) : void {\r\n if (typeof value === 'string') {\r\n\r\n this.spinnerModel.message = value && value.length > 0 ? value : '';\r\n this.spinnerModel.isOpen = false;\r\n this.spinnerModel.isSpinner = false;\r\n } \r\n else this.spinnerModel.clear();\r\n\r\n this.hideSpinnerEmitter.next(this.spinnerModel);\r\n }\r\n // ------------------------------------------------------------\r\n // static emitStartBiasAnimation ( value : boolean ) : void\r\n // {\r\n // debugger;\r\n // this.startBiasAnimationEmitter.next( value );\r\n // }\r\n // ------------------------------------------------------------\r\n // \r\n static emitActedGlyphNames (value : any[]) {\r\n this.actedGlyphNamesEmitter.next(value);\r\n }\r\n static emitActedGlyph (value : any) {\r\n this.actedGlyphEmitter.next(value);\r\n }\r\n static emitActedUnlockAndBlockGlyphNames (value : any[]) {\r\n this.actedUnlockAndBlockGlyphNamesEmitter.next(value);\r\n }\r\n static emitActionId(value: ActionId) {\r\n this.actionId = value;\r\n this.actionIdEmitter.next(value);\r\n }\r\n static emitActivatedRoute(value: any): void {\r\n this.activatedRoute = value;\r\n this.activatedRouteEmitter.next(value);\r\n }\r\n\r\n static emitAddress ( value : any ) : void\r\n {\r\n this.addressEmitter.next( value );\r\n }\r\n \r\n static emitAmountModel ( value : AmountModel ) : void\r\n {\r\n this.amountModelEmitter.next( value );\r\n }\r\n \r\n static emitIsAppFeaturePage (value : boolean) : void {\r\n this.isAppFeaturePage = value;\r\n this.isAppFeaturePageEmitter.next(value);\r\n }\r\n\r\n static emitAppFeatureArr ( value: AppFeature[] ) : void\r\n {\r\n this.appFeatureArr = value;\r\n this.appFeatureArrEmitter.next( value );\r\n }\r\n\r\n static emitAppInitUrl (value : any): void {\r\n this.appInitUrlEmitter.next(value);\r\n }\r\n // Background-processing-system:\r\n // it uses RemoteDataMethod as parameter.\r\n // it uses its rdm.data field to holding return-data.\r\n static emitBackgroundProcessMethodDataForComponent (value : RemoteDataModel) : void {\r\n this.backgroundProcessMethodDataForComponentEmitter.next(value);\r\n }\r\n\r\n // Background-processing-system:\r\n // it uses RemoteDataMethod as parameter.\r\n // it uses its rdm.data field to holding return-data.\r\n static emitBackgroundProcessMethodDataForService (value : RemoteDataModel) : void {\r\n this.backgroundProcessMethodDataForServiceEmitter.next(value);\r\n }\r\n\r\n static emitAvatarProfileTile (value : any) : void {\r\n this.avatarProfileTile = value;\r\n this.avatarProfileTileEmitter.next(value);\r\n }\r\n\r\n\r\n \r\n static emitBasicPager(value) {\r\n this.basicPagerModel = value;\r\n this.basicPagerEmitter.next(value);\r\n }\r\n \r\n\r\n /*\r\n * emitArticleSubjects(value): void {\r\n * this.articleSubjects = value;\r\n * this.articleSubjectsEmitter.next(value);\r\n * }\r\n */\r\n\r\n /*\r\n * emitArticleDownloadFileName(value): void {\r\n * this.articleDownloadFileName = value;\r\n * this.articleDownloadFileNameEmitter.next(value);\r\n * }\r\n */\r\n static emitBoxNonce(value: BoxNonceEntity): void {\r\n // debugger;\r\n this.boxNonceEmitter.next(value);\r\n }\r\n // ------------------------------------------------------------\r\n static emitChatImageUploadData(value: any) {\r\n this.chatImageUploadDataEmitter.next(value);\r\n }\r\n static emitChannelStreamMessage(value: any) {\r\n this.channelStreamMessageEmitter.next(value);\r\n }\r\n \r\n static emitChatActivityHistory (value : any) {\r\n this.chatHistoryArr = value;\r\n this.chatActivityHistoryEmitter.next(value);\r\n }\r\n static emitChatMessage(value: any) {\r\n this.chatMessageEmitter.next(value);\r\n }\r\n static emitChatModel (value : Chat) {\r\n this.chatModel = value;\r\n this.chatModelEmitter.next(value);\r\n }\r\n static emitChatModelToSetupComponent (value: Chat) {\r\n this.chatModelToSetupComponentEmitter.next(value);\r\n }\r\n\r\n static emitClearMessage(value: any): void {\r\n // debugger;\r\n this.clearMessageEmitter.next(value);\r\n }\r\n\r\n static emitCommunicationActivityBoxNonce ( value : BoxNonceEntity ) : void\r\n {\r\n // debugger;\r\n this.commActivityBoxNonceEmitter.next( value );\r\n }\r\n // \r\n static emitCommunicationActivity (value : CommunicationActivity) : void {\r\n // debugger;\r\n this.communicationActivityEmitter.next(value);\r\n }\r\n static emitCommType(value: string): void {\r\n // debugger;\r\n this.commTypeEmitter.next(value);\r\n }\r\n // ---------------------------------------------\r\n static emitComputeDistance (hb: Heartbeat) : any {\r\n this.computeDistanceEmitter.next(hb);\r\n }\r\n // ---------------------------------------------\r\n static emitConversation (value : any) {\r\n this.conversationEmitter.next(value);\r\n }\r\n static emitEnoteBoxNonce(value: BoxNonceEntity): void {\r\n // debugger;\r\n this.enoteBoxNonceEmitter.next(value);\r\n }\r\n static emitExecuteProfileInfoTasks(value: ProfileInfo): void {\r\n // debugger;\r\n this.profileInfo = value;\r\n this.executeProfileInfoTasksEmitter.next(value);\r\n }\r\n // ----------------------------------------------\r\n // Note: exitPage has the following scheme:\r\n // value == ModuleComponentLoader\r\n // OR\r\n // value==string==pageFromExit.pageToExit\r\n // pageFromExit==string, pageToExit.string\r\n // example: Members.MemberViewMgmt\r\n // ----------------------------------------------\r\n static emitExitPage (value : any) : void {\r\n // debugger;\r\n this.exitPageEmitter.next(value);\r\n }\r\n static emitMyErrorLog(value: any): void {\r\n // debugger;\r\n this.myErrorLogEmitter.next(value);\r\n }\r\n \r\n static emitBatchOfProfileTileIds (value : any[]) : void {\r\n this.batchOfProfileTileIdsEmitter.next(value);\r\n }\r\n \r\n static emitBlackListCredentialArr (value : KV[]) : void {\r\n // debugger;\r\n this.blackListCredentialArrEmitter.next(value);\r\n }\r\n\r\n static emitBoxEmailBn(value: BoxNonceEntity, boxType: string): void {\r\n // debugger;\r\n const boxEmailBn = new BoxEmailBn();\r\n\r\n boxEmailBn.boxNonceEntity = value;\r\n boxEmailBn.boxType = boxType;\r\n this.boxEmailBnEmitter.next(boxEmailBn);\r\n }\r\n\r\n static emitBreadcrumRing ( value : ModuleComponentLoader[]): void {\r\n this.breadcrumRing = value;\r\n this.breadcrumRingEmitter.next(value);\r\n }\r\n \r\n static emitCatchAllBackgroundImage (value : any) : void {\r\n this.catchAllBackgroundImageEmitter.next(value);\r\n }\r\n\r\n static emitCenterCoordinates(value: CenterCoordinates): void {\r\n this.centerCoordinatesEmitter.next(value);\r\n }\r\n\r\n static emitClearCreditCardData ( value : any ) : void\r\n {\r\n this.clearCreditCardDataEmitter.next( value );\r\n }\r\n\r\n static emitClearGlyphiconMenu(value: any): void {\r\n this.clearGlyphiconMenuEmitter.next(value);\r\n }\r\n static emitClearMembersTiles(value: boolean): void {\r\n this.clearMembersTilesEmitter.next(value);\r\n }\r\n\r\n static emitClearPageTitle ( value : any ) : void\r\n {\r\n this.clearPageTitleEmitter.next( value );\r\n }\r\n \r\n static emitClearPagerPhotoNavData (value : any) : void {\r\n this.clearPagerPhotoNavDataEmitter.next(value);\r\n }\r\n // Note: we do not sent an empty profileImages[]\r\n // using the profileImageEmitter since\r\n // the listeners carry out tasks on the basis of\r\n // the array data. Instead we use this emitter\r\n // to clear data on the respective components.\r\n // ----------------------------------------------------\r\n static emitClearProfileImages (value : any[]) : void {\r\n this.clearProfileImagesEmitter.next(value);\r\n }\r\n\r\n static emitClearUserData(value: any): void {\r\n this.clearUserDataEmitter.next(value);\r\n }\r\n\r\n static emitCheckLocalStorageForLoginSuccess (value : any): void {\r\n this.checkLocalStorageForLoginSuccessEmitter.next(value);\r\n }\r\n static emitCheckboxResult(value: any): void {\r\n this.checkboxResultEmitter.next(value);\r\n } \r\n static emitCheckOffOnStatus (value: OffOn) : void {\r\n this.checkOffOnStatusEmitter.next(value);\r\n }\r\n // \r\n static emitCheckOffOnStatusFromProfileTile (value : ProfileTile) : void {\r\n this.checkOffOnStatusFromProfileTileEmitter.next(value);\r\n }\r\n\r\n static emitCloseSidebar (value : boolean) : void {\r\n this.closeSidebarEmitter.next(value);\r\n }\r\n // Note: in some components and services, this vairable has an alias that is 'yourInfo'\r\n static emitCommunicator(value: Communicator): void {\r\n // this.uniqueAddSenderInfoArr(value);\r\n this.yourInfo = value;\r\n this.communicatorEmitter.next(value);\r\n }\r\n static emitYourCommunicator (value : Communicator) : void {\r\n this.yourInfo = value;\r\n this.communicatorEmitter.next(value);\r\n }\r\n static emitConnectionToken(value: string): void {\r\n this.connectionTokenArr.push(value);\r\n this.connectionTokenEmitter.next(value);\r\n }\r\n \r\n static emitCreateDictionaryFromDbDixie (value : string) : void {\r\n this.createDictionaryFromDbDixieEmitter.next(value);\r\n }\r\n\r\n static emitCurrentFocus (value : any): void {\r\n this.currentFocusEmitter.next(value);\r\n }\r\n static emitCurrentPage (value : any): void {\r\n this.currentPage = value;\r\n this.currentPageEmitter.next(value);\r\n }\r\n static emitOnKvPhotoSelectionChange (value : KvPhoto) : void {\r\n this.onKvPhotoSelectionChangeEmitter.next(value);\r\n }\r\n static emitCurrentPageOnGlyphiconChange (value : any) : void {\r\n this.currentPage = value;\r\n this.currentPageOnGlyphiconChangeEmitter.next(value);\r\n }\r\n static emitCurrentPageNum (value : any) : void {\r\n this.currentPageNo = value;\r\n this.currentPageNumEmitter.next(value);\r\n }\r\n static emitCurrentMemActGlyphForPhotoMgmt (value : any) : void {\r\n this.currentMemActGlyphForPhotoMgmt = value;\r\n this.currentMemActGlyphForPhotoMgmtEmitter.next(value);\r\n }\r\n static emitCurrentMemActGlyphForViewMember (value : any) : void {\r\n this.currentMemActGlyphForViewMember = value;\r\n this.currentMemActGlyphForViewMemberEmitter.next(value);\r\n }\r\n static emitDatePicker(value: EmitDatePickerResult): void {\r\n this.datePickerEmitter.next(value);\r\n }\r\n static emitDictionariesUpdated(value: any): void {\r\n this.dictionariesUpdatedEmitter.next(value);\r\n }\r\n static emitDisplayDifferentMemberView ( value ?: any ) : void\r\n {\r\n this.displayDifferentMemberViewEmitter.next( value );\r\n }\r\n static emitDisplayGlyphiconMenu ( value ?: any ) : void\r\n {\r\n this.glyphKvArr = value;\r\n this.displayGlyphiconMenuEmitter.next(value);\r\n }\r\n\r\n static emitDisplayViewMemberGlyphiconMenu (value ?: any) : void {\r\n this.kvGlyphArrForPhotoMgmt = value;\r\n this.displayViewMemberGlyphiconMenuEmitter.next(value);\r\n }\r\n\r\n static emitDisplayViewMemberGlyphiconMenuForSitUser (value ?: any) : void {\r\n this.displayViewMemberGlyphiconMenuForSitUserEmitter.next(value);\r\n }\r\n\r\n // Note: photoMgmtGlyphMenuKvArr === glyphKvArrForPhotoMgmt\r\n static emitDisplayPhotoMgmtGlyphiconMenu (value ?: any) : void {\r\n this.kvGlyphArrForPhotoMgmt = value; // this.photoMgmtGlyphMenuKvArr = \r\n this.displayPhotoMgmtGlyphiconMenuEmitter.next(value);\r\n }\r\n // static emitDisplayGlyphMenuForKvPhotoMgmtPage(value: KvPhoto): void {\r\n // this.displayGlyphMenuForKvPhotoMgmtPageEmitter.next(value);\r\n // } \r\n static emitDisplayDefaultGlyphiconMenu(): void {\r\n this.displayDefaultGlyphiconMenuEmitter.next();\r\n }\r\n static emitDisplayProfileView (value : any) : void {\r\n this.displayProfileViewEmitter.next(value);\r\n }\r\n // No listener for this emitter:\r\n static emitDisplayPrimaryImage(value?: any): void {\r\n this.displayPrimaryImageEmitter.next(value);\r\n }\r\n // Display Background Image Outside Angular:\r\n static emitDisplayBgiOutsideAngular (value ?: any) : void {\r\n this.displayBgiOutsideAngularEmitter.next(value);\r\n }\r\n // \r\n\r\n static emitDisplayUserPicsFromServer (value: string) : void {\r\n this.displayUserPicsFromServerEmitter.next(value);\r\n }\r\n\r\n static emitDisplayMyPagerVKvPhotoNav (value ?: any) : void {\r\n this.displayMyPagerVKvPhotoNavEmitter.next(value);\r\n }\r\n\r\n static emitDistance (value : any ) : void\r\n {\r\n this.distanceEmitter.next( value );\r\n }\r\n\r\n static emitDob (value : any) : void {\r\n this.dobEmitter.next(value);\r\n }\r\n\r\n static emitDropDownResult ( value: EmitDropDownResult) : void\r\n {\r\n this.dropDownResultEmitter.next( value );\r\n }\r\n static emitEditImage (value : any): void {\r\n this.editImageEmitter.next(value);\r\n }\r\n static emitEditParagraph (value : any): void {\r\n this.editParagraphEmitter.next(value);\r\n }\r\n\r\n static emitElementFullyRendered (value : any) : void {\r\n this.elementFullyRenderedEmitter.next(value);\r\n }\r\n\r\n static emitEmailTile(value: CommunicationActivity): void {\r\n this.emailTileEmitter.next(value);\r\n }\r\n static emitEnoteTile(value: CommunicationActivity): void {\r\n this.enoteTileEmitter.next(value);\r\n }\r\n static emitFileChunkCount(value: number): void {\r\n this.fileChunkCountEmitter.next(value);\r\n }\r\n static emitFile(value: File): void {\r\n this.fileEmitter.next(value);\r\n }\r\n static emitFiles(value: File[]): void {\r\n this.filesEmitter.next(value);\r\n }\r\n static emitFileImage(value: string): void {\r\n this.fileImageEmitter.next(value);\r\n }\r\n static emitFileImages(value: string[]): void {\r\n this.fileImagesEmitter.next(value);\r\n }\r\n static emitFileName(value: string): void {\r\n this.fileNameEmitter.next(value);\r\n }\r\n \r\n static emitFireMcLoaderRoute (value : ModuleComponentLoader) : void {\r\n this.fireMcLoaderRouteEmitter.next(value);\r\n }\r\n // formDataEmitter\r\n static emitFormData (value: FormData) {\r\n this.formDataEmitter.next(value);\r\n }\r\n static emitGestureDivId (value : any): void {\r\n this.gestureDivIdEmitter.next(value);\r\n }\r\n static emitGesture(value: string): void {\r\n this.gestureEmitter.next(value);\r\n }\r\n static emitGetKeys(value: any): void {\r\n this.getKeysEmitter.next(value);\r\n }\r\n \r\n static emitFacilitatorAccessTokenSitUser ( value : any )\r\n {\r\n this.facilitatorAccessTokenEmitter.next( value );\r\n }\r\n\r\n //static emitFetchSitUser(value: SitUser) {\r\n // this.sitUser = value;\r\n // this.sitUser = this.sitUser;\r\n // this.fetchSitUserEmitter.next(value);\r\n //}\r\n static emitGroup(value: Group) {\r\n this.groupEmitter.next(value);\r\n }\r\n static emitGroupChatMessage(value: Chat) {\r\n this.groupChatMessageEmitter.next(value);\r\n }\r\n static emitHeartbeat(value: Heartbeat): void {\r\n this.heartbeat = value;\r\n this.heartbeatEmitter.next(value);\r\n }\r\n static emitHeightWidth (value : any): void {\r\n this.heightWidthEmitter.next(value);\r\n }\r\n static emitHttpEvent (value : HttpEvent) {\r\n this.httpEventEmitter.next(value);\r\n }\r\n static emitImage(value: string): void {\r\n this.imageEmitter.next(value);\r\n }\r\n static emitImageFile(value: any): void {\r\n this.imageFileEmitter.next(value);\r\n }\r\n /*\r\n * emitChatMessage(value) {\r\n * this.chatMessageEmitter.next(value);\r\n * }\r\n * emitGroupChatMessage(value) {\r\n * this.groupChatMessageEmitter.next(value);\r\n * }\r\n * ---------------------------------------------------------------\r\n */\r\n static emitIndexDbBoxNonceData(value: BoxNonceEntity): void {\r\n this.indexDbBoxNonceDataEmitter.next(value);\r\n }\r\n static emitIndexDbChatHistory(value: Chat[]): void {\r\n this.indexDbChatHistoryEmitter.next(value);\r\n }\r\n static emitIndexDbChatHistoryIds(value: number[]): void {\r\n this.indexDbChatHistoryIdsEmitter.next(value);\r\n }\r\n // ---------------------------------------------------------------\r\n static emitIndexDbDataFoundWithKey(value: any): void {\r\n this.indexDbDataFoundWithKeyEmitter.next(value);\r\n }\r\n static emitIndexDbDataFoundWithIndex(value: any): void {\r\n this.indexDbDataFoundWithKeyEmitter.next(value);\r\n }\r\n static emitIndexDbData(value: IndexedDbData): void {\r\n this.indexDbDataEmitter.next(value);\r\n }\r\n static emitIndexDbDefaultPics(value: KvPhoto[]): void {\r\n this.indexDbDefaultPicsEmitter.next(value);\r\n }\r\n static emitIndexDbEmailTileIds(value: number[]): void {\r\n this.indexDbEmailTileIdsEmitter.next(value);\r\n }\r\n static emitIndexDbEmailTiles(value: CommunicationActivity[]): void {\r\n this.indexDbEmailTilesEmitter.next(value);\r\n }\r\n static emitIndexDbEnoteTileIds(value: number[]): void {\r\n this.indexDbEnoteTileIdsEmitter.next(value);\r\n }\r\n static emitIndexDbEnoteTiles(value: CommunicationActivity[]): void {\r\n this.indexDbEnoteTilesEmitter.next(value);\r\n }\r\n static emitIndexDbLoginSuccess(value: LoginSuccess): void {\r\n this.loginSuccess = value;\r\n this.indexDbLoginSuccessEmitter.next(value);\r\n }\r\n static emitIndexDbMemberActivities(value: MemberActivity[]): void {\r\n this.indexDbMemberActivitiesEmitter.next(value);\r\n }\r\n static emitInitModalDialogueComponent (value : any): void {\r\n this.initModalDialogueComponentEmitter.next(value);\r\n }\r\n static emitIndexDbMyErrorLogs(value: LogError[]): void {\r\n this.myErrorLogs = value;\r\n this.indexDbMyErrorLogsEmitter.next(value);\r\n }\r\n static emitIndexDbMyMemberActivities(value: MemberActivity[]): void {\r\n this.indexDbMyMemberActivitiesEmitter.next(value);\r\n }\r\n static emitIndexDbProfileTileIds(value: number[]): void {\r\n this.indexDbProfileTileIdsEmitter.next(value);\r\n }\r\n static emitIndexDbProfileImageDictionary(value: Dictionary): void {\r\n this.indexDbProfileImageDictionaryEmitter.next(value);\r\n }\r\n static emitIndexDbProfilePics(value: ProfilePics): void {\r\n this.indexDbProfilePicsEmitter.next(value);\r\n }\r\n static emitIndexDbProfileInfo(value: any): void {\r\n this.indexDbProfileInfoEmitter.next(value);\r\n }\r\n static emitIndexDbProfileTiles(value: ProfileTile[]): void {\r\n this.indexDbProfileTilesEmitter.next(value);\r\n }\r\n static emitIndexDbPreference(value: Preference): void {\r\n this.indexDbPreferenceEmitter.next(value);\r\n }\r\n static emitIndexDbSaveSuccessful (value : any) : void {\r\n this.indexDbSaveSuccessfulEmitter.next(value);\r\n }\r\n static emitIndexDbNgxSaveSuccessful(value: any): void {\r\n this.indexDbNgxSaveSuccessfulEmitter.next(value);\r\n }\r\n static emitIndexDbSaveStore ( value: any ): void\r\n {\r\n this.indexDbSaveStoreEmitter.next( value );\r\n }\r\n static emitIndexDbSitUser(value: SitUser): void {\r\n this.sitUser = value;\r\n this.indexDbSitUserEmitter.next(value);\r\n }\r\n static emitIndexDbSitUsers(value: SitUser[]): void {\r\n this.indexDbSitUsersEmitter.next(value);\r\n }\r\n static emitIndexDbSitUserBoxNonceData(value: BoxNonceEntity): void {\r\n this.indexDbSitUserBoxNonceDataEmitter.next(value);\r\n }\r\n static emitIndexDbUser(value: User): void {\r\n this.indexDbUserEmitter.next(value);\r\n }\r\n static emitIndexDbUserPhotoIds(value: any): void {\r\n this.indexDbUserPhotoIdsEmitter.next(value);\r\n }\r\n static emitIndexDbYourMemberActivities(value: MemberActivity[]): void {\r\n this.indexDbYourMemberActivitiesEmitter.next(value);\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n static emitIsAddressComplete ( val : boolean ) : void\r\n {\r\n this.isAddressCompleteEmitter.next( val );\r\n } \r\n\r\n static emitIsBrowsingPic (val : boolean) : void {\r\n this.isBrowsingPicEmitter.next(val);\r\n }\r\n static emitIsConnectionEstablished ( value : boolean): void {\r\n this.isConnectionEstablishedEmitter.next(value);\r\n }\r\n\r\n static emitIsCameraVisible ( value : boolean ) : void\r\n {\r\n this.isCameraVisibleEmitter.next( value );\r\n }\r\n // -------------------------------------------------------------------------\r\n // Note: Date: 20220508\r\n // isCameraVisibleEmitter && isCameraGlypgVisibleEmitter work as a pair / tuple\r\n // emitters that alters the isCameraVisible' value.\r\n // the isCameraGlypgVisibleEmitter is emitted by FileUploadComponent and listened to by PagerVerticalPhotoMgmtComponent\r\n // and isCameraVisibleEmitter is emitter by PagerVerticalPhotoMgmtComponent and listened to by FileUploadComponent\r\n // so that there is no cyclic published and subscriber.\r\n // -------------------------------------------------------------------------\r\n static emitIsCameraGlyphVisible (value : boolean) : void {\r\n this.isCameraGlyphVisibleEmitter.next(value);\r\n }\r\n\r\n static emitIsCameraClosedBool ( value : boolean ) : void\r\n {\r\n this.isCameraClosedBoolEmitter.next( value );\r\n }\r\n\r\n static emitIsCreditCardComplete ( val : boolean ) : void\r\n {\r\n this.isCreditCardCompleteEmitter.next( val );\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static emitIsEditProfile ( value : boolean): void {\r\n // debugger;\r\n this.isEditProfile = value;\r\n this.isEditProfileEmitter.next(value);\r\n }\r\n static emitIsImageUploadFormVisible (value : boolean) : void {\r\n this.isImageUploadFormVisibleEmitter.next(value);\r\n }\r\n static emitIsHome ( value : boolean ) : void\r\n {\r\n this.isHome = value;\r\n this.isHomeEmitter.next( value );\r\n }\r\n // ----------------------------------------------------\r\n static emitIsLoginSuccess (value : boolean) : void {\r\n this.isLoginSuccessEmitter.next(value);\r\n }\r\n // ----------------------------------------------------\r\n static emitIsMobile ( value : boolean): void {\r\n this.isMobilevar = value;\r\n this.isMobileEmitter.next(value);\r\n }\r\n static emitIsReply ( value : boolean): void {\r\n this.isReplyEmitter.next(value);\r\n }\r\n static emitIsModal ( value : boolean ) : void\r\n {\r\n this.isModalEmitter.next( value );\r\n }\r\n static emitIsMyStuffOpen ( value : boolean ) : void\r\n {\r\n this.isMyStuffOpenEmitter.next( value );\r\n }\r\n // \r\n static emitIsMyProfile (value : boolean) : void {\r\n this.isMyProfile = value;\r\n this.isMyProfileEmitter.next(value);\r\n }\r\n static emitIsModalVisible ( value : boolean ) : void\r\n {\r\n this.isModalVisibleEmitter.next(value);\r\n } \r\n static emitIsShowPhotoUpload (value : boolean) : void {\r\n this.isShowPhotoUploadUi.isOpened = value; \r\n this.isShowPhotoUploadEmitter.next(value);\r\n }\r\n // \r\n static emitIsSidebarOpen (value : boolean) : void {\r\n this.isSidebarOpenEmitter.next(value);\r\n }\r\n\r\n static emitIsSignupModal ( value : boolean ) : void\r\n {\r\n this.isSignupModalEmitter.next(value);\r\n }\r\n // \r\n static emitIsNewPhotoUploaded (value : boolean) : void {\r\n this.isNewPhotoUploaded = value;\r\n this.isNewPhotoUploadedEmitter.next(value);\r\n }\r\n static emitIsOpen ( value: Bool ) : void\r\n {\r\n this.isOpenEmitter.next( value );\r\n }\r\n static emitIsPhotoMgmt ( value : boolean): void {\r\n this.isPhotoMgmt = value;\r\n this.isPhotoMgmtEmitter.next(value);\r\n }\r\n static emitIsToggleCamera ( value : boolean): void {\r\n this.isToggleCameraEmitter.next(value);\r\n }\r\n static emitIsToggleFileUpload (value : boolean) : void {\r\n this.isToggleFileUploadEmitter.next(value);\r\n }\r\n static emitIsUnlocked(value: boolean): void {\r\n this.isUnlocked = value;\r\n this.isUnlockedEmitter.next(value);\r\n }\r\n static emitIsViewMember(value: boolean): void {\r\n this.isViewMember = value;\r\n // debugger;\r\n this.isViewMemberEmitter.next(value);\r\n }\r\n static emitIsVsScroll ( value : boolean): void {\r\n this.isVsScrollEmitter.next(value);\r\n }\r\n static emitIsWaitingOnCurrStateOfUser ( value : boolean): void {\r\n this.isWaitingOnCurrStateOfUserEmitter.next(value);\r\n }\r\n static emitKeyValueResult(value: KeyValueResult): void {\r\n this.keyValueResultEmitter.next(value);\r\n }\r\n //\r\n static emitKvMemberActivityGlyph (value : KvMemberActivityGlyph) : void {\r\n this.kvMemberActivityGlyphEmitter.next(value);\r\n }\r\n /*\r\n * -------------------------------------------------------------------\r\n * Begin of Module & Component Loader Emitters\r\n * -------------------------------------------------------------------\r\n */\r\n static emitLoadChildren(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadChildrenEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadModule(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n /*\r\n * this.message = 'in emitterService->static emitLoadModule()-> emitting mcLoader.componentName :';\r\n * this.message += this.mcLoader.componentName + '\\t mcLoader.moduleName: ' + this.mcLoader.moduleName;\r\n * alert(this.message);\r\n */\r\n this.loadModuleEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadActivityComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadActivityComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadAppComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadAppComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadStaffComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadStaffComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadChatComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadChatComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadCheckboxRadioComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadCheckboxRadioComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadCommunicationComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadCommunicationComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadGestureComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadGestureComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadLogregComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadLogregComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadKeyValueComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadKeyValueComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadLandingPage(value: boolean): void {\r\n this.loadLandingPageEmitter.next(value);\r\n }\r\n static emitLoadMasterComponents(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadMasterComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadMemberComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadMemberComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadProfileComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadProfileComponentEmitter.next(this.mcLoader);\r\n }\r\n // TODO: delete after testing/before deployment:\r\n //static emitLoadRemoteDataInBackground (value : string) : void {\r\n // this.loadRemoteDataInBackgroundEmitter.next(value);\r\n //}\r\n\r\n static emitLoadModalComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadModalComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadSharedComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadSharedComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadSlaveComponents(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadSlaveComponentEmitter.next(this.mcLoader);\r\n }\r\n static emitLoadSpinnerComponent(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.loadSpinnerComponentEmitter.next(this.mcLoader);\r\n }\r\n /*\r\n * -------------------------------------------------------------------\r\n * End of Module & Component Loader Emitters\r\n * -------------------------------------------------------------------\r\n */\r\n static emitLocalStorageLoginSuccess(value: LoginSuccess): void {\r\n this.loginSuccess = value;\r\n this.localStorageLoginSuccessEmitter.next(value);\r\n }\r\n // \r\n static emitLogRegModel (value : LogRegModel) : void {\r\n this.logRegModel = value; \r\n // debugger;\r\n this.logRegModelEmitter.next(JSON.parse(JSON.stringify(value)));\r\n }\r\n\r\n static emitLoginSuccess(value: LoginSuccess): void {\r\n this.loginSuccess = value; // CopyServiceStatic.copyLoginSuccessIfExists( this.loginSuccess, value );\r\n // debugger;\r\n this.loginSuccessEmitter.next(value);\r\n }\r\n static emitLogout (value : LoginSuccess) : void {\r\n this.loginSuccess = value;\r\n this.logoutEmitter.next(value);\r\n this.isLoggedOutByUser = true;\r\n }\r\n /*\r\n * static emitMyConversations(value) {\r\n * this.myConversationsEmitter.next(value);\r\n * }\r\n */\r\n static emitMailBox(value: MailBox): void {\r\n this.mailBoxEmitter.next(value);\r\n }\r\n // Note: the value for this emitter is always a string and a positive/negative #%, eg. -10%\r\n static emitMainTopCss(value: number): void {\r\n this.mainTopCssEmitter.next(value);\r\n }\r\n // -----------------------------------------------------------------\r\n // Note: the activatedComponentRouteDictionary gets populated with\r\n // mcLoader model when each time a calling function emits\r\n // the mcLoader.\r\n // -----------------------------------------------------------------\r\n static emitMCLoader(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n \r\n this.mcLoaderEmitter.next(value);\r\n }\r\n // -----------------------------------------------------------------\r\n static emitMCLoaderToNavigate (value : ModuleComponentLoader) : void {\r\n this.mcLoader = value;\r\n \r\n this.mcLoaderToNavigateEmitter.next(value);\r\n }\r\n // \r\n // -----------------------------------------------------------------\r\n static emitTotalPhotoCount (value : any) : void {\r\n this.totalPhotoCountEmitter.next(value);\r\n }\r\n // -----------------------------------------------------------------\r\n static emitMemberPhoto(value: KvPhoto): void {\r\n this.memberPhoto = value;\r\n this.memberPhotoEmitter.next(value);\r\n }\r\n static emitMemberActivity(value: CommunicationActivity): void {\r\n this.memberActivity = value;\r\n this.memberActivityEmitter.next(value);\r\n }\r\n static emitCommunicationActivities(value: CommunicationActivity[]): void {\r\n this.commActivities = value;\r\n this.communicationActivitiesEmitter.next(value);\r\n }\r\n \r\n static emitToSetMemberViewMgmtModel (value : MemberViewMgmtModel) : void {\r\n this.memberViewMgmtModel = value;\r\n this.toSetMemberViewMgmtModelEmitter.next(value);\r\n }\r\n\r\n static emitMemberViewMgmtModel (value : MemberViewMgmtModel) : void {\r\n this.memberViewMgmtModel = value;\r\n this.memberViewMgmtModelEmitter.next(value);\r\n }\r\n static emitMembers(value: Member[]): void {\r\n this.membersEmitter.next(value);\r\n }\r\n static emitMessage (value : any): void {\r\n this.message = value;\r\n this.messageEmitter.next(value);\r\n }\r\n static emitModel (value : any) {\r\n this.anyModel = value;\r\n this.modelEmitter.next(value);\r\n }\r\n static emitMyConversations(value: ChatActivity[]) {\r\n this.myConversationsEmitter.next(value);\r\n }\r\n static emitMyGroups (value : any) {\r\n this.myGroupsEmitter.next(value);\r\n }\r\n static emitMyActivityArr(value: CommunicationActivity[]): void {\r\n this.commActivities = this.myActivityArr = value;\r\n this.myActivityArrEmitter.next(value);\r\n }\r\n\r\n // static emitMyEmailBoxNonce ( value : MemberActivity[] ) : void\r\n // {\r\n // this.myEmailBoxNonceEmitter.next( value );\r\n // }\r\n\r\n static emitNavbarActionType(value: ActionId) {\r\n this.navbarActionTypeEmitter.next(value);\r\n }\r\n\r\n static emitNotificationActivity (value : BoxNonceEntity) {\r\n this.notificationActivityEmitter.next(value);\r\n }\r\n\r\n static emitOffOn (value : OffOn) : void {\r\n this.offOnEmitter.next(value);\r\n }\r\n\r\n static emitOffOnResult (value : any): void {\r\n this.offOnResultEmitter.next(value);\r\n }\r\n static emitOffOnStatusChange(value: any): void {\r\n this.offOnStatusChangeEmitter.next(value);\r\n }\r\n\r\n static emitOpenModal ( value : any ) : void\r\n {\r\n this.openModalEmitter.next( value );\r\n }\r\n\r\n static emitPagedProfileImages (value : any): void {\r\n this.pagedProfileImagesEmitter.next(value);\r\n }\r\n static emitPager (value : any): void {\r\n this.pagerEmitter.next(value);\r\n }\r\n static emitPagerBreadcrum ( value : PagerBreadcrum ) : void\r\n {\r\n this.pagerBreadcrum = value;\r\n this.breadcrumRing = this.pagerBreadcrum.breadcrumRing;\r\n this.pagerBreadcrumEmitter.next( value );\r\n } \r\n \r\n static emitPagerChat (value : any) : void {\r\n this.pagerChat = value;\r\n this.pagerChatEmitter.next(value);\r\n }\r\n //\r\n static emitPagedChats (value : Chat[]) : void {\r\n this.pagedChats = value;\r\n this.pagedChatsEmitter.next(value);\r\n }\r\n static emitPagerBreadcrumDirection (value : string) : void {\r\n this.pagerBreadcrumDirectionEmitter.next(value);\r\n }\r\n // \r\n static emitDisplayPagerVKvPhotoNav (value : any) : void {\r\n this.displayPagerVKvPhotoNavEmitter.next(value);\r\n }\r\n static emitParagraph (value : any): void {\r\n this.paragraphEmitter.next(value);\r\n }\r\n static emitPageSize (value : any) : void {\r\n this.pageSizeEmitter.next(value);\r\n }\r\n static emitPagerPhotoMgmt (value : PagerPhotoMgmt | any) : void {\r\n this.pagerPhotoMgmtEmitter.next(value);\r\n }\r\n static emitPagerVKvPhotoNav (value : PagerPhotoMgmt|any) : void {\r\n this.pagerVKvPhotoNavEmitter.next(value);\r\n }\r\n // BoxNonceEntity\r\n static emitPhotoBn ( value:any ) : void\r\n {\r\n this.photoBnEmitter.next( value );\r\n }\r\n\r\n static emitPhotoLockUnLock(kv: KvPhoto): void {\r\n // debugger;\r\n if (kv.key.toLowerCase().indexOf('tala') !== -1) {\r\n this.kvPhotoLock = kv;\r\n } else if (kv.key.toLowerCase().indexOf('unlock') !== -1) {\r\n this.kvPhotoUnLock = kv;\r\n } else if (kv.key.toLowerCase().indexOf('private') !== -1) {\r\n this.kvPhotoPrivate = kv;\r\n } else if (kv.key.toLowerCase().indexOf('static') !== -1) {\r\n this.kvPhotoPublic = kv;\r\n }\r\n this.photoLockUnLockEmitter.next(kv);\r\n }\r\n static emitPhotoMgmtMenuObservable(value: any): void {\r\n this.photoMgmtMenuObservableEmitter.next(value);\r\n }\r\n static emitPhotoMgmtPrimaryAction (value : any) : void {\r\n this.photoMgmtPrimaryActionEmitter.next(true);\r\n }\r\n static emitPhotoMgmtAction(value: PhotoMgmtAction): void {\r\n this.photoMgmtAction = value;\r\n this.photoMgmtActionEmitter.next(value);\r\n }\r\n \r\n static emitPreferenceKvAnyArr (value : KvAny[]) : void {\r\n this.preferenceKvAnyArrEmitter.next(value);\r\n }\r\n static emitProfile(value: Profile): void {\r\n this.profileEmitter.next(value);\r\n }\r\n \r\n static emitProfileContentKvAnyArr (value : KvAny[]) : void {\r\n this.profileContentKvAnyArrEmitter.next(value);\r\n }\r\n\r\n static emitProfileInfoKvAnyArr (value : KvAny[]) : void {\r\n this.profileInfoKvAnyArrEmitter.next(value);\r\n }\r\n\r\n // Since emitting an image string does not say whom it belongs to, we sent the entire profileTile\r\n static emitProfileImage(value: ProfileTile): void {\r\n this.profileImageEmitter.next(value);\r\n }\r\n\r\n // ----------------------------------------------------\r\n // Note: we do not sent an empty profileImages[]\r\n // using the profileImageEmitter since\r\n // the listeners carry out tasks on the basis of\r\n // the array data. Instead we use clearProfileImagesEmitter\r\n // to clear data on the respective components.\r\n // ----------------------------------------------------\r\n static emitProfileImages(value: KvPhoto[]): void {\r\n this.profileImages = value;\r\n // debugger;\r\n this.profileImagesEmitter.next(value);\r\n }\r\n // ----------------------------------------------------\r\n\r\n static emitProfileImageArr(value: ProfileImage[]): void {\r\n this.profileImageArrEmitter.next(value);\r\n }\r\n static emitProfileImageKvArr(value: KvAny[]): void {\r\n this.profileImageKvArrEmitter.next(value);\r\n }\r\n static emitProfileInfo (value : ProfileInfo) : void {\r\n // debugger;\r\n this.memberViewMgmtModel.profileInfo = value;\r\n this.profileInfo = value;\r\n this.profileInfoEmitter.next(value);\r\n }\r\n\r\n static emitProfileInfoView (value : ProfileInfo) : void {\r\n // debugger;\r\n this.memberViewMgmtModel.profileInfoView = value;\r\n this.profileInfoView = value;\r\n this.profileInfoViewEmitter.next(value);\r\n }\r\n\r\n static emitProfileTile(value: ProfileTile): void {\r\n // debugger;\r\n this.memberViewMgmtModel.profileTile = value;\r\n this.profileTile = value;\r\n this.profileTileEmitter.next(value);\r\n } \r\n static emitProfileTileComplete(pTile: ProfileTile): void {\r\n // alert('emitterService->static emitProfileTileComplete. pTile: ' + pTile.profileName);\r\n this.profileTileCompleteEmitter.next(pTile);\r\n }\r\n static emitProfileTilesArr(value: ProfileTileArrEmitterModel): void {\r\n this.profileTilesArr = value.arr;\r\n this.profileTilesArrEmitter.next(value);\r\n }\r\n static emitProfileTilesArrayUpdated (value : any): void {\r\n this.profileTilesArrayUpdatedEmitter.next(value);\r\n }\r\n static emitProfilePics(value: ProfilePics): void {\r\n // debugger;\r\n this.profilePics = value;\r\n this.profilePicsEmitter.next(value);\r\n }\r\n static emitRadioboxResult (value : any): void {\r\n this.radioboxResultEmitter.next(value);\r\n }\r\n static emitReceiverSitUserId(value: number): void {\r\n this.receiverSitUserIdEmitter.next(value);\r\n }\r\n static emitRefreshPage(value: boolean): void {\r\n this.refreshPageEmitter.next(value);\r\n } \r\n static emitRefreshMemberTile (value: any): void {\r\n this.refreshMemberTileEmitter.next( value );\r\n }\r\n static emitRemoveComponent ( value : ModuleComponentLoader): void {\r\n this.removeComponentEmitter.next(value);\r\n }\r\n static emitResetDbgi(value: boolean): void {\r\n this.resetDbgiEmitter.next(value);\r\n }\r\n\r\n static emitResetPickedDate(value: boolean): void {\r\n this.resetPickedDateEmitter.next(value);\r\n }\r\n static emitResetPasswordCode(code: any): void {\r\n this.resetPasswordCodeEmitter.next(code);\r\n }\r\n\r\n static emitResetSaltShaker ( value : Salt ) : void\r\n {\r\n this.resetSaltShakerEmitter.next( value );\r\n }\r\n\r\n static emitReturnUrl (value : any): void {\r\n this.returnUrl = value;\r\n this.returnUrlEmitter.next(value);\r\n }\r\n // Background-processing-system:\r\n static emitRunBackgroundProcessMethod (value : RemoteDataModel) : void {\r\n this.rdm = value;\r\n this.runBackgroundProcessMethodEmitter.next(value);\r\n }\r\n static emitRunBiasModuleComponentNgAfterViewInit ( value : any ) : void\r\n {\r\n this.runBiasModuleComponentNgAfterViewInitEmitter.next( value );\r\n }\r\n static emitRunGetEnumsFromServer ( value : true ) : void\r\n {\r\n this.runGetEnumsFromServerEmitter.next( value );\r\n }\r\n static emitRunMemberTileAfterViewInit(value: ProfileTile): void {\r\n this.runMemberTileAfterViewInitEmitter.next(value);\r\n }\r\n static emitRunNgAfterViewInit(value: any): void {\r\n this.runNgAfterViewInitEmitter.next(value);\r\n }\r\n \r\n static emitRunOffOnComponentNgAfterViewInit (value : any) : void {\r\n this.runOffOnComponentNgAfterViewInitEmitter.next(value);\r\n }\r\n static emitSaltyPair(saltyPair: NaclPairClient): void {\r\n this.setSaltyPair(saltyPair);\r\n this.naclEmitter.next(saltyPair);\r\n }\r\n\r\n\r\n // static emitSaveSitUserToIndexedDbAndDictionary ( value )\r\n // {\r\n // this.saveSitUserToIndexedDbAndDictionaryEmitter.next( value );\r\n // } \r\n\r\n static emitSelectedProfileTile (value : any) {\r\n this.selectedProfileTile = value;\r\n this.selectedProfileTileEmitter.next(value);\r\n }\r\n\r\n static emitSenderReceiverEmails (value : any) {\r\n this.senderReceiverEmails = value;\r\n this.senderReceiverEmailsEmitter.next(value);\r\n }\r\n // -----------------------------------------------------------------\r\n // Note: This emitter is to be used by any component that has a cancel-button.\r\n // Because once cancelled, the user should go back to the previous page (if that is the desired behavior)\r\n static emitSetBreadcrumForPage ( value : any ) : void\r\n {\r\n this.setBreadcrumPageEmitter.next( value );\r\n }\r\n static emitSetBreadcrumForPageSwitch(value: any): void {\r\n this.setBreadcrumForPageSwitchEmitter.next(value);\r\n }\r\n static emitSetMemberViewPage(page: KvPhoto): void {\r\n this.setMemberViewPageEmitter.next(page);\r\n }\r\n static emitSetMemberViewGlyphMenu ( value :any ) : void\r\n {\r\n this.setMemberViewGlyphMenuEmitter.next( value );\r\n } //\r\n\r\n static emitSetPage (page : number) : void {\r\n this.setPageEmitter.next(page);\r\n }\r\n static emitSetPhotoNavItem(kvp: KvPhoto): void {\r\n this.setPhotoNavItemEmitter.next(kvp);\r\n }\r\n static emitSetPhotoMgmtPage(page: KvPhoto): void {\r\n this.currentKvPhoto = page;\r\n this.setPhotoMgmtPageEmitter.next(page);\r\n }\r\n static emitSetPhotoMgmtPageGlyph (page : KvMemberActivityGlyph): void {\r\n this.setPhotoMgmtPageGlyphEmitter.next(page);\r\n }\r\n static emitSetProfilePicsPage(page: KvPhoto): void {\r\n this.setProfilePicsPageEmitter.next(page);\r\n }\r\n static emitSetSignedInUserBackgroundImage (value: boolean) : void {\r\n this.setSignedInUserBackgroundImageEmitter.next(value);\r\n\t}\r\n static emitSignedInUser(value: SitUser): void {\r\n this.signedInUser = value;\r\n this.signedInUserEmitter.next(value);\r\n }\r\n \r\n static emitSitUser (value : SitUser) : void {\r\n this.sitUser = value;\r\n this.sitUserEmitter.next(value);\r\n }\r\n static emitSitUserBoxNonce ( value : BoxNonceEntity ) : void\r\n {\r\n this.sitUserBoxNonceEmitter.next( value );\r\n } \r\n // ------------------------------------------------------------ \r\n static emitStreamMessage(value: BoxNonceEntity) {\r\n this.streamMessageEmitter.next(value);\r\n }\r\n static emitSubmitArticleSuccessful (value : any): void {\r\n this.submitArticleSuccessfulEmitter.next(value);\r\n }\r\n static emitTempFile(value: any): void {\r\n this.tempFileEmitter.next(value);\r\n }\r\n static emitTheirActivityArr(value: CommunicationActivity[]): void {\r\n this.commActivities = this.theirActivityArr = value;\r\n this.theirActivityArrEmitter.next(value);\r\n }\r\n static emitToggleFaderAnim (value : any): void {\r\n this.toggleFaderAnimEmitter.next(value);\r\n }\r\n //\r\n static emitToggleAccordion (value : any) : void {\r\n this.toggleAccordionEmitter.next(value);\r\n }\r\n\r\n static emitToggleCameraGlyph (value: any) : void {\r\n this.toggleCameraGlyphEmitter.next(value);\r\n }\r\n\r\n static emitToggleIsCancelZipInstruction(): void {\r\n this.toggleIsCancelZipInstructionEmitter.next(true);\r\n }\r\n static emitToggleIsWritePad(): void {\r\n this.toggleIsWritePadEmitter.next(true);\r\n }\r\n static emitToggleIsMobile(): void {\r\n this.isMobilevar = !this.isMobilevar;\r\n this.toggleIsMobileEmitter.next(true);\r\n }\r\n static emitToggleThis(value: any): void {\r\n this.toggleThisEmitter.next(value);\r\n }\r\n static emitToggleIsSendFile(value: boolean): void {\r\n this.toggleIsSendFileEmitter.next(value);\r\n }\r\n static emitToggleIsUpload(): void {\r\n this.toggleIsUploadEmitter.next(true);\r\n }\r\n\r\n static emitToggleModalDialog(): void {\r\n this.toggleModalDialogEmitter.next(true);\r\n }\r\n /*\r\n * static emitTreeNode(value) {\r\n * this.treeNodeEmitter.next(value);\r\n * }\r\n */\r\n static emitUpdateBrdCrumRing(value: ModuleComponentLoader): void {\r\n this.mcLoader = value;\r\n this.updateBrdCrumRingEmitter.next(this.mcLoader);\r\n }\r\n // \r\n static emitUpdateKvPhotoOnUserAction (value ?: KvPhoto) : void {\r\n this.updateKvPhotoOnUserActionEmitter.next(value);\r\n }\r\n\r\n static emitUpdatePrimaryImage(value?: any): void {\r\n this.updatePrimaryImageEmitter.next(value);\r\n }\r\n \r\n static emitUpdateDistanceAndProfileNameAndOffOn (value : any) : void {\r\n this.updateDistanceAndProfileNameAndOffOnEmitter.next(value);\r\n }\r\n static emitUpgrade ( value : PayPalOrder ) : void\r\n {\r\n this.payPalOrder = value;\r\n this.upgrade = value.upgrade;\r\n this.upgradeEmitter.next( value );\r\n }\r\n static emitUpgraded (value : LoginSuccess) : void {\r\n this.loginSuccess = value;\r\n this.upgradedEmitter.next(value);\r\n }\r\n\r\n static emitUploadedKvPhoto (value : KvPhoto) : void {\r\n this.uploadedKvPhotoEmitter.next(value);\r\n }\r\n\r\n static emitUploadedProfilePics (value : ProfilePics) : void { \r\n this.uploadedProfilePicsEmitter.next(value);\r\n }\r\n static emitUploadedPicsBoxNonce(value: BoxNonceEntity): void {\r\n this.uploadedPicsBoxNonceEmitter.next(value);\r\n }\r\n static emitUserAndPageTitle (value : UserAndPageTitle) : void {\r\n this.userAndPageTitle = value;\r\n this.userAndPageTitleEmitter.next(value);\r\n }\r\n \r\n static emitViewMember (value:ModuleComponentLoader) : void {\r\n this.mcLoader = value;\r\n this.viewMemberEmitter.next(value);\r\n }\r\n static emitWhenScrollEnds (value : any): void {\r\n this.whenScrollEnds = value;\r\n this.whenScrollEndsEmitter.next(this.whenScrollEnds);\r\n }\r\n /*\r\n * Note: there will be only one user data at a time in yourLoginSuccess that is not the signedInUser.\r\n * for example whenever the user changes a profileView from any previous page, it will update yourLoginSucccess\r\n */\r\n static emitYourLoginSuccess(value: LoginSuccess): void {\r\n this.yourLoginSuccess = value;\r\n this.yourLoginSuccessEmitter.next(this.yourLoginSuccess);\r\n }\r\n\r\n // static emitYourCommunicator (value : Communicator) : void {\r\n // this.yourCommunicator = value;\r\n\t//}\r\n /*\r\n * static static getInstance(): EmitterService {\r\n * if (EmitterSubjectService.instance == null) {\r\n * EmitterSubjectService.instance = new EmitterService();\r\n * }\r\n * return EmitterSubjectService.instance;\r\n * }\r\n */\r\n // ---------------------------------------------------------------\r\n initialize ()\r\n {\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n\r\n public ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.timerArray.forEach((timer) => clearInterval(timer));\r\n // this.profileTileViewSubscription.unsubscribe();\r\n }\r\n}\r\n","\r\nimport { Injectable, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { deserialize, serialize } from '@ungap/structured-clone'; // for native deep-clone\r\nimport { KV } from '../../../models/keyValue/kv.model';\r\nimport { MemberViewMgmtModel } from '../../../models/member/memberViewMgmtModel.model';\r\nimport { HttpService } from '../../coreServiceService/httpService.service';\r\nimport { PhotoPrivacyService } from '../../photoServiceService/photoPrivacyService.service';\r\nimport { decode, encode } from 'sourcemap-codec';\r\n// var Buffer = require('buffer/').Buffer; // note: the trailing slash is important!\r\nimport * as nacl from 'tweetnacl';\r\nimport * as naclUtil from 'tweetnacl-util';\r\n\r\n//\r\n/*\r\n * fetchAsBlob(`https:// fonts.gstatic.com/s/roboto/v16/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2`)\r\n * .then(convertBlobToBase64)\r\n * .then(console.log)\r\n * -------------------------------------------------------------------\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript\r\n * encode Uint8Array to string, and decode string to Uint8Array.\r\n */\r\n// const base_64 = {\r\n// decode: (s) => Uint8Array.from(atob(s), (c) => c.charCodeAt(0)),\r\n// encode: (b) => btoa(String.fromCharCode(...new Uint8Array(b))),\r\n// };\r\n//// for Node.js\r\n// const base_64_njs = {\r\n// decode: (s) => Buffer.from(s, 'base64'),\r\n// encode: (b) => Buffer.from(b).toString('base64'),\r\n// };\r\n\r\n// -------------------------------------------------------------------\r\n@Injectable({ providedIn: 'root' })\r\n// This is based on the lib clone ( as promulgated by Dan Wahlin)\r\nexport abstract class FrequentlyUsedFunctionsServiceStatic {\r\n static httpService : HttpService; \r\n static photoPrivacyService : PhotoPrivacyService;\r\n\r\n private emitterDestroyed$ : Subject = new Subject();\r\n @Output() static memberViewMgmtModelEmitter : Subject = new Subject();\r\n // -------------------------------------------------------------------------\r\n constructor (nacl, naclUtil\r\n ) {\r\n nacl.util = require('tweetnacl-util');\r\n // this.initialize();\r\n // debugger;\r\n // EmitterSubjectService.toSetMemberViewMgmtModelEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((result) => {\r\n // debugger;\r\n // EmitterSubjectService.emitMemberViewMgmtModel(result);;\r\n // }); \r\n }\r\n // -------------------------------------------------------------------------\r\n // private initialize (): void {\r\n // FrequentlyUsedFunctionsServiceStatic.httpService = new HttpService(this.httpClient, this.router);\r\n // FrequentlyUsedFunctionsServiceStatic.photoPrivacyService = new PhotoPrivacyService(FrequentlyUsedFunctionsServiceStatic.httpService);\r\n // }\r\n // --------------------------------------------------------------\r\n static nullPromise () : any {\r\n let timer = setTimeout(() => {\r\n // debugger;\r\n clearTimeout(timer); \r\n return null;\r\n }, 500);\r\n clearTimeout(timer);\r\n }\r\n // ---------------------------------------------------------------\r\n static emitMemberViewMgmtModel (model : MemberViewMgmtModel) : void {\r\n this.memberViewMgmtModelEmitter.next(model);\r\n }\r\n // -------------------------------------------------------------------------\r\n static getUserNameFromEmail ( email: string ): string\r\n {\r\n if ( !this.isNullOrEmpty( email ) )\r\n {\r\n let parts = email.split( '@' );\r\n if ( parts.length > 0 )\r\n { return parts[ 0 ]; }\r\n else return email;\r\n }\r\n else return email;\r\n }\r\n // -------------------------------------------------------------------------\r\n static reverse (str : any): any {\r\n return str.split('').reverse().join('');\r\n }\r\n // --------------------------------------------\r\n static reverseES6 (str : any): any {\r\n return [...str].reverse().join('');\r\n }\r\n // --------------------------------------------\r\n static reverseUsingReduce (str : any): any {\r\n return str.split('').reduce((rev : any, char : any) => char + rev, '');\r\n }\r\n // --------------------------------------------\r\n static reverseUsingRecursion (str : any): any {\r\n return str ? this.reverseUsingRecursion(str.substr(1)) + str[0] : str;\r\n }\r\n // --------------------------------------------\r\n static reverseUsingForLoop (str : any): any {\r\n let reversed = '';\r\n\r\n for (const char of str) {\r\n reversed = char + reversed;\r\n }\r\n return reversed;\r\n }\r\n /*\r\n * --------------------------------------------\r\n * Note: Tested on 2020/12/20. Works!\r\n * --------------------------------------------\r\n */\r\n static reverseOnItself(inArr: any[]): any[] {\r\n const len = inArr.length;\r\n let middleIndex = len / 2;\r\n let temp: any;\r\n\r\n if (len % 2 === 0) {\r\n // even-case\r\n for (let i = 0; i <= middleIndex; i++) {\r\n temp = inArr[i];\r\n inArr[i] = inArr[len - i - 1];\r\n inArr[len - i - 1] = temp;\r\n }\r\n } else if (len % 2 === 1) {\r\n // odd-case\r\n const middleV = inArr[len / 2];\r\n\r\n middleIndex = len / 2;\r\n for (let i = 0; i <= middleIndex || inArr[i] === middleV; i++) {\r\n // swap up to middle or middleValue\r\n temp = inArr[i];\r\n inArr[i] = inArr[len - i - 1];\r\n inArr[len - i - 1] = temp;\r\n }\r\n }\r\n return inArr;\r\n }\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * ref: https://www.javacodeexamples.com/convert-first-character-of-string-to-lowercase-in-java-example/636\r\n * Note: This method does not work:( tested on 20220422\r\n * if it cannot be fixed, delete this.\r\n * ---------------------------------------------------------------------------------\r\n */\r\n static firstCharToLowerCase (str : string) : string {\r\n if (str === null || str.length === 0) {\r\n return '';\r\n }\r\n if (str.length === 1) {\r\n return str.toLowerCase();\r\n }\r\n else {\r\n return str.substring(0, 1).toLowerCase() + str.substring(1);\r\n }\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Testing the ArrayReverseOnItsef:\r\n * Note: Tested, works! 2020/12/20\r\n * --------------------------------------------------------------\r\n */\r\n static testReverseOnItself(inArray: any[]): any {\r\n let arrStr = '';\r\n\r\n for (let i = 0; i < 11; i++) {\r\n inArray.push(i);\r\n arrStr += i + ', ';\r\n }\r\n const revArr = this.reverseOnItself(inArray); // Tested and works!\r\n let revArrStr = '';\r\n\r\n if (!this.isNullOrEmpty(revArr)) {\r\n for (let i = 0; i < 11; i++) {\r\n revArrStr += revArr[i] + ', ';\r\n }\r\n }\r\n alert('in-Array: ' + arrStr + '\\n reversed-Array: ' + revArrStr);\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Note: END of REVERSE-string-methods:\r\n * --------------------------------------------------------------\r\n */\r\n\r\n // ---------------------------------------------------------------\r\n // Deep-Clone without _lodash:\r\n static deepCloneJson (obj : any) : any {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n // --------------------------------------------------------------\r\n // Native-JS-deep-clone:\r\n // import structuredClone from '@ungap/structured-clone'; // for native deep-clone\r\n static deepClone (obj : any) : any {\r\n // return structuredClone(obj);\r\n // the result can be stringified as JSON without issues\r\n // even if there is recursive data, bigint values,\r\n // typed arrays, and so on\r\n // const serialized = serialize({ any: 'serializable' });\r\n const serialized = serialize(obj);\r\n\r\n // the result will be a replica of the original object\r\n const deserialized = deserialize(serialized);\r\n return deserialized;\r\n }\r\n // --------------------------------------------------------------\r\n\r\n /*\r\n * --------------------------------------------------------------\r\n * Dan Bernstein’s popular “times 33” hash function in TypeScript\r\n * Author: Sayeed Rahman\r\n * Date: November 19, 2020\r\n * Location: Ottawa, Canada\r\n *\r\n * TODO: test.\r\n * --------------------------------------------------------------\r\n */\r\n /*\r\n * times33Hash(str: string): number {\r\n * let h = 5381;\r\n * for (let i = 0, j = str.length; i < j; i++)\r\n * {\r\n * //Shifting h left by 5 bits is a quick way to multiply by 32\r\n * h += (h << 5) + parseInt(str[i], 10);\r\n * //Only keep the lower 32 bits of h\r\n * h = h & 0xFFFFFFFF;\r\n * }\r\n * //debugger;\r\n * return h;\r\n * }\r\n */\r\n \r\n // --------------------------------------------------------------\r\n static getCircularReplacer = () =>\r\n {\r\n const seen = new WeakSet();\r\n return (key : any, value : any ) =>\r\n {\r\n if ( typeof value === 'object' && value !== null )\r\n {\r\n if ( seen.has( value ) )\r\n {\r\n return;\r\n }\r\n seen.add( value );\r\n }\r\n return value;\r\n };\r\n }\r\n\r\n // problem: JSON.stringify(circularReference);\r\n // TypeError: cyclic object value\r\n // solution:\r\n // usage: JSON.stringify(circularReference, getCircularReplacer());\r\n // ---------------------------------------------------------------------------------\r\n public static firstIndexOf(input: string, pattern: string): any {\r\n if (!this.isNullOrEmpty(input)) {\r\n return input.indexOf(pattern);\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public static trimBothQuotes(input: string): any {\r\n if (!this.isNullOrEmpty(input)) {\r\n let temp = input.trim().replace('\"', '');\r\n\r\n if (!this.isNullOrEmpty(temp)) {\r\n temp = temp.trim().replace('\\'', '');\r\n }\r\n return temp;\r\n }\r\n return input;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public static trimSingleQuotes (input : string) : any {\r\n if (!this.isNullOrEmpty(input)) {\r\n let pattern = /\\'/gi;\r\n let replacement = '';\r\n let temp = input.trim().replace(pattern, replacement);\r\n return temp;\r\n }\r\n else return input;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public static trimDoubleQuotes (input : string) : any {\r\n if (!this.isNullOrEmpty(input)) {\r\n let temp = input.trim().replace('\"', '');\r\n return temp;\r\n }\r\n return input;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Ref: https://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case\r\n //\r\n // Note: CAUTION!!!:\r\n // this method stripped/deleted all dividers of < kay: value > paired JSON string of the `Photo` model.\r\n // this is not a desirable outcome :( !\r\n // this may NOT be good for a JSON string of any model!!!\r\n // ---------------------------------------------------------------------------------\r\n public static toCamelCaseNotUsingLodash (str:string): string {\r\n //return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\r\n // return index === 0 ? word.toLowerCase() : word.toUpperCase();\r\n //}).replace(/\\s+/g, '');\r\n\r\n // OR using lodash\r\n // return _lodash.camelCase(str);\r\n\r\n // OR\r\n if (!this.isNullOrEmpty(str)) {\r\n return str.toLowerCase().replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (ltr, idx) => idx === 0 ? ltr.toLowerCase() : ltr.toUpperCase()).replace(/\\s+/g, '');\r\n }\r\n else return '';\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ref: https://www.codegrepper.com/code-examples/javascript/lowercase+first+character+javascript\r\n // ---------------------------------------------------------------------------------\r\n public static capitalizeFirstLetter (string : any) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ref: https://www.codegrepper.com/code-examples/javascript/lowercase+first+character+javascript\r\n // Note: Tested & works! on 20220423\r\n // ---------------------------------------------------------------------------------\r\n public static lowercaseFirstLetter (str: string): string {\r\n return str.charAt(0).toLowerCase() + str.slice(1);\r\n }\r\n \r\n \r\n // ---------------------------------------------------------------------------------\r\n public static toPascalCase (str: string): string {\r\n ;// TODO\r\n return '';\r\n }\r\n \r\n // ----------------------------------------------------------------\r\n static setRawImageData(rawImageData: string): string {\r\n // debugger;\r\n if (!this.isNullOrEmpty(rawImageData)) {\r\n if (rawImageData.indexOf('data:image/png/svg;base64,') === -1) {\r\n // check if it has the prefix-of-raw-image-data\r\n return 'data:image/png/svg;base64,' + rawImageData;\r\n }\r\n }\r\n return rawImageData;\r\n }\r\n // --------------------------------------------------------------\r\n static isNullOrEmpty ( input : any ) : boolean\r\n {\r\n if (input === null || input === '' || input === undefined || (input !== null && (input.toString().toLowerCase() === 'null' || input.toString().toLowerCase() === 'undefined'))) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n static createRegExpFromString (input : string) : any {\r\n if (typeof input !== 'string') {\r\n return 0;\r\n }\r\n input = (input) === '.' ? ('\\\\' + input) : input;\r\n debugger;\r\n const regexp = new RegExp(input, 'g');\r\n return regexp;\r\n }\r\n // ---------------------------------------------------------------\r\n // Tested on 20220324 and it works!\r\n // ---------------------------------------------------------------\r\n static countCharInString (charRegExp : RegExp, strToSearch : string) : number {\r\n // debugger;\r\n return ((strToSearch || '').match(charRegExp) || []).length;\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n static string2Unit8Arr(s: string): any {\r\n return Uint8Array.from(atob(this.strTobase64(s)), (c) => c.charCodeAt(0));\r\n }\r\n static unit8Arr2Str(b: []): any {\r\n return btoa(String.fromCharCode(...new Uint8Array(b)));\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/4456336/finding-variable-type-in-javascript\r\n * ---------------------------------------------------------------\r\n */\r\n static typeCheck(obj: any): any {\r\n if (!this.isNullOrEmpty(obj)) {\r\n // debugger;\r\n switch (typeof obj) {\r\n // object prototypes\r\n case 'undefined':\r\n return 'Undefined';\r\n case 'boolean':\r\n return 'Boolean';\r\n case 'number':\r\n return 'Number';\r\n case 'string':\r\n return 'String';\r\n case 'object':\r\n if (obj instanceof Array) {\r\n return 'Array';\r\n }\r\n else if (obj instanceof String) {\r\n return 'String';\r\n }\r\n else if (obj instanceof Number) {\r\n return 'Number';\r\n }\r\n else if (obj instanceof Date) {\r\n return 'Date';\r\n } \r\n else if (obj instanceof Object) {\r\n return 'Object';\r\n }\r\n else if (obj instanceof RegExp) {\r\n return 'RegExp';\r\n }\r\n else if (obj instanceof Function) {\r\n return 'Function';\r\n }\r\n else if (obj instanceof Symbol) {\r\n return 'Symbol';\r\n }\r\n else return 'Object';\r\n // object literals\r\n default:\r\n return typeof obj;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static ConvertStringToNumber(inStr: string): number {\r\n if (!this.isNullOrEmpty(inStr)) {\r\n return parseInt(inStr, 10);\r\n }\r\n return -1;\r\n }\r\n \r\n // ------------------------------------------------------------------------\r\n static getMonthName (month : any): any {\r\n if (month > 0) {\r\n switch (month) {\r\n case 1:\r\n return 'January';\r\n case 2:\r\n return 'February';\r\n case 3:\r\n return 'March';\r\n case 4:\r\n return 'April';\r\n case 5:\r\n return 'May';\r\n case 6:\r\n return 'June';\r\n case 7:\r\n return 'July';\r\n case 8:\r\n return 'August';\r\n case 9:\r\n return 'September';\r\n case 10:\r\n return 'October';\r\n case 11:\r\n return 'November';\r\n case 12:\r\n return 'December';\r\n default:\r\n return '';\r\n }\r\n }\r\n return '';\r\n }\r\n // -------------------------------------------------------------\r\n public mimeTypes : KV[] = [];\r\n public jsTypes = [ 'Boolean', 'BigInt', 'Function', 'NaN', 'Null', 'Number', 'Object', 'object', 'String', 'Symbol', 'Undefined' ];\r\n public Sys = {};\r\n // -------------------------------------------------------------\r\n static createMimeType () : any {\r\n let mimeTypes : any[] = [];\r\n let kv = new KV();\r\n\r\n kv.key = '.txt';\r\n kv.value = 'text/plain';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.pdf';\r\n kv.value = 'application/pdf';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.doc';\r\n kv.value = 'application/vnd.ms-word';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.docx';\r\n kv.value = 'application/vnd.ms-word';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.xls';\r\n kv.value = 'application/vnd.ms-excel';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.xlsx';\r\n kv.value = 'application/vnd.openxmlformats officedocument.spreadsheetml.sheet';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.png';\r\n kv.value = 'image/png';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.jpg';\r\n kv.value = 'image/jpeg';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.jpeg';\r\n kv.value = 'image/jpeg';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.gif';\r\n kv.value = 'image/gif';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.csv';\r\n kv.value = 'text/csv';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.css';\r\n kv.value = 'stylesheet';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.js';\r\n kv.value = 'javascript';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.html';\r\n kv.value = 'text/html';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.xml';\r\n kv.value = 'text/xml';\r\n mimeTypes.push(kv);\r\n return mimeTypes;\r\n }\r\n // -------------------------------------------------------------\r\n static getMimeType (typ : string) : any {\r\n // debugger;\r\n let type = '';\r\n\r\n if (typ && typ.length >= 3) {\r\n let typArr : any[] = [];\r\n\r\n if (typ.indexOf('/') !== -1) {\r\n typArr = typ.split('/'); // incase mime-type is provided\r\n } else if (typ.indexOf('.') !== -1) {\r\n typArr = typ.split('.'); // incase file-name-with-extension is provided\r\n } else {\r\n typ = '.' + typ; // incase plain-file-extension is provided (without a '.'), create a file-extension with a '.'\r\n }\r\n if (typArr.length > 1) {\r\n type = '.' + typArr[ 1 ]; // create a file-extension with a '.'\r\n }\r\n }\r\n return this.createMimeType().mimeTypes.find((k: any) => k?.key === type).value; // TODO: restore\r\n // debugger;\r\n // return ''; // \r\n }\r\n // -------------------------------------------------------------\r\n static generateFileType (fileExtension : any): any {\r\n let fileType : any = { };\r\n\r\n switch (fileExtension.toLowerCase()) {\r\n case 'doc':\r\n case 'docx':\r\n fileType = 'application/msword';\r\n break;\r\n case 'html':\r\n return 'text/html';\r\n case 'xls':\r\n case 'xlsx':\r\n fileType = 'application/vnd.ms-excel';\r\n break;\r\n case 'pps':\r\n case 'ppt':\r\n fileType = 'application/vnd.ms-powerpoint';\r\n break;\r\n case 'txt':\r\n fileType = 'text/plain';\r\n break;\r\n case 'rtf':\r\n fileType = 'application/rtf';\r\n break;\r\n case 'pdf':\r\n fileType = 'application/pdf';\r\n break;\r\n case 'msg':\r\n case 'eml':\r\n fileType = 'application/vnd.ms-outlook';\r\n break;\r\n case 'gif':\r\n case 'bmp':\r\n case 'png':\r\n case 'jpg':\r\n fileType = 'image/JPEG';\r\n break;\r\n case 'dwg':\r\n fileType = 'application/acad';\r\n break;\r\n case 'zip':\r\n fileType = 'application/x-zip-compressed';\r\n break;\r\n case 'rar':\r\n fileType = 'application/x-rar-compressed';\r\n break;\r\n }\r\n return fileType;\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Begin of linebreak\r\n * --------------------------------------------------------------\r\n */\r\n static lineBreak(): any {\r\n return this.filterFilter;\r\n }\r\n static filterFilter (text : any): any {\r\n if (!text || !text.length) {\r\n return text;\r\n }\r\n\r\n return text.replace(/(\\\\r\\\\n)|([\\r\\n])/gim, '
');\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * End of linebreak\r\n * --------------------------------------------------------------\r\n * --------------------------------------------------------------\r\n * ref: https:// developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\r\n * TODO: test\r\n */\r\n \r\n\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: a similar method exists in copyService.ts//copyFromProfilePicsToKvPhotoDictionary\r\n * ---------------------------------------------------------------\r\n * profilePicsToKvPhotoDictionary(profilePics: ProfilePics): KvPhoto[]{}\r\n */\r\n\r\n \r\n // -------------------------------------------------------------\r\n static toByteArray(hexString: string): any {\r\n const result : any = [];\r\n\r\n for (let i = 0; i < hexString.length; i += 2) {\r\n // result.push(parseInt(hexString.substr(i, 2), 16)); //TODO: resotre\r\n }\r\n return result;\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript\r\n * string-2-b64, and decode b64-2-string\r\n */\r\n static strTobase64 (str : any): any {\r\n return btoa(unescape(encodeURIComponent(str)));\r\n }\r\n static base64ToStr (b64Str : any): any {\r\n return decodeURIComponent(escape(window.atob(b64Str)));\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript\r\n * b64EncodeUnicode(str): any {\r\n * // returnbtoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\r\n * // returnString.fromCharCode('0x' + p1); //TODO: test by (parseInt('0x' + p1))\r\n * // }));\r\n * }\r\n * Usage example:\r\n * b64EncodeUnicode('✓ à la mode'); //'4pyTIMOgIGxhIG1vZGU='\r\n * b64EncodeUnicode('\\n'); //'Cg=='\r\n */\r\n\r\n static b64DecodeUnicode (str : any): any {\r\n return decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''));\r\n }\r\n /*\r\n * Usage example:\r\n * b64DecodeUnicode('4pyTIMOgIGxhIG1vZGU='); //'✓ à la mode'\r\n * b64DecodeUnicode('Cg=='); //'\\n'\r\n * ==================================================================\r\n * Note: this is incomplete!!\r\n */\r\n // static stringToBase64(str): any {\r\n // if (!this.isNullOrEmpty(str)) {\r\n // return str;\r\n // }\r\n // }\r\n // ------------------------------------------------------------------\r\n \r\n /*\r\n * ------------------------------------------------------------------\r\n * ==================================================================\r\n * String-to-ArrayBuffer-to-String\r\n * ==================================================================\r\n * NOTE: Use these two only for this purpose!\r\n * Tested. Works without stackoverflow exception!\r\n * ******************************************************************\r\n * encode(buffer, byteOffset, length) - Encodes ArrayBuffer into base64 string\r\n * ------------------------------------------------------------------\r\n * ref:https:// www.npmjs.com/package/base64-arraybuffer-es6\r\n */\r\n static arrBufferToB64 (buff : Uint8Array): any {\r\n // return encode(buff);\r\n return naclUtil.encodeBase64(buff);\r\n }\r\n static b64ToArrBuff (b64Str : any): any {\r\n return decode(b64Str);\r\n }\r\n // ------------------------------------------------------------------\r\n static angArrBufferToB64 (arrBuff : Uint8Array) : any {\r\n // This step is only necessary if you don't already have a Buffer Object\r\n // Also, If you are running under Angular for example, the Buffer Class will also be made available in a Browser Environment.\r\n // const buffer : any = Buffer.from(arrBuff);\r\n const buffer : any = new Buffer(arrBuff);\r\n\r\n const base64String = buffer.toString('base64');\r\n\r\n return base64String;\r\n }\r\n // ------------------------------------------------------------------\r\n static readFile (file : any, onLoadCallback : any): any {\r\n const reader = new FileReader();\r\n\r\n reader.onload = onLoadCallback;\r\n reader.readAsText(file);\r\n return true;\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/37234333/arraybuffer-to-string-string-to-arraybuffer-methods\r\n */\r\n static stringToArrayBuffer (str : any, enc : any, callback : any): any {\r\n const blob = new Blob([str], { type: 'text/plain;charset=' + enc});\r\n const reader = new FileReader();\r\n\r\n reader.onload = ( evt ) =>\r\n {\r\n if ( this.isNullOrEmpty( evt ) )\r\n {\r\n // callback( evt.target.result ); // TODO : restore\r\n }\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n return true;\r\n }\r\n\r\n /*\r\n * Usage example:\r\n * var buf = new Uint8Array([65, 66, 67]);\r\n * arrayBufferToString(buf, 'UTF-8', console.log.bind(console)); //'ABC'\r\n */\r\n\r\n /*\r\n * stringToArrayBuffer('ABC', 'UTF-8', console.log.bind(console)); //[65,66,67]\r\n * ------------------------------------------------------------------\r\n * ref:https:// www.npmjs.com/package/arraybuffer-to-string\r\n * Tested: works!\r\n * Note:: Throws Maximum Call Stack exceeded on ArrayBufferToString\r\n * ------------------------------------------------------------------\r\n */\r\n //static ab2stBase64 (u8Arr : any[], type? : any) : any {\r\n // let typ : any = 'utf8'\r\n // let tByff = new Buffer(u8Arr, this.isNullOrEmpty(type) ? typ : type);\r\n // return tByff.toString()// ab2str(u8arr, 'base64');\r\n //}\r\n //static ab2str (u8arr : any) : any {\r\n // const result = this.ab2stBase64(u8arr, 'utf8');\r\n // // debugger;\r\n\r\n // return result;\r\n //}\r\n \r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/23024460/javascript-i-created-a-blob-from-a-string-how-do-i-get-the-string-back-out\r\n */\r\n static blobToString(b: any): any {\r\n let u;\r\n let x;\r\n\r\n u = URL.createObjectURL(b);\r\n x = new XMLHttpRequest();\r\n x.open('GET', u, false); // although sync, you're not fetching over internet\r\n x.send();\r\n URL.revokeObjectURL(u);\r\n return x.responseText;\r\n }\r\n \r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/18650168/convert-blob-to-base64\r\n */\r\n static BlobToBase64 (blob : any): Promise {\r\n const reader = new FileReader();\r\n\r\n reader.readAsDataURL(blob);\r\n return new Promise((resolve) => {\r\n reader.onloadend = () => {\r\n resolve(reader.result);\r\n };\r\n });\r\n }\r\n /*\r\n * // Usage Example:\r\n *BlobToBase64(blobData).then(res => {\r\n * //do what you wanna do\r\n * console.log(res); //res is base64 now\r\n * });\r\n */\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// blobfolio.com/2019/10/better-binary-batter-mixing-base64-and-uint8array/\r\n */\r\n /**\r\n * Base64 to Blob\r\n *\r\n * @param { string} data Data.\r\n * @param { string} type Content type.\r\n * @return { !Blob} Blob.\r\n */\r\n static base64toBlob (data : any, typ : any): any {\r\n const bytes = atob(btoa(data));\r\n let length = bytes.length;\r\n\r\n if (length > 0) {\r\n const out = new Uint8Array(length);\r\n\r\n // Loop and convert.\r\n while (length > 0 && length--) {\r\n out[length] = bytes.charCodeAt(length);\r\n }\r\n\r\n return new Blob([out], { type: typ});\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n static base64toUint8Array (data : any): any {\r\n const bytes = atob(data);\r\n let length = bytes.length;\r\n const out = new Uint8Array(length);\r\n\r\n // Loop and convert.\r\n while (length--) {\r\n out[length] = bytes.charCodeAt(length);\r\n }\r\n return out;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// blobfolio.com/2019/10/better-binary-batter-mixing-base64-and-uint8array/\r\n */\r\n static base64toImageUrl (base64Str : any): any {\r\n return URL.createObjectURL(this.base64toBlob(base64Str, 'image/png'));\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n //static Base64Encode(str, encoding = 'utf-8'): any {\r\n // const bytes = new (typeof TextEncoder === 'undefined' ? textEncoder.TextEncoderLite : TextEncoder)(encoding).encode(str);\r\n\r\n // return base64js.fromByteArray(bytes);\r\n //}\r\n\r\n //static Base64Decode(str, encoding = 'utf-8'): any {\r\n // const bytes = base64js.toByteArray(str);\r\n\r\n // return new (typeof TextDecoder === 'undefined' ? textEncoder : TextDecoder)(encoding).decode(bytes);\r\n //}\r\n \r\n \r\n // ------------------------------------------------------------------\r\n // NOTE: The following are Array-related-functions\r\n // ------------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n static arrayToCsvString(inArr: any[]): any {\r\n if (inArr.length > 0) {\r\n let csvStr = '';\r\n\r\n for (let i = 0; i < inArr.length - 1; i++) {\r\n csvStr += csvStr + inArr[i].toString() + ', ';\r\n }\r\n csvStr += csvStr + inArr[inArr.length - 1].toString();\r\n return csvStr;\r\n }\r\n return '';\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getArrayFromCommaSeparatedData (data : any): any {\r\n let tArray = [];\r\n\r\n if (data) {\r\n tArray = data.split(',');\r\n if (tArray.length > 0) {\r\n // truncate the last empty index due to the last ',' in the data-string\r\n tArray.splice(tArray.length - 1, 1);\r\n }\r\n }\r\n return tArray;\r\n }\r\n \r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // On 20220328\r\n // ------------------------------------------------------------------\r\n static createArrayFromMap(inmap: Map): any[] {\r\n const arr: any[] = [];\r\n\r\n if (inmap && inmap.size > 0) {\r\n inmap.forEach((value, key) =>\r\n {\r\n arr.push(value);\r\n });\r\n }\r\n return arr;\r\n }\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // ------------------------------------------------------------------\r\n static createMapFromArray(arr: any[]): Map {\r\n const map = new Map();\r\n\r\n if (arr && arr.length > 0) {\r\n arr.forEach(function callback (key, value) {\r\n map.set(value, key);\r\n });\r\n }\r\n return map;\r\n }\r\n // ------------------------------------------------------------------\r\n b2Str(b: []): any {\r\n return String.fromCharCode(...new Uint8Array(b));\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * FileReader with a Promise to read text\r\n * ref:https:// blog.shovonhasan.com/using-promises-with-filereader/\r\n */\r\n readUploadedFileAsText = (inputFile : any) => {\r\n const temporaryFileReader = new FileReader();\r\n\r\n return new Promise((resolve, reject) => {\r\n temporaryFileReader.onerror = () => {\r\n temporaryFileReader.abort();\r\n reject(new DOMException('Problem parsing input file.'));\r\n };\r\n\r\n temporaryFileReader.onload = () => {\r\n resolve(temporaryFileReader.result);\r\n };\r\n temporaryFileReader.readAsText(inputFile);\r\n });\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * A Simplified API with Async/Await\r\n * ref:https:// blog.shovonhasan.com/using-promises-with-filereader/\r\n * Note:an example onchange handler we could pass to a = new Subject();\r\n constructor (\r\n private httpService : HttpService,\r\n private router: Router,\r\n )\r\n {\r\n this.initialize();\r\n }\r\n // ---------------------------------------------------------------\r\n ngOnDestroy () {\r\n // prevent memory leak when component destroyed\r\n InMemoryDataServiceStatic.emitterDestroyed$.next(true);\r\n InMemoryDataServiceStatic.emitterDestroyed$.complete();\r\n InMemoryDataServiceStatic.emitterDestroyed$.unsubscribe();\r\n }\r\n // ---------------------------------------------------------------\r\n public static authorization = {};\r\n // public static blackListCredentials: KV[] = []; // Moved to BlackListCredentialsServiceStatic.ts \r\n public static fonts = [];\r\n public static genderArr = ['male', 'female', 'transgender'];\r\n public static intoArr = [\r\n 'bondage',\r\n 'cross_dressing',\r\n 'drag',\r\n 'fetish',\r\n 'groupSex',\r\n 'leather',\r\n 'married_men',\r\n 'married_women',\r\n 'massage',\r\n 'one_on_one',\r\n 'pig_play',\r\n 'rough',\r\n 's&M',\r\n 'toys',\r\n 'voyeurism',\r\n 'water_sports',\r\n 'polyamory',\r\n ];\r\n public static highestEducationArr = ['college', 'diploma', 'gED', 'graduate', 'high_school', 'less_than_high_school', 'Md', 'phD', 'some_college_credits', 'trades'];\r\n public static hobbyArr = [\r\n 'acting',\r\n 'antique',\r\n 'biking',\r\n 'body_building',\r\n 'camping',\r\n 'climbing',\r\n 'cooking',\r\n 'dancing',\r\n 'none_at_the_moment',\r\n 'extreme_sports',\r\n 'hiking',\r\n 'jogging',\r\n 'kayaking',\r\n 'knitting',\r\n 'music',\r\n 'other',\r\n 'painting',\r\n 'reading',\r\n 'sailing',\r\n 'shopping',\r\n 'singing',\r\n 'swimming',\r\n 'walking',\r\n 'yoga',\r\n ];\r\n public static lookingForArr = ['dating', 'fwb', 'fbuddy', 'friendship', '3_somes', 'group', 'marriage', 'monogamy', 'polygamy'];\r\n public static meetingLocationArr = ['coffee_shop', 'bar', 'my_place', 'public_place', 'restaurant', 'your_place'];\r\n public static petArr = ['have_dog', 'have_cat', 'have_other_pet', 'like_pet', 'dont_like_pet'];\r\n public static petPeevArr = ['douchBag', 'snoring', 'smoking', 'ignoring', 'clicks'];\r\n public static playSafeArr = ['never', 'sometimes', 'most_of_the_time', 'always'];\r\n public static positionArr = ['bottom', 'top', 'versatile'];\r\n public static relationshipStatusArr = ['single', 'divorced', 'seperated', 'open_relationship', 'married', 'polyamory'];\r\n public static relationshipPreferenceArr = ['casual_dating', 'cohabitation', 'dating', 'friendship', 'FB', 'FWB', 'LTR', 'marriage', 'no_string', 'polyamorous', 'sex'];\r\n public static religionArr = [ 'atheist', 'agnostic', 'bahai', 'bhuddist', 'christian', 'hindu', 'jewish', 'muslim', 'non_religious', 'spiritual', 'other'];\r\n public static sexualitieArr = ['gay', 'lesbian', 'bisexual', 'heterosexual'];\r\n public static smokingStatusArr = ['non_smoker', 'socially', 'occassionally', 'moderately', 'chain_smoker', 'chain_vaper'];\r\n public static whenLookingToMeetArr = ['now', 'morning', 'afternoon', 'evening', 'weekdays', 'weekday_evenings', 'weekends', 'anytime'];\r\n // -------------------------------------------\r\n public static chabi = 'KA8j/zeXyTPXt0+UTogm1tQk2r0+mUQ9G34PBtxYnHA=';\r\n public static chabiGopon = 'dJKh9zxbQquNHzKCIkyR11h9svmQBzazOcAuqmWPb/A=';\r\n // -------------------------------------------\r\n public static accountMessages = [];\r\n public static profilePics = new ProfilePics();\r\n public static boxNonceEntity = new BoxNonceEntity();\r\n // public static dictionary = new Collections.Dictionary(); // key=sitUserId, value=PhotoIds[] //deprecated\r\n public static enums : any;\r\n public static isMobilevar = false;\r\n public static isOnLine = false;\r\n public static loginSuccess = new LoginSuccess();\r\n public static profileImageArr = [];\r\n public static sandBoxJson = [];\r\n public static sitUser = new SitUser();\r\n public static userPhotoIds = [];\r\n public static userPhotos = [];\r\n public static enumsObservable = new Observable();\r\n public static accountMessagesObservable = new Observable();\r\n public static blackListCredentialsObservable = new Observable();\r\n public static sandBoxObservable = new Observable();\r\n public static enumsCallCounter = 0;\r\n public emitterDestroyed$ : Subject = new Subject();\r\n // ---------------------------------------------------------------\r\n static getEnums(): any {\r\n return this.enums;\r\n }\r\n // Moved to BlackListCredentialsServiceStatic.ts \r\n // static getBlackListCredentials () {\r\n // return this.blackListCredentials;\r\n\t//}\r\n // ---------------------------------------------------------------\r\n // The caller must use 'KvAny' model to get the key-value pair.\r\n // ---------------------------------------------------------------\r\n static getTwoChabi () : KvAny[]\r\n {\r\n // debugger;\r\n let twoChabi : KvAny[] = [];\r\n let chabi = new KvAny();\r\n chabi.key = 'chabi';\r\n chabi.value = this.chabi;\r\n twoChabi.push( chabi );\r\n // debugger;\r\n chabi = new KvAny();\r\n chabi.key = 'chabiGopon';\r\n chabi.value = this.chabiGopon;\r\n twoChabi.push( chabi );\r\n return twoChabi;\r\n }\r\n // ---------------------------------------------------------------\r\n private initialize ()\r\n {\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( EmitterSubjectService.getEnums ) )\r\n {\r\n InMemoryDataServiceStatic.enums = EmitterSubjectService.getEnums();\r\n }\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.enums ) )\r\n {\r\n // debugger;\r\n this.httpService.getEnumsFromServer();\r\n this.getAuthorizationFromServer();\r\n this.getAccountMessagesFromServer();\r\n\r\n // debugger;\r\n }\r\n if ( !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.enums )\r\n && FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.enums.authorization ) )\r\n {\r\n this.getAuthorizationFromServer();\r\n this.getAccountMessagesFromServer();\r\n }\r\n\r\n // InMemoryDataServiceStatic.blackListCredentials = this.fetchBlackListCredentials();\r\n \r\n EmitterSubjectService.runGetEnumsFromServerEmitter\r\n .pipe( takeUntil( this.emitterDestroyed$ ) )\r\n .subscribe( result =>\r\n {\r\n // debugger;\r\n this.httpService.getEnumsFromServer();\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n });\r\n // -------------------------------------------------------------\r\n this.getSandBoxJsonFromServer();\r\n }\r\n // ---------------------------------------------------------------\r\n // public getBlackListCredentialKvArr () : KV[]{\r\n // InMemoryDataServiceStatic.blackListCredentials = this.fetchBlackListCredentials();\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(InMemoryDataServiceStatic.blackListCredentials)\r\n // && InMemoryDataServiceStatic.blackListCredentials.length > 0) {\r\n // return InMemoryDataServiceStatic.blackListCredentials;\r\n // }\r\n // else return null;\r\n\t//}\r\n // ---------------------------------------------------------------\r\n getEnums ()\r\n {\r\n InMemoryDataServiceStatic.enums = this.httpService.getEnumsFromServer();\r\n return InMemoryDataServiceStatic.enums;\r\n }\r\n // ---------------------------------------------------------------\r\n // private fetchBlackListCredentials () : KV[] {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(InMemoryDataServiceStatic.blackListCredentials)\r\n // || InMemoryDataServiceStatic.blackListCredentials.length === 0) {\r\n // debugger;\r\n\r\n // this.httpService.get('/api/Home/GetBlackListCredentialsJson').subscribe(\r\n // (result) => {\r\n // debugger;\r\n // if (result) {\r\n // debugger;\r\n // result.map(e => {\r\n // let kv = new KV();\r\n // kv.key = (e as KV).key;\r\n // kv.value = (e as KV).value;\r\n // InMemoryDataServiceStatic.blackListCredentials.push(kv);\r\n // });\r\n\r\n // return InMemoryDataServiceStatic.blackListCredentials;\r\n // }\r\n // //this.emitterDestroyed$.next(true);\r\n // //this.emitterDestroyed$.complete();\r\n // //this.emitterDestroyed$.unsubscribe();\r\n // },\r\n // (error) => {\r\n // EmitterSubjectService.emitMyErrorLog('Error occured in GetBlackListCredentialsJson();\\n Error-message: ' + error.message);\r\n // },\r\n // );\r\n // }\r\n // else return null; \r\n\t //}\r\n // ---------------------------------------------------------------\r\n private getSandBoxJsonFromServer () : any {\r\n // debugger;\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(InMemoryDataServiceStatic.accountMessages)) {\r\n this.httpService.get('api/Home/GetSandboxJson').subscribe(\r\n (result) => {\r\n // debugger;\r\n if (result) {\r\n InMemoryDataServiceStatic.sandBoxJson = result as [];\r\n // debugger;\r\n }\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n },\r\n (error) => {\r\n EmitterSubjectService.emitMyErrorLog('Error occured in GetAccountMessagesJson();\\n Error-message: ' + error.message);\r\n },\r\n );\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static getSandBoxJson () :any {\r\n return InMemoryDataServiceStatic.sandBoxJson;\r\n }\r\n // ---------------------------------------------------------------\r\n private getAccountMessagesObservable(): any {\r\n return ( InMemoryDataServiceStatic.accountMessagesObservable = new Observable((observer) => {\r\n let timer = setTimeout(() => {\r\n // debugger;\r\n const model = ( InMemoryDataServiceStatic.accountMessages = this.getAccountMessagesFromServer());\r\n // debugger;\r\n\r\n observer.next( model );\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }, 500);\r\n clearTimeout(timer);\r\n }));\r\n }\r\n // ---------------------------------------------------------------\r\n private getAccountMessagesFromServer(): any {\r\n // debugger;\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.accountMessages)) {\r\n this.httpService.get('api/Home/GetAccountMessagesJson').subscribe(\r\n (result) => {\r\n // debugger;\r\n if (result) {\r\n InMemoryDataServiceStatic.accountMessages = result as [];\r\n // debugger;\r\n }\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n },\r\n (error) => {\r\n EmitterSubjectService.emitMyErrorLog('Error occured in GetAccountMessagesJson();\\n Error-message: ' + error.message);\r\n },\r\n );\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n private getAuthorizationFromServer(): any {\r\n // debugger;\r\n if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.accountMessages)) {\r\n this.httpService.get('api/Home/GetAuthorizationJson').subscribe(\r\n (result) => {\r\n // debugger;\r\n if (result) {\r\n InMemoryDataServiceStatic.authorization = result as [];\r\n // debugger;\r\n }\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n },\r\n (error) => {\r\n EmitterSubjectService.emitMyErrorLog('Error occured in GetAuthorizationJson();\\n Error-message: ' + error.message);\r\n },\r\n );\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // Moved to BlackListCredentialsServiceStatic.ts \r\n // ---------------------------------------------------------------\r\n //private getBlackListCredentialsFromServer () : Observable {\r\n // // debugger;\r\n // return (InMemoryDataServiceStatic.blackListCredentialsObservable = new Observable((observer) => {\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(InMemoryDataServiceStatic.blackListCredentials)) {\r\n // this.httpService.get('/api/Home/GetBlackListCredentialsJson').subscribe(\r\n // (result) => {\r\n // debugger;\r\n // if (result) {\r\n // InMemoryDataServiceStatic.blackListCredentials = result as [];\r\n // debugger;\r\n // observer.next(InMemoryDataServiceStatic.blackListCredentials);\r\n // }\r\n // this.emitterDestroyed$.next(true);\r\n // this.emitterDestroyed$.complete();\r\n // this.emitterDestroyed$.unsubscribe();\r\n // },\r\n // (error) => {\r\n // EmitterSubjectService.emitMyErrorLog('Error occured in GetBlackListCredentialsJson();\\n Error-message: ' + error.message);\r\n // },\r\n // );\r\n // }\r\n // }))\r\n //}\r\n // -------------------------------------------------------------------------\r\n public getEnumsObservable(): any {\r\n return ( InMemoryDataServiceStatic.enumsObservable = new Observable((observer) => {\r\n let timer = setTimeout(() => {\r\n // debugger;\r\n const model = (InMemoryDataServiceStatic.enums = this.httpService.getEnumsFromServer());\r\n // debugger;\r\n\r\n observer.next( model );\r\n this.emitterDestroyed$.next( true );\r\n this.emitterDestroyed$.complete();\r\n this.emitterDestroyed$.unsubscribe();\r\n }, 1500);\r\n clearTimeout(timer);\r\n }));\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Tested, works! 2020/12/26\r\n * Moved to HttpService\r\n * ---------------------------------------------------------------\r\n */\r\n // private getEnumsFromServer(): any {\r\n // debugger;\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.enums ) || InMemoryDataServiceStatic.enumsCallCounter === 0) {\r\n // debugger;\r\n // InMemoryDataServiceStatic.enumsCallCounter++;\r\n // this.httpService.get('json/enums.json').subscribe(\r\n // (result) => {\r\n // debugger;\r\n // if (result) {\r\n // /*\r\n // * debugger;\r\n // * this.enumsCallCounter = 0;\r\n // */\r\n // InMemoryDataServiceStatic.enums = result;\r\n // EmitterSubjectService.setEnums( InMemoryDataServiceStatic.enums);\r\n // return InMemoryDataServiceStatic.enums;\r\n // // var unsalted = ( this.slakezSaltService as SlakezSaltService ).boxUnsalt(result);\r\n // // //debugger;\r\n // // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // // var tEnums = JSON.parse(unsalted);\r\n // // tEnums = JSON.stringify(tEnums, null, '\\n');\r\n // // ref:https:// www.digitalocean.com/community/tutorials/js-json-parse-stringify\r\n // // //debugger;\r\n\r\n // // tEnums = JSON.parse(tEnums);\r\n // // //debugger;\r\n // // EmitterSubjectService.setEnums(tEnums);\r\n // // this.enumsCallCounter = 0;\r\n // // return this.enums = tEnums;\r\n // // }\r\n // }\r\n // },\r\n // (error) => {\r\n // // debugger;\r\n // EmitterSubjectService.emitMyErrorLog('Error occured in GetEnums();\\n Error-message: ' + error.message);\r\n // }\r\n // );\r\n // }\r\n // }\r\n\r\n // ---------------------------------------------------------------\r\n // private getFontsFromServer(): any {\r\n // // debugger;\r\n // if ( FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty( InMemoryDataServiceStatic.enums ) && InMemoryDataServiceStatic.enumsCallCounter === 0) {\r\n // // debugger;\r\n // InMemoryDataServiceStatic.enumsCallCounter++;\r\n // this.httpService.get('/api/Home/GetFontsJson').subscribe(\r\n // ( result ) => InMemoryDataServiceStatic.processFontsFromServerResult(result),\r\n // // debugger;\r\n // (error) => {\r\n // // debugger;\r\n // EmitterSubjectService.emitMyErrorLog('Error occured in GetEnums();\\n Error-message: ' + error.message);\r\n // }\r\n // );\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n // static processFontsFromServerResult(result: any): any {\r\n // if (result) {\r\n // // debugger;\r\n // const unsalted = SlakezSaltServiceStatic.boxUnsalt(result);\r\n // // debugger;\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(unsalted)) {\r\n // this.fonts = JSON.parse(unsalted);\r\n // // debugger;\r\n // return this.fonts;\r\n // }\r\n // }\r\n // }\r\n // ---------------------------------------------------------------\r\n}\r\n","\r\nimport { ElementRef, Injectable } from '@angular/core';\r\nimport { EmitterSubjectService } from './emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from './stringServiceStatic.service';\r\n\r\n// =====================================================================\r\n// NOE: check/findout what '*' means in JavaScript and C# with respect to RegExp:\r\n// JS: * Matches the preceding expression 0 or more times. // ref: https://blog.bitsrc.io/a-beginners-guide-to-regular-expressions-regex-in-javascript-9c58feb27eb4\r\n// C#: * Matches the previous element zero or more times. // ref: https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference\r\n//\r\n// ------------------------------------\r\n// Some basic rules/grammers of RegExp:\r\n// ref: https://blog.bitsrc.io/a-beginners-guide-to-regular-expressions-regex-in-javascript-9c58feb27eb4\r\n// ------------------------------------\r\n// Regular Expression Constructor—Syntax: new RegExp('pattern', 'flags')\r\n// Regular Expression Literal—Syntax: /pattern/flags\r\n// Character set: [xyz] — A character set is a way to match different characters in a single position.\r\n// Negated character set: [^ xyz ] — It matches anything that is not enclosed in the brackets.\r\n/*\r\n \\d — Match any digit character ( same as [0-9] ).\r\n \\w — Match any word character. A word character is any letter, digit, and underscore. (Same as [a-zA-Z0–9_] ) i.e alphanumeric character.\r\n \\s — Match a whitespace character (spaces, tabs etc).\r\n \\t — Match a tab character only.\r\n \\b — Find a match at beginning or ending of a word. Also known as word boundary.\r\n . — (period) Matches any character except for newline.\r\n \\D — Match any non digit character (same as [^0–9]).\r\n \\W — Match any non word character (Same as [^a-zA-Z0–9_] ).\r\n \\S — Match a non whitespace character.\r\n*/\r\n// + — Matches the preceding expression 1 or more times.\r\n// * — Matches the preceding expression 0 or more times.\r\n// ? — Matches the preceding expression 0 or 1 time, that is preceding pattern is optional.\r\n// ^ — Matches the beginning of the RegExp string.\r\n// $ — Matches the end of the RegExp string.\r\n// {N} — Matches exactly N occurrences of the preceding regular expression.\r\n// {N,} — Matches at least N occurrences of the preceding regular expression.\r\n// {N,M} — Matches at least N occurrences and at most M occurrences of the preceding regular expression (where M > N).\r\n// Alternation: X|Y — Matches either X or Y. e.g.: var regex = /(green|red) apple/;\r\n// Escaping: If you want to use any special character as a part of the expression, say for example you want to match literal + or .,\r\n// then you have to escape them with backslash(\\).\r\n// (x) — Matches x and remembers the match.\r\n// \\1 remembers and uses that match from first subexpression within parentheses. e.g.: var regex = /(?:foo)bar\\1/;\r\n// (?:x) — Matches x and does not remember the match.\r\n// x(?=y) — Matches x only if x is followed by y. Also called positive look ahead.\r\n// \r\n// =====================================================================\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport abstract class JsRegExpServiceStatic\r\n{\r\n // regExp petterns:\r\n // ---------------\r\n static allSpecialCharacters = /[\\!\\@\\#\\$\\%\\^\\&\\*\\)\\(\\+\\=\\.\\<\\>\\{\\}\\[\\]\\:\\;\\'\\\"\\|\\~\\`\\_\\-]/g;\r\n\r\n static allImageTypesFilePattern = /\\.(jpeg|jpg|png|svg)/gi; // checks image-file-name\r\n // need all 3 of allImageTypesDataPatterns to test to obtain image-data:\r\n // ---------------------------------------------------------------------\r\n static allImageTypesDataPattern1 = /\\'*data:image(\\/(jpeg|jpg|png|svg))+;base64,/gi; // tested & works!\r\n static allImageTypesDataPattern2 = /\\\"*data:image(\\/(jpeg|jpg|png|svg))+;base64,/gi; // tested & works!\r\n static allImageTypesDataPattern3 = /[\\'\\\"]*data:image(\\/(jpeg|jpg|png|svg))+;base64,/gi; // tested & works! Usee only this one!\r\n static allImageTypesDataPattern4 = /\\'data\\:image(\\/(jpeg|jpg|png|svg))+\\;base64\\,/gi; // !tested \r\n static allImageTypesDataPattern5 = /\\\"data\\:image(\\/(jpeg|jpg|png|svg))+\\;base64\\,/gi; // !tested \r\n static allImageTypesDataPattern6 = /data\\:image(\\/(jpeg|jpg|png|svg))+\\;base64\\,/gi; // !tested \r\n\r\n static photoIdOrPhotoBnIdPattern = /\\\"*(photoId|photoBnId)\\\"*/ig; // checks photo model // tested & works!\r\n static photoUrlPrefixPattern = /url\\((\\')*/gi; // checks if \"url('\" exists // tested & works!\r\n static photoUrlPostfixPattern = /(\\')*\\)/gi; // checks if \"')\" exists\r\n static camelCasePattern = /^[a-z]+((\\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?$/g; // not tested\r\n static pascalCasePattern0 = /^(\\\")*[A-Z]+((\\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?(\\\")*$/g; // not tested\r\n static pascalCasePattern1 = /^(\\\")*[A-Z]+\\w+(\\\")*$/g; // not tested\r\n static bracketCurlyPatternGood = /[\\{\\}]*/g; // tested & works!\r\n static bracketCurlyPattern = /(\\{|\\})*/g; // tested & works!\r\n static bracketArrayPattern = /^[\\[\\]]*$/g;\r\n static bracketFnPattern = /^[\\(\\)]*$/g;\r\n static escapeQuotePattern = /\\\"/g;\r\n static quotePattern = /^[\\\"\\']\\w*[\\\"\\']$/gi; //--> falty pattern?\r\n static quotedWordPattern1 = /^(\\\"|\\').*(\\\"|\\')$/gi; //--> falty pattern?\r\n static quotedWordPattern2 = /^\\\".*\\\"$/gi; //--> falty pattern?\r\n // static pascalCase2CamelCaseJoiner = /^\\\".*\\\"$/gi;\r\n\r\n // replacement strings:\r\n // --------------------\r\n static imagePngReplacement = 'data:image\\/png;base64,'; // this is the `normalization string` for all images of slakez.com\r\n static quoteReplacement = '/^.*$/g';\r\n // ---------------------------------------------------------------\r\n private static angularElementRef : ElementRef\r\n constructor () { }\r\n // ----------------------------------------------------------------\r\n static createRegExpFromString (input : string) : any {\r\n if (typeof input !== 'string') {\r\n return 0;\r\n }\r\n input = (input) === '.' ? ('\\\\' + input) : input;\r\n // debugger;\r\n const regexp = new RegExp(input, 'g');\r\n return regexp;\r\n }\r\n // ----------------------------------------------------------------\r\n static getAngularElementById (id : string) : any {\r\n this.angularElementRef = EmitterSubjectService.getElementRef();\r\n let tempElem = document.getElementById(id);\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.angularElementRef)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(this.angularElementRef.nativeElement)) {\r\n tempElem = this.angularElementRef.nativeElement.querySelector(id);\r\n }\r\n }\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n tempElem = this.angularElementRef.nativeElement.querySelector('#' + id);\r\n }\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tempElem)) {\r\n return tempElem;\r\n }\r\n else return 'undefined';\r\n }\r\n // --------------------------------------------------------------\r\n static getCamelKey (k: string, isValue: boolean): any {\r\n let camelKey = \"\";\r\n if (!this.isNullOrEmpty(k)) {\r\n k = k.trim();\r\n // Note: important!!\" remove JSON style \\\" quote at the front at least so that lowerFirstLetter() will work.\r\n\r\n // Note: 1: will trim the prefix \\\" JSON quote,\r\n // 2: will trim both prefix and postfix \\\" JSON quote.\r\n // 3: will trim the postfix \\\" JSON quote,\r\n // -----------------------------------------------------------\r\n k = this.trimQuote(k, 1);\r\n k = this.trimBrackets(k, '{');\r\n \r\n // debugger;\r\n if (!this.isNullOrEmpty(k) && k.length > 0) {\r\n k = this.lowercaseFirstLetter(k);\r\n // debugger;\r\n }\r\n }\r\n if (!isValue) {\r\n camelKey = \"\\\"\" + k + \"\\\" : \";\r\n }\r\n else {\r\n ;\r\n }\r\n return camelKey;\r\n }\r\n // --------------------------------------------------------------\r\n static getCamelValue (v : string): any {\r\n let camelValue = \",\";\r\n if (!this.isNullOrEmpty(v)) {\r\n camelValue = v + \",\";\r\n }\r\n else {\r\n camelValue = '\"undefined\",';\r\n }\r\n return camelValue;\r\n }\r\n // --------------------------------------------------------------\r\n // Note: here the KV = \r\n // --------------------------------------------------------------\r\n static getCamelCasedFromKV (cck: string, ccv : string) : any {\r\n let camelCased = \"\";\r\n if (!this.isNullOrEmpty(cck) && !this.isNullOrEmpty(ccv)) {\r\n //debugger;\r\n camelCased = cck + ccv;\r\n // debugger;\r\n }\r\n return camelCased;\r\n }\r\n // --------------------------------------------------------------\r\n // Note: each word = tuple\r\n // --------------------------------------------------------------\r\n static getCamelCasedWord (k : string, v : string) : string {\r\n let camelCased = \"\";\r\n if (!this.isNullOrEmpty(k) && !this.isNullOrEmpty(v)) {\r\n //debugger;\r\n camelCased += this.getCamelKey(k, false) + this.getCamelValue(v);\r\n // debugger;\r\n }\r\n return camelCased;\r\n } \r\n // ---------------------------------------------------------------------------------\r\n // Note: currently not in use, but keep it.\r\n // ---------------------------------------------------------------------------------\r\n static getRawImageData (image : string) : string {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n const pattern = /\\'*data:image(\\/(jpeg|jpg|png|svg))+;base64,/;\r\n let tImage = image.replace(pattern, '');\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tImage)) {\r\n tImage = this.stripUrlForImageData(tImage);\r\n return tImage;\r\n }\r\n return image;\r\n }\r\n return image;\r\n }\r\n // --------------------------------------------------------------\r\n static isNullOrEmpty (input : any) : boolean {\r\n if (input === null || input === '' || input === undefined || (input !== null && (input.toString().toLowerCase() === 'null' || input.toString().toLowerCase() === 'undefined'))) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ref: https://www.codegrepper.com/code-examples/javascript/lowercase+first+character+javascript\r\n // Note: Tested & works! on 20220423\r\n // ---------------------------------------------------------------------------------\r\n public static lowercaseFirstLetter (str : string) : string {\r\n return str.charAt(0).toLowerCase() + str.slice(1);\r\n }\r\n \r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: this method will normalize any imageData to 'data:image/png;base64,xxxxx...'\r\n * for example, if the following exists in an imageData string:\r\n * 1) /\\data:image(\\/(jpeg|jpg|png|svg))+;base64,/\r\n * 2) /url(\\'\\data:image(\\/(jpeg|jpg|png|svg))+;base64,/\r\n *\r\n * it will strip url(' and also strip ( jpeg | jpg | svg ), but not png.\r\n * and produce to 'data:image/png;base64,xxxxx...'\r\n * which is called the 'normalized' format for all imageData for slakez.com\r\n *\r\n * Othewise it retuns an empty string.\r\n *\r\n * Tested & works! On 20220422\r\n * ---------------------------------------------------------------\r\n */\r\n // ---------------------------------------------------------------\r\n // Important: While testing normalizeImageData() method, the following\r\n // RegExps were tested, and their results noted:\r\n // 1) [ /\\data:image(\\/(jpeg|jpg|png|svg))+;base64,/; //--> falty pattern]\r\n // 2) [/\\'*data:image(\\/(jpeg|jpg|png|svg))+;base64,/; //--> tested & works!]\r\n // 3) [/\\\"*data:image(\\/(jpeg|jpg|png|svg))+;base64,/; //--> tested & works!]\r\n // 4) [/\\'\\\"*data:image(\\/(jpeg|jpg|png|svg))+;base64,/; // -->falty pattern]\r\n // 5) [/\\'*\\\"*data:image(\\/(jpeg|jpg|png|svg))+;base64,/; // -->falty pattern]\r\n // ---------------------------------------------------------------\r\n // Note: Important!!!\r\n // These methods,-\r\n // JsRegExpServiceStatic.normalizeImageData (),\r\n // JsRegExpServiceStatic.stripUrlForImageData (), and\r\n // normalizeImageData ()\r\n // can accomplish almost all the tasks that ImageProcessing will require.\r\n //\r\n // \r\n // ***************************************************************\r\n // Begin of Normalizing methods: Should be preferred to others\r\n // ***************************************************************\r\n // Tested & works! on 20230420\r\n // ---------------------------------------------------------------\r\n static normalizeImageDataWithRegExp (image : string) : any {\r\n // debugger;\r\n let outImageData : any = null; \r\n\r\n if (!this.isNullOrEmpty(image) && image.length > 5) {\r\n // debugger;\r\n if (image.match(this.allImageTypesDataPattern3)) {\r\n // debugger;\r\n outImageData = image.replace(this.allImageTypesDataPattern3, this.imagePngReplacement);\r\n }\r\n else if (image.match(this.allImageTypesDataPattern2)) {\r\n // debugger;\r\n outImageData = image.replace(this.allImageTypesDataPattern2, this.imagePngReplacement);\r\n }\r\n else if (image.match(this.allImageTypesDataPattern1)) {\r\n // debugger;\r\n outImageData = image.replace(this.allImageTypesDataPattern1, this.imagePngReplacement);\r\n }\r\n else {\r\n outImageData = image;\r\n }\r\n }\r\n else {\r\n outImageData = image;\r\n }\r\n // else outImageData is already set to null\r\n // debugger;\r\n return outImageData;\r\n }\r\n // ---------------------------------------------------------------\r\n // Tested & works! on 20230420\r\n // Note: TODO: This method name should be `normalizeImagedataWithoutUrl`\r\n // Since it is used in a lot of places, care must be taken\r\n // to avoid image not being rendered!!! \r\n // noted on : 20230605\r\n // ---------------------------------------------------------------\r\n public static normalizeImageData (image : string) : any {\r\n let outImage = '';\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image) && image.length > 5) {\r\n // debugger;\r\n outImage = this.normalizeImageDataWithRegExp(image);\r\n\r\n }\r\n // debugger;\r\n return outImage;\r\n }\r\n // ---------------------------------------------------------------\r\n // Tested & works!: 20230605\r\n // ---------------------------------------------------------------\r\n public static normalizeImageDataWithUrl (image : string) : any {\r\n let outImage = image;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image) && image.length > 5) {\r\n outImage = this.normalizeImageData(image);\r\n\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(outImage) && outImage.length > 5) {\r\n outImage = this.setUrlForImageData(outImage);\r\n // debugger;\r\n }\r\n }\r\n return outImage;\r\n }\r\n // ---------------------------------------------------------------\r\n // Tested & works! : 20230605\r\n // ---------------------------------------------------------------\r\n static normalizeImageFileNameWithoutUrl (imageFileName : string) : any {\r\n // debugger;\r\n let outImageFileName : any = null;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageFileName) && imageFileName.length >= 3) {\r\n // debugger;\r\n if (imageFileName.match(this.allImageTypesFilePattern)) {\r\n // debugger; \r\n outImageFileName = imageFileName;\r\n }\r\n // else outImageFileName is already set to null\r\n }\r\n // else outImageFileName is already set to null\r\n\r\n return outImageFileName;\r\n }\r\n // ---------------------------------------------------------------\r\n // Tested: works! on 20230420\r\n // ---------------------------------------------------------------\r\n static normalizeImageFileNameWithUrl (imageFileName : string) : any {\r\n // debugger;\r\n let outImageFileName : any = null;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageFileName) && imageFileName.length >= 3) {\r\n // debugger;\r\n if (imageFileName.match(this.allImageTypesFilePattern)) {\r\n // debugger;\r\n if (!imageFileName.match(this.photoUrlPrefixPattern)) {\r\n // debugger;\r\n outImageFileName = 'url(\\'' + imageFileName + '\\')';\r\n } \r\n }\r\n // else outImageFileName is already set to null\r\n }\r\n // else outImageFileName is already set to null\r\n\r\n return outImageFileName;\r\n }\r\n // ---------------------------------------------------------------\r\n // ***************************************************************\r\n // End of Normalizing methods: Should be preferred to others\r\n // ***************************************************************\r\n\r\n\r\n // ---------------------------------------------------------------------------------\r\n // Note: though it is similar to setUrlWithoutPrepending() method, \r\n // this one's name is more accurate to it's intended result that it produces\r\n // ---------------------------------------------------------------------------------\r\n static prefixUrlToImageData (image : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n if (image.indexOf('url(\\'') === -1) {\r\n return 'url(\\'' + image + '\\')';\r\n }\r\n else return image;\r\n }\r\n return '';\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Note: Since this method is written earlier to the normalizeRawImageData() method,\r\n // and is used throught the application, it is kept here until the application is \r\n // refactored with normalizeRawImageData() method.\r\n // ---------------------------------------------------------------------------------\r\n // Note: Tested, and works! Date ?, but prior to 20220421\r\n // ---------------------------------------------------------------------------------\r\n static prefixPngToImageData (image : string) : string {\r\n // debugger;\r\n let outImage : any;\r\n let tImage2 = '';\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image) && image.length > 5) {\r\n const pattern1 = /\\data:image(\\/(jpeg|jpg|png|svg))+;base64,/;\r\n const pattern2 = /data:image\\/png;base64,/;\r\n const tRawImage = image.replace(pattern1, '');\r\n // TODO: ***check to see if tImage is empty-string when no match is found?***\r\n // debugger;\r\n // tImage = tImage.toString().replace(/\\'+/, '\\'');//collapse multiple quotes ('+) to a single (')\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tRawImage)) {\r\n if (tRawImage.toString().toLowerCase().indexOf('url(\\'') !== -1) {\r\n\r\n tImage2 = this.stripUrlForImageData(tRawImage);\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tImage2)) {\r\n if (!tImage2.match(pattern2)) {\r\n outImage = 'data:image/png;base64,' + tImage2.toString();\r\n // debugger;\r\n }\r\n else {\r\n // debugger;\r\n outImage = tImage2;\r\n }\r\n }\r\n }\r\n else {\r\n if (!tRawImage.match(pattern2)) {\r\n // debugger;\r\n outImage = 'data:image/png;base64,' + tRawImage.toString();\r\n }\r\n else {\r\n // debugger;\r\n outImage = tRawImage;\r\n }\r\n }\r\n return outImage;\r\n }\r\n else {\r\n outImage = image;\r\n return outImage;\r\n }\r\n // Note: the above code accomplishes the same objective as the below code:\r\n // -----------------------------------------------------------------------------\r\n // if (image.toLowerCase().indexOf('jpeg') !== -1) image.replace('jpeg', 'jpg');\r\n // if ((image.toLowerCase().indexOf('data:image/jpg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/png;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/svg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/jpg/png;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/png/jpg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/jpg/svg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/svg/jpg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/png/svg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/svg/png;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/jpg/png/svg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/jpg/svg/png;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/png/jpg/svg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/png/svg/jpg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/svg/png/jpg;base64,') !== -1)\r\n // || (image.toLowerCase().indexOf('data:image/svg/jpg/png;base64,') !== -1)\r\n // ){\r\n // //debugger;\r\n // return image;\r\n // }\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // Testing: 20230605\r\n // ---------------------------------------------------------------\r\n static replaceJpegOrSvgWithPngInRawImageData (image : string) : any {\r\n debugger;\r\n const pattern1 = /\\'*data:image(\\/(jpeg|jpg|png|svg))+;base64,/;\r\n const pattern2 = /\\\"*data:image(\\/(jpeg|jpg|png|svg))+;base64,/;\r\n const allImageTypesPattern = /[\\'|\\\"]*data:image(\\/(jpeg|jpg|png|svg))+;base64,/;\r\n const replacement = 'data:image\\/png;base64,';\r\n let outImageData : any = null;\r\n\r\n // NOTE: check/findout what '*' means in JavaScript and C# with respect to RegExp:\r\n // JS: * —Matches the preceding expression 0 or more times. // ref: https://blog.bitsrc.io/a-beginners-guide-to-regular-expressions-regex-in-javascript-9c58feb27eb4\r\n // C#: * Matches the previous element zero or more times. // ref: https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image) && image.length > 5) {\r\n debugger; \r\n if (allImageTypesPattern.test(image)) {\r\n debugger;\r\n outImageData = image.replace(allImageTypesPattern, replacement);\r\n }\r\n else if (pattern1.test(image)) {\r\n debugger;\r\n outImageData = image.replace(pattern1, replacement);\r\n }\r\n else if (pattern2.test(image)) {\r\n debugger;\r\n outImageData = image.replace(pattern2, replacement);\r\n }\r\n // else outImageData is already set to null\r\n }\r\n // else outImageData is already set to null\r\n debugger;\r\n return outImageData;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n static setUrlForImageData (image : string) : string {\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image) && image.length > 5) {\r\n if (!image.match(this.allImageTypesDataPattern3) && !image.match(this.allImageTypesFilePattern)) {\r\n const prependedImageData = this.prefixPngToImageData(image); // check if its an image\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(prependedImageData)) {\r\n // debugger;\r\n if (prependedImageData.indexOf('url(\\'') === -1) {\r\n // debugger;\r\n return 'url(\\'' + prependedImageData + '\\')';\r\n }\r\n return prependedImageData;\r\n }\r\n else {\r\n return image;\r\n\t\t\t\t}\r\n }\r\n else if (image.indexOf('url(\\'') === -1) \r\n {\r\n return 'url(\\'' + image + '\\')';\r\n }\r\n else return image;\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n static stripUrlForImageData (image : string) : any {\r\n let tImage2 : any;\r\n let tImage : any;\r\n const pattern1 = /url\\((\\')*/gi;\r\n const pattern2 = /(\\')*\\)/gi;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(image)) {\r\n /* tImage = image.replace(this.photoUrlPrefixPattern, '');*/\r\n tImage = image.replace(pattern1, '');\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tImage)) {\r\n /*tImage2 = tImage.replace(this.photoUrlPostfixPattern, '');*/\r\n tImage2 = tImage.replace(pattern2, '');\r\n // debugger;\r\n }\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(tImage2)) {\r\n // debugger;\r\n return tImage2;\r\n }\r\n else {\r\n debugger;\r\n return image;\r\n }\r\n }\r\n else {\r\n debugger;\r\n return image;\r\n }\r\n }\r\n // ----------------------------------------------------------------------\r\n // Note: tested & works! on 20220423\r\n // ----------------------------------------------------------------------\r\n static trimBrackets (input : string, bracketType: string) : any {\r\n if (!this.isNullOrEmpty(input) && input.length > 0 && !this.isNullOrEmpty(bracketType) && bracketType.length >= 1) {\r\n // debugger;\r\n switch (bracketType.toLowerCase()){\r\n case \"{\": case \"}\": case \"curly\":\r\n return input.replace(this.bracketCurlyPattern, \"\");\r\n case \"[\": case \"]\": case \"array\":\r\n return input.replace(this.bracketArrayPattern, \"\");\r\n case \"(\": case \")\": case \"fn\":\r\n return input.replace(this.bracketFnPattern, \"\");\r\n default:\r\n return \"\";\r\n } \r\n }\r\n else return \"\";\r\n }\r\n // ----------------------------------------------------------------------\r\n static addBrackets (input : string, bracketType : string) : any {\r\n if (!this.isNullOrEmpty(input) && input.length >= 0 && !this.isNullOrEmpty(bracketType) && bracketType.length >= 1) {\r\n // debugger;\r\n switch (bracketType.toLowerCase()) {\r\n case \"{\": case \"}\": case \"curly\":\r\n return \"{\" + input + \"}\";\r\n case \"[\": case \"]\": case \"array\":\r\n return \"[\" + input + \"]\";\r\n case \"(\": case \")\": case \"fn\":\r\n return \"(\" + input + \")\";\r\n default:\r\n return '';\r\n }\r\n }\r\n else return '';\r\n }\r\n // ----------------------------------------------------------------------\r\n // Note: 1: will trim the prefix \\\" JSON quote,\r\n // 2: will trim both prefix and postfix \\\" JSON quote.\r\n // 3: will trim the postfix \\\" JSON quote,\r\n // ----------------------------------------------------------------------\r\n static trimQuote (input : string, num: number) : any {\r\n // let trimmed : any;\r\n // let trimmed1 : any;\r\n // let trimmed2 : any;\r\n // trimmed = input.replace(this.quotePattern, this.quoteReplacement); // doesn't wprk \r\n // trimmed1 = input.replace(this.quotedWordPattern1, this.quoteReplacement); // doesn't wprk\r\n // trimmed2 = input.replace(this.quotedWordPattern2, this.quoteReplacement); // doesn't wprk\r\n\r\n let trimmed3: any;\r\n if (!this.isNullOrEmpty(input) && input.length > 0) {\r\n // debugger;\r\n if (num == 1) {\r\n trimmed3 = input.replace(\"\\\"\", \"\");\r\n }\r\n else if (num == 2) {\r\n trimmed3 = input.replace(\"\\\"\", \"\");\r\n trimmed3 = trimmed3.replace(\"\\\"\", \"\");\r\n }\r\n else if (num == 3) {\r\n trimmed3 = input.replace(\"\\\"\", \"\\\"\"); // preserve the prefix\r\n trimmed3 = trimmed3.replace(\"\\\"\", \"\"); // remove the postfix\r\n }\r\n }\r\n // debugger;\r\n return trimmed3;\r\n }\r\n // ----------------------------------------------------------------------\r\n static prepareInputForJsonParse (input : string) : any {\r\n let output = '';\r\n if (!this.isNullOrEmpty(input) && input.length > 0) {\r\n // debugger;\r\n let firstChar = input[ 0 ];\r\n // debugger;\r\n // let pattern = \"{\"; // this.createRegExpFromString(firstChar);\r\n // debugger;\r\n output = input.replace(/{/, \"\\{\");\r\n // debugger;\r\n let lastChar = output[ output.length - 1 ]\r\n // debugger;\r\n // pattern = this.createRegExpFromString(lastChar);\r\n // debugger;\r\n output = output.replace(/}/, \"\\}\");\r\n // debugger;\r\n }\r\n // debugger;\r\n return output;\r\n }\r\n // ----------------------------------------------------------------------\r\n // Tested & passed on: 20220422\r\n // Explanation: Steps:\r\n // 1) create an array of (PascalCased)Word in a given string using the\r\n // `JsRegExpServiceStatic.camerCasePattern` and RegExp's `match` function on the given-string\r\n // 2) iterate over the array of words and convert each item's first character tp lowerCase on the given string.\r\n // ----------------------------------------------------------------------\r\n // ---------------------------------------------------------------------------------\r\n // public static photoModelStringToCamelCase (str : string) : string {\r\n // ---------------------------------------------------------------------------------\r\n // Note: this method is currently NOT in use.\r\n // ---------------------------------------------------------------------------------\r\n public static toCamelCasedPhotoModelString (input : string) : any {\r\n let camelCased = \"\";\r\n let kvWord = \"\";\r\n let kvWordArr : any[] = [];\r\n if (!this.isNullOrEmpty(input) && input.length > 0) {\r\n kvWordArr = input.split(',') as Array;\r\n // debugger;\r\n if (!this.isNullOrEmpty(kvWordArr) && kvWordArr.length > 0) {\r\n camelCased = \"{\";\r\n for (var i = 0; i < kvWordArr.length; i = i + 1) {\r\n let word = kvWordArr[ i ];\r\n let parts = word.split(':');\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(parts) && parts.length === 2) {\r\n kvWord = this.getCamelCasedWord(parts[ 0 ], parts[ 1 ]);\r\n\r\n if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(camelCased)) {\r\n camelCased = kvWord;\r\n }\r\n else {\r\n camelCased += kvWord;\r\n }\r\n // debugger;\r\n } \r\n }\r\n camelCased += \"}\";\r\n }\r\n }\r\n // debugger;\r\n return camelCased;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: to test the performace time of any function:\r\n // ref: https://stackoverflow.com/questions/313893/how-to-measure-time-taken-by-a-function-to-execute\r\n // ---------------------------------------------------------------\r\n static performanceTimed = (f: any) => (...args : any) => {\r\n let start = performance.now();\r\n let ret = f(...args);\r\n let message = `JsExpServiceStatic.Function ${ f.name } took ${ (performance.now() - start).toFixed(3) }ms`;\r\n // console.log(`function ${ f.name } took ${ (performance.now() - start).toFixed(3) }ms`);\r\n console.log(message);\r\n alert(message);\r\n return ret;\r\n }\r\n // Usage:\r\n // let test = () => { /* does something */ }\r\n // test = timed(test) // turns the function into a timed function in one line\r\n // test ()\r\n // --------------------------------------------------------------\r\n // Usage of performanceTimed: currently not used:\r\n // --------------------------------------------------------------\r\n static getCamelCasedWithPerformanceTimed (input : string) : any {\r\n let camelCased : any;\r\n // debugger;\r\n let test = () => {\r\n /* does something */\r\n camelCased = this.toCamelCasedPhotoModelString(input);\r\n // debugger;\r\n test = this.performanceTimed(test) // turns the function into a timed function in one line\r\n test();\r\n // debugger;\r\n return camelCased;\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { DbDexieToDictionaryService } from '../dbServiceService/dbDexieToDictionaryService.service';\r\nimport { DbServiceService } from '../dbServiceService/dbServiceService.service';\r\nimport { PhotoPrivacyService } from '../photoServiceService/photoPrivacyService.service';\r\nimport { PhotoServiceService } from '../photoServiceService/photoServiceService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { StringServiceStatic } from './stringServiceStatic.service';\r\n\r\n// =====================================================================\r\n\r\n// =====================================================================\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport abstract class MessageBuilderServiceStatic\r\n{\r\n static randomNumberGenerator$ : Observable;\r\n static randomNumber = 0;\r\n static photoPrivacyService : PhotoPrivacyService;\r\n static dbDexieToDictionaryService : DbDexieToDictionaryService;\r\n static loginSuccess : LoginSuccess;\r\n constructor (public photoServiceService : PhotoServiceService,\r\n public dbServiceService: DbServiceService ) {\r\n\t}\r\n\t// ---------------------------------------------------------------\r\n\tstatic printMessage (sitUserId : number, message: string) : string | any {\r\n\t\t// debugger;\r\n var outMessage = StringServiceStatic.stringBuilder('timestamp: ' + new Date().getTime() + ' sitUserId: ' + (sitUserId > 0 ? sitUserId : 0) + '; message: ' + (message.length <2048 ? message : ''));\r\n // console.log(outMessage);\r\n return outMessage;\r\n\t}\r\n // ------------------------------------------------------------------------------\r\n // Shell method:\r\n static getProfilePicsFromDictionary (sitUserId : number) : ProfilePics {\r\n // debugger;\r\n let date = new Date();\r\n let pPics : ProfilePics;\r\n return pPics;\r\n }\r\n // ------------------------------------------------------------------------------\r\n // Shell method:\r\n static populateSitUserIdDictionaryFromIndexedDb () : any {\r\n \r\n }\r\n // ----------------------------------------------------------------------\r\n\r\n // ----------------------------------------------------------------------\r\n\r\n // ------------------------------------------------------------------------\r\n}\r\n","'use strict'\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { BreadcrumServiceStatic } from './breadcrumServiceStatic.service';\r\nimport { CopyServiceStatic } from './commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from './commonStaticServices/dateStringServiceStatic.service';\r\nimport { ConstantServiceStatic } from './constantServiceStatic.service';\r\n\r\nimport { InMemoryDataServiceStatic } from './inMemoryDataServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from './jsRegExpServiceStatic.service';\r\nimport { UnitConversionServiceStatic } from './unitConversionServiceStatic.service';\r\n\r\n// import { WhenScrollEndsService } from './whenScrollEndsService.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class StaticServiceService implements OnDestroy {\r\n constructor(\r\n\r\n ) { }\r\n static breadcrumServiceStatic : BreadcrumServiceStatic;\r\n static constantServiceStatic : ConstantServiceStatic;\r\n static copyServiceStatic : CopyServiceStatic;\r\n static dateStringServiceStatic : DateStringServiceStatic;\r\n static inMemoryDataServiceStatic : InMemoryDataServiceStatic;\r\n static jsRegExpServiceStatic : JsRegExpServiceStatic;\r\n static unitConverstionServiceStatic : UnitConversionServiceStatic;\r\n private emitterDestroyed$ : Subject = new Subject();\r\n\r\n // ------------------------------------------------------------------\r\n static setBreadcrumServiceStatic ( bcs : BreadcrumServiceStatic): void {\r\n this.breadcrumServiceStatic = bcs;\r\n }\r\n static getBreadcrumServiceStatic () : BreadcrumServiceStatic {\r\n return this.breadcrumServiceStatic;\r\n }\r\n // ------------------------------------------------------------------\r\n static setConstantServiceStatic ( cs : ConstantServiceStatic): void {\r\n this.constantServiceStatic = cs;\r\n }\r\n static getConstantServiceStatic () : ConstantServiceStatic {\r\n return this.constantServiceStatic;\r\n }\r\n // ------------------------------------------------------------------\r\n static setCopyServiceStatic ( cps : CopyServiceStatic): void {\r\n this.copyServiceStatic = cps;\r\n }\r\n static getCopyServiceStatic () : CopyServiceStatic {\r\n return this.copyServiceStatic;\r\n }\r\n // ------------------------------------------------------------------\r\n static setDateStringServiceStatic ( dss : DateStringServiceStatic): void {\r\n this.dateStringServiceStatic = dss;\r\n }\r\n // -----------------------------------------------------------------\r\n static getDateStringServiceStatic () : DateStringServiceStatic {\r\n return this.dateStringServiceStatic;\r\n } \r\n // ------------------------------------------------------------------\r\n static setInMemoryDataServiceStatic ( ims : InMemoryDataServiceStatic ) : void\r\n {\r\n this.inMemoryDataServiceStatic = ims;\r\n }\r\n static getInMemoryDataServiceStatic () : InMemoryDataServiceStatic\r\n {\r\n return this.inMemoryDataServiceStatic;\r\n }\r\n // ------------------------------------------------------------------\r\n static setJsRegExpServiceStatic ( ims : JsRegExpServiceStatic ) : void\r\n {\r\n this.jsRegExpServiceStatic = ims;\r\n }\r\n static getJsRegExpServiceStatic () : JsRegExpServiceStatic\r\n {\r\n return this.jsRegExpServiceStatic;\r\n }\r\n // ------------------------------------------------------------------\r\n //static setRedirectionServiceStatic ( rds : RedirectionServiceStatic): void {\r\n // this.redirectionServiceStatic = rds;\r\n // }\r\n //static getRedirectionServiceStatic () : RedirectionServiceStatic {\r\n // return this.redirectionServiceStatic;\r\n //} \r\n // ------------------------------------------------------------------\r\n static setUnitConversionServiceStatic ( ucs : UnitConversionServiceStatic): void {\r\n this.unitConverstionServiceStatic = ucs;\r\n }\r\n static getUnitConversionServiceStatic () : UnitConversionServiceStatic {\r\n return this.unitConverstionServiceStatic;\r\n }\r\n // --------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n ngOnDestroy() {\r\n // prevent memory leak when component destroyed\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n }\r\n // ------------------------------------------------------------------\r\n}\r\n","'use strict'\r\n// import * as ab2str from 'arraybuffer-to-string'; // ref:https:// www.npmjs.com/package/arraybuffer-to-string\r\n// import { decode, encode } from 'base64-arraybuffer-es6'; // ref:https:// www.npmjs.com/package/base64-arraybuffer\r\n// import * as base64js from 'base64-js';\r\n// import * as clone from 'clone';\r\nimport { interval, Observable, Subject, Subscription, } from 'rxjs';\r\nimport { map, takeUntil, distinctUntilChanged, filter, take, startWith, tap } from 'rxjs/operators';\r\n// import { Preference } from '../../models/profile/preference.model';\r\n// import * as str2ab from 'string-to-arraybuffer'; // ref:https:// www.npmjs.com/package/string-to-arraybuffer\r\n//import * as textEncoder from 'text-encoder-lite';\r\nimport { KV } from '../../models/keyValue/kv.model';\r\nimport { deserialize, serialize } from '@ungap/structured-clone'; // for native deep-clone\r\nimport { decode, encode } from 'sourcemap-codec';\r\n// import { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\n// import { CopyServiceStatic } from './copyServiceStatic.service';\r\nvar Buffer = require('buffer/').Buffer; // note: the trailing slash is important!\r\n// import { Buffer } from ('buffer/').Buffer; \r\nimport * as naclUtil from 'tweetnacl-util';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\n\r\n//\r\n/*\r\n * fetchAsBlob(`https:// fonts.gstatic.com/s/roboto/v16/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2`)\r\n * .then(convertBlobToBase64)\r\n * .then(console.log)\r\n * -------------------------------------------------------------------\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript\r\n * encode Uint8Array to string, and decode string to Uint8Array.\r\n */\r\n// const base_64 = {\r\n// decode: (s) => Uint8Array.from(atob(s), (c) => c.charCodeAt(0)),\r\n// encode: (b) => btoa(String.fromCharCode(...new Uint8Array(b))),\r\n// };\r\n//// for Node.js\r\n// const base_64_njs = {\r\n// decode: (s) => Buffer.from(s, 'base64'),\r\n// encode: (b) => Buffer.from(b).toString('base64'),\r\n// };\r\n\r\n// -------------------------------------------------------------------\r\n// This is based on the lib clone ( as promulgated by Dan Wahlin)\r\nexport abstract class StringServiceStatic {\r\n private emitterDestroyed$ : Subject = new Subject();\r\n\r\n public static strings : string[] = [];\r\n // -------------------------------------------------------------------------\r\n constructor () {\r\n // debugger;\r\n // EmitterSubjectService.toSetMemberViewMgmtModelEmitter\r\n // .pipe(takeUntil(this.emitterDestroyed$))\r\n // .subscribe((result) => {\r\n // debugger;\r\n // EmitterSubjectService.emitMemberViewMgmtModel(result);;\r\n // }); \r\n }\r\n // -------------------------------------------------------------------------\r\n public mimeTypes : KV[] = [];\r\n public jsTypes = [ 'Boolean', 'BigInt', 'Function', 'NaN', 'Null', 'Number', 'Object', 'object', 'String', 'Symbol', 'Undefined' ];\r\n public Sys = {};\r\n\r\n // static emitMemberViewMgmtModel (model : MemberViewMgmtModel): void {\r\n // EmitterSubjectService.setMemberViewMgmtModel(model);\r\n // }\r\n // static toSetMemberViewMgmtModel (model : MemberViewMgmtModel) {\r\n // debugger;\r\n // EmitterSubjectService.setMemberViewMgmtModel(model);\r\n // }\r\n // ---------------------------------------------------------------\r\n // Tested on 20220324 and it works!\r\n // ---------------------------------------------------------------\r\n static CountCharInString (charRegExp : RegExp, strToSearch : string) : number {\r\n // debugger;\r\n return ((strToSearch || '').match(charRegExp) || []).length;\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n static getUserNameFromEmail (email : string) : string {\r\n if (!this.isNullOrEmpty(email)) {\r\n let parts = email.split('@');\r\n if (parts.length > 0) { return parts[ 0 ]; }\r\n else return email;\r\n }\r\n else return email;\r\n }\r\n // ---------------------------------------------------------------\r\n static string2Number (input : string) : number {\r\n if (!this.isNullOrEmpty(input)) {\r\n return parseInt(input, 10);\r\n }\r\n else return -999;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: to test the performace time of any function:\r\n // ref: https://stackoverflow.com/questions/313893/how-to-measure-time-taken-by-a-function-to-execute\r\n // ---------------------------------------------------------------\r\n static performanceTimed = (f : any) => (...args : any) => {\r\n let start = performance.now();\r\n let ret = f(...args);\r\n let message = `StringServiceStatic.function ${ f.name } took ${ (performance.now() - start).toFixed(3) }ms`;\r\n // console.log(`function ${ f.name } took ${ (performance.now() - start).toFixed(3) }ms`);\r\n console.log(message);\r\n alert(message);\r\n return ret;\r\n }\r\n // Usage:\r\n // let test = () => { /* does something */ }\r\n // test = timed(test) // turns the function into a timed function in one line\r\n // test ()\r\n // ---------------------------------------------------------------\r\n // Deep-Clone without _lodash:\r\n static deepCloneJson (obj : any) : any {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n // --------------------------------------------------------------\r\n // Native-JS-deep-clone:\r\n // import structuredClone from '@ungap/structured-clone'; // for native deep-clone\r\n static deepClone (obj : any) : any {\r\n // return structuredClone(obj);\r\n // the result can be stringified as JSON without issues\r\n // even if there is recursive data, bigint values,\r\n // typed arrays, and so on\r\n // const serialized = serialize({ any: 'serializable' });\r\n const serialized = serialize(obj);\r\n debugger;\r\n // the result will be a replica of the original object\r\n const deserialized = deserialize(serialized);\r\n debugger;\r\n return deserialized;\r\n }\r\n // --------------------------------------------------------------\r\n /*\r\n * --------------------------------------------------------------\r\n * Ref;https:// stackoverflow.com/questions/1179366/is-there-a-javascript-strcmp#comment64419826_17765169\r\n */\r\n static strcmp (str1 : any, str2 : any) : any {\r\n /*\r\n * http:// kevin.vanzonneveld.net\r\n * + original by: Waldo Malqui Silva\r\n * + input by: Steve Hilder\r\n * + improved by: Kevin van Zonneveld (http:// kevin.vanzonneveld.net)\r\n * + revised by: gorthaur\r\n * * example 1: strcmp( 'waldo', 'owald' );\r\n * * returns 1: 1\r\n * * example 2: strcmp( 'owald', 'waldo' );\r\n * * returns 2: -1\r\n */\r\n\r\n return str1 === str2 ? 0 : str1 > str2 ? 1 : -1;\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Note: Begin of REVERSE-string-methods:\r\n * Ref: https:// medium.com/better-programming/5-ways-to-reverse-a-string-in-javascript-466f62845827\r\n * --------------------------------------------------------------\r\n */\r\n static reverse (str : any) : any {\r\n return str.split('').reverse().join('');\r\n }\r\n // --------------------------------------------\r\n static reverseES6 (str : any) : any {\r\n return [ ...str ].reverse().join('');\r\n }\r\n // --------------------------------------------\r\n static reverseUsingReduce (str : any) : any {\r\n return str.split('').reduce((rev : any, char : any) => char + rev, '');\r\n }\r\n // --------------------------------------------\r\n static reverseUsingRecursion (str : any) : any {\r\n return str ? this.reverseUsingRecursion(str.substr(1)) + str[ 0 ] : str;\r\n }\r\n // --------------------------------------------\r\n static reverseUsingForLoop (str : any) : any {\r\n let reversed = '';\r\n\r\n for (const char of str) {\r\n reversed = char + reversed;\r\n }\r\n return reversed;\r\n }\r\n /*\r\n * --------------------------------------------\r\n * Note: Tested on 2020/12/20. Works!\r\n * --------------------------------------------\r\n */\r\n static reverseOnItself (inArr : any[]) : any[] {\r\n const len = inArr.length;\r\n let middleIndex = len / 2;\r\n let temp : any;\r\n\r\n if (len % 2 === 0) {\r\n // even-case\r\n for (let i = 0; i <= middleIndex; i++) {\r\n temp = inArr[ i ];\r\n inArr[ i ] = inArr[ len - i - 1 ];\r\n inArr[ len - i - 1 ] = temp;\r\n }\r\n } else if (len % 2 === 1) {\r\n // odd-case\r\n const middleV = inArr[ len / 2 ];\r\n\r\n middleIndex = len / 2;\r\n for (let i = 0; i <= middleIndex || inArr[ i ] === middleV; i++) {\r\n // swap up to middle or middleValue\r\n temp = inArr[ i ];\r\n inArr[ i ] = inArr[ len - i - 1 ];\r\n inArr[ len - i - 1 ] = temp;\r\n }\r\n }\r\n return inArr;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ref: https://www.googlecloudcommunity.com/gc/Apigee/Convert-each-field-in-JSON-Object-from-Camel-Case-to-Pascal-Case/m-p/73887\r\n // recursive function that will properly camelCase all of a JavaScript object's properties:\r\n // Tested, works on 20231013\r\n static pascalCasePattern = new RegExp(\"^([A-Z])([a-z]+)\");\r\n\r\n static pascalCaseToCamelCase (propname) {\r\n if (StringServiceStatic.pascalCasePattern.test(propname)) {\r\n return propname.charAt(0).toLowerCase() + propname.slice(1);\r\n }\r\n else {\r\n return propname;\r\n }\r\n }\r\n\r\n static convertPropertyNames (obj, converterFn) {\r\n var r, value, t = Object.prototype.toString.apply(obj);\r\n if (t == \"[object Object]\") {\r\n r = {};\r\n for (var propname in obj) {\r\n value = obj[ propname ];\r\n r[ converterFn(propname) ] = StringServiceStatic.convertPropertyNames(value, converterFn);\r\n }\r\n return r;\r\n }\r\n else if (t == \"[object Array]\") {\r\n r = [];\r\n for (var i = 0, L = obj.length; i < L; ++i) {\r\n value = obj[ i ];\r\n r[ i ] = StringServiceStatic.convertPropertyNames(value, converterFn);\r\n }\r\n return r;\r\n }\r\n // debugger;\r\n return obj;\r\n }\r\n\r\n static testCamelCase () : void {\r\n const originalObject = {\r\n \"IsSuccess\": true,\r\n \"ResponseDate\": \"2019-02-20T11:42:11.963Z\",\r\n \"Result\": {\r\n \"RecordCount\": \"abc123\",\r\n \"BillDetailsList\": [\r\n {\r\n \"SourceSystem\": \"Abc123\",\r\n \"BillAmount\": \"Abc123\",\r\n \"BillCreationDate\": \"2019-02-19T09:16:04Z\"\r\n },\r\n {\r\n \"SourceSystem\": \"abc123\",\r\n \"BillAmount\": \"XyzAbc\",\r\n \"BillCreationDate\": \"abc123\"\r\n }\r\n ]\r\n }\r\n };\r\n var converted = StringServiceStatic.convertPropertyNames(originalObject, StringServiceStatic.pascalCaseToCamelCase);\r\n\r\n console.log(converted);\r\n alert(converted);\r\n }\r\n\r\n\r\n /* Use Case:\r\n var obj = {\r\n 'FirstName': 'John',\r\n 'LastName': 'Smith',\r\n 'BirthDate': new Date(),\r\n 'ArrayTest': ['one', 'TWO', 3],\r\n 'ThisKey': {\r\n 'This-Sub-Key': 42\r\n }\r\n }\r\n console.log(JSON.stringify(toCamel(obj)))\r\n */\r\n // ---------------------------------------------------------------------------------\r\n /*\r\n * ---------------------------------------------------------------------------------\r\n * ref: https://www.javacodeexamples.com/convert-first-character-of-string-to-lowercase-in-java-example/636\r\n * Note: This method does not work:( tested on 20220422\r\n * if it cannot be fixed, delete this.\r\n * ---------------------------------------------------------------------------------\r\n */\r\n static firstCharToLowerCase (str : string) : string {\r\n if (str === null || str.length === 0) {\r\n return '';\r\n }\r\n var charArr = str.split('');\r\n if (charArr.length > 0) {\r\n charArr[ 0 ] = charArr[ 0 ].toString().toLowerCase();\r\n var outStr = charArr.join();\r\n debugger;\r\n return outStr;\r\n // return str.substring(0, 1).toLowerCase() + str.substring(1);\r\n }\r\n \r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Testing the ArrayReverseOnItsef:\r\n * Note: Tested, works! 2020/12/20\r\n * --------------------------------------------------------------\r\n */\r\n static testReverseOnItself(inArray: any[]): any {\r\n let arrStr = '';\r\n\r\n for (let i = 0; i < 11; i++) {\r\n inArray.push(i);\r\n arrStr += i + ', ';\r\n }\r\n const revArr = this.reverseOnItself(inArray); // Tested and works!\r\n let revArrStr = '';\r\n\r\n if (!this.isNullOrEmpty(revArr)) {\r\n for (let i = 0; i < 11; i++) {\r\n revArrStr += revArr[i] + ', ';\r\n }\r\n }\r\n alert('in-Array: ' + arrStr + '\\n reversed-Array: ' + revArrStr);\r\n }\r\n // --------------------------------------------------------------\r\n static getEmailFromSitUserKey (key : string): any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(key)) {\r\n var parts = key.split('&');\r\n\r\n if (parts.length === 2) {\r\n return parts[ 1 ];\r\n }\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static getTicksFromSitUserKey (key : string) : any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(key)) {\r\n var parts = key.split('&');\r\n\r\n if (parts.length === 2) {\r\n return parts[ 0 ];\r\n }\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n // ref: https://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case\r\n // --------------------------------------------------------------\r\n static camelToPascalize (str) {\r\n return (\" \" + str).toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, function (match, chr) {\r\n return chr.toUpperCase();\r\n });\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Note: END of REVERSE-string-methods:\r\n * --------------------------------------------------------------\r\n */\r\n\r\n \r\n /*\r\n * --------------------------------------------------------------\r\n * Dan Bernstein’s popular “times 33” hash function in TypeScript\r\n * Author: Sayeed Rahman\r\n * Date: November 19, 2020\r\n * Location: Ottawa, Canada\r\n *\r\n * TODO: test.\r\n * --------------------------------------------------------------\r\n */\r\n /*\r\n * times33Hash(str: string): number {\r\n * let h = 5381;\r\n * for (let i = 0, j = str.length; i < j; i++)\r\n * {\r\n * //Shifting h left by 5 bits is a quick way to multiply by 32\r\n * h += (h << 5) + parseInt(str[i], 10);\r\n * //Only keep the lower 32 bits of h\r\n * h = h & 0xFFFFFFFF;\r\n * }\r\n * //debugger;\r\n * return h;\r\n * }\r\n */\r\n /*\r\n * -------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/4459928/how-to-deep-clone-in-javascript/\r\n * Note: failed during cloning on 20210611\r\n */\r\n // static cloneDeepFailed(item): any {\r\n // if (!item) {\r\n // return item;\r\n // } // null, undefined values check\r\n\r\n // const types = [Number, String, Boolean];\r\n // let result: any;\r\n\r\n // // normalizing primitives if someone did new String('aaa'), or new Number('444');\r\n // types.forEach((type) => {\r\n // if (item instanceof type) {\r\n // result = type(item);\r\n // }\r\n // });\r\n\r\n // if (typeof result === 'undefined') {\r\n // if (Object.prototype.toString.call(item) === '[object Array]') {\r\n // result = [];\r\n // if (item && item.llength > 0) {\r\n // item.forEach((child, index) => {\r\n // result[ index ] = this.cloneDeepFailed(child);\r\n // });\r\n // }\r\n // } else if (typeof item === 'object') {\r\n // // testing that this is DOM\r\n // if (item.nodeType && typeof item.cloneNode === 'function') {\r\n // result = item.cloneNode(true);\r\n // } else if (!item.prototype) {\r\n // // check that this is a literal\r\n // if (item instanceof Date) {\r\n // result = new Date(item);\r\n // } else {\r\n // // it is an object literal\r\n // result = { };\r\n // let i = 0;\r\n\r\n // item.map((e) => {\r\n // result[ i ] = this.cloneDeepFailed(e);\r\n // i++;\r\n // });\r\n // }\r\n // } else {\r\n // /*\r\n // * depending what you would like here,\r\n // * just keep the reference, or create new object\r\n // */\r\n // if (item.constructor) {\r\n // // would not advice to do that, reason? Read below\r\n // result = new item.constructor();\r\n // } else {\r\n // result = item;\r\n // }\r\n // }\r\n // } else {\r\n // result = item;\r\n // }\r\n // }\r\n\r\n // return result;\r\n // }\r\n\r\n /*\r\n * Usage Example:\r\n * ==============\r\n * var copy = this.clone({\r\n * one: {\r\n * 'one-one': new String('hello'),\r\n * 'one-two': [\r\n * 'one', 'two', true, 'four'\r\n * ]\r\n * },\r\n * two: document.createElement('div'),\r\n * three: [\r\n * {\r\n * name: 'three-one',\r\n * number: new Number('100'),\r\n * obj: new function () {\r\n * this.name = 'Object test';\r\n * }\r\n * }\r\n * ]\r\n * })\r\n * -------------------------------------------------------------------\r\n * Does not work, it reached Maximum Call Stack size.\r\n * ref:https:// stackoverflow.com/questions/4459928/how-to-deep-clone-in-javascript/\r\n */\r\n // static deepCopy(aObject): any {\r\n // if (!aObject) {\r\n // return aObject;\r\n // }\r\n\r\n // let v;\r\n // const bObject = Array.isArray(aObject) ? [] : { };\r\n // let i = 0;\r\n\r\n // aObject.map((e) => {\r\n // v = e;\r\n // bObject[i] = typeof v === 'object' ? this.deepCopy(v) : v;\r\n // i++;\r\n // });\r\n\r\n // return bObject;\r\n // }\r\n /*\r\n * -------------------------------------------------------------------\r\n * Note: Could not clone ProfileTilesArr. Encountered errors\r\n * -------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/4459928/how-to-deep-clone-in-javascript/\r\n * Note: failed on 20210611\r\n */\r\n // static deeepClone(obj, hash = new WeakMap()): any {\r\n // if (Object(obj) !== obj) {\r\n // return obj; // primitives\r\n // }\r\n // if (hash.has(obj)) {\r\n // return hash.get(obj); // cyclic reference\r\n // }\r\n // const result =\r\n // obj instanceof Set\r\n // ? new Set(obj) // See note about this!\r\n // : obj instanceof Map\r\n // ? new Map(Array.from(obj, ([key, val]) => [key, this.deeepClone(val, hash)]))\r\n // : obj instanceof Date\r\n // ? new Date(obj)\r\n // : obj instanceof RegExp\r\n // ? new RegExp(obj.source, obj.flags)\r\n // : // ... add here any specific treatment for other classes ...\r\n // // and finally a catch-all:\r\n // obj.constructor\r\n // ? new obj.constructor()\r\n // : Object.create(null);\r\n\r\n // hash.set(obj, result);\r\n // return Object.assign(result, ...Object.keys(obj).map((key) => ({ [key]: this.deeepClone(obj[key], hash)})));\r\n // }\r\n /*\r\n * Usage Example:\r\n * ==============\r\n * Sample data\r\n * var p = {\r\n * data: 1,\r\n * children: [{\r\n * data: 2,\r\n * parent: null\r\n * }]\r\n * };\r\n * p.children[0].parent = p;\r\n */\r\n\r\n // var q = this.deeepClone(p);\r\n\r\n /*\r\n * console.log(q.children[0].parent.data); //1\r\n * --------------------------------------------------------------\r\n */\r\n // --------------------------------------------------------------\r\n static getCircularReplacer = () =>\r\n {\r\n const seen = new WeakSet();\r\n return (key : any, value : any ) =>\r\n {\r\n if ( typeof value === 'object' && value !== null )\r\n {\r\n if ( seen.has( value ) )\r\n {\r\n return;\r\n }\r\n seen.add( value );\r\n }\r\n return value;\r\n };\r\n }\r\n\r\n // problem: JSON.stringify(circularReference);\r\n // TypeError: cyclic object value\r\n // solution:\r\n // usage: JSON.stringify(circularReference, getCircularReplacer());\r\n // ---------------------------------------------------------------------------------\r\n public static firstIndexOf(input: string, pattern: string): any {\r\n if (!this.isNullOrEmpty(input)) {\r\n return input.indexOf(pattern);\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public static trimQuotes(input: string): any {\r\n if (!this.isNullOrEmpty(input)) {\r\n let temp = input.trim().replace('\\\"', '');\r\n\r\n if (!this.isNullOrEmpty(temp)) {\r\n temp = temp.trim().replace('\\'', '');\r\n }\r\n if (!this.isNullOrEmpty(temp)) {\r\n temp = temp.trim().replace('\"', '');\r\n }\r\n return temp;\r\n }\r\n return input;\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // Ref: https://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case\r\n //\r\n // Note: CAUTION!!!:\r\n // this method stripped/deleted all dividers of < kay: value > paired JSON string of the `Photo` model.\r\n // this is not a desirable outcome :( !\r\n // this may NOT be good for a JSON string of any model!!!\r\n // ---------------------------------------------------------------------------------\r\n public static toCamelCaseNotUsingLodash (str:string): string {\r\n //return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\r\n // return index === 0 ? word.toLowerCase() : word.toUpperCase();\r\n //}).replace(/\\s+/g, '');\r\n\r\n // OR using lodash\r\n // return _lodash.camelCase(str);\r\n\r\n // OR\r\n if (!this.isNullOrEmpty(str)) {\r\n return str.toLowerCase().replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (ltr, idx) => idx === 0 ? ltr.toLowerCase() : ltr.toUpperCase()).replace(/\\s+/g, '');\r\n }\r\n else return '';\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ref: https://www.codegrepper.com/code-examples/javascript/lowercase+first+character+javascript\r\n // ---------------------------------------------------------------------------------\r\n public static capitalizeFirstLetter (string : any) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // ref: https://www.codegrepper.com/code-examples/javascript/lowercase+first+character+javascript\r\n // Note: Tested & works! on 20220423\r\n // ---------------------------------------------------------------------------------\r\n public static lowercaseFirstLetter (str: string): string {\r\n return str.charAt(0).toLowerCase() + str.slice(1);\r\n }\r\n \r\n \r\n // ---------------------------------------------------------------------------------\r\n public static toPascalCase (str: string): string {\r\n ;// TODO\r\n return '';\r\n }\r\n // ---------------------------------------------------------------------------------\r\n public static preparePageTitle(pageTitle: string): any {\r\n /*\r\n * a typical pageTitle = '-:Members ( \r\n * ordered by distance in meters' + ')' + ':-'\r\n * Objective: split and merge to create the following:
-:Members:-
\r\n * step-1: replace first occurance of '<' with '-<' of pageTitle.\r\n * step-2: parts = pageTitle.split('-');\r\n * step-3: postfixes = parts[1].split(':');\r\n * step-5:
+ parts[0] + ':' + postfixes[1] +
+ postfixes[0]\r\n * ----------------------------------------------------------------\r\n * var index = pageTitle.firstIndexOf('<');\r\n * if(index > 0) pageTitle[index] = '-<'; //Note: string is readonly so cannot do that\r\n * The above two lines of code is accomplished by the following section of while loop:\r\n * ----------------------------------------------------------------\r\n */\r\n if (!this.isNullOrEmpty(pageTitle)) {\r\n const chars = new Array(...pageTitle); // ==toCharArray()\r\n let temp = '';\r\n let i = 0;\r\n\r\n while (i < chars.length && chars[i] !== '<') {\r\n temp += chars[i];\r\n i++;\r\n }\r\n temp += '-';\r\n temp += chars[i];\r\n i++;\r\n while (i < chars.length) {\r\n temp += chars[i];\r\n i++;\r\n }\r\n /*\r\n * debugger;\r\n * now temp contains the value of 'pageTitle' with first and only occurance of '-<' in 'pageTitle';\r\n * ==> if(index > 0) pageTitle[index] = '-<';\r\n * ----------------------------------------------------------------\r\n */\r\n const parts = temp.split('-<'); // =>need to reattach '<'\r\n // debugger;\r\n\r\n if (!this.isNullOrEmpty(parts) && parts.length === 2) {\r\n if (!this.isNullOrEmpty(parts[1])) {\r\n const secondPart = '<' + parts[1];\r\n // debugger;\r\n const postFixes = secondPart.split(':-'); // =>need to reattach ':-'\r\n // debugger;\r\n\r\n if (!this.isNullOrEmpty(postFixes) && postFixes.length > 0) {\r\n // debugger;\r\n return (pageTitle = parts[0].trim() + ':-
' + postFixes[0]);\r\n }\r\n }\r\n }\r\n }\r\n return pageTitle;\r\n }\r\n // ----------------------------------------------------------------\r\n static setRawImageData(rawImageData: string): string {\r\n // debugger;\r\n if (!this.isNullOrEmpty(rawImageData)) {\r\n if (rawImageData.indexOf('data:image/png/svg;base64,') === -1) {\r\n // check if it has the prefix-of-raw-image-data\r\n return 'data:image/png/svg;base64,' + rawImageData;\r\n }\r\n }\r\n return rawImageData;\r\n }\r\n // --------------------------------------------------------------\r\n static isNullOrEmpty ( input : any ) : boolean\r\n {\r\n if (input === null || input === '' || input === undefined || (input !== null && (input.toString().toLowerCase() === 'null' || input.toString().toLowerCase() === 'undefined'))) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // ---------------------------------------------------------------\r\n // Ref: https://stackoverflow.com/questions/2087522/does-javascript-have-a-built-in-stringbuilder-class\r\n // TODO: test\r\n // ---------------------------------------------------------------\r\n static stringBuilder (value : any) : string {\r\n // debugger;\r\n var outStr = '';\r\n this.strings = [];\r\n if (!this.isNullOrEmpty(value) || value === 0) {\r\n // debugger;\r\n this.strings.push(value);\r\n this.strings.join(\"\");\r\n }\r\n else this.strings += value;\r\n outStr = this.strings.join(\"\");\r\n return outStr;\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static createRegExpFromString (input : string) : any {\r\n if (typeof input !== 'string') {\r\n return 0;\r\n }\r\n input = (input) === '.' ? ('\\\\' + input) : input;\r\n debugger;\r\n const regexp = new RegExp(input, 'g');\r\n return regexp;\r\n }\r\n // ---------------------------------------------------------------\r\n // Tested on 20220324 and it works!\r\n // ---------------------------------------------------------------\r\n static countCharInString (charRegExp : RegExp, strToSearch : string) : number {\r\n // debugger;\r\n return ((strToSearch || '').match(charRegExp) || []).length;\r\n\r\n }\r\n // ---------------------------------------------------------------\r\n static string2Unit8Arr(s: string): any {\r\n return Uint8Array.from(atob(this.strTobase64(s)), (c) => c.charCodeAt(0));\r\n }\r\n static unit8Arr2Str(b: []): any {\r\n return btoa(String.fromCharCode(...new Uint8Array(b)));\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/4456336/finding-variable-type-in-javascript\r\n * ---------------------------------------------------------------\r\n */\r\n static typeCheck(obj: any): any {\r\n if (!this.isNullOrEmpty(obj)) {\r\n // debugger;\r\n switch (typeof obj) {\r\n // object prototypes\r\n case 'undefined':\r\n return 'Undefined';\r\n case 'boolean':\r\n return 'Boolean';\r\n case 'number':\r\n return 'Number';\r\n case 'string':\r\n return 'String';\r\n case 'object':\r\n if (obj instanceof Array) {\r\n return 'Array';\r\n }\r\n else if (obj instanceof String) {\r\n return 'String';\r\n }\r\n else if (obj instanceof Number) {\r\n return 'Number';\r\n }\r\n else if (obj instanceof Date) {\r\n return 'Date';\r\n } \r\n else if (obj instanceof Object) {\r\n return 'Object';\r\n }\r\n else if (obj instanceof RegExp) {\r\n return 'RegExp';\r\n }\r\n else if (obj instanceof Function) {\r\n return 'Function';\r\n }\r\n else if (obj instanceof Symbol) {\r\n return 'Symbol';\r\n }\r\n else return 'Object';\r\n // object literals\r\n default:\r\n return typeof obj;\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static ConvertStringToNumber(inStr: string): number {\r\n if (!this.isNullOrEmpty(inStr)) {\r\n return parseInt(inStr, 10);\r\n }\r\n return -1;\r\n }\r\n /*\r\n * ---------------------------------------------------------------\r\n * Note: dob is sent in yyyy/mm/dd format\r\n */\r\n static ageFromDobString(dob: string): number {\r\n let age = 0;\r\n\r\n if (!this.isNullOrEmpty(dob)) {\r\n const now = new Date();\r\n const nowYear = now.getFullYear();\r\n const nowMonth = now.getMonth() + 1;\r\n const nowDay = now.getDate();\r\n const dobParts = dob.split('/');\r\n\r\n if (dobParts.length > 2) {\r\n const dobYYYY = parseInt(dobParts[0], 10);\r\n const dobMM = parseInt(dobParts[1], 10);\r\n const dobDD = parseInt(dobParts[2], 10);\r\n\r\n age = nowYear - dobYYYY;\r\n if (nowMonth < dobMM && age > 0) {\r\n age--;\r\n }\r\n if (nowMonth === dobMM && nowDay < dobDD && age > 0) {\r\n age--;\r\n }\r\n }\r\n }\r\n return age;\r\n }\r\n // ---------------------------------------------------------------\r\n static ageFromDobTicks(ticks: number): number {\r\n if (!this.isNullOrEmpty(ticks) && ticks > 0) {\r\n return this.ageFromDobString(this.dateFromTicks(ticks));\r\n }\r\n return 0;\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/35940290/how-to-convert-base64-string-to-javascript-file-object-like-as-from-file-input-f\r\n */\r\n static dataURLtoFile (data : any, filename : any): any {\r\n if (!this.isNullOrEmpty(data)) {\r\n /*\r\n * var arr = dataurl.split(',');\r\n * if (!this.isNullOrEmpty(arr) && arr.length > 1) {\r\n */\r\n const mimeMatch = data.match(/:(.*?);/); // [1];\r\n\r\n if (!this.isNullOrEmpty(mimeMatch) && mimeMatch.length > 1) {\r\n const mime = mimeMatch[1];\r\n const bstr = atob(btoa(data));\r\n let n = bstr.length;\r\n const u8arr = new Uint8Array(n);\r\n\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n\r\n return new File([u8arr], filename, { type: mime});\r\n }\r\n }\r\n }\r\n // --------------------------------------------------------------\r\n static dateFromTicks(inTicks: any): any {\r\n const ticks = parseInt(inTicks, 10);\r\n /*\r\n * original code\r\n * var ss = ticks % 60;\r\n * var mm = Math.floor((ticks % 3600) / 60);\r\n * var hh = Math.floor(ticks / 3600);\r\n * var dd = Math.floor(hh / 24);\r\n * var months = Math.floor(dd / 30);\r\n * var yyyy = Math.floor(months / 12);\r\n */\r\n\r\n /*\r\n * changed to 10*tick = millisec\r\n * const ss = Math.floor((ticks / 10 / 1000) % 60);\r\n * const mm = Math.floor(((ticks / 10 / 100) % 3600) / 60);\r\n */\r\n const hh = Math.floor(ticks / 10 / 1000 / 3600);\r\n const dd = Math.floor(hh / 24);\r\n const months = Math.floor(dd / 30);\r\n const yyyy = Math.floor(months / 12);\r\n const result = this.padYear(yyyy) + '/' + this.padMMDD(months) + '/' + this.padMMDD(dd);\r\n /*\r\n * + this.pad2(hh) + ':' + this.pad2(mm) + ':' + this.pad2(ss);\r\n * alert ('age: ' + this.ageFromDobString(result) + '=>' + this.pad(yyyy, 2) + '/' + this.pad(months, 2) +\r\n * '/' + this.pad(dd, 2) + this.pad(hh, 2) + ':' + this.pad(mm, 2) + ':' + this.pad(ss, 2));\r\n * debugger;\r\n */\r\n\r\n return result;\r\n }\r\n // --------------------------------------------------------------\r\n static pad (n : any, wdth : any): any {\r\n n = n + '';\r\n return n.length >= wdth ? n : new Array(wdth - n.length + 1).join('0') + n;\r\n }\r\n static padMMDD (num : any): any {\r\n num = '0' + num;\r\n return num.substr(num.length - 2);\r\n }\r\n static padYear (num : any): any {\r\n num = '0' + num;\r\n return num.substr(num.length - 4);\r\n }\r\n // --------------------------------------------------------------\r\n static getDate (date : any): string {\r\n // debugger;\r\n if (date) {\r\n const dateParts = date.split('T');\r\n\r\n if (dateParts.length > 0) {\r\n return dateParts[0].toString();\r\n }\r\n return '';\r\n }\r\n return '';\r\n }\r\n // --------------------------------------------------------------\r\n static getMDYDate (date : any): any {\r\n if (date) {\r\n const parts = date.split('/'); // date=mm/dd/yyyy\r\n\r\n if (parts.length > 2) {\r\n return this.getMonthName(parseInt(parts[0], 10)) + ' ' + parts[1] + ', ' + parts[2];\r\n }\r\n }\r\n return date;\r\n }\r\n // ------------------------------------------------------------------------\r\n static getMonthName (month : any): any {\r\n if (month > 0) {\r\n switch (month) {\r\n case 1:\r\n return 'January';\r\n case 2:\r\n return 'February';\r\n case 3:\r\n return 'March';\r\n case 4:\r\n return 'April';\r\n case 5:\r\n return 'May';\r\n case 6:\r\n return 'June';\r\n case 7:\r\n return 'July';\r\n case 8:\r\n return 'August';\r\n case 9:\r\n return 'September';\r\n case 10:\r\n return 'October';\r\n case 11:\r\n return 'November';\r\n case 12:\r\n return 'December';\r\n default:\r\n return '';\r\n }\r\n }\r\n return '';\r\n }\r\n // -------------------------------------------------------------\r\n static generateFileType (fileExtension : any): any {\r\n let fileType = { };\r\n\r\n switch (fileExtension.toLowerCase()) {\r\n case 'doc':\r\n case 'docx':\r\n fileType = 'application/msword';\r\n break;\r\n case 'html':\r\n return 'text/html';\r\n case 'xls':\r\n case 'xlsx':\r\n fileType = 'application/vnd.ms-excel';\r\n break;\r\n case 'pps':\r\n case 'ppt':\r\n fileType = 'application/vnd.ms-powerpoint';\r\n break;\r\n case 'txt':\r\n fileType = 'text/plain';\r\n break;\r\n case 'rtf':\r\n fileType = 'application/rtf';\r\n break;\r\n case 'pdf':\r\n fileType = 'application/pdf';\r\n break;\r\n case 'msg':\r\n case 'eml':\r\n fileType = 'application/vnd.ms-outlook';\r\n break;\r\n case 'gif':\r\n case 'bmp':\r\n case 'png':\r\n case 'jpg':\r\n fileType = 'image/JPEG';\r\n break;\r\n case 'dwg':\r\n fileType = 'application/acad';\r\n break;\r\n case 'zip':\r\n fileType = 'application/x-zip-compressed';\r\n break;\r\n case 'rar':\r\n fileType = 'application/x-rar-compressed';\r\n break;\r\n }\r\n return fileType;\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * Begin of linebreak\r\n * --------------------------------------------------------------\r\n */\r\n static lineBreak(): any {\r\n return this.filterFilter;\r\n }\r\n static filterFilter (text : any): any {\r\n if (!text || !text.length) {\r\n return text;\r\n }\r\n\r\n return text.replace(/(\\\\r\\\\n)|([\\r\\n])/gim, '
');\r\n }\r\n /*\r\n * --------------------------------------------------------------\r\n * End of linebreak\r\n * --------------------------------------------------------------\r\n * --------------------------------------------------------------\r\n * ref: https:// developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\r\n * TODO: test\r\n */\r\n \r\n\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: a similar method exists in copyService.ts//copyFromProfilePicsToKvPhotoDictionary\r\n * ---------------------------------------------------------------\r\n * profilePicsToKvPhotoDictionary(profilePics: ProfilePics): KvPhoto[]{}\r\n */\r\n\r\n // -------------------------------------------------------------\r\n // getContentToKvArr(content: Content): any {\r\n // const kvArr: KV[] = [];\r\n\r\n // if (content) {\r\n // // debugger;\r\n // let kv: KV = new KV();\r\n\r\n // if (content.heading && content.heading.length > 0) {\r\n // kv = new KV();\r\n // kv.key = 'Prfile name';\r\n // kv.value = content.heading;\r\n // kvArr.push(kv);\r\n // }\r\n\r\n // if (content.aBstract && content.aBstract.length > 0) {\r\n // kv = new KV();\r\n // kv.key = 'Highlight';\r\n // kv.value = content.aBstract;\r\n // kvArr.push(kv);\r\n // }\r\n // if (content.contents && content.contents.length > 0) {\r\n // kv = new KV();\r\n // kv.key = 'Description';\r\n // kv.value = content.contents;\r\n // kvArr.push(kv);\r\n // }\r\n // }\r\n // return kvArr;\r\n // }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: Order of the entries reflects as is on the view\r\n * -------------------------------------------------------------\r\n */\r\n // getProfileContentToKvArrArr(profileContent: Content): any {\r\n // const arrKvAny: KvAny[] = [];\r\n\r\n // if (!this.isNullOrEmpty(profileContent) && !this.isNullOrEmpty(profileContent.contents)) {\r\n // // debugger;\r\n // let kvAany: KvAny = new KvAny();\r\n\r\n // if (profileContent.heading && profileContent.heading.length > 0) {\r\n // kvAany = new KvAny();\r\n // kvAany.key = 'ProfileName';\r\n // kvAany.value = profileContent.heading;\r\n // arrKvAny.push(kvAany);\r\n // }\r\n // if (profileContent.aBstract && profileContent.aBstract.length > 0) {\r\n // kvAany = new KvAny();\r\n // kvAany.key = 'Highlight';\r\n // kvAany.value = [profileContent.aBstract];\r\n // arrKvAny.push(kvAany);\r\n // }\r\n // if (profileContent.contents && profileContent.contents.length > 0) {\r\n // kvAany = new KvAny();\r\n // kvAany.key = 'Description';\r\n // kvAany.value = [profileContent.contents];\r\n // arrKvAny.push(kvAany);\r\n // }\r\n // }\r\n // // debugger;\r\n // return arrKvAny;\r\n // }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: Order of the entries reflects as is on the view\r\n * -------------------------------------------------------------\r\n */\r\n // getPeferenceToKvArrArr(preference: Preference): any {\r\n // const arrKvAnyr: KvAny[] = [];\r\n\r\n // if (preference) {\r\n // // debugger;\r\n // let kvAny: KvAny = new KvAny();\r\n\r\n // if (preference.selectedRelationshipPreferencesString && preference.selectedRelationshipPreferencesString.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'My relationship preference';\r\n // kvAny.value = this.getArrayFromCommaSeparatedData(preference.selectedRelationshipPreferencesString);\r\n // arrKvAnyr.push(kvAny);\r\n // }\r\n\r\n // if (preference.selectedIntosString && preference.selectedIntosString.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'I am into';\r\n // kvAny.value = this.getArrayFromCommaSeparatedData(preference.selectedIntosString);\r\n // arrKvAnyr.push(kvAny);\r\n // }\r\n // if (preference.selectedLookingForsString && preference.selectedLookingForsString.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'I am looking for';\r\n // kvAny.value = this.getArrayFromCommaSeparatedData(preference.selectedLookingForsString);\r\n // arrKvAnyr.push(kvAny);\r\n // }\r\n // if (preference.selectedMeetingLocationsString && preference.selectedMeetingLocationsString.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Meeting place';\r\n // kvAny.value = this.getArrayFromCommaSeparatedData(preference.selectedMeetingLocationsString);\r\n // arrKvAnyr.push(kvAny);\r\n // }\r\n // if (preference.selectedHobbiesString && preference.selectedHobbiesString.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'My hobbies';\r\n // kvAny.value = this.getArrayFromCommaSeparatedData(preference.selectedHobbiesString);\r\n // arrKvAnyr.push(kvAny);\r\n // }\r\n // if (preference.selectedPetsString && preference.selectedPetsString.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'What about pet';\r\n // kvAny.value = this.getArrayFromCommaSeparatedData(preference.selectedPetsString);\r\n // arrKvAnyr.push(kvAny);\r\n // }\r\n // if (preference.selectedPetPeevesString && preference.selectedPetPeevesString.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'My pet peeves';\r\n // kvAny.value = this.getArrayFromCommaSeparatedData(preference.selectedPetPeevesString);\r\n // arrKvAnyr.push(kvAny);\r\n // }\r\n // }\r\n // return arrKvAnyr;\r\n // }\r\n /*\r\n * array = Array.from(Object.keys(object), k => object[k]);\r\n * -------------------------------------------------------------\r\n * Note: Order of the entries reflects as is on the view\r\n * -------------------------------------------------------------\r\n */\r\n static getObjectModelToArrKv(model: any): any {\r\n const arrKv: KV[] = [];\r\n let kv: KV = new KV();\r\n\r\n if (!this.isNullOrEmpty(model)) {\r\n const arrayKeys = Array.from(Object.keys(model), (k) => {\r\n kv = new KV();\r\n kv.key = k;\r\n arrKv.push(kv);\r\n });\r\n /*\r\n * arrayKeys = Array.from(Object.values(model), k => {\r\n * kv = new KV();\r\n * kv.key = k;\r\n * arrKv.push(kv);\r\n * });\r\n */\r\n }\r\n return arrKv;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * Note: Order of the entries reflects as is on the view\r\n * -------------------------------------------------------------\r\n */\r\n // getProfileInfoToKvArrArr(profileInfo: ProfileInfo): any {\r\n // const arrKvAny: KvAny[] = [];\r\n\r\n // if (profileInfo) {\r\n // // debugger;\r\n // let kvAny: KvAny = new KvAny();\r\n\r\n // if (profileInfo.gender && profileInfo.gender.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Gender';\r\n // kvAny.value = profileInfo.gender;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.age > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Age';\r\n // kvAny.value = profileInfo.age;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.sexuality && profileInfo.sexuality.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Sexuality';\r\n // kvAny.value = profileInfo.sexuality;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.position && profileInfo.position.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Position';\r\n // kvAny.value = profileInfo.position;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.dickSize && profileInfo.dickSize.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Dick Size';\r\n // kvAny.value = profileInfo.dickSize;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.cutUncut && profileInfo.cutUncut.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Cut/Uncut';\r\n // kvAny.value = profileInfo.cutUncut;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.highestEducation && profileInfo.highestEducation.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'My highest education level';\r\n // kvAny.value = profileInfo.highestEducation;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.relationshipStatus && profileInfo.relationshipStatus.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'My relationship status';\r\n // kvAny.value = profileInfo.relationshipStatus;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.smokingStatus && profileInfo.smokingStatus.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Smoking/Vaping status';\r\n // kvAny.value = profileInfo.smokingStatus;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.distance && profileInfo.distance.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Distance';\r\n // kvAny.value = profileInfo.distance;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n\r\n // if (profileInfo.neighborhood && profileInfo.neighborhood.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Neighborhood';\r\n // kvAny.value = profileInfo.neighborhood;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n // if (profileInfo.city && profileInfo.city.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'City';\r\n // kvAny.value = profileInfo.city;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n // if (profileInfo.regionCode && profileInfo.regionCode.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'State/Profince/Territory';\r\n // kvAny.value = profileInfo.regionCode;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n // if (profileInfo.countryCode && profileInfo.countryCode.length > 0) {\r\n // kvAny = new KvAny();\r\n // kvAny.key = 'Country';\r\n // kvAny.value = profileInfo.countryCode;\r\n // arrKvAny.push(kvAny);\r\n // }\r\n // }\r\n // return arrKvAny;\r\n // }\r\n\r\n // ---------------------------------------------------------------\r\n static maskPassword (model : any) : any {\r\n if (!this.isNullOrEmpty(model)\r\n && !this.isNullOrEmpty(model.password)\r\n && model.password.length > 0) {\r\n let mask = '';\r\n\r\n for (const item of model.password) {\r\n mask = mask + '*';\r\n }\r\n model.password = mask;\r\n }\r\n return model;\r\n }\r\n \r\n /*\r\n * -------------------------------------------------------------\r\n * ref:https:// bitcoin.stackexchange.com/questions/52727/byte-array-to-hexadecimal-and-back-again-in-javascript\r\n * byteArray = new Uint8Array([181, 143, 16, 173, 231, 56, 63, 149, 181, 185, 224, 124, 84, 230, 123, 36]);\r\n */\r\n /*\r\n * tohexString ( byteArray ) : any {\r\n * return Array.prototype.map.call(byteArray, (byte) => {\r\n * return ('0' + (byte & 0xFF).toString(16)).slice(-2);\r\n * }).join('');\r\n * }\r\n */\r\n // -------------------------------------------------------------\r\n static toByteArray(hexString: string): any {\r\n const result : any = [];\r\n\r\n for (let i = 0; i < hexString.length; i += 2) {\r\n // result.push(parseInt(hexString.substr(i, 2), 16)); //TODO: resotre\r\n }\r\n return result;\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript\r\n * string-2-b64, and decode b64-2-string\r\n */\r\n static strTobase64 (str : any): any {\r\n return btoa(unescape(encodeURIComponent(str)));\r\n }\r\n static base64ToStr (b64Str : any): any {\r\n return decodeURIComponent(escape(window.atob(b64Str)));\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript\r\n * b64EncodeUnicode(str): any {\r\n * // returnbtoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\r\n * // returnString.fromCharCode('0x' + p1); //TODO: test by (parseInt('0x' + p1))\r\n * // }));\r\n * }\r\n * Usage example:\r\n * b64EncodeUnicode('✓ à la mode'); //'4pyTIMOgIGxhIG1vZGU='\r\n * b64EncodeUnicode('\\n'); //'Cg=='\r\n */\r\n\r\n static b64DecodeUnicode (str : any): any {\r\n return decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''));\r\n }\r\n /*\r\n * Usage example:\r\n * b64DecodeUnicode('4pyTIMOgIGxhIG1vZGU='); //'✓ à la mode'\r\n * b64DecodeUnicode('Cg=='); //'\\n'\r\n * ==================================================================\r\n * Note: this is incomplete!!\r\n */\r\n // static stringToBase64(str): any {\r\n // if (!this.isNullOrEmpty(str)) {\r\n // return str;\r\n // }\r\n // }\r\n // ------------------------------------------------------------------\r\n /*\r\n * parseString (el : any, name : any, value : any, namespace: any) : any {\r\n * let str : any;\r\n * const parseString = (el, name, value, namespace) => {\r\n * const format = /[ `!@#$%^&*()_+\\-=\\[\\]{};':'\\\\|,.<>\\/?~]/;\r\n * if (format.test(value) === true) {\r\n * str = 'el==>' + el + '\\n name==>' + name + '\\n value ==>' + value + '\\n namespace ==>' + namespace + '\\n';\r\n * console.error(str);\r\n * }\r\n * };\r\n * return str;\r\n * }\r\n */\r\n /*\r\n * ref:https:// asecuritysite.com/encryption/js10\r\n * JavaScript StringHelper\r\n * ------------------------------------------------------------------\r\n * Note: this method has somepossible flaws. !!!\r\n */\r\n /*\r\n * bytes2hex(blk, dlm) : any {\r\n * const s = new Uint8Array(blk.buffer || blk);\r\n * return Array.prototype.map.call ( s,\r\n * (s) => {\r\n * return ('00' + s.toString(16)).slice(-2);\r\n * }).join(dlm || '');\r\n * }\r\n * toHexString(byteArray) : any {\r\n * return Array.from(byteArray, (byte:any) => {\r\n * return ('0' + (byte & 0xFF).toString(16)).slice(-2);\r\n * }).join('');\r\n * }\r\n */\r\n // ------------------------------------------------------------------\r\n /*\r\n * from_Hex(h) : any {\r\n * h.replace(' ', '');\r\n * const out = [];\r\n * const len = h.length;\r\n * const w = '';\r\n * for (let i = 0; i < len; i += 2) {\r\n * w = h[i];\r\n * if (((i + 1) >= len) || typeof h[i + 1] === 'undefined') {\r\n * w += '0';\r\n * } else {\r\n * w += h[i + 1];\r\n * }\r\n * out.push(parseInt(w, 16));\r\n * }\r\n * return out;\r\n * }\r\n */\r\n // ------------------------------------------------------------------\r\n /*\r\n * bytesEqual(a, b) : any {\r\n * let dif = 0;\r\n * if (a.length !== b.length) {\r\n * return 0;\r\n * }\r\n * for (let i = 0; i < a.length; i++) {\r\n * dif |= (a[i] ^ b[i]);\r\n * }\r\n * dif = (dif - 1) >>> 31;\r\n * return (dif & 1);\r\n * }\r\n */\r\n // ------------------------------------------------------------------\r\n /*\r\n * hexStringToByte(str) : any {\r\n * if (!str) {\r\n * return new Uint8Array(null, 0, 0);\r\n * }\r\n *\r\n * const a = [];\r\n * for (let i = 0, len = str.length; i < len; i += 2) {\r\n * a.push(parseInt(str.substr(i, 2), 16));\r\n * }\r\n *\r\n * return new Uint8Array(a);\r\n * }\r\n */\r\n // ------------------------------------------------------------------\r\n // asciiToHexa(str): any {\r\n // const arr1 = [];\r\n\r\n // for (let n = 0, l = str.length; n < l; n++) {\r\n // const hex = Number(str.charCodeAt(n)).toString(16);\r\n\r\n // arr1.push(hex);\r\n // }\r\n // return arr1.join('');\r\n // }\r\n\r\n // ------------------------------------------------------------------\r\n /*\r\n * xor(a, b) : any {\r\n *\r\n * const res = [];\r\n * if (a.length > b.length) {\r\n * for (let i = 0; i < b.length; i++) {\r\n * res.push(a[i] ^ b[i]);\r\n * }\r\n * } else {\r\n * for (let i = 0; i < a.length; i++) {\r\n * res.push(a[i] ^ b[i]);\r\n * }\r\n * }\r\n * return res;\r\n * }\r\n */\r\n // ------------------------------------------------------------------\r\n // copied from TweetNaCl:\r\n // ------------------------------------------------------------------\r\n static validateBase64 (s : any) : boolean {\r\n let isValidB64 : boolean = /^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s);\r\n if (!isValidB64) {\r\n throw new TypeError('invalid encoding');\r\n }\r\n else return isValidB64;\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ==================================================================\r\n * String-to-ArrayBuffer-to-String\r\n * ==================================================================\r\n * NOTE: Use these two only for this purpose!\r\n * Tested. Works without stackoverflow exception!\r\n * ******************************************************************/ \r\n /* ------------------------------------------------------------------\r\n * ref:https:// www.npmjs.com/package/base64-arraybuffer\r\n */\r\n static arrBufferToB64 (buff : any): any {\r\n // return encode(buff);\r\n return naclUtil.encodeBase64(buff);\r\n }\r\n static b64ToArrBuff (b64Str : any): any {\r\n // return decode(b64Str);\r\n return decode(b64Str);\r\n }\r\n /*\r\n * ==================================================================\r\n * ******************************************************************\r\n * Note: Did NOT work using Unit8Array to convert from salted to unsalted.\r\n * May 19, 2020\r\n * Also todo: try 'utf8' and regular buffer instead of arrayBuffer\r\n * ------------------------------------------------------------------\r\n */\r\n static getAbStr (str : any): any {\r\n return str;\r\n }\r\n // bToBase64Str2(buf): any {\r\n // return this.bufferToString2(buf, 'base64', this.getAbStr);\r\n // }\r\n // bToUtf8Str2(buf): any {\r\n // return this.bufferToString2(buf, 'utf-8', this.getAbStr);\r\n // }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/37234333/arraybuffer-to-string-string-to-arraybuffer-methods\r\n */\r\n // bufferToString2(buffer, encoding, callback): any {\r\n // const blob = new Blob([buffer], { type: 'text/plain'});\r\n // const reader = new FileReader();\r\n\r\n // reader.onload = (evt) => {\r\n // callback(evt.target.result);\r\n // };\r\n // return reader.readAsText(blob, encoding);\r\n // }\r\n /*\r\n * -------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/8609289/convert-a-binary-nodejs-buffer-to-javascript-arraybuffer\r\n */\r\n static buffertoUnit8Array (buf : any): any {\r\n const ab = new ArrayBuffer(buf.length);\r\n const view = new Uint8Array(ab);\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n view[i] = buf[i];\r\n }\r\n return ab;\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/8609289/convert-a-binary-nodejs-buffer-to-javascript-arraybuffer\r\n */\r\n static Unit8ArraytoBuffer (ab : any): any {\r\n const buf = Buffer.alloc(ab.byteLength);\r\n const view = new Uint8Array(ab);\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n buf[i] = view[i];\r\n }\r\n return buf;\r\n }\r\n\r\n /*\r\n * -------------------------------------------------------------\r\n * FileReader with a Promise to read text\r\n * ref:https:// blog.shovonhasan.com/using-promises-with-filereader/\r\n */\r\n static readUploadedFileAsArrayBuffer = (inputFile : any) => {\r\n const temporaryFileReader = new FileReader();\r\n\r\n return new Promise((resolve, reject) => {\r\n temporaryFileReader.onerror = () => {\r\n temporaryFileReader.abort();\r\n reject(new DOMException('Problem parsing input file.'));\r\n };\r\n\r\n temporaryFileReader.onload = () => {\r\n resolve(temporaryFileReader.result);\r\n };\r\n temporaryFileReader.readAsArrayBuffer(inputFile);\r\n });\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * FileReader with a Promise to read ArrayBuffer\r\n * ref:https:// blog.shovonhasan.com/using-promises-with-filereader/\r\n */\r\n static readStringUsingFileReaderAsArrayBuffer = (inputstring : any, encoding : any) => {\r\n const temporaryFileReader = new FileReader();\r\n\r\n return new Promise((resolve, reject) => {\r\n temporaryFileReader.onerror = () => {\r\n temporaryFileReader.abort();\r\n reject(new DOMException('Problem parsing input file.'));\r\n };\r\n const blob = new Blob([inputstring], { type: 'text/plain;charset=' + encoding});\r\n\r\n temporaryFileReader.onload = () => {\r\n resolve(temporaryFileReader.result);\r\n };\r\n temporaryFileReader.readAsArrayBuffer(blob);\r\n });\r\n }\r\n\r\n /*\r\n * -------------------------------------------------------------\r\n * FileReader with a Promise to read ArrayBuffer\r\n * ref:https:// blog.shovonhasan.com/using-promises-with-filereader/\r\n */\r\n static getImageFileAsBlob = (inputstring : any, encoding : any) => {\r\n const temporaryFileReader = new FileReader();\r\n const blob = new Blob([inputstring], { type: 'image/jpeg;charset=' + encoding});\r\n\r\n return new Promise((resolve, reject) => {\r\n temporaryFileReader.onerror = () => {\r\n temporaryFileReader.abort();\r\n reject(new DOMException('Problem parsing input file.'));\r\n };\r\n\r\n temporaryFileReader.onload = () => {\r\n resolve(temporaryFileReader.result);\r\n };\r\n temporaryFileReader.readAsArrayBuffer(blob);\r\n });\r\n }\r\n // ------------------------------------------------------------------\r\n static readFile (file : any, onLoadCallback : any): any {\r\n const reader = new FileReader();\r\n\r\n reader.onload = onLoadCallback;\r\n reader.readAsText(file);\r\n return true;\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/37234333/arraybuffer-to-string-string-to-arraybuffer-methods\r\n */\r\n static stringToArrayBuffer (str : any, enc : any, callback : any): any {\r\n const blob = new Blob([str], { type: 'text/plain;charset=' + enc});\r\n const reader = new FileReader();\r\n\r\n reader.onload = ( evt ) =>\r\n {\r\n if ( this.isNullOrEmpty( evt ) )\r\n {\r\n // callback( evt.target.result ); // TODO : restore\r\n }\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n return true;\r\n }\r\n\r\n /*\r\n * Usage example:\r\n * var buf = new Uint8Array([65, 66, 67]);\r\n * arrayBufferToString(buf, 'UTF-8', console.log.bind(console)); //'ABC'\r\n */\r\n\r\n /*\r\n * stringToArrayBuffer('ABC', 'UTF-8', console.log.bind(console)); //[65,66,67]\r\n * ------------------------------------------------------------------\r\n * ref:https:// www.npmjs.com/package/arraybuffer-to-string\r\n * Tested: works!\r\n * Note:: Throws Maximum Call Stack exceeded on ArrayBufferToString\r\n * ------------------------------------------------------------------\r\n */\r\n static ab2stBase64 (u8arr : any, type: any) : any {\r\n let typ : any = 'utf8'\r\n let tByff = Buffer.from(u8arr, this.isNullOrEmpty(type)? typ : type);\r\n return tByff.toString()// ab2str(u8arr, 'base64');\r\n }\r\n static ab2str (u8arr : any): any {\r\n const result = this.ab2stBase64(u8arr, 'utf8');\r\n // debugger;\r\n\r\n return result;\r\n }\r\n static ab2stHex (u8arr : any): any {\r\n return this.ab2stBase64(u8arr, 'hex');\r\n }\r\n static ab2stISO88592 (u8arr : any): any {\r\n return this.ab2stBase64(u8arr, 'iso-8859-2');\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * ref:https:// www.npmjs.com/package/string-to-arraybuffer\r\n * TODO:Test\r\n */\r\n static str2Ab (st : any): any {\r\n return new Buffer(st);\r\n }\r\n static base64Str2Ab (st : any): any {\r\n return new Buffer(st);\r\n }\r\n static dataUriStr2Ab (st : any): any {\r\n return new Buffer(st);\r\n }\r\n static base64DataUriStr2Ab (st : any): any {\r\n return new Buffer(st);\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n // ref:https:// ourcodeworld.com/articles/read/164/how-to-convert-an-uint8array-to-string-in-javascript#:~:\r\n // text=An%20Uint8Array%20is%20a%20typed%20array%20that%20represents,an%20Uint8Array%20to%20a%20regular%20string%20in%20javascript.\r\n // ---------------------------------------------------------\r\n // Note: did not work. 2020/09/14\r\n // **\r\n // * Convert an Uint8Array into a string.\r\n // *\r\n // * @returns {String}\r\n // */\r\n static Decodeuint8arr (uint8array : any): any {\r\n return new TextDecoder('utf-8').decode(uint8array); // input should be ArrayBuffer or ArrayBufferView\r\n }\r\n\r\n /**\r\n * Convert a string into a Uint8Array.\r\n *\r\n * @returns { Uint8Array}\r\n */\r\n static Encodeuint8arr (myString : any): any {\r\n return new TextEncoder().encode(myString);\r\n }\r\n\r\n // ---------------------------------------------------------\r\n // Note: did not work. 2020/09/14\r\n // **\r\n // * Converts an array buffer to a string\r\n // *\r\n // * @param {Uin8} uint8arr | The buffer to convert\r\n // * @param {Function} callback | The function to call when conversion is complete\r\n // */\r\n // largeuint8ArrToString(uint8arr, callback): any {\r\n // const bb = new Blob([uint8arr]);\r\n // const f = new FileReader();\r\n\r\n // f.onload = (e) => {\r\n // callback(e.target.result);\r\n // };\r\n\r\n // f.readAsText(bb);\r\n // }\r\n\r\n /*\r\n * Usage example\r\n * 'Hello' in Uint8Array format\r\n */\r\n // usageExample(): any {\r\n // const myuint8Arr = new Uint8Array([72, 101, 108, 108, 111, 32, 33]);\r\n\r\n // this.largeuint8ArrToString(myuint8Arr, (text) => {\r\n // // Hello\r\n // console.log(text);\r\n // });\r\n // }\r\n /*\r\n * ----------------------------------------------------------\r\n * http:// www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\r\n */\r\n\r\n // * utf.js - UTF-8 <=> UTF-16 convertion\r\n // *\r\n // * Copyright (C) 1999 Masanao Izumo \r\n // * Version: 1.0\r\n // * LastModified: Dec 25 1999\r\n // * This library is free. You can redistribute it and/or modify it.\r\n // */\r\n /*\r\n * unit8ArrayToStr(array) : any {\r\n * let out : any;\r\n * const i = 0;\r\n * const len = array.length;\r\n * const c;\r\n * let char2;\r\n * let char3;\r\n *\r\n * while (i < len) {\r\n * c = array[i++];\r\n * switch (c >> 4) {\r\n * case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:\r\n * //0xxxxxxx\r\n * out += String.fromCharCode(c);\r\n * break;\r\n * case 12: case 13:\r\n * //110x xxxx 10xx xxxx\r\n * char2 = array[i++];\r\n * out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));\r\n * break;\r\n * case 14:\r\n * //1110 xxxx 10xx xxxx 10xx xxxx\r\n * char2 = array[i++];\r\n * char3 = array[i++];\r\n * out += String.fromCharCode(((c & 0x0F) << 12) |\r\n * ((char2 & 0x3F) << 6) |\r\n * ((char3 & 0x3F) << 0));\r\n * break;\r\n * }\r\n * }\r\n *\r\n * return out;\r\n * }\r\n */\r\n // ------------------------------------------------------------------------------------------------\r\n static createMimeType(): any {\r\n let mimeTypes: any[] = [];\r\n let kv = new KV();\r\n\r\n kv.key = '.txt';\r\n kv.value = 'text/plain';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.pdf';\r\n kv.value = 'application/pdf';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.doc';\r\n kv.value = 'application/vnd.ms-word';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.docx';\r\n kv.value = 'application/vnd.ms-word';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.xls';\r\n kv.value = 'application/vnd.ms-excel';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.xlsx';\r\n kv.value = 'application/vnd.openxmlformats officedocument.spreadsheetml.sheet';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.png';\r\n kv.value = 'image/png';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.jpg';\r\n kv.value = 'image/jpeg';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.jpeg';\r\n kv.value = 'image/jpeg';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.gif';\r\n kv.value = 'image/gif';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.csv';\r\n kv.value = 'text/csv';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.css';\r\n kv.value = 'text/css';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.js';\r\n kv.value = 'javascript';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.html';\r\n kv.value = 'text/html';\r\n mimeTypes.push(kv);\r\n kv = new KV();\r\n kv.key = '.xml';\r\n kv.value = 'text/xml';\r\n mimeTypes.push(kv);\r\n return mimeTypes;\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n static getMimeType(typ: string): any {\r\n // debugger;\r\n let type = '';\r\n\r\n if (typ && typ.length >= 3) {\r\n let typArr : any[] = [];\r\n\r\n if (typ.indexOf('/') !== -1) {\r\n typArr = typ.split('/'); // incase mime-type is provided\r\n } else if (typ.indexOf('.') !== -1) {\r\n typArr = typ.split('.'); // incase file-name-with-extension is provided\r\n } else {\r\n typ = '.' + typ; // incase plain-file-extension is provided (without a '.'), create a file-extension with a '.'\r\n }\r\n if (typArr.length > 1) {\r\n type = '.' + typArr[1]; // create a file-extension with a '.'\r\n }\r\n }\r\n return this.createMimeType().mimeTypes.find((k : any) => k?.key === type).value; // TODO: restore\r\n // debugger;\r\n // return ''; // \r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// developers.google.com/web/updates/2012/06/Don-t-Build-Blobs-Construct-Them\r\n */\r\n static createBlob(data: any, typ: string): Blob {\r\n return new Blob([this.base64Str2Ab(data.toString())], { type: typ && typ.length > 0 ? typ : 'application/pdf'});\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n static createBlobElement(data: any, typ: string): any {\r\n const blob = this.createBlob(data, typ);\r\n const link = document.createElement('link');\r\n\r\n link.rel = this.getMimeType(typ);\r\n link.href = window.URL.createObjectURL(blob);\r\n return link;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/23024460/javascript-i-created-a-blob-from-a-string-how-do-i-get-the-string-back-out\r\n */\r\n static blobToString (b : any): any {\r\n let u;\r\n let x;\r\n\r\n u = URL.createObjectURL(b);\r\n x = new XMLHttpRequest();\r\n x.open('GET', u, false); // although sync, you're not fetching over internet\r\n x.send();\r\n URL.revokeObjectURL(u);\r\n return x.responseText;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * TODO: test\r\n * Note: Not sure if it works. 2020/09/09\r\n */\r\n // blobToBase64(blob: Blob): any {\r\n // return new Promise((resolve, reject) => {\r\n // const reader = new FileReader();\r\n\r\n // reader.onerror = reject;\r\n // reader.onload = () => {\r\n // resolve(reader.result);\r\n // };\r\n // reader.readAsDataURL(blob as Blob);\r\n // return reader.result.toString();\r\n // });\r\n // }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// stackoverflow.com/questions/18650168/convert-blob-to-base64\r\n */\r\n static BlobToBase64 (blob : any): Promise {\r\n const reader = new FileReader();\r\n\r\n reader.readAsDataURL(blob);\r\n return new Promise((resolve) => {\r\n reader.onloadend = () => {\r\n resolve(reader.result);\r\n };\r\n });\r\n }\r\n /*\r\n * // Usage Example:\r\n *BlobToBase64(blobData).then(res => {\r\n * //do what you wanna do\r\n * console.log(res); //res is base64 now\r\n * });\r\n */\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// blobfolio.com/2019/10/better-binary-batter-mixing-base64-and-uint8array/\r\n */\r\n /**\r\n * Base64 to Blob\r\n *\r\n * @param { string} data Data.\r\n * @param { string} type Content type.\r\n * @return { !Blob} Blob.\r\n */\r\n static base64toBlob (data : any, typ : any): any {\r\n const bytes = atob(btoa(data));\r\n let length = bytes.length;\r\n\r\n if (length > 0) {\r\n const out = new Uint8Array(length);\r\n\r\n // Loop and convert.\r\n while (length > 0 && length--) {\r\n out[length] = bytes.charCodeAt(length);\r\n }\r\n\r\n return new Blob([out], { type: typ});\r\n }\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n static base64toUint8Array (data : any): any {\r\n const bytes = atob(data);\r\n let length = bytes.length;\r\n const out = new Uint8Array(length);\r\n\r\n // Loop and convert.\r\n while (length--) {\r\n out[length] = bytes.charCodeAt(length);\r\n }\r\n return out;\r\n }\r\n /*\r\n * ------------------------------------------------------------------------------------------------\r\n * ref:https:// blobfolio.com/2019/10/better-binary-batter-mixing-base64-and-uint8array/\r\n */\r\n static base64toImageUrl(base64Str: any): any {\r\n return URL.createObjectURL(this.base64toBlob(base64Str, 'image/png'));\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n //static Base64Encode(str, encoding = 'utf-8'): any {\r\n // const bytes = new (typeof TextEncoder === 'undefined' ? textEncoder.TextEncoderLite : TextEncoder)(encoding).encode(str);\r\n\r\n // return base64js.fromByteArray(bytes);\r\n //}\r\n\r\n //static Base64Decode(str, encoding = 'utf-8'): any {\r\n // const bytes = base64js.toByteArray(str);\r\n\r\n // return new (typeof TextDecoder === 'undefined' ? textEncoder : TextDecoder)(encoding).decode(bytes);\r\n //}\r\n /*\r\n * ------------------------------------------------------------------\r\n * getAbStr(str) : any {\r\n * return str;\r\n * }\r\n */\r\n static abToStr (buf : any): any {\r\n this.arrayBufferToString(buf, this.getAbStr);\r\n }\r\n // ------------------------------------------------------------------\r\n // TODO: test\r\n // **\r\n // * Converts an array buffer to a string\r\n // *\r\n // * @private\r\n // * @param {ArrayBuffer} buf The buffer to convert\r\n // * @param {Function} callback The function to call when conversion is complete\r\n // */\r\n static arrayBufferToString (buf : any, callback : any): any {\r\n const bb = new Blob([new Uint8Array(buf)]);\r\n const f = new FileReader();\r\n\r\n f.onload = (e) => {\r\n // debugger;\r\n callback(e.target?.result);\r\n };\r\n f.readAsText(bb);\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * TODO: test\r\n * Did not work for boxNonce\r\n */\r\n /*\r\n * utf8ArrayToStr(array) : any {\r\n * const charCache = new Array(128); //Preallocate the cache for the common single byte chars\r\n * const charFromCodePt = String.fromCodePoint || String.fromCharCode;\r\n * const result = [];\r\n * let codePt;\r\n * let byte1;\r\n * const buffLen = array.length;\r\n *\r\n * result.length = 0;\r\n *\r\n * for (let i = 0; i < buffLen;) {\r\n * byte1 = array[i++];\r\n *\r\n * if (byte1 <= 0x7F) {\r\n * codePt = byte1;\r\n * } else if (byte1 <= 0xDF) {\r\n * codePt = ((byte1 & 0x1F) << 6) | (array[i++] & 0x3F);\r\n * } else if (byte1 <= 0xEF) {\r\n * codePt = ((byte1 & 0x0F) << 12) | ((array[i++] & 0x3F) << 6) | (array[i++] & 0x3F);\r\n * } else if (String.fromCodePoint) {\r\n * codePt = ((byte1 & 0x07) << 18) | ((array[i++] & 0x3F) << 12) | ((array[i++] & 0x3F) << 6) | (array[i++] & 0x3F);\r\n * } else {\r\n * codePt = 63; //Cannot convert four byte code points, so use '?' instead\r\n * i += 3;\r\n * }\r\n *\r\n * result.push(charCache[codePt] || (charCache[codePt] = charFromCodePt(codePt)));\r\n * }\r\n *\r\n * return result.join('');\r\n * }\r\n */\r\n /*\r\n * ------------------------------------------------------------------\r\n * TODO: test\r\n * Did not work for boxNonce\r\n */\r\n static unit8ArayToString (uint8array : any): any {\r\n let myString = '';\r\n\r\n uint8array.map((e : any) => {\r\n myString += String.fromCharCode(e);\r\n });\r\n return myString;\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * TODO: test\r\n * Did not work for boxNonce\r\n */\r\n /*\r\n * bytesToSring(bytes) : any {\r\n * const chars = [];\r\n * bytes.map(e => {\r\n * chars.push(((e & 0xff) << 8) | (e & 0xff));\r\n * });\r\n * return String.fromCharCode.apply(null, chars);\r\n * }\r\n */\r\n\r\n /*\r\n * https:// codereview.stackexchange.com/a/3589/75693\r\n * TODO: test\r\n */\r\n /*\r\n * stringToBytes(str) : any {\r\n * const bytes = [];\r\n * let i = 0;\r\n * str.map(e => {\r\n * const char = str.charCodeAt(i);\r\n * bytes.push(char >>> 8, char & 0xFF);\r\n * i++;\r\n * });\r\n * return bytes;\r\n * }\r\n */\r\n /*\r\n * ------------------------------------------------------------------\r\n * TODO: test\r\n * Did not work for boxNonce\r\n */\r\n /*\r\n * Utf8ArrayToStr(array) : any {\r\n * let out;\r\n * const i;\r\n * const len;\r\n * const c;\r\n * let char2;\r\n * let char3;\r\n *\r\n * out = '';\r\n * len = array.length;\r\n * i = 0;\r\n * while (i < len) {\r\n * c = array[i++];\r\n * switch (c >> 4) {\r\n * case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:\r\n * //0xxxxxxx\r\n * out += String.fromCharCode(c);\r\n * break;\r\n * case 12: case 13:\r\n * //110x xxxx 10xx xxxx\r\n * char2 = array[i++];\r\n * out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));\r\n * break;\r\n * case 14:\r\n * //1110 xxxx 10xx xxxx 10xx xxxx\r\n * char2 = array[i++];\r\n * char3 = array[i++];\r\n * out += String.fromCharCode(((c & 0x0F) << 12) |\r\n * ((char2 & 0x3F) << 6) |\r\n * ((char3 & 0x3F) << 0));\r\n * break;\r\n * }\r\n * }\r\n *\r\n * return out;\r\n * }\r\n */\r\n /*\r\n * ------------------------------------------------------------------\r\n * TODO: test\r\n */\r\n static stringArray(str: any): any {\r\n const ret = new Uint8Array(str.length);\r\n\r\n for (let i = 0; i < str.length; i++) {\r\n ret[i] = str.charCodeAt(i);\r\n }\r\n return ret;\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * TODO: test\r\n */\r\n static jsonToArray (json : any): any {\r\n const str = JSON.stringify(json, null, 0);\r\n\r\n return this.stringArray(str);\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * TODO: test\r\n */\r\n static binArrayToJson(binArray: []): any {\r\n let str = '';\r\n let i = 0;\r\n\r\n binArray.map((e) => {\r\n str += String.fromCharCode(parseInt(binArray[i], 10));\r\n i++;\r\n });\r\n return JSON.parse(str);\r\n }\r\n /*\r\n * ------------------------------------------------------------------\r\n * TODO: test\r\n */\r\n static binArrayToString (binArray : any): any {\r\n return JSON.stringify(this.binArrayToJson(binArray));\r\n }\r\n // ------------------------------------------------------------------\r\n // ref:https:// stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript\r\n // TODO: test\r\n // Did not work for boxNonce\r\n // utf8ArrayToString(aBytes) : any {\r\n // let sView = '';\r\n //\r\n // for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n // nPart = aBytes[nIdx];\r\n //\r\n // sView += String.fromCharCode(\r\n // nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n // /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n // (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) +\r\n // (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n // : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n // (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) +\r\n // (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n // : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n // (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n // : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n // (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n // : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n // (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n // : /* nPart < 127 ? */ /* one byte */\r\n // nPart\r\n // );\r\n // }\r\n //\r\n // return sView;\r\n // }\r\n\r\n // let str = utf8ArrayToString([50, 72, 226, 130, 130, 32, 43, 32, 79, 226, 130, 130, 32, 226, 135, 140, 32, 50, 72, 226, 130, 130, 79]);\r\n\r\n // // Must show 2H₂ + O₂ ⇌ 2H₂O\r\n // console.log(str);\r\n // ------------------------------------------------------------------\r\n // NOTE: The following are Array-related-functions\r\n // ------------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n static arrayToCsvString(inArr: any[]): any {\r\n if (inArr.length > 0) {\r\n let csvStr = '';\r\n\r\n for (let i = 0; i < inArr.length - 1; i++) {\r\n csvStr += csvStr + inArr[i].toString() + ', ';\r\n }\r\n csvStr += csvStr + inArr[inArr.length - 1].toString();\r\n return csvStr;\r\n }\r\n return '';\r\n }\r\n\r\n // ---------------------------------------------------------------\r\n static getArrayFromCommaSeparatedData (data : any): any {\r\n let tArray = [];\r\n\r\n if (data) {\r\n tArray = data.split(',');\r\n if (tArray.length > 0) {\r\n // truncate the last empty index due to the last ',' in the data-string\r\n tArray.splice(tArray.length - 1, 1);\r\n }\r\n }\r\n return tArray;\r\n }\r\n \r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // On 20220328\r\n // ------------------------------------------------------------------\r\n static createArrayFromMap(inmap: Map): any[] {\r\n const arr: any[] = [];\r\n\r\n if (inmap && inmap.size > 0) {\r\n inmap.forEach((value, key) =>\r\n {\r\n arr.push(value);\r\n });\r\n }\r\n return arr;\r\n }\r\n // ------------------------------------------------------------------\r\n // Tested, works!\r\n // ------------------------------------------------------------------\r\n static createMapFromArray(arr: any[]): Map {\r\n const map = new Map();\r\n\r\n if (arr && arr.length > 0) {\r\n arr.forEach(function callback (key, value) {\r\n map.set(value, key);\r\n });\r\n }\r\n return map;\r\n }\r\n // ------------------------------------------------------------------\r\n b2Str(b: []): any {\r\n return String.fromCharCode(...new Uint8Array(b));\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * FileReader with a Promise to read text\r\n * ref:https:// blog.shovonhasan.com/using-promises-with-filereader/\r\n */\r\n readUploadedFileAsText = (inputFile : any) => {\r\n const temporaryFileReader = new FileReader();\r\n\r\n return new Promise((resolve, reject) => {\r\n temporaryFileReader.onerror = () => {\r\n temporaryFileReader.abort();\r\n reject(new DOMException('Problem parsing input file.'));\r\n };\r\n\r\n temporaryFileReader.onload = () => {\r\n resolve(temporaryFileReader.result);\r\n };\r\n temporaryFileReader.readAsText(inputFile);\r\n });\r\n }\r\n /*\r\n * -------------------------------------------------------------\r\n * A Simplified API with Async/Await\r\n * ref:https:// blog.shovonhasan.com/using-promises-with-filereader/\r\n * Note:an example onchange handler we could pass to a 2) {\r\n // let kvs = str.split(\",\");\r\n // // debugger;\r\n // let j = 0;\r\n // if (!this.isNullOrEmpty(kvs) && kvs.length > 0) {\r\n // kvs.forEach(kv => {\r\n // if (!this.isNullOrEmpty(kv)) {\r\n // // debugger;\r\n // if (kv.indexOf(\"{\") !== -1 || kv.indexOf(\"}\") !== -1 ) {\r\n // kv = JsRegExpServiceStatic.trimBrackets(kv, \"{\");\r\n // }\r\n // // debugger;\r\n // // if (!this.isNullOrEmpty(kv)) {\r\n // // // Note: 1: will trim the prefix \\\" JSON quote,\r\n // // // 2: will trim both prefix and postfix \\\" JSON quote.\r\n // // // -----------------------------------------------------------\r\n // // kv = JsRegExpServiceStatic.trimQuote(kv, 2);\r\n // // }\r\n // if (!this.isNullOrEmpty(kv)) {\r\n\r\n // let kvParts = kv.split(\":\");\r\n // // debugger;\r\n // if (!this.isNullOrEmpty(kvParts) && kvParts.length > 0) {\r\n // k = kvParts[ 0 ].trim();\r\n\r\n // // Note: important!!\" remove JSON style \\\" quote at the front at least so that lowerFirstLetter() will work.\r\n\r\n // // Note: 1: will trim the prefix \\\" JSON quote,\r\n // // 2: will trim both prefix and postfix \\\" JSON quote.\r\n // // 3: will trim the postfix \\\" JSON quote,\r\n // // -----------------------------------------------------------\r\n // k = JsRegExpServiceStatic.trimQuote(k, 2); \r\n // debugger;\r\n // if (!this.isNullOrEmpty(k) && k.length > 0) {\r\n // camelKey = this.lowercaseFirstLetter(k);\r\n // // debugger;\r\n // }\r\n // if (!this.isNullOrEmpty(camelKey)) {\r\n // // Note: reattach JSON style \\\" quotes so that JSON will work.\r\n // // -----------------------------------------------------------\r\n\r\n // if (kvParts[ 1 ].charAt(0) === '\"') {\r\n // camelValue = \"\\\"\" + kvParts[ 1 ] + \"\\\",\";\r\n // }\r\n // else /*if (kvParts[ 1 ].charAt(0) === '\\\\')*/ {\r\n // camelValue = kvParts[ 1 ] + \",\";\r\n // }\r\n // debugger;\r\n // camelCased += \"\\\"\" + camelKey + \"\\\"\" + v;\r\n // debugger;\r\n // }\r\n // else {\r\n // camelCased += \"\\\"\" + k + \"\\\"\" + camelValue;\r\n // debugger;\r\n // }\r\n // } // end of kvParts.length > 0\r\n // } // end of innder !this.isNullOrEmpty(kv)\r\n // } // end of outer !this.isNullOrEmpty(kv)\r\n // }); \r\n // } // end of kvs.length > 0\r\n // } // end of str.length > 2\r\n // debugger;\r\n // camelCased.length > 1 ? camelCased += \"}\" : camelCased = \"\";\r\n // alert('camelCased : \\n' + JSON.parse(camelCased));\r\n // debugger;\r\n // return camelCased;\r\n //}\r\n // ---------------------------------------------------------------------------------\r\n // here we create a Photo model from the string and then cameCase the model:\r\n // ---------------------------------------------------------------------------------\r\n\r\n // --------------------------------------------------------------\r\n}\r\n","'use strict'\r\nimport { HttpEventType, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LoginSuccess } from '../../models/account/loginSuccess.model';\r\nimport { SitUser } from '../../models/account/sitUser.model';\r\nimport { BoxNonceEntity } from '../../models/boxNonce/boxNonceEntity.model';\r\nimport { ChatFileUpload } from '../../models/chat/chatFileUpload.model';\r\nimport { Content } from '../../models/common/content.model';\r\nimport { Photo } from '../../models/common/photo.model';\r\nimport { PhotoBn } from '../../models/common/photoBn.model';\r\nimport { KvAny } from '../../models/keyValue/kvAny.model';\r\nimport { KvPhoto } from '../../models/keyValue/kvPhoto.model';\r\nimport { ProfilePics } from '../../models/profile/profilePics.model';\r\nimport { ImageResizerService } from '../commonServiceService/imageResizerService.service';\r\nimport { HttpService } from '../coreServiceService/httpService.service';\r\nimport { DictionaryService } from '../dictionaryServiceService/dictionaryService.service';\r\nimport { EmitterSubjectService } from '../staticServices/emitterObserverStaticServices/emitterSubject.service';\r\nimport { CopyServiceStatic } from './commonStaticServices/copyServiceStatic.service';\r\nimport { DateStringServiceStatic } from './commonStaticServices/dateStringServiceStatic.service';\r\nimport { SlakezSaltServiceStatic } from './commonStaticServices/slakezSaltServiceStatic.service';\r\nimport { FrequentlyUsedFunctionsServiceStatic } from './frequentlyUsedStaticService/frequentlyUsedFunctionsServiceStatic.service';\r\nimport { JsRegExpServiceStatic } from './jsRegExpServiceStatic.service';\r\n\r\n// NOTE: Caution!! This service relies on DictionaryServiceStatic, which is deprecated. Instead user DictionaryServive,\r\n// and change the necessary commented-lines of codes in the following functions:\r\n// getProfilePicsModel() , sendWithGeoLocation(), & SendModel()\r\n\r\nconst url = '/FileUpload/ProfilePhotoUpload';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class UploadServiceStatic {\r\n public static loginSuccess : LoginSuccess = new LoginSuccess();\r\n \r\n private emitterDestroyed$ : Subject = new Subject();\r\n constructor (\r\n public dictionaryService : DictionaryService) {\r\n }\r\n\r\n \r\n // ------------------------------------------------------------------------------------------------\r\n // ref:https:// www.htmlgoodies.com/html5/tutorials/determine-an-images-type-using-the-javascript-filereader.html\r\n // ------------------------------------------------------------------------------------------------\r\n static fileChunk (File : any) : any {\r\n if (!File.prototype.slice) {\r\n const newSlice = File.prototype.mozSlice || File.prototype.webkitSlice;\r\n\r\n if (newSlice) {\r\n File.prototype.slice = (() => (startingByte : any, length : any) => newSlice.call(this, startingByte, length + startingByte))();\r\n } else {\r\n alert('File.slice() not supported.');\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO: test\r\n // ---------------------------------------------------------------\r\n static fileToString (file : File) : string {\r\n const myReader : FileReader = new FileReader();\r\n let tempPicStr : string = '';\r\n myReader.onerror = () => {\r\n myReader.abort();\r\n return new DOMException('Problem parsing input file.');\r\n };\r\n\r\n myReader.onloadend = (e) => {\r\n debugger;\r\n let tempPicStr = e?.target?.result as string; // JSON.stringify(fileStr);\r\n\r\n EmitterSubjectService.emitFileImage(tempPicStr);\r\n debugger;\r\n return e;\r\n };\r\n // debugger;\r\n myReader.readAsDataURL(file);\r\n debugger;\r\n return tempPicStr;\r\n }\r\n // ---------------------------------------------------------------\r\n static fileToStringArr (file : File) : string[] {\r\n const myReader : FileReader = new FileReader();\r\n let tempStringFiles : string[] = [];\r\n myReader.onerror = () => {\r\n myReader.abort();\r\n return new DOMException('Problem parsing input file.');\r\n };\r\n\r\n myReader.onloadend = (e) => {\r\n // debugger;\r\n let imageData = e?.target?.result as string;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(imageData)) {\r\n tempStringFiles.push(imageData);\r\n }\r\n\r\n\r\n EmitterSubjectService.emitFileImages(tempStringFiles);\r\n return tempStringFiles;\r\n // debugger;\r\n };\r\n // debugger;\r\n myReader.readAsDataURL(file);\r\n return tempStringFiles;\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use:\r\n // ---------------------------------------------------------------\r\n static formDataToString (formData : FormData) : string[] {\r\n let tempStringFiles : string[] = [];\r\n formData.forEach(e => {\r\n tempStringFiles.push(JSON.stringify(e.valueOf));\r\n });\r\n return tempStringFiles;\r\n }\r\n // ---------------------------------------------------------------\r\n // Not in use:\r\n // ---------------------------------------------------------------\r\n static formDataToFileMap (formData : FormData) : Map {\r\n let fileMap : Map = new Map();\r\n formData.forEach((v, k) => {\r\n fileMap.set(k, v)\r\n });\r\n return fileMap;\r\n }\r\n // --------------------------------------------------------------\r\n static getUrl (data : any) : any {\r\n if (data.length > 0) {\r\n return 'url(\\'data:image/jpeg;base64,' + data + '\\')';\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n // TODO: Test\r\n // ---------------------------------------------------------------\r\n static readFileContent (file : File) : Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!file) {\r\n resolve('');\r\n }\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = (e) => {\r\n const text = reader.result.toString();\r\n // debugger;\r\n resolve(text);\r\n\r\n };\r\n // debugger;\r\n reader.readAsText(file);\r\n });\r\n }\r\n // ---------------------------------------------------------------\r\n // readAsArrayBuffer()\r\n // ---------------------------------------------------------------\r\n\r\n static getFileTypeWhileUploading (file : any) {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (e) => {\r\n const buffer = 1024; // = this.fileChunk(reader.result);\r\n const int32View = new Int32Array(buffer);\r\n\r\n switch (int32View[ 0 ]) {\r\n case 1196314761:\r\n file.verified_type = 'image/png';\r\n break;\r\n case 944130375:\r\n file.verified_type = 'image/gif';\r\n break;\r\n case 544099650:\r\n file.verified_type = 'image/bmp';\r\n break;\r\n case -520103681:\r\n file.verified_type = 'image/jpg';\r\n break;\r\n default:\r\n file.verified_type = 'unknown';\r\n break;\r\n }\r\n };\r\n }\r\n // ---------------------------------------------------------------\r\n static saltFile (model : any) : any {\r\n let boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n // debugger;\r\n const bn = SlakezSaltServiceStatic.saltModel(model);\r\n // debugger;\r\n boxNonceEntity = bn\r\n return boxNonceEntity;\r\n }\r\n return null;\r\n }\r\n // ---------------------------------------------------------------\r\n static salt (model : any) : any {\r\n let boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(model)) {\r\n // debugger;\r\n const bn = SlakezSaltServiceStatic.boxSalt(JSON.stringify(JSON.parse(JSON.stringify(model))));\r\n // debugger;\r\n\r\n boxNonceEntity = bn\r\n return boxNonceEntity;\r\n }\r\n return null;\r\n }\r\n // -----------------------------------------------\r\n unsubscribed () : void{\r\n this.emitterDestroyed$.next(true);\r\n this.emitterDestroyed$.complete();\r\n\t}\r\n // -----------------------------------------------\r\n static sendWithGeoLocation (content : Content, httpService : HttpService) : Observable {\r\n return new Observable((subscriber) => {\r\n let loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n let chatFileUpload : ChatFileUpload = new ChatFileUpload();\r\n let boxNonceEntity : BoxNonceEntity = new BoxNonceEntity();\r\n let readFileDefArr : any[] = [];\r\n \r\n // let profilePics = this.getProfilePicsModel(this.loginSuccess.signedInUserId);\r\n\r\n // var formData = new FormData();\r\n const nvAnyArr : KvAny[] = [];\r\n let kvAny : KvAny = new KvAny();\r\n\r\n kvAny.key = 'contentType';\r\n kvAny.value = 'image/jpeg';\r\n nvAnyArr.push(kvAny);\r\n\r\n kvAny = new KvAny();\r\n kvAny.key = 'date';\r\n kvAny.value = DateStringServiceStatic.getTicks(new Date()).toString();\r\n nvAnyArr.push(kvAny);\r\n // debugger;\r\n\r\n kvAny = new KvAny();\r\n kvAny.key = 'description';\r\n kvAny.value = content.contents;\r\n nvAnyArr.push(kvAny);\r\n\r\n kvAny = new KvAny();\r\n kvAny.key = 'modelName';\r\n kvAny.value = 'keyValueAnyArray';\r\n nvAnyArr.push(kvAny);\r\n // debugger;\r\n\r\n // just profide the property for the backend\r\n kvAny = new KvAny();\r\n kvAny.key = 'photoBnId';\r\n kvAny.value = 0;\r\n nvAnyArr.push(kvAny);\r\n\r\n // just profide the property for the backend\r\n kvAny = new KvAny();\r\n kvAny.key = 'photoId';\r\n kvAny.value = 0;\r\n nvAnyArr.push(kvAny);\r\n\r\n kvAny = new KvAny();\r\n kvAny.key = 'fileArr';\r\n // debugger;\r\n kvAny.value = content.chatFileUpload.fileArr;\r\n nvAnyArr.push(kvAny);\r\n\r\n //kvAny = new KvAny();\r\n //kvAny.key = 'picArr';\r\n //kvAny.value = content.chatFileUpload.picArr;\r\n //nvAnyArr.push(kvAny);\r\n\r\n kvAny = new KvAny();\r\n kvAny.key = 'signedInUserId';\r\n kvAny.value = loginSuccess.signedInUserId.toString();\r\n nvAnyArr.push(kvAny);\r\n\r\n kvAny = new KvAny();\r\n kvAny.key = 'formData';\r\n var tempFileStrArr = ImageResizerService.formDataToString(content.chatFileUpload.formData);\r\n // debugger;\r\n kvAny.value = tempFileStrArr;\r\n nvAnyArr.push(kvAny);\r\n\r\n // debugger;\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position : any) => {\r\n if (position) {\r\n console.log('Latitude: ' + position.coords.latitude + '; Longitude: ' + position.coords.longitude);\r\n kvAny = new KvAny();\r\n kvAny.key = 'latitude';\r\n kvAny.value = position.coords.latitude;\r\n nvAnyArr.push(kvAny);\r\n\r\n kvAny = new KvAny();\r\n kvAny.key = 'longitude';\r\n kvAny.value = position.coords.longitude;\r\n nvAnyArr.push(kvAny);\r\n\r\n kvAny = new KvAny();\r\n kvAny.key = 'signedInSituserId';\r\n kvAny.value = this.loginSuccess.signedInUserId;\r\n nvAnyArr.push(kvAny);\r\n // debugger;\r\n\r\n // boxNonceEntity = this.saltFile(tempFileStr); // 1st salting of individual file\r\n for (let i = 0; i < content?.chatFileUpload?.fileMap?.size; i++) {\r\n // debugger;\r\n kvAny = new KvAny();\r\n kvAny.key = 'fileContents-' + i;\r\n\r\n this.readFileContent(content.chatFileUpload.fileArr[i]).then(fileContents => {\r\n\r\n // debugger;\r\n kvAny.value = JSON.stringify(fileContents);\r\n nvAnyArr.push(kvAny);\r\n\r\n // if (content?.chatFileUpload?.fileMap?.size == i) {\r\n boxNonceEntity = SlakezSaltServiceStatic.saltModel(nvAnyArr); // 2nd salting\r\n // debugger;\r\n this.sendModel(boxNonceEntity, httpService).subscribe(data => {\r\n // debugger;\r\n subscriber.next(data);\r\n });\r\n // }\r\n })\r\n // debugger;\r\n }\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag: ' + error);\r\n let message = 'Error occured in geolocation.getCurrentPosition;\\n Error-mag: ' + error.message;\r\n EmitterSubjectService.emitMyErrorLog({ feedbackMessage: message });\r\n },\r\n );\r\n } \r\n \r\n // this.sendFile(this.formData); \r\n })\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: This method should be in the calling component:\r\n // -----------------------------------------------\r\n static sendModel (boxNonce : any, httpService : HttpService) : Observable\r\n {\r\n const files : any[] = [];\r\n let pPics : any;\r\n let photo : Photo = new Photo();\r\n let tPhoto : Photo = new Photo();\r\n let kvPhoto : KvPhoto = new KvPhoto();\r\n let kvPhotoArr : KvPhoto[] = [];\r\n let isSubmitted = true;\r\n let message = '';\r\n let signedInSitUser : SitUser = new SitUser();\r\n // debugger;\r\n\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce))\r\n {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.box)\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(boxNonce.nonce)) {\r\n // debugger;\r\n\r\n return new Observable((subscriber) => {\r\n // Note: single or multiple imges are uploaded in an array:\r\n // ---------------------------------------------------------\r\n // debugger;\r\n httpService\r\n .postObservable(\r\n '/api/FileUpload/ProfilePhotoUploadAsync',\r\n {\r\n box: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(boxNonce.box),\r\n nonce: FrequentlyUsedFunctionsServiceStatic.arrBufferToB64(boxNonce.nonce),\r\n },\r\n 'json2text',\r\n )\r\n .subscribe((result) => {\r\n // debugger;\r\n if (result) {\r\n const bn = result as BoxNonceEntity;\r\n // debugger;\r\n if (bn && bn.box.length > 0 && bn.nonce.length > 0) {\r\n\r\n // Note: backend/server will always send an array/list:\r\n // ----------------------------------------------------\r\n const pBnArr = JSON.parse(SlakezSaltServiceStatic.boxUnsalt(bn)) as any;\r\n var pbn : any;\r\n // debugger;\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pBnArr)) {\r\n if (!(pBnArr instanceof Array)) {\r\n pbn = JSON.parse(pBnArr) as PhotoBn;\r\n // debugger;\r\n pbn.pic = JsRegExpServiceStatic.setUrlForImageData(pbn.fileBytes);\r\n\r\n kvPhoto = this.prepareUploadedKvPhotoBn(pbn);\r\n // debugger;\r\n // UploadServiceStatic.dictionaryService.updateDictionary(kvPhoto, 'unFilteredKVPhotoArr', kvPhoto.photoBnId);\r\n subscriber.next(kvPhoto);\r\n }\r\n //else if (pBnArr.length > 0 && pBnArr[ 0 ] instanceof PhotoBn) {\r\n // debugger;\r\n // for (let e of pBnArr) {\r\n // debugger;\r\n // kvPhoto = this.updateProfilePicsWithNewPhotoBn(e);\r\n // // kvPhotoArr.push(kvPhoto);\r\n // debugger;\r\n // subscriber.next(kvPhoto);\r\n // } // end of for(let e of pBnArr)\r\n //}\r\n\r\n //pPics.isPhotoUploadSuccessful = true;\r\n // debugger;\r\n //EmitterSubjectService.emitUploadedProfilePics(pPics);\r\n \r\n // ----------------------------------------------------\r\n\r\n }\r\n }\r\n }\r\n },\r\n (error) => {\r\n // alert ('Error occured in GetArticleContent(' + idArr[i] + ');\\n Error-mag: ' + error);\r\n message = 'Error occured in submitImageUpload()->sendModel();\\n Error-mag: ' + error.message;\r\n // EmitterSubjectService.emitMyErrorLog({ feedbackMessage: message });\r\n // EmitterSubjectService.emitMessage({ feedbackMessage: message });\r\n });\r\n })\r\n }\r\n else return null;\r\n }\r\n else return null;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: Old Scheme had the following:\r\n // Server-PhotoBn stored just the pic encrypted into \r\n // box & nonce of the PhotoBn.\r\n // ---------------------------------------------------------------\r\n static prepareUploadedKvPhotoBnOld (pbn : PhotoBn) : KvPhoto | any {\r\n var kvPhoto = new KvPhoto();\r\n var pPics = new ProfilePics();\r\n var tPhoto = new Photo();\r\n var tPic = '';\r\n // if the backend sends photoBns:\r\n // -----------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn.box) && pbn.box.length > 0\r\n && !FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pbn.nonce) && pbn.nonce.length > 0) {\r\n\r\n let tBn = new BoxNonceEntity();\r\n tBn.box = pbn.box;\r\n tBn.nonce = pbn.nonce;\r\n tPic = SlakezSaltServiceStatic.boxUnsalt(tBn) as string;\r\n\r\n // debugger;\r\n pbn.imageString = tPic;\r\n // debugger;\r\n kvPhoto = new PhotoBn().cloneToKvPhoto(pbn);\r\n // debugger;\r\n kvPhoto.value = tPic;\r\n kvPhoto.image = tPic;\r\n kvPhoto.pic = tPic;\r\n\r\n // Note: Uploaded pics are always Public by default.\r\n kvPhoto.privacy = 'Public';\r\n kvPhoto.isPrimary = false;\r\n kvPhoto.isPrivate = false;\r\n kvPhoto.isUnlocked = false;\r\n\r\n // save Photo from kvPhoto to profilePhotoDictionary of ProfilePics:\r\n // -----------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)) {\r\n // pPics.unFilteredKvPhotoArr.push(kvPhoto);\r\n kvPhoto = this.prepareKvPhotoForDisplay(kvPhoto, true);\r\n // kvPhoto.value = JsRegExpServiceStatic.prefixUrlToImageData(kvPhoto.value);\r\n }\r\n }\r\n else {\r\n // if the backend sends photo:\r\n // ---------------------------\r\n // debugger;\r\n kvPhoto = CopyServiceStatic.copyFromPhotoToKvPhoto(pbn);\r\n // kvP.value = JsRegExpServiceStatic.normalizeImageData(kvP.value);\r\n\r\n kvPhoto = this.prepareKvPhotoForDisplay(kvPhoto, false);\r\n kvPhoto.value = JsRegExpServiceStatic.prefixUrlToImageData(kvPhoto.value);\r\n }\r\n \r\n // debugger;\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------\r\n // Note: New scheme: The fileBytes are stored in PhotoBn, and then \r\n // all the other properties of the photoBn is captuered\r\n // from the incoming model on the server, then the whole\r\n // PhotoBn is encrypted and stored into the PhotoBn's\r\n // box & nonce properties.\r\n // ----------------------------------------------------------------\r\n static prepareUploadedKvPhotoBn (pbn : PhotoBn) : KvPhoto | any {\r\n var kvPhoto = new KvPhoto();\r\n var pPics = new ProfilePics();\r\n var tPhoto = new Photo();\r\n var tPic = '';\r\n \r\n // debugger;\r\n kvPhoto = new PhotoBn().cloneToKvPhoto(pbn);\r\n // debugger;\r\n kvPhoto.value = pbn.pic;\r\n kvPhoto.image = pbn.pic;\r\n kvPhoto.pic = pbn.pic;\r\n\r\n // Note: Uploaded pics are always Public by default.\r\n kvPhoto.privacy = 'Public';\r\n kvPhoto.isPrimary = false;\r\n kvPhoto.isPrivate = false;\r\n kvPhoto.isUnlocked = false;\r\n\r\n // save Photo from kvPhoto to profilePhotoDictionary of ProfilePics:\r\n // -----------------------------------------------------------------\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics)) {\r\n // pPics.unFilteredKvPhotoArr.push(kvPhoto);\r\n kvPhoto = this.prepareKvPhotoForDisplay(kvPhoto, true);\r\n // kvPhoto.value = JsRegExpServiceStatic.prefixUrlToImageData(kvPhoto.value);\r\n }\r\n \r\n // if the backend sends photo:\r\n // ---------------------------\r\n // debugger;\r\n kvPhoto = CopyServiceStatic.copyFromPhotoToKvPhoto(pbn);\r\n // kvP.value = JsRegExpServiceStatic.normalizeImageData(kvP.value);\r\n\r\n kvPhoto = this.prepareKvPhotoForDisplay(kvPhoto, false);\r\n kvPhoto.value = JsRegExpServiceStatic.prefixUrlToImageData(kvPhoto.value);\r\n \r\n\r\n // debugger;\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------\r\n //static getProfilePicsModel (sitUserId : number) : ProfilePics {\r\n // let pPics: ProfilePics = new ProfilePics();\r\n\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(DictionaryServiceStatic.profilePicsDictionary) && DictionaryServiceStatic.profilePicsDictionary.size() > 0) {\r\n // pPics = DictionaryServiceStatic.profilePicsDictionary.getValue(sitUserId) as ProfilePics;\r\n // }\r\n\r\n // if (FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(pPics) || pPics.sitUserId === 0) {\r\n // this.loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // let signedInSitUser = CopyServiceStatic.copyLoginSuccessToSitUser(this.loginSuccess);\r\n // pPics = CopyServiceStatic.createProfilePicsModelFromSitUser(signedInSitUser);\r\n // }\r\n // return pPics\r\n //}\r\n\r\n // ---------------------------------------------------------------\r\n // FileUploadComponent's methods:\r\n // ---------------------------------------------------------------\r\n \r\n // Ref;https:// stackoverflow.com/questions/39272970/angular-2-encode-image-to-base64/39275214\r\n // ---------------------------------------------------------------\r\n static changeListener ($event : any) : void {\r\n this.readThisFile($event.target.files);\r\n }\r\n // ---------------------------------------------------------------\r\n // This method normalizes and image's raw data for displating on\r\n // an html element. It can be prefixed with a 'url()' around the\r\n // image-data, or can strip the 'url()' from the image-data.\r\n // ---------------------------------------------------------------\r\n // --------------------------------------------------------------- \r\n static prepareKvPhotoForDisplay (kvPhoto : KvPhoto, isStripUrl : boolean) : KvPhoto | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto)) {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhoto.value)) {\r\n if (kvPhoto.value.length > 0) {\r\n // debugger;\r\n if (kvPhoto.value.match(JsRegExpServiceStatic.allImageTypesDataPattern3)) {\r\n kvPhoto.value = JsRegExpServiceStatic.replaceJpegOrSvgWithPngInRawImageData(kvPhoto.value);\r\n\t\t\t\t\t} \r\n }\r\n }\r\n }\r\n return kvPhoto;\r\n }\r\n // ---------------------------------------------------------------------\r\n // TODO: Delete before deployment:\r\n // ---------------------------------------------------------------------\r\n //static prepareKvPhotoForDisplay (e : KvPhoto, isStripUrl : boolean) : KvPhoto | any {\r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e) ) { \r\n // if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) && e.value.length > 0) {\r\n // if (JsRegExpServiceStatic.photoUrlPrefixPattern.test(e.value)) {\r\n // // debugger;\r\n // if (isStripUrl) {\r\n // // debugger;\r\n // if (JsRegExpServiceStatic.allImageTypesFilePattern.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageFileName(e.value);\r\n // }\r\n // else if (JsRegExpServiceStatic.allImageTypesDataPattern4.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern5.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern6.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageData(e.value); // .normalizeImageData(e.value);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // /*e.value = JsRegExpServiceStatic.normalizeImageData(e.value);*/\r\n // if (JsRegExpServiceStatic.allImageTypesFilePattern.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageFileName(e.value);\r\n // }\r\n // else if (JsRegExpServiceStatic.allImageTypesDataPattern4.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern5.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern6.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageData(e.value); // .normalizeImageData(e.value);\r\n // }\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageData(e.value);\r\n // }\r\n // }\r\n // }\r\n // return e;\r\n //}\r\n // ---------------------------------------------------------------\r\n static prepareKvPhotoArrForDisplay (kvPhotoArr : KvPhoto[], isStripUrl : boolean) : KvPhoto[] | any {\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(kvPhotoArr) && kvPhotoArr.length > 0) {\r\n kvPhotoArr.forEach(e => {\r\n e = this.prepareKvPhotoForDisplay(e, isStripUrl);\r\n\r\n\r\n //if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(e.value) && e.value.length > 0) {\r\n // if (JsRegExpServiceStatic.photoUrlPrefixPattern.test(e.value)) {\r\n // // debugger;\r\n // if (isStripUrl) {\r\n // // debugger;\r\n // if (JsRegExpServiceStatic.allImageTypesFilePattern.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageFileName(e.value);\r\n // }\r\n // else if (JsRegExpServiceStatic.allImageTypesDataPattern4.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern5.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern6.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageData(e.value); // .normalizeImageData(e.value);\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // /*e.value = JsRegExpServiceStatic.normalizeImageData(e.value);*/\r\n // if (JsRegExpServiceStatic.allImageTypesFilePattern.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageFileName(e.value);\r\n // }\r\n // else if (JsRegExpServiceStatic.allImageTypesDataPattern4.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern5.test(e.value)\r\n // || JsRegExpServiceStatic.allImageTypesDataPattern6.test(e.value)) {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageData(e.value); // .normalizeImageData(e.value);\r\n // }\r\n // }\r\n // }\r\n // else {\r\n // // debugger;\r\n // e.value = JsRegExpServiceStatic.normalizeImageData(e.value);\r\n // }\r\n //}\r\n });\r\n }\r\n return kvPhotoArr;\r\n }\r\n // ---------------------------------------------------------------\r\n static saveFile (files : File[]) {\r\n if (files.length > 0) {\r\n console.log(files);\r\n let formData = new FormData();\r\n let content = new Content();\r\n let loginSuccess = EmitterSubjectService.getLoginSuccess();\r\n // Array.from(files).forEach(f => this.formData.append('file', f));\r\n // formData.append('authorSitUserId', this.content.authorSitUserId ? this.content.authorSitUserId.toString() : this.loginSuccess.signedInUserId.toString());\r\n formData.append('profileId', content.profileId.toString());\r\n formData.append('contentId', content.contentId.toString());\r\n formData.append('heading', content.heading);\r\n /*\r\n * this.formData.append('writePadAction', this.content.writePadAction);\r\n * Add the latitude & longitude\r\n */\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position : any) => {\r\n if (position) {\r\n console.log('Latitude : ' + position.coords.latitude + '; Longitude : ' + position.coords.longitude);\r\n formData.append('latitude', position.coords.latitude.toString());\r\n formData.append('longitude', position.coords.longitude.toString());\r\n formData.append('file', files[ files.length - 1 ]);\r\n\r\n // TODO: Save the file:\r\n\r\n // this.articleCompositionService.submitFile(this.formData);\r\n }\r\n },\r\n (error : any) => console.log(error)\r\n );\r\n } else {\r\n alert('Geolocation is not supported by this browser.');\r\n }\r\n }\r\n }\r\n // ---------------------------------------------------------------\r\n static readThisFile (files : any) : string[] {\r\n let tempStringFiles: string[] = []\r\n if (!FrequentlyUsedFunctionsServiceStatic.isNullOrEmpty(files) && files.length > 0) {\r\n const file : File = files[ 0 ];\r\n const myReader : FileReader = new FileReader();\r\n\r\n myReader.onerror = () => {\r\n myReader.abort();\r\n return new DOMException('Problem parsing input file.');\r\n };\r\n\r\n myReader.onloadend = (e) => {\r\n const fileStr = myReader.result;\r\n // debugger;\r\n\r\n tempStringFiles.push(JSON.stringify(fileStr));\r\n };\r\n myReader.readAsDataURL(file);\r\n }\r\n return tempStringFiles;\r\n }\r\n \r\n // ---------------------------------------------------------------\r\n static toggleIsUpload () {\r\n EmitterSubjectService.emitToggleIsUpload();\r\n }\r\n // ------------------------------------------------------------------------------------------------\r\n // Note: this method though the original version may have worked,\r\n // this altered version does not work as of 20220328\r\n // ------------------------------------------------------------------------------------------------\r\n static getFormDataAndUploadStatus ($event : any, httpService : HttpService) : { [ key : string ] : Observable } {\r\n\r\n // this will be the our resulting map\r\n const status: any = {};\r\n let percentDone : any;\r\n let fileArr = $event.target.files as File[];\r\n debugger;\r\n //fileArr.map(file => {\r\n for (var file of fileArr) {\r\n // create a new multipart-form for every file\r\n const formData : FormData = new FormData();\r\n formData.append('file', file, file.name);\r\n\r\n // create a http-post request and pass the form\r\n // tell it to report the upload progress\r\n const req = new HttpRequest('POST', url, formData, {\r\n reportProgress: true\r\n });\r\n\r\n // create a new progress-subject for every file\r\n const progress = new Subject();\r\n\r\n // send the http-request and subscribe for progress-updates\r\n httpService.httpClient.request(req).subscribe(event => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n\r\n // calculate the progress percentage\r\n if (event.total) {\r\n percentDone = Math.round(100 * event.loaded / event.total);\r\n }\r\n // Save every progress-observable in a map of all observables\r\n status[ file.name ] = {\r\n progress: progress.asObservable(),\r\n percentDone: percentDone\r\n };\r\n debugger;\r\n // pass the percentage into the progress-stream\r\n // progress.next(percentDone);\r\n progress.next(status);\r\n } else if (event instanceof HttpResponse) {\r\n\r\n // Close the progress-stream if we get an answer form the API\r\n // The upload is complete\r\n progress.complete();\r\n }\r\n });\r\n }\r\n\r\n // return the map of progress.observables\r\n return status;\r\n }\r\n // ---------------------------------------------------------------\r\n // UploadFilesComponent's methods:\r\n // ---------------------------------------------------------------\r\n\r\n // ---------------------------------------------------------------\r\n}\r\n","/* (ignored) */"],"names":["animate","animateChild","group","query","state","style","transition","trigger","slideInOutAnimation","position","top","left","right","bottom","backgroundColor","Animations","maxHeight","overflow","opacity","params","numberOfDropdownItems","transform","minHeight","fontSize","scale","width","optional","height","heightInRem","RouterModule","LandingPageComponent","lChildren","appRoutes","path","component","data","preload","loadChildren","then","m","AppComponentsModule","PublicModule","LoginModule","ProfileTileScrollModule","MemberViewAndUpgradedModule","MyModule","ProfileModule","ChatModule","CommunicationModule","ActivityModule","SignupModule","SalesModule","SalesTestModule","SandBoxModule","AppAdminModule","AppRoutingModule","forRoot","imports","exports","DOCUMENT","ChangeDetectorRef","ElementRef","NgZone","Renderer2","ViewContainerRef","ActivatedRoute","Router","DeviceDetectorService","of","Subject","Subscription","takeUntil","SpinnerModel","ViewportDimension","PagerMemberActivity","ProfileTile","PhotoServiceService","ProfileServiceService","RendererServiceService","MessageModel","GlyphiconServiceService","BreadcrumServiceStatic","CopyServiceStatic","HammerServiceStatic","SlakezSaltServiceStatic","EmitterSubjectService","InMemoryDataServiceStatic","LoginSuccess","SitUser","BoxNonceEntity","BrdCrmKvAny","PagerBreadcrum","ModuleComponentLoader","PhotoMgmtAction","UserAndPageTitle","NaclPairClient","Salt","KvPhoto","CenterCoordinates","PagerPhotoMgmt","ProfilePics","AppServiceService","CommonServiceService","CoreServiceService","DbServiceService","MemberServiceService","PagerServiceService","FrequentlyUsedFunctionsServiceStatic","i0","hostName","AppComponent","activatedRoute","cdr","deviceService","elementRef","vc","appServiceService","commonServiceService","coreServiceService","dbServiceService","glyphiconServiceService","pagerServiceService","photoServiceService","profileServiceService","memberServiceService","rendererServiceService","ngZone","router","loading$","appElementRef","appSidebar","subscribers","bias","breakpointObserverService","checkConnectionService","dbDexieToDictionaryService","dictionaryIOService","glyphiconMenuService","heartbeatService","httpService","localStorageService","logRegService","masterData","activityService","photoBnService","redirectionService","rendererService","renderer","pagerPhotoMgmtService","pagerSupportService","sitUserService","signedInUserService","swUpdateService","activeComponentIds","activeModuleComponentIds","biasKvPhotoArr","boxNonceEntity","breadcrumRing","breadCrmRngLength","callerName","cart","cartItemsCount","centerCoordinates","componentViewportDimension","currentRoute","defaultPics","defaultImageKvPhotos","defaultImageNameArr","defaultImageNames","defaultGlyphNames","deviceInfo","document","window","emitterDestroyed$","enums","enumDataObservable","enumDataSubscription","gestureDivId","glyphPhotoMgmtMenuSubscription","hb","heartbeatCounter","hasEmittedLoginSuccess","hubConnection","intervalDbg","intervalMsg","initTime","Date","getTime","endTime","isAuthorized","isBusy","isConnectionEstablished","isDefault","isDesktopvar","isDisabled","isEmployee","isEditProfile","isHome","isInitHeartbeat","isInizializationComplete","isLocalStorageProcessed","isLoading","isLoggedIn","isLoggedOutByUser","isMessageBoardVisible","isMgmt","isMobilevar","isModal","isMouseIn","isMyProfile","isMyStuffOpen","isOnLine","isOpen","isPhotoMgmt","isPremium","isReviewer","isSidebarOpen","isSetPage","isSingletap","isSignup","isSpinner","isSpinnerRunning","isSuccess","isSuperUser","isTabletvar","isValued","isViewMember","isVsScroll","kvGlyphArr","kvGlyphArrForPhotoMgmt","kvGlyphArrForViewMember","kvPhotoArr","kvPhotoArrBackup","kvPhotoLock","kvPhotoUnLock","kvPhotoPrivate","kvPhotoPublic","loginSuccess","logregFactory","mainTop","mc","mcLoader","memberActivities","messageModel","messages","naclClient","ngAfterViwInitCounter","onDestroy$","pageSize","pageNo","pageTitle","pagerV","pagerVKvPhotoNav","pagerVMemActGlyphForPhotoMgmt","pagerVMemActGlyphForViewMember","pagerBrdCrm","pagerPhotoMgmt","photoMgmtAction","pauseTimer","profilePics","profileTile","profileImageKvPhotos","profileNameChars","returnUrl","routedElementId","routes","signedInUserId","sitUser","signedInUser","selectedProfileTile","spinnerRequestCounter","spinnerModel","tempElem","title","tobeRemovedComponentName","tSitUserId","unsaltedIndexedDbData","urlString","userAndPageTitle","viewportDimension","wishListCount","routerKvAny","pagedBreadcrumArr","navEventObserver","numberOfTicks","callStackCount","timer","timerMap","Map","yourLoginSuccess","idleState","isTimedOut","isPaused","lastPing","intervalPeriod","idlePeriod","timeoutPeriod","constructor","Document","Window","getSWUpdateService","getDeviceInfo","isMobile","isTablet","isDesktop","getRedirectionService","getSitUserService","getSignedInUserService","getCheckConnectionService","getHeartbeatService","getHttpService","setHttpService","getLogRegService","getPagerSupportService","getPagerPhotoMgmtService","getPhotoBnService","getBackgroundImageAnimationService","getRendererService","setDocument","getDictionaryIOService","getDbDexieToDictionaryService","getLocalStorageService","setWindow","setIsMobile","setChangeDetectorRef","setAppElementRef","getDefaultImageNameArr","setDefaultImageNamesToKvPhotoArr","getActivityService","getGlyphiconMenuService","getRing","getPagerBreadcrum","getRenderer","isOnline","setIsOnLine","getEnums","isNullOrEmpty","detectDevice","getViewport","ngOnInit","setDbDexieToDictionaryService","forceSwUpdateActivation","location","pathname","search","setReturnUrl","setHostName","centerCoordinatesEmitter","pipe","subscribe","result","checkLocalStorageForLoginSuccessEmitter","checkLocalStogareForLoginSuccess","createDictionaryFromDbDexieDb","createDictionaryFromDbDixieEmitter","entityName","avatarProfileTileEmitter","executeAvatarTasks","ngAfterViewInit","heartbeatEmitter","hbeat","sitUserId","heartbeat","isHomeEmitter","routeToHomePage","isSidebarOpenEmitter","isMyStuffOpenEmitter","isPhotoMgmtEmitter","getLoginSuccess","getSitUserModel","loadLandingPageEmitter","loginSuccessEmitter","executeLoginSuccessTasks","executeAfterLoginSuccessTasks","isLoginSuccessEmitter","logoutEmitter","resetThat","setLoginSuccess","executeLogoutSuccessTasks","messageEmitter","message","setTimeout","clearTimeout","clearMessageEmitter","myErrorLogEmitter","pageSizeEmitter","emitRunNgAfterViewInit","pagerBreadcrumEmitter","setBreadCrumRingLength","refreshPageEmitter","returnUrlEmitter","runNgAfterViewInitEmitter","setBreadcrumPageEmitter","showSpinnerEmitter","length","hideSpinnerEmitter","setupLockPhotos","getPhotoLock","getPhotoUnLock","getPhotoPrivate","getPhotoPublic","photoLockUnLockEmitter","kvPhoto","key","toLowerCase","indexOf","upgradedEmitter","detectChanges","ngOnDestroy","next","complete","unsubscribe","clearInterval","pauseMsgTimer","forEach","setIsInizializationComplete","localSaltyPairClient","getLocalSaltyPair","in","secretKey","publicKey","out","id","setSaltyPair","salt","setSalty","localSaltedLS","localBoxNonce","box","nonce","unslatedLS","boxUnsalt","JSON","parse","unsaltFromCsSaltedToJsUnsalted","moduleName","componentName","controller","action","emitLocalStorageLoginSuccess","setRoute","input","unsaltFromJsSaltedToJsUnsalted","centerThisComponent","componentElem","getElementById","getComponentViewport","margin","vw","setStyle","vh","remove","closeModule","name","navigate","outlets","currentFocus","to","emitCurrentFocus","startSinginInUserHeartbeat","setAvatarProfileTile","copyLoginSuccessToProfileTile","primaryImage","primaryPhotoBnJson","pbn","unsaltPrimaryPicPhotoBnJson","getPrimaryPicFromPhotoBn","navigator","onLine","executeMyDictionaryTasks","myActivities","myLockingActivities","myTrkWnkStrActivities","getMyActivities","gestureHub","getUrl","nullPromise","has","set","photoMgmt","value","prepareRoute","outlet","anim","activatedRouteData","registerSpinnerModal","removeChildren","i","item","children","splice","reRender","markForCheck","console","log","resetLogRegBttns","emitSetSignedInUserBackgroundImage","setBreadcrumPage","direction","route","startSendingHeartbeat","emitComputeDistance","updateApp","reload","onSwipeDown","event","hammeredElement","selectors","viewQuery","changeDetection","APP_BASE_HREF","CommonModule","HttpClientModule","FormsModule","ReactiveFormsModule","BrowserModule","HAMMER_GESTURE_CONFIG","HammerGestureConfig","HammerModule","BrowserAnimationsModule","RouterOutlet","ServiceWorkerModule","environment","SWUpdateService","ActivityService","ProfileTileServiceService","SearchSortServiceService","AppFeatureModule","DirectiveFilterPipeModule","ImageUploadModule","ModalModule","PagerModule","SharedModule","DateValueAccessor","AppModule","bootstrap","provide","useValue","useClass","deps","register","enabled","production","registrationStrategy","declarations","AvatarComponent","GlyphiconMembersComponent","LeftRightLogoMenuComponent","LogoComponent","LogoMenuComponent","LogRegButtonsAndNavArrowsComponent","MessageBoardComponent","MyStuffComponent","NavHeaderComponent","NavSidebarComponent","appComponentsRoutes","AppComponentsRoutingModule","forChild","KeyValueModule","HomePageComponent","avatarElementRef","commonServiceServie","coreServiceServie","profileTileServiceService","profileTileService","photoAndPrimaryPhotoMgmtService","isCameraVisible","isEyeOpen","kvMemActGlyphArrForPhotoMgmt","profileName","getProfileTileService","getPhotoAndPrimaryPhotoMgmtService","setAvatarElementRef","getIsPhotoMgmt","toggleUploadUi","getIsMobile","setElementRef","clearPrimaryImage","toggleThisEmitter","setupAvatarProfileTile","currentPageOnGlyphiconChangeEmitter","currentItemKvPhoto","primaryPhotoBnId","photoBnId","setPrimaryImage","getPrimaryImageFromLoginSuccess","getSingedInSitUser","setSignedInUser","copyFromSitUser","executeAvatarProfileTileTasks","getProfileTile","pTile","stringify","isPrimaryPhoto","copyLoginSuccessToKvPhoto","copySourceToDestination","emitIsCameraVisible","getUrlAddress","emitIsShowPhotoUpload","toggleIsEyeOpen","emitToggleThis","viewMyProfile","setMCLoader","setIsMyProfile","emitAvatarProfileTile","inputs","decls","vars","consts","template","ctx","isDropdownOpen","isMembersOpen","dropdownItems","glyphs","isMobileEmitter","LogRegService","BackgroundImageAnimationService","ScrollTopServiceStatic","centerWidth","centerHeight","showDialog","visible","closable","point","getCenteringHeightWidth","setPageTitle","emitClearGlyphiconMenu","emitSetBreadcrumForPageSwitch","resetDefaultBias","emitHideSpinner","scrollToTop","emitLoginButtonRenderedMsg","emitRegisterButtonRenderedMsg","setIsLoggedOutByUser","emitLogout","toString","emitCloseSidebar","routeToMembersPage","setRouteBreadCrum","setRouteforSignedInUser","isPrepared","welcomePre","welcomePost","gayPre","gayPost","emitUserAndPageTitle","onTap","index","timerArray","DefaultSetterServiceStatic","timerService","currentUrl","isLoginPageRendered","isRegisterPageRendered","getTimerService","getCurrentUrl","localStorageLoginSuccessEmitter","pagerBreadcrumDirectionEmitter","url","checkCurrentUrl","resetMessageTimer","setRouteBreadcrum","currentPage","clearUserData","logoElementRef","isOnScroll","clearPageTitleEmitter","clearPageTitle","getOnScroll","pageContentWrapper","getNavHeaderElementById","onscroll","logScroll","e","type","mouseOver","nativeElement","querySelector","interval","Bool","StringServiceStatic","isClosed","isLogingTasksExecuted","isMyStuffClosedBool","isProfilePics","pagerBreadcrum","email","getUserNameFromEmail","toggleIsClosed","emitIsMyStuffOpen","resetLoginSuccess","blogId","businessKey","code","isEmailConfirmed","isForgotPassword","isPic","imagePath","iv","likedArr","myBlockedArr","myBuddyArr","myTrackedArr","myUnlockedArr","signedInUserKey","trackedArr","unlockedArr","emitShowSpinner","getSignedInUser","emitIsEditProfile","emitIsPhotoMgmt","emitIsViewMember","isProfileInfoComplete","isProfileContentComplete","isPreferenceComplete","href","Pager","DomUtilsServiceStatic","navHeaderElementRef","messageCounter","mcLoaderRouter","ModalModel","DictionaryServiceService","dictionaryServiceService","dictionaryService","pagerService","buddyCount","current","friendCount","isLoginTasksExecuted","modalModel","pager","pages","getDictionaryService","getPagerService","setKvGlyphPager","getCounts","buddyDictionary","size","myFriendDictionary","setupForEditProfile","setIsPhotoMgmt","setIsShowPhotoUpload","emitIsSidebarOpen","emitIsMyProfile","onSwipe","onSwipeLeft","onSwipeRight","onSwipeUp","AppFeatureComponent","appFeatureRoutes","animation","AppFeatureRoutingModule","AppFeatureValueDisplayComponent","AppFeature","appFeature","appFeatureService","askMe","appFeatureArr","arrKvAny","arrKvAnyLegend","arrKvAnyName","isRequired","isAppFeatureClosedBool","kvLegend","kvName","selectedKvIndex","getAppFeatureService","emitRemoveComponent","emitIsAppFeaturePage","getAppFeatureArr","getAppFeaturesFromServer","getArrKvAny","appFeatureArrEmitter","IsOpen","emitIsOpen","Register","Address","EmitDatePickerResult","DateStringServiceStatic","AddressComponent","firstNameFocus","lastNameFocus","addressStrFocus","cityFocus","stateFocus","countryFocus","zipCodeFocus","emailFocus","submitBttnFocus","address","accountMessages","age","datePickerResult","emailPattern","isAddressComplete","isDobErr","isPasswordsMatch","msg","passwordPattern","addressForm","addrTabIndexNum","titleDatePicker","getIsOnLine","datePickerEmitter","dob","pickedDate","determineAge","checkIsAddressComplete","onKeyDown","focus","login","boxSalt","submitAddressForm","valid","sendWithoutGeoLocation","maskPassword","emitResetPickedDate","reset","postObservable","arrBufferToB64","loginResult","setMessageTimer","emitMyErrorLog","feedbackMessage","error","sendWithGeoLocation","geolocation","getCurrentPosition","coords","latitude","longitude","onDateChanged","checkPasswords","password","confirmPassword","localeCompare","firstName","lastName","addressStr","city","country","zipCode","emitIsAddressComplete","editAddress","calculateAge","now","nowYear","getFullYear","nowMonth","getMonth","nowDay","getDate","dobParts","split","ymd","replace","dobTicks","getJsDateMinusJsOffsetToNetTicks","getDisclaimerAgeAccountMessage","yourAgeMsg","disaclaimerMsg","map","Key","toLowercase","Value","setInterval","navigateTo","ArrayPipe","arr","alert","pure","EmitCheckboxResult","CheckButtonComponent","checkboxArr","checkboxLegend","checkboxName","isFormSubmitted","minRequired","selectedChkBoxArr","checkboxForm","checkboxResult","updateSelectedCheckBoxArray","selected","push","onCheckboxChange","target","checked","checkboxSelectionsIndex","selectedCheckboxsArr","isRequiredPassed","emitCheckboxResult","commaSeparatedCheckboxSelectionsString","str","isChecked","DateInputComponent","date","dateObj","updateDate","valueAsDate","emitDob","AppSideBarDirective","CenterXDirective","DateInputFormControlDirective","DisableElemDirective","ExpandMenuDirective","ExpandMenuHomeDirective","CheckPasswordDirective","RefDirective","DisableScrollComponent","DistanceComponent","DropdownBoxComponent","LogPipe","ProfileTilesPipe","SafeFilterPipe","SafeKvPipe","Safe","TextFilterPipe","ToNumberPipe","UpgradedTilesPipe","IncrementorComponent","OffOnComponent","PageNameComponent","ProfileNameComponent","RadioBoxComponent","OffOnProfileNameComponent","count","click","gestureEmitter","closeSidebarEmitter","close","onClic","hostVars","hostBindings","RendererService","childElemId","myId","centerSelf","childElemWidth","parentElem","parentElemWidth","childElem","innerWidth","parentElement","diff","exportAs","forwardRef","NG_VALUE_ACCESSOR","onTouched","onChange","valueType","registerOnTouched","fn","registerOnChange","writeValue","setProperty","useExisting","multi","el","isDisable","setAttribute","ngOnChanges","features","toggleOpen","AbstractControl","FormGroup","NG_VALIDATORS","ValidationErrors","ValidatorFn","validatePassword","control","isValid","controls","valFn","validate","c","body_el","scrollPosition","noPageRefreshOnSwipeDown","dragula","_scroll_disable","scroll_disable","_scroll_enable","scroll_enable","on","pageYOffset","removeProperty","scrollTo","Heartbeat","Unit","isDefaultDistanceUnit","distanceUnit","tempElemName","distanceUnitElem","computeDistance","getDistanceUnit","distanceEmitter","computeDistanceEmitter","calcualateDistance","clear","checkMouseEvent","clearTimerMap","destHeartbeat","sourceHeartbeat","calculateDistance","setDistanceUnit","dUnit","EmitDropDownResult","dropdownBoxResult","selectedItem","ddHeading","optionArr","dHeading","dropdownBoxName","dropdownSelection","emitDropDownResult","Event","COMPLETE","CHANGE","_type","_target","targetObj","clone","newEvent","PropertyChangeEvent","BEFORE_CHANGE","oldValue","newValue","propertyName","obj","EPLStyleEventEmitter","_listeners","_mimicHandler","scope","emit","removeMimicEvent","dispatcherObj","off","mimicEvent","hasEventListener","listener","exists","listenerFunc","typeItem","evt","call","StringUtils","label","_label","_value","v","Logger","ListEvent","ITEM_ADDED","ITEM_REMOVED","ITEMS_ADDED","REMOVE_ALL","BEFORE_REMOVE_ALL","items","Array","List","_list","removeDuplicates","outList","j","found","removeItemAt","addItem","getUniqueValues","substr","debug","rslt","removeAll","event2","itemAt","find","callback","flag","reverse","forEachAsync","forEachDeferred","Promise","resolve","reject","onFail","onSuccess","updateItemAt","update","f","newItem","updateAsync","addItemAt","addItemsByList","toArray","addItems","removeItem","removeAllItem","contains","lastIndexOf","getItemById","ignoreCase","list","TAG","_offset","padding","offset","offsetMore","offsetLess","asyncOffset","tag","text","spacePadding","info","infoFormat","values","Format","warning","warn","errorFormat","debugFormat","warningFormat","titleFormat","StringSearch","content","contentBeginsWith","contentEndsWith","caseSensitive","_index","indexEnd","_indexEnd","indexInnerStart","_indexInnerStart","indexInnerEnd","_indexInnerEnd","_result","innerResult","_innerResult","searchNext","indexOffset","_resetResults","clc","substring","_indexOffset","isPostalCode","advanced","pattern","letters","ex","RegExp","test","clip","threePoints","toTitleCase","toUpperCase","toSentenceCase","startsWith","subString","obfuscate","extendedChars","codes","codeExt","char","charCodeAt","String","fromCharCode","randomString","g","Math","round","random","splitAt","indexOfMany","min","validateMask","charIsAnumber","charIsALetter","mask","cMask","charAt","cStr","applyMask","output","iStr","indexOfInArr","subFieldName","toBool","getValue","num","parseFloat","isNaN","parseInt","simplifyIndexOf","str1","str2","simplify","simplifyIsEqual","isNullOrUndefined","undefined","toDecimal","numString","decimalNum","baseNum","parts","costStringToNum","inputTotalCost","tTotalCostNum","totalCostParts","decimalCostParts","decimalStr","isDollarSignFound","isCommaFound","isDecimalPointFound","spaceChar","spaces","spaceOffset","removeExtraSpaces","leadingSpaces","endingSpaces","doubleSpaces","replaceVariables","variables","each","removeFrenchChars","frenchCharsA","frenchCharsB","caseSensitivte","ignoreFrenchChars","replaceWith","recursive","strOut","s","i2","textFileToLines","splitWithMultipleDelimeter","innerResultOnly","delimeter","tmp_str","tmp_delimeter","spitStrings","arrStr","outArr","tmpArr","delimeters","arrOut","trim","URLUtils","pathToURIParams","pair","decodeURIComponent","addPaths","basePath","subFolderPath","newPath","objToForm","objToURIParams","encodeURIComponent","pathToLocation","URLLocation","relativeToFullPath","defaultPath","a","urlProtocol","urlDomain","arrPath","i3","host","protocol","pathName","port","origin","fullPath","iA","strA","slice","arrA","strB","iB","pTileArr","filter","DomSanitizer","sanitizer","bypassSecurityTrustHtml","bypassSecurityTrustStyle","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","Error","sanitized","searchText","filteredItems","linebreakFilter","args","retNumber","uTileArr","pagerVPhotoNav","getProfileImages","getPagerPhotoMgmt","onPageSizeChange","upOrDown","setPageSize","emitPageSize","OffOn","offOnService","profileNameService","hbCounter","offOn","spanAwayElem","spanRadioElem","getOffOnService","getProfileNameService","copyOffOnIfExists","fetchProfileName","refreshNgAfterViewInit","checkOffOnStatusDiaApi","updateOffOnForHeartbeat","setupOffOn","setOffOnStatusColor","offOnResult","offOnSelection","getOffOn","setOffOn","offon","setRadioElements","spanAwayElement","setOffOnElement","spanRadioElement","setOffOnIds","offOnAwayElem","offOnRadioElem","userAndPageTitleEmitter","preparePageTitle","Observable","ProfileInfo","profileNameMap","profileInfoView","profileInfoViewEmitter","getProfileNameFromProfileInfo","profileTileEmitter","getProfileNameFromTile","getProfileName","pInfo","getProfileNameFromProfileTile","sitId","subscriber","setProfileName","pName","setProfileNameMap","setupKvPhotoModel","kvp","image","pic","isPrimary","glyphName","privacy","viewProfile","copyToKvPhoto","emitProfileTile","FormBuilder","EmitRadioboxResult","fb","radioboxArr","radioboxLegend","radioboxName","radioboxForm","radioboxResult","selectedRadiobox","selectedRadioIndex","getIndex","onRadioboxChange","radioboxSelection","emitRadioboxResult","ImageUploadModuleComponent","ChatFileUpload","Content","UploadServiceStatic","URL","FileUploadComponent","buffer","files","fileUploadForm","chatFileUpload","isToggleFileUpload","isCurrentFile","isFormValid","isSubmitted","isUploadSuccess","imageUploadForm","percentDone","progress","formData","FormData","selectedFiles","status","tempPicStrArr","createProfilePicsModelFromSitUser","setProfilePics","fileImageEmitter","picArr","isToggleFileUploadEmitter","cancel","fileMap","emitIsToggleFileUpload","emitIsCameraClosedBool","emitIsCameraGlyphVisible","isFileUploadFormValid","submitFileUploadForm","getDescription","$event","heading","uploadFiles","formDataArr","imageData","fileToString","fileArr","selectFile","uploadFileArr","HttpEventType","HttpResponse","PhotoBn","JsRegExpServiceStatic","ImageUploadService","ImageUploadComponent","dictionaryServiceServive","uploadService","currentFile","fileInfos","isImageUploadFormVisible","isShowPhotoUploadUi","photoBn","toggleCameraGlyphCounter","httpEventEmitter","UploadProgress","loaded","total","body","fileBytes","prefixPngToImageData","toKvPhoto","updateDictionary","saveDictionaryToDbDexie","photoBnDictionary","kvPhotoDictionary","emitUploadedKvPhoto","err","upload","file","cancelFileUpload","emitToggleCameraGlyph","HttpClient","HttpRequest","http","formDataEmitter","req","reportProgress","responseType","request","emitHttpEvent","append","emitFormData","factory","providedIn","UploadFilesComponent","imageUploadroutes","ImageUploadRoutingModule","FileUploader","profilePicsService","baseUrl","bgiIndex","bgiTimer","hasBaseDropZoneOver","hasAnotherDropZoneOver","isNewPhotoUploaded","marginTop","options","readFileObservable$","tempStringFiles","imageArrBuffer","Uint8Array","tempFiles","tempFileBlobs","tempFilesString","uploader","removeAfterUpload","autoUpload","description","getProfilePicsService","getIsViewMember","toggleCameraGlyphEmitter","getIsMyProfile","fileOverBase","fileOverAnother","contents","readThisFile","sendUploadedFile","emitIsNewPhotoUploaded","ComponentFactoryResolver","KeyValueModuleComponent","factoryResolver","unloadConponentRef","keyValueAnchor","keyValueFactory","emitDisplayDefaultGlyphiconMenu","KeyValueResult","ProfileContentService","ContentKeyValueArrComponent","profileContentService","kvArrayService","contentKvAnyArr","kvAnyLegend","kvAnyName","kvArrForm","kvArrResult","isProfContentClosedBool","selectedKvAny","selectedKvArrIndex","preferenceKvAnyArr","profileContent","getKvArrayService","profileContentDictionary","get","getProfileContentToKvArrArr","getProfileContent","profileContentKvAnyArrEmitter","onKeyValueChange","kvSelection","emitKeyValueResult","KeyValueComponent","KeyValueAnyComponent","KeyValueAnyArrComponent","KeyValueAnyTemplateComponent","KeyValueArrComponent","ProfileImageKvComponent","ProfilePicsKeyValueArrComponent","PreferenceKeyValueArrComponent","ProfileInfoKeyValueArrComponent","sharedRoutes","KeyValueRoutingModule","SharedRoutingModule","UploadFilesKeyValueArrComponent","SimpleChanges","arrKvAnyArr","arrKvLegend","arrKvName","isImage","images","arrKvForm","arrKvResult","isClosedBool","profileInfo","selectedArrKvAny","selectedArrKvAnyIndex","modelEmitter","getObjectModelToArrKvAny","changes","isImageFound","isImageData","arKeys","from","Object","keys","arValues","findImageForIsImageFound","dataUriPattern","match","displayBase64Image","placeholder","base64Image","createElement","onload","innerHTML","appendChild","src","imagePlaceholder","isArray","model","isModelArray","isImageValue","styles","KvArrayService","kvArrService","selectedKv","setBackgroundImage","isNumber","val","emitterSubjectService","arrkVArr","kVArrLegend","kVArrName","selectedKvArr","arrKv","toNumber","inStr","ConvertStringToNumber","ProfileImage","profileImage","kvAnyResult","selectedKvAnyIndex","timers","setProfileImage","pElem","profileImages","Preference","PreferenceService","preferenceService","isPreferenceClosedBool","preference","getPreferenceData","preferenceKvAnyArrEmitter","preferenceDictionary","getPreferenceFromDictionary","getPreference","memberService","profileInfoService","profileInfoKvAnyArr","isProfInfoClosedBool","getProfileInfoService","profileInfoDictionary","createKVModelArrFromProfileInfoView","getProfileInfoData","profileInfoKvAnyArrEmitter","setIsViewMember","getProfileInfo","isShowAccordionUi","isOpened","isShowPhotoUploadEmitter","isCameraVisibleEmitter","toggleAccordionEmitter","toggleAccordion","SpinnerComponent","modalRoutes","ModalRoutingModule","SpinnerOverlayComponent","UpgradePopupComponent","SpinnerOverlayService","spinnerLoader","showSpinner","getSpinnerLoading","getLoading","setSpinnerLoading","setLoading","formatAndStyleMessage","stopSpinner","RedirectionService","DisplayProfileService","AbstractPagerVPhotoNavService","GlyphiconMenuService","PagerPhotoMgmtService","PagerSupportService","PhotoPrivacyService","PhotoBnService","MyPagerVPhotoNavService","displayProfileService","photoPrivacyService","currentKvPhoto","isKvData","isKvFile","isKvNext","isKvPrev","isKvUrlData","isStripUrl","isWithoutUrl","kvMemActGlyphArrForViewMember","pagerVMemberActivityForPhotoMgmt","pagerVMemberActivityForViewMember","signedInUserKvPhotoArr","signedInUserPagerVKvPhotoNav","getSignedInUserKvPhotoArr","getSignedInUserPagerVKvPhotoNav","getMyPhotoBnsFromServer","pagedItems","getPhotoBnsFromServer","situserId","tpKvPhotoArr","getAllPhotosOfUserBySitUserIdObservable","unFilteredKvPhotoArr","executeKvPhotoNavTasks","data2","clearPagerVKvPhotoNavService","executeOnCurrentPictureSelection","currentKvP","getKvPhotoUrl","getKvPhotoWithoutUrl","normalizeImageDataWithRegExp","setPagerVerticalPhotoNav","isInPagedItems","isFound","getIsKvFileWithUrl","getIsKvFileWithoutUrl","getIsKvDataWithUrl","getIsKvDataWithoutUrl","isNextOrLastPage","endPage","nextPage","startPage","isPreviousOrFirstPage","previousPage","getPagerVKvPhotoNavOnInit","currentPageNum","isPrivate","isUnlocked","getPageSize","getPagerForVKvPhotoNav","updatePagerVPhotoNav","currentItem","photoId","executePagerVKvPhotoNavCurrentKvPhotoTasks","setPagerPhotoMgmt","getPagerVKvPhotoNavOnInitOld","kvpArr","pSize","setMcLoader","setPhotoNavItem","Item","selectedKvPhoto","isSelected","setKvPhotoBackgroundImage","executePagerVKvPhotoNavSystem","determinePrivacyStatusOfKvPhoto","emitOnKvPhotoSelectionChange","selectCurrentElemDeselctOthersForKvPhoto","turnOffCurrentPrimaryStatusOfRespectiveKvPhoto","toLocaleLowerCase","KvMemberActivityGlyph","AGlyphiconComponent","kvGlyph","setGlyphAction","kvg","emitKvMemberActivityGlyph","PagerButtonComponent","PagerChatHistoryComponent","PagerVerticalGlyphForViewMemberComponent","PagerVerticalGlyphForPhotoMgmtComponent","PagerVPhotoNavComponent","pagerRoutes","PagerRoutingModule","PagerService","PagerServiceChatHistory","changeDetectStr","isAll","isFirst","isLast","isPageButton","page","setPagerBttn","currentPageEmitter","setPager","profileImagesEmitter","pagedKvPhotoArr","profilePicsDictionary","setPage","emitSetPage","setIsAll","setIsPageButton","setIsFirst","setIsLast","setButtons","elemId","tImage","bttnElem","PagerChat","CommunicationServiceService","page_r1","communicationServiceService","chatService","pagerServiceChatHistory","chats","currentMod","currentPageNo","isActive","modNum","modPages","pagerChat","pagedChats","pageCount","totalPageNoArr","getChatService","getPagerServiceChatHistory","setPagerChatDynamic","toggleSelected","conversationEmitter","createTotalPageNoArr","tPageN","tPageNArr","anyElemId","anyElem","slectedElemId","selectedElem","totalPageNo","classList","removeClass","addClass","pageNum","emitPagerChat","KvAction","DisplayProfileServiceService","abstractPagerVPhotoNavService","displayProfileServiceService","myPagerVPhotoNavService","currentItemNum","kvAction","getMemberService","getDisplayProfileService","setSitUserModel","setDomUtilsElementRef","getSelectedProfileTile","executeProfileTileKvPhotoAndGlyphMenuTasks","emitTotalPhotoCount","populateDictionaries","unFilteredKvPhotoDictionary","data1","allImageTypesDataPattern3","normalizeImageData","allImageTypesFilePattern","normalizeImageFileNameWithoutUrl","displayUserPicsFromServer","getIsUnlocked","pagerEmitter","tResult","prefixUrlToKvPhotoArrForDisplay","executeProfileImagesTasks","displayPhotoMgmtGlyphMenuForKvPhoto","setupKvPhotoIfPrimaryOrPrivate","displayBackgroundAndNavImageForKvPhoto","getCurrentKvPhoto","getCurrentPage","setupPagerVKvPhotoNav","executePagerVKvPhotoNavTasks","prepareKvPhotoArrForDisplay","clearPagerPhotoNavDataEmitter","isSignedInUserPagesBackToBack","displayPagerVKvPhotoNavEmitter","isCurrentUrlAProfilePage","selectedProfileTileEmitter","copyFromProfileTileToKvPhoto","updateBackgroundImageOutsideAngular","updateBackgroundImageOutsideAngularById","clearPagerVKvPhotoNavData","setPageAndGetCurrentPageNum","tPagerVKvPhotoNav","getBasicPagerDynamic","setPhotoNavItemBase","rotateArrowGlyphOfIdPrefix","idPrefix","rotateArrowGlyphiconOfIdPrefix","Photo","MemberActivity","accrdTitle","currentPageGlyph","currentPhoto","isCurrentlyLocked","isGlypActionCamera","memberActivity","opened","setPagerWithKvGlyphs","selectCurrentElemDeselctOthersForKvMAGlyph","pagedKvGlyphItems","currentKvGlyphItem","clearGlyphiconMenuEmitter","displayPhotoMgmtGlyphiconMenuEmitter","executeGlyphMenuArr","itemNum","modValue","displaySignInUserPrimaryKvPhotoGlyphs","currentMemActGlyphForPhotoMgmtEmitter","createPhotoMgmtGlyphMenuArrFromKvPhoto","copyFromKvPhotoToKvGlyph","getPagerVMemActGlyphMenuForPhotoMgmt","addPrimaryOrOtherClassToKvPhotoElement","isCurrentlyLockedGlyphMsg","executeClearGlyphAction","setGlyphs","stateName","tPath","compName","tPhotoBn","sendPhotoMgmtAction","ArraySupportServiceStatic","CommunicationActivity","commActivity","displayMenuCount","doeeSitUser","doerSitUser","isCurrentlyBlocked","isCurrentlyUnlocked","actedGlyphNames","getUniqueKvGlyphArrForViewMember","executeViewMemberGlyphiconMenuTasks","createMemberViewGlyphiconArray","actedUnlockAndBlockGlyphNames","makeArrayOfUniqElements","getIndexOfStringInArray","actedUnlockAndBlockGlyphNamesEmitter","currentMemActGlyphForViewMemberEmitter","displayViewMemberGlyphMenu","kvMemberActivityGlyphEmitter","sitUserEmitter","emitDisplayViewMemberGlyphiconMenuForSitUser","displayViewMemberGlyphiconMenuForSitUserEmitter","determineResultOfGlyphAction","mAct","receiverSITUserId","senderSITUserId","senderSitUserId","receiverSitUserId","getIndexOfKvGlyphInArray","removedGlyph","emitActedGlyph","isFriend","isLiked","isStarred","isWinked","kvAnyArr","rotateArrowGlyphicons","isKvGlyphFoundInArr","getPagerVForDefaultPage","setChatAction","tpTile","setEmailAction","setUnlockAction","getTicks","sendMemberLockingActivity","setBlockAction","sendMemberActivity","mActArr","actionName","copyFromKvGlyphToCommunicationActivity","receiverSitUserKey","sitUserKey","senderSitUserKey","Location","PreferenceComponent","checkArr","checkboxNames","hobbyCheckboxResult","hobbyCheckboxLegend","hobbyArr","hobbiesGroup","intoCheckboxResult","intoCheckboxLegend","intoArr","isSubmitBttnFocus","lookingForArr","lookingForCheckboxLegend","lookingForCheckboxResult","meetingLocationArr","meetingLocationCheckboxLegend","meetingLocationCheckboxResult","paramId","petArr","petCheckboxLegend","petCheckboxResult","petPeevArr","petPeevCheckboxLegend","petPeevCheckboxResult","relationshipPreferenceArr","relationshipPreferenceCheckboxLegend","relationshipPreferenceCheckboxResult","selectedIntosArr","selectedIntosString","selectedHobbiesArr","selectedHobbiesString","selectedLookingForsArr","selectedLookingForsString","selectedMeetingLocationsArr","selectedMeetingLocationsString","selectedPetsArr","selectedPetsString","selectedPetPeevsArr","selectedPetPeevsString","selectedRelationshipPreferencesArr","selectedRelationshipPreferencesString","selectedWhenLookingToMeetsArr","selectedWhenLookingToMeetsString","whenLookingToMeetArr","whenLookingToMeetsStr","whenLookingToMeetCheckboxLegend","whenLookingToMeetCheckboxResult","preferenceForm","getPreferenceForEdit","hobbArr","emitResetDbgi","isEditProfileEmitter","checkboxResultEmitter","tempResult","checkFormValidity","scrollToLocation","redirectionBeforeSubmit","resetPageTitle","isTrue","selectedArr","deserializeSelectedStr","selectedStr","selections","getIsEditProfile","isProfileComplete","redirectionAfterSubmit","saltModel","bn","hobbies","intos","lookingFors","meetingLocations","pets","petPeeves","relationshipPreferences","whenLookingToMeets","onMouseOut","onSubmitBttnMouseOut","setUserPageTitle","showInvalidFormMessage","submitPreferenceForm","tPreference","serializeSelections","toggleSelection","checkbocName","ProfileComponent","ProfileContentComponent","profileRoutes","ProfileRoutingModule","profileContentForm","getProfileContentForEdit","profileId","submitProfileContentForm","tProfileContent","contentId","isPreScreenComplete","Profile","ArrayServiceStatic","counter","highestEducationArr","highestEducationRadioLegend","highestEducationRadioboxResult","intervalMsgBanners","isViewRendered","isProfileFormValid","isProfileInfo","msgAnimCount","playSafeArr","playSafeRadioboxResult","positionArr","positionRadioboxResult","profile","radioboxNames","religionArr","religionRadioboxResult","relationshipStatusArr","relationshipStatusRadioboxResult","smokingStatusArr","smokingStatusRadioboxResult","selectedHiEduIndex","selectedPlaySafeIndex","selectedPositionIndex","selectedReligionIndex","selectedRelStatusIndex","selectedSmkStatusIndex","profileForm","getProfileForEdit","radioboxResultEmitter","highestEducation","playSafe","religion","relationshipStatus","smokingStatus","tProfile","getIndexOfItemInArr","submitProfileForm","tempBn","emitMessage","animateAgain","animateMessageBanner","intervalMsgBanner","AccordionGroupComponent","toggleFaderAnimEmitter","toggle","toggleFaderAnim","emitToggleFaderAnim","outputs","ngContentSelectors","QueryList","AccordionComponent","titleIn","titleOut","groups","ngAfterContentInit","t","openGroup","contentQueries","SharedModuleComponent","sharedAnchor","loadChildrenEmitter","loadSharedComponent","loadSharedComponentEmitter","isActiveComponentIdFound","compId","getMcLoaderComponentId","mcLoaderComponentId","mcComId","resolveComponentFactory","mcComponentElem","createComponent","Dexie","ConstantServiceStatic","AppDB","dbName","version","stores","buddyObjectStore","chatActivityObjectStore","chatConversationObjectStore","chatConversationIdObjectStore","emailTileObjectStore","errorLogObjectStore","heartbeatObjectStore","loginSuccessObjectStore","myChatObjectStore","myChatIdObjectStore","myEmailObjectStore","myAllEnoteObjectStore","myMemberActivityObjectStore","myMemberLockingActivityObjectStore","myMemberTrackingActivityObjectStore","myNotificationObjectStore","photoBnIdObjectStore","preferenceObjectStore","profileContentObjectStore","profileInfoObjectStore","profilePicsObjectStore","profileTileObjectStore","sitUserObjectStore","sitUserIdObjectStore","yourAllEnoteObjectStore","db","enableProdMode","getBaseUrl","getElementsByTagName","providers","useFactory","__NgCli_bootstrap_1","bootstrapModule","catch","Login","LogRegModel","isAllowed","isEmailValid","isPasswordValid","jsDateForCs","backupPassword","emojis","middleName","cryptUserKey","gender","hasJoinedSignalR","isLogout","membership","myLikedArr","premiumExpiryDate","primaryImageUrl","sexuality","that","Number","fullName","isPremiumMembership","passwordHash","upgradeExpDate","userName","copy","copyIfExists","copyTo","boxStr","endMarker","nonceStr","DexieBne","modelName","copyFromKvAny","currentBrdCrmPage","lastPage","pagedEndIndex","pagedEndPage","nextBrdCrmPage","pagedBrdCrmArr","pagedPages","previousBrdCrmPage","firstPage","pagedStartPage","pagedStartIndex","totalItems","totalPagedBlocks","Communicator","Chat","baseFileName","chatActivityId","chatMessageId","communicationActivityId","communicationMessageId","communicationType","commTypeEnum","contentType","dateFormatted","fileNames","fileBytesArr","fileImageString","fileImageArrBox","fileImageArrNonce","fileImageStringArr","fromUser","groupId","groupName","groupKey","isAdministrative","isReceiver","isSender","messageBody","messageBodyShort","receiver","receiverCryptUserKey","receiverAction","receiverEmail","receiverPic","receiverModelString","receiverProfileName","receiverSITUserKey","receiverSitUserKeyBackup","repliedToId","sender","senderCryptUserKey","senderAction","senderEmail","senderPic","senderModelString","senderProfileName","senderSITUserKey","senderSitUserKeyBackup","sentPic","subject","subjectShort","timeLapsed","timeLapsedPlaceholder","toUser","harmonize","chat","copy2CommunicationActivity","commAct","ChatMessage","ChatActivity","note","replyToId","chatMessage","Copy","destination","source","CopyFromChat","ChatConversationModel","chatConversationModelId","chatActivities","chatMessages","filesToStringArr","isEncrypted","oldMessageBody","copyFromChat","cMsg","copyFromChatActivity","ActionId","aptUnit","addressKey","billingAddressId","businessCardId","cartId","isBilling","isSameAsBilling","outsideVendorCardId","shippingAddressId","streetNum","streetName","featureGroup","featureName","maxPrimaryCount","maxValuedCount","ClientApiModel","sitUserIdArr","ClientData","profileTiles","aBstract","authorSitUserId","fileType","isCode","paragraphNo","Counters","callDictionary","callIndexedDb","callServer","DateAssay","millss","ss","mm","hh","dd","months","yyyy","jsTicks","jsTicksNum","csTicks","csTicksNum","UTCoffset","hasDST","UTCoffsetT","isBool","csTicks2JsDateFormatted","csTicks2JsDate","pickedDateEvent","EmitOffOnResult","offOnName","offOnDistance","offOnStatusEnum","selectedOffOnIndex","offOnStatusColorTimer","offOnStatusColor","away","link","pTileElemId","unit","Filter","isTruthyPicked","property","Sorter","isDescending","distance","distanceStr","heartbeatTime","neighborhood","regionCode","prevHeartbeat","typeCheck","destHb","Function","Symbol","startTime","getTimeDiff","dAssay","dateInYYYYMMDDhhmmss","getTimeoutInterval","eTime","sTime","setTimeoutInterval","parent","isModalVisible","paramMap","approval","File","imageBytes","imageString","sourceId","sourceType","cloneTo","cloneIfExists","_","require","enctype","copy2","toCamelCase","Action","Approval","Box","ContentType","CryptUserKey","Description","Distance","Enctype","Files","FileBytes","Id","Image","ImageBytes","ImageString","IsUnlocked","IsPrimary","ItemNum","Latitude","Longitude","Nonce","Path","PhotoId","PhotoBnId","Privacy","ProfileId","SignedInUserId","SitUserId","SitUserKey","SourceType","SourceId","Title","Url","cloneToCamelCasedKvPhoto","cloneToKvPhoto","cloneToPhoto","PhotoOmniModel","photo","timeoutInterval","computeCount","sourceUnit","destinationUnit","centerX","centerY","BoxEmailBn","communicationId","isInbox","boxType","ChatConnectionInfo","cancellationToken","channel","connectionId","Communication","beginIndex","communicationActivityIds","isFreshDataRequested","fileName","CommunicationMessage","actionLabel","boxName","chatMsg","communicationMessage","communicationSubType","dateStr","expiryDate","isBlocked","isBuddied","isTracked","isNew","isPremiumMember","lockingActivityId","memberActivityTs","newMessageTotal","notificationActivityId","receiverCryptUserId","receiverPrimaryPhotoBnId","pElemId","senderCryptUserId","senderPrimaryPhotoBnId","trackingActivityId","copy2Chat","copy2MemberActivity","cAct","doeeSitUserKey","doeeSitUserId","doerSitUserId","doerSitUserKey","parseCommunicationActivity","inCommAct","patternO","patternC","patternQ","kvParts","messageId","communicatorType","ENoteTile","awayId","countryCode","isImageRendered","isTileSetupComplete","replyId","EnoteBox","allPremiumEnotes","inboxPremiumEnotes","savedPremiumEnotes","sentPremiumEnotes","trashedPremiumEnotes","allPremiumEnoteTotal","inboxPremiumEnoteTotal","savedPremiumEnoteTotal","sentPremiumEnoteTotal","trashedPremiumEnoteTotal","MailBox","enoteBox","myEmails","myInboxEmails","mySavedEmails","mySentEmails","myTrashedEmails","myAllEnotes","myBuddyEnotes","myDeletedEnotes","myFriendEnotes","myLikeEnotes","myStarEnotes","myTrackEnotes","myUnlockEnotes","myWinkEnotes","inboxTotal","inboxNewTotal","sentTotal","sentNewTotal","savedTotal","savedNewTotal","deletedNewTotal","allTotal","buddyTotal","deletedTotal","friendTotal","likeTotal","starTotal","trackTotal","unlockTotal","winkTotal","allNewTotal","newBuddyTotal","newDeletedTotal","newFriendTotal","newLikeTotal","newStarTotal","newTrackTotal","newUnlockTotal","newWinkTotal","SenderReceiverEmails","isSendFile","NaclPairLocal","saltId","ktype","ClientHttpDataModel","commActIds","RemoteDataModel","headerType","methodName","isForComponent","isMethodCalled","timestamp","ProfileTileArrEmitterModel","Group","displayDate","groupCryptKey","KV","expDate","memberActivityId","KvAny","KvAnyArr","KVKV","KvKvAnyArr","glyphIndex","isVisible","copyFromKvPhoto","d","isUploaded","isPublic","isPrimaryGlyph","setupPicImageAndValueOfKvPhoto","isImageEmpty","isPicEmpty","isValueEmpty","stripUrlForImageData","tImage2","pattern1","pattern2","copyToPhotoBn","MemberActivitiesAndAction","doeeCryptUserKey","doerCryptUserKey","memberLockingActivityId","memberTrackWinkActivityId","jsDateToCsDate","toLocaleTimeString","inDate","day","month","year","hour","getHours","minute","getMinutes","second","getSeconds","ampm","time","MemberViewMgmtModel","profileContentKvAnyArr","profileContentName","populateModelData","inSitUser","emitMemberViewMgmtModel","ImageCounter","avatarC","defaultC","imageC","awayArr","awayMap","awayRadioId","awayTime","isStatusUpdated","offOnLegend","offOnArr","offOnId","offOnElem","lastUpdatedOn","sourceOffOn","isReadyForUpdate","isReady","BasicPagerModel","BasicPagerKvGlyphModel","firstItem","lastItem","endIKvGlyphtem","nextKvGlyphItem","previousKvGlyphItem","startKvGlyphItem","copyToPagerPhotoMgmt","ppMgmt","totalPages","firstItemNo","startItemNo","lastItemNo","endItemNo","currentItemNo","endItem","nextItemNo","nextItem","previousItemNo","previousItem","startItem","nextPageNo","previousPageNo","startPageNo","endPageNo","startIndex","endIndex","pagedGlyphArr","blockStartPageNo","blockEndPageNo","blockStartIndex","blockEndIndex","firstPageNo","kvGlyphsArr","lastPageNo","preferenceId","hobby","into","lookingFor","meetingLocation","pet","petPeeve","petpeeveArr","relationshipPreference","whenLookingToMeet","doesModelHaveData","abstract","memberId","imageFile","imageFromBytes","compareNumbers","b","cutUncut","dickSize","eyes","ethnicity","hair","heightStr","isServer","pagedProfilePics","SITUserId","SITUserKey","weight","weightStr","Dictionary","filteredKvPhotoDictionary","filteredKvPhotoArr","unFilteredKvPhotoMap","profileImageDictionary","profilePhotoDictionary","isPhotoUploadSuccessful","primaryKvPhoto","profilePhotoBnArr","profileImageArr","profileImageBnArr","profileGlyphArr","profileKvPhotoArr","unsalted","sort","isModelKvPhotoArraysEmpty","pPics","isKvPhotoDictionariesEmpty","getIndexOfProfileImageInArr","pImage","getIndexOfProfileImageBnInArr","updateProfileImageBnInArr","updateProfileImageInArr","setKvPhoto","dictionaryName","kvpd","getKvPhoto","bodyhair","built","cutuncut","dicksize","isIndexDbTile","imageWithoutUrl","pTileElement","sourceTile","destinationTile","copySourceIfExistsToDestination","copyToProfileInfo","tPic","copyFromPerson","p","bodyHair","doB","copyFromProfile","UpgradedTile","expDateStr","promoCode","sitUserKeyBackup","PayPalBreakdown","AmountModel","breakdown","currency_code","hst","subscriptionMonths","subtotal","outString","CreditCard","creditCardNumber","creditCardTransactionData","cvv2Number","expiryMonth","expiryYY","nameOnCard","paymentOption","ip","Name","given_name","surname","captureNameData","getFullName","PayPalAddress","address_line_1","address_line_2","admin_area_1","admin_area_2","country_code","postal_code","PayPalAddressId","PayPalOrderId","toStringCsv","payPalAddressString","PayPalItem_Total","item_total","PayPalSellerProtection","PayPalCapture","amount_currency_code","amount_value","create_time","final_capture","update_time","orderID","payPalSellerProtection","payPalCaptureString","PayPalCreditCardAddress","billingAddress","outputStr","PayPalItems","payerID","itemsToString","itemsStr","PayPalPayer","PayPalPayment","PayPalPurchaseUnits","Upgrade","PayPalShipping","PayPalPayee","PayPalOrder","authorizedData","billingToken","facilitatorAccessToken","intent","isOnApprovedComplete","isOnClientAuthorizationComplete","onApproved","onApprovedDetails","onCanceled","onClientAuthorization","onError","orderNo","payPalCreditCardAddress","paypalAddress","paypalCapture","paypalCreditCard","paypalItems","paypalPayee","paypalPayer","paypalPayment","paypalPurchaseUnits","paypalSellerProtection","paypalShipping","paymentOptionAmount","personKey","subscriptionMonthsNum","tax","taxId","totalStr","upgrade","getSubscriptionMonthsNum","copyFrom","getSubscriptionMonths","setSitUserKeyAndId","payPalPayerToString","paypalPayerStr","email_address","merchant_id","payer_id","reference_id","payPalCapture","amount","payee","shipping","dispute_Categories","disputeCategoriesStr","getDisputeCategoriesStr","captureName","getFulName","UpgradeCost","createTime","fromStr","membershipExpMonthName","till","tillStr","upgradeId","upgradeCost","selectedOption","SitUserService","xah_range","max","step","floor","fill","x","actedKvGlyphArr","allGlyphNameArr","allGlyphKvArr","currentItemKvGlyph","defaultViewMemberGlyphNameArr","defaultGlyphKvArr","glyphsForPhotoMgmt","glyphsForViewMember","glyphNames","imageArr","isBuddy","isFriendByDictionaryData","isToggleCamera","lastItemKvGlyph","memberViewGlyphNamesHolder","memberViewGlyphNames","memberViewMenuNames","nextItemKvGlyph","pagedKvGlyphArr","pagerVMemActGlyph","previousItemKvGlyph","photoMgmtMenuNames","photoMgmtGlyphNames","userMemberViewGlyphNames","clearGlyphMenu","clearPhotoMgmtGlyphMenu","clearViewMemberGlyphMenu","cases","glyphKvArr","gKvAny","createGlyphMenu","names","getGlyphs","getGlyphsForPhotoMgmt","setGlyphsForPhotoMgmt","getGlyphsForViewMember","setGlyphsForViewMember","getImageArr","setAllGlyphKvArr","kvArr","getMemberViewGlyphNames","emitActedGlyphNames","emitActedUnlockAndBlockGlyphNames","createGlyphiconArrayFromNames","setDefaultGlyphiconArray","dKvArr","createPhotoMgmtGlyphMenuArrFromKvGlyph","kvG","outKvGArr","clearViewMemberGlyphNames","clearPhotoMgmtGlyphNames","createDefaultPhotoMgmtGlyphNames","isGlyphInMenuArr","kvP","setCurrentKvPhoto","emitDisplayPhotoMgmtGlyphiconMenu","getPhotoMgmtGlyphMenuOfKvPhotoAndHighlightPrimaryPhoto","emitDisplayViewMemberGlyphiconMenu","findActedGlyph","getPagerVMemActGlyphMenuForViewMember","pkvPhoto","outGlyphs","outGlyph","getViewMemberGlyphMenuOfKvPhotoAndHighlightPhoto","pkvP","getPrimaryImageGlyphMenuArrAndHighlightPrimaryImage","glyphArr","isGlyphInKvArr","glyph","setKvGlyphiconArray","ceil","getPagerOfAnySizeUpto10","setupPagerMemberActivity","midCeilingOfPageSize","midFloorOfPageSize","GetPager","range","GetPagerOfSize10","GetPagerOfSize5","delta","stepCount","rotateThisGlyphicon","rotateGlyphiconForId","navPageArr","pageId","doesElementHasThisClass","setPagerPic","pics","setStyleProperties","properties","k","documentElement","setPageOfProfilePics","setPagerImagesByKvImageArr","kvImageArr","GetPagerOriginal","rangeOriginal","setGlyphiconMenuService","gms","HttpService","AppFeatureService","appFeatureDictionary","kvAny","setAppFeatureArr","aFArr","setArrKvAny","emitAppFeatureArr","BreakPointObserverService","UpgradedMemberService","upgradedMemberService","setAppFeatureService","af","setBreakPointObserverService","bps","getBreakPointObserverService","setSWUpdateService","sws","setUpgradedMemberService","up","getUpgradedMemberService","BreakpointObserver","Breakpoints","observer","condition","subscription","breakpointObserving","observe","XSmall","Small","HandsetPortrait","Medium","Large","XLarge","breakpoints","emitIsMobile","getCenterCoordinates","emitHeightWidth","determineHeightWidth","getHeightWidth","clientWidth","clientHeight","emitCenterCoordinates","hw","ApplicationRef","SwUpdate","concat","first","appRef","swUpdates","isEnabled","appIsStable$","isStable","everySixHours$","everySixHoursOnceAppIsStable$","available","confirm","activateUpdate","setIsEnabled","createUpgradedTileShellArr","sitIdArr","uTiles","uTile","createUpgradedTileShell","getBatchOfUpgradedMemberIds","tpTiles","bnComm","processBatchOfUpgradedMemberIdsResult","tBatchOfIds","getUpgradedTile","tUpgradedTile","tempTile","unboxedTile","EncodingService","ImageResizerService","SignedInUserService","encodingService","imageResizerService","setEncodingService","es","getEncodingService","getImageResizerService","setImageResizerService","idl","setRedirectionService","rds","setSignedInUserService","setSitUserService","encode","decode","decodeCustomTags","decodeCustomParagraphTags","decodeCustomPreTags","decodeCustomLtTags","trimCustomParagraphTags","trimCustomPreTags","trimParagraphTags","trimPreTags","imageCounter","createImageFromBase64Str","inb64Str","canvas","toDataURL","createImageFromByteArray","byteArr","myReader","FileReader","tempStringFile","onerror","abort","DOMException","onloadend","fileStr","readAsDataURL","fileToStringArr","formDataToString","valueOf","formDataToFileMap","getBase64Image","img","getContext","drawImage","dataURL","getCanvasImage","imgData","imageObj","getDefaultImageByCode","srce","codeNum","getDefaultUriPromise","getImage","getImageArrayFromArrayOfBytes","imageArrOfBytes","processImageDataFromUrlResult","FileContents","emitImage","getImageDataFromUrlPromise","filePath","canvasImage","resizeImagePromise","getResizedImage","resizeImage","stripUrlFromImageData","setUrlForImageData","prependToImageData","outImage","prependedImageData","base64Str","maxW","maxH","MAX_WIDTH","MAX_HEIGHT","resizeImageInREM","maxWidth","urlToImageData","NavigationStart","distinctUntilChanged","startWith","take","tap","ModuleComponentLoaderServiceStatic","MessageBuilderServiceStatic","boxNonce","urlPathStr","urlSearchStr","stable","_document","initialize","mcLoaderToNavigateEmitter","fireMcLoaderRoute","fireMcLoaderRouteEmitter","setupMcLoaderModel","emitPagerBreadcrum","appStartUrlStringParser","tRoute","urlParamMap","urlparts","paramArr","resetPassword","includes","idParts","paramParts","paramStr","paramStrParts","setResetPasswordCode","emitResetPasswordCode","clearRoutes","createDictionary","createAllSitUserRelatedDictionariesFromDbDexie","determinePathFromLoginSuccess","mcl","isBtb","Pgr","isValidModuleComponentLoader","setNewPath","setPagerBreadcrum","getDocument","navigateByUrl","printMessage","fireMcLoaderforSignedInUser","emitProfilePageSelectorBoolean","hideVerticalMenues3","isMemberViewAndMyPhotosPagesBackToBack","hideVerticalMenues2","isSignedInUserPagesBackToBack1","prevPageComponentName","currentPageComponentName","prevPage","isAProfilePage","redirectToAction","rOuter","getReturnUrl","UrlStr","tReturnUrl","rouTer","rOute","setupRoute","detectNavigationStart","navStartObservable","navStart$","events","emitElementFullyRendered","isElementRendered","zone","isStateStable","runOutsideAngular","hasPendingMacrotasks","stateStable","detectElementRendered2","isStableObservable","stableSub","unstableSub","onStable","assertNotInAngularZone","hasPendingMicrotasks","onUnstable","assertInAngularZone","nullObservable","getSitUserFromDictionaryOrServer","DbDexieToDictionaryService","post","fetchSitUser","situserid","unsaltedSitUser","tsitUser","isSitUserIdCalled","setSitUserIdCalled","getSitUserFromDictionary","getSitUser","getSitUserById","sitUserDictionary","getBatchOfSitUserIds","bIndex","batchOfSitUserIds","sitUserIdDictionary","isSignedInUserProfile","processBatchOfMemberIdsResult","processSitUserResult","tSitUser","reSult","DbDexieService","DictionaryService","ChatService","dbDexieService","chatDictionary","chatMap","chatHistoryBnEntities","conversationIds","chatActivityArr","isInitComplete","myConversations","myConversationsBoxNonceArr","myInfo","myPrimaryImage","slicedChats","timerArr","yourInfo","yourPrimaryImage","clearTimers","attachSentImages","attachSentImage","attachSentImagesOfMessages","catchUnhandledPromises","addEventListener","promise","reason","checkSenderPics","myconvo","determineSenderReceiverOfChat","determineSenderReceiverOfChatActivity","chatA","determineSenderReceiverOfChats","ePromise","getChats","getConversationChatActivitiesObservable","tChatIds","chatActs","ccm","stringBuilder","getZaggedArrayOfCommIdModArray","ids","commIdsModKvArr","aModArr","isAsc","sortedIds","sortByItem","totalDivs","commIdsModKv","getConversationIdsObservable","isBoxUnsalt","chatConversationIdDictionary","isTimerFound","getMyConversations","dbChats","chatAct","convertNetTicsToJsDateString","setMyConversations","emitMyConversations","fetchSlicedConversationObservable","commIds","clientData","processUnsaltedSlicedDataObservable","isBoxNonceEntityFound","chatBneArr","chatBne","isChatFound","chatArr","isChatIdFound","chatIdArr","isChatActFound","chatActArr","isChatActFoundByChatMessageId","isSenderFound","senders","processChatAndYourInfoResult","commActId","tChat1","tChat2","dateAssay","getDateAssayOfCsTicks","processChatMessageBody","processCommunicatorResult","commCator","emitCommunicator","slicedChatArr","commActStrArr","tCommAct","tChat","setupChatSenderReceiverInfoOfChat","setupDateAssayOfChat","chatConversationDictionary","emitConversation","runViewTask","cPageNo","setChats","getPagerChat","reverseArrayOnItself","toLocaleString","convertNetTicsToJsDate","setupDateAssayOfChatActivity","setupDateAssayOfChats","setChatMesssageImage","getCommunicator","setupChatSenderReceiverInfoOfChats","tC","setupSlicedChatConversation","commIdArr","modChats","tChatArr","sChatArr","saveChatConversationDictionaryToDbDexie","sortByDate","sortById","sortByMsgId","commMessageId","sortChatArr","spinnerOff","uniqueAddChat","uniqueAddChatId","uniqueAddChatActivity","uniqueAddChatBoxNonceEntity","unwrapData","boxedData","chatBn","boxArrB64Str","nonceArrB64Str","tBn","updateDexieDbChatHistory","boxedTile","addModelObservable","requestAnimationFrame","fetchChat","commActid","chatId","processChatResult","fetchChatActivity","getChatHistoryArr","setChatHistoryArr","fetchChatMessage","getvalue","getConversation","tChatMessages","getConversationIdsPromise","comActArr","processUnsaltedSlicedData","EmailService","EnoteService","SwBackgroundFetchService","CommunicatorService","SignalRService","communicatorService","emailService","enoteService","swBackgroundFetchService","signalRService","setChatService","cs","setCommunicatorService","cos","getCommunicatorService","setEmailService","getEmailService","setEnoteService","ens","getEnoteService","setSwBackgroundFetchService","swb","getSwBackgroundFetchService","setSignalRService","getSignalRService","MemberService","distUnit","kv","otherCommunicator","rootScopeTs","signedInCommunicator","getCommunicatorWithoutImage","sitUserid","fetchCommunicatorWithGeoLocation","getCommunicatorWithImage","communicator","communiCator","uRl","tCommCator","sendCommunicatorWithoutGeoLocation","copyCommunicatorIfExists","blackListCredentialKvArr","commActivityIds","emailCount","getEmailObservable","mailBox","myCommunicationActivityBns","myCommunicationActivityIds","myEmailDictionary","myStaticEmails","myEmialsMenuKvArr","receiverInfo","senderInfo","fetchBlackListCredentials","getEmailCount","setEmailCount","getBlackListCredentialKvArr","getEmailMessage","cActId","isinbox","cm","getEmail","processEmail","tMailBox","putInMailStorage","getEmailConversation","conversation","partStr","convParts","eMail","processEmailObservable","getMyEmailIdsObservable","myEmailIdDictionary","getMyEmailsObservable","isInBox","em","isEmailTileFound","processEmailResult","tEmail","processEmailResultObservable","getMailBox","getMyEmails","getMyInboxEmails","getMySentEmails","getMySavedEmails","getMyTrashedEmails","setMyEmails","emails","isEmailTaken","eTileArr","eTile","putInMailsStorage","compareSitUserKeys","sortMailBoxByDate","uniqueAddEmailTile","mailArr","copyCommunicationActivityIfExists","createMailStorage","updateEmailReceiverAction","QuicksortService","DictionaryServiceStatic","quickSortService","enote","myEnotes","myEnoteTilesSubscriber","myStaticEnotes","myEnotesMenuKvArr","enoteTileDictionary","myInboxEnotes","mySavedEnotes","mySentEnotes","myTrashedEnotes","myAllEnoteDictionary","createActionGlyphicon","enoteTile","tKvGlyphs","editNotificationSubject","extractMailBox","outMailBox","getMemberActivityNotificationTotal","getNewMemberActivityNotificationTotal","extractPremiumEnoteBox","outEnoteBox","getNewPremiumNotificationTotal","getNewTotal","memberActivityArr","getMyAllEnoteDictionary","getMyNotifications","tEnote","processMyNotificationResults","tEnoteTiles","isEnoteTileFound","isLatestEnoteTileFound","compareDate","populateSubTypeMailBox","allEnotes","prepareEnoteForView","tEnoteTile","ttEnoteTile","processEnoteResult","enoteArr","myNotificationDictionary","processNewNotificationResult","putInPremiumEnoteStorage","putInEnoteStorageByCommunicationSubType","allNoteArrAndTypeNoteArr","removeEarlierOrDuplicate","allArr","sortEnoteBoxByDate","uniqueAddEnoteTileInArrays","aIndex","uniqueAddEnoteTile","updateNotificationDictionaries","uniquelyMergeKeepingLatestInCommunicationActivityArrays","destArr","srcArr","aDate","bDate","uniqueAddNotificationTile","updateNotificationReceiverAction","eNote","prepareEnotesForView","enotes","senderCount","eNotes","commcator","getEnote","getEnoteIds","getMyEnoteTiles","totalEnotes","getMyNotificationsOld","getObservable","signalR","chatConnectionInfo","newMessage","chatData","delay","eventSource","groupChatData","connectAndJoin","HubConnectionBuilder","withUrl","withCredentials","skipNegotiation","transport","HttpTransportType","WebSockets","configureLogging","LogLevel","Information","build","start","invoke","reconnect","messageListeners","result1","arguments","emitChatMessage","result2","result3","emitNotificationActivity","sendMessage","messageBne","HubConnectionState","sendNotification","ProfileTileService","rdm","sendJobToBackgroundSw","serviceWorker","ready","reg","postMessage","_rdm","emitBackgroundProcessMethodDataForComponent","emitBackgroundProcessMethodDataForService","ConnectionService","CheckConnectionService","connectionService","isconnected","isOffline","monitor","isConnected","toPromise","HeartbeatService","LiaisonService","OffOnService","TimerService","liaisonService","setCheckConnectionService","ccs","setHeartbeatService","hbs","ms","setKvArrayService","as","setLiaisonService","lr","getLiaisonService","setLogRegService","setTimerService","ts","setOffOnService","os","clientApiModel","copyFromHeartbeatResult","City","Country","Gender","HeartbeatTime","Neighborhood","RegionCode","SignOnTime","computeDistanceAndUnit","toFixed","defaultDistanceUnit","tDistUnit","getDistanceFromHeartBeatDictionary","heartbeatDictionary","getHeartbeat","getHeartbeatFromDictionaryOrServer","cName","getHeartbeatObservable","callername","emitHeartbeat","getBatchOfHeartbeatObservable","sitIds","clrName","sitUserIds","heartBeatMap","hbeats","sitUsr","srcLatitude","srcLongitude","destLatitude","destLongitude","processDistanceUnit","returnHeartbeat","resetHeartbeat","setHeartbeat","setupSitUserHeartbeat","tHeartbeat","sendHeartbeat","toTimeString","processHeartbeatResult","toRad","deg","PI","numToRad","numRad","neg","abs","destinationLatitude","destinationLongitude","originLatitude","originLongitude","isKm","destLat","destLon","oLat","oLon","R","M","dLat","dLon","a1a","sin","a1","a2a","a2b","a2","a3a","a3","atan2","sqrt","distanceK","distanceM","computeDistanceFromStringInputs","signInHeartbeat","isOnlineFromHeartbeat","isOnlineFromDateTimeTicks","HttpHeaders","HttpParams","httpClient","respJSON","respArrayBuffer","respBlob","respText","respImage","respCSS","contJSON","contArrayBuffer","contBlob","contText","contCSS","contImage","hdrJSON","hdrArrayBuffer","hdrBlob","hdrText","hdrCSS","hdrImage","hdrHttpHeaders","hdrKvHeaders","header","hdrStrHeaders","hdrArrHeaders","httpParams","kvParams","param","strParams","arrParams","globalVars","headers","isDevelopmentEnvironment","naclPairClient","reqOpts","transformRequest","getEnumsFromServer","talaChabi","chabi","chabiGopon","emitResetSaltShaker","getKeysEmitter","getSaltyPair","getResponseTypeJson","getResponseTypeArrayBuffer","getResponseTypeBlob","getResponseTypeText","getResponseTypeCSS","getResponseTypeImage","getContentTypeJson","getContentTypeArrayBuffer","getContentTypeBlob","getContentTypeText","getContentTypeCSS","getContentTypeImage","getHeadersTypeHttp","getHeadersTypeKvHeader","getHeadersTypeString","getHeadersTypeArray","getParamsTypeHttp","getParamsTypeKvHeader","getParamsTypeString","getParamsTypeArray","setSaltShaker","localSaltyPair","setHeaderType","hType","getContentType","cType","getResponseType","getParamsType","createHeaders","rType","parms","resType","httpOptions","Authorization","getPromise","normalizeApiUrl","oldUrl","normalizeApi","isAbsolute","prefixUrlWithApi","stripSlakez","isJsonFile","isJson","trimFileExtensionFromUrl","lastIndex","ext","urlWithoutFileExt","https2http","http2https","conType","Accept","getPromiseAsync","response","postAsync","postAsync1","CacheControl","postReqObservable","postAsync2","postPromise","postPromiseAsync","sendFile","setEnums","getSandBoxFromServer","fileChunk","prototype","newSlice","mozSlice","webkitSlice","startingByte","httpPromise","method","XMLHttpRequest","open","statusText","send","getCssVariables","sheet","styleSheets","declaration","cssRules","allVar","cssText","getCssRootVariables","cssVars","matches","splitprop","setTheme","theme","prop","color","getGlobalVars","whenScrollEnds","threshold","scrollHeight","scrollTop","emitWhenScrollEnds","jsTypes","arrayToCsvString","inArr","csvStr","getArrayFromCommaSeparatedData","tArray","createArrayFromMap","inmap","createMapFromArray","mp","profilePicsToKvArr","getContentToKvArr","kV","getPeferenceToArrKvAny","getObjectModelToKv","objectModelToArrKv","objectModelToArrKvAny","getObjectModelToKvKv","kVkV","getObjectModelToArrKvKv","arrkVkV","getObjectModelToArrKv","arrkV","arrayKeys","arrayValues","getProfileImageToArrKvAny","getObjectModelToKvAny","arrKeys","arrValues","getObjectModelToKvKvAnyArr","kvKvAnyArr","getObjectModelToKvAnyArr","getObjectModelToArrKvKvAnyArr","arrKvKvAnyArr","tKeys","tValues","modelType","getObjectModelToArrKvAnyRecursively","parentId","isModelTypeArray","getProfilePicsToArrKvAny","profilePicArrKvAny","vType","getProfileInfoToKvArrArr","setPhotoToKvModel","sortArrKvAnyForView","inArrKvAny","outArrKvAny","placeId","heightUnit","memberViewMgmtModel","weightUnit","pInfoView","tArrKvAny","emitModel","processProfileInfoForHeartbeat","tProfileInfoView","processDistanceUnitForProfileInfoView","BehaviorSubject","container","emojiMap","isEmailValid$","isFormValid$","initEmail","initPassword","isPasswordValid$","isBlkPasswordValid$","isBlkPasswordValid","timedOut","logRegModel","scrollY","scrollY$","asObservable","fromCodePoint","_checkValidity","tModel","_isEmailValid","_isPasswordValid","emitLogRegModel","countCharInString","charRegExp","strToSearch","createRegExpFromString","regexp","isAllowedBlackListCredential","allowedPassword","_isBackupPasswordValid","testEmailByRegExp","_isLoginFormValid","modelL","modelP","deepClone","tMask","readElementRef","emailElem","passwordElem","readElementOutsideAngular","getElementOutsideAngular","testEmailRegExpResult","testPasswordByRegExp","testPasswordRegExpResult","inDob","offOnMap","heartbeatMap","hbDateAssay","copyFromOffOnStatusResult","checkOffOnStatusWithoutApi","isUserOnLine","getMinutesSinceHeartbeat","isTimeInCsTicks","unixEpochTicks","convertCsTimeToJsTicks","hbTimeInJsTicks","convertNetTicsToJsDateTicks","getHeartBeatTimeDifferenceInMinutes","hbdiff","hbDiffMinutes","hbDiffSeconds","getOffOnStatusEnumOfMinutes","minutes","computeAwayTimeFromHeartbeat","hbDiff","getOffOnStatusEnum","getAwayStatusValueAndColor","drawOffOnRadioColor","border","HTMLElement","drawOffOnAwayColor","textShadow","drawOffOnRadioAwayColor","getOffOnElement","setOffOnAwayMap","milliSecs","offlineTimeBeginsAt","awayTimeBeginsAt","isHeartbeatStale","diffTicks","diffInMinutes","getHeartbeatForOnlineStatus","sitUerId","delete","copyHeartbeatIfExists","getHeartbeatMap","setHeartbeatMap","hbMap","getOffOnMap","setOffOnMap","updateOffOnMap","offOnAway","setOffOnStatusEnumAndAwayAndStatusColor","setupOffOnElement","tElem","getHtmlElementByClass","setupOffOnElements","awayElem","radioElem","setupOffOnElementFromEmitterService","childelem","ModalServiceService","modalServiceService","messageTimer","getIndexInArr","getIndexInTimerMap","emitClearMessage","clearTimerService","BinarySearchService","binarySearchService","_db","oldVersion","dexieTableObjectStore","dTable","objectStores","objectStoreNameArr","versionCounter","countObjectStoreItems","getTableByEntityName","doesStoreHaveData","table","entityTable","tables","isFoundInStore","namedObjectStore","comparator","isObjectStoreNameFoundInArr","isObjectStoreNameFoundInTables","getTable","schema","updateObjectStoreData","put","getStoreData","tableName","tkey","dictionarySubscription","sitUserIdDictionaryFromDexieDbCounter","modelArr","photoBnEmitter","pBn","indexDbSaveSuccessfulEmitter","createAllChatDictionariesFromDbDexie","createAllDictionariesFromDbDexie","createAllEmailDictionariesFromDbDexie","createAllEnoteDictionariesFromDbDexie","createAllProfileRelatedDictionariesFromDbDexie","createAllMemberActivityDictionariesFromDbDexie","createEmailTileDictionaryFromDbDexie","createMyEmailIdDictionaryFromDbDexie","createMyEmailDictionaryFromDbDexie","createEnoteTileDictionaryFromDbDexie","createMyNotificationDictionaryFromDbDexie","createMyNotificationIdDictionaryFromDbDexie","createLoginSuccessDictionaryFromIndexedDb","createMemberActivityDictionariesFromDbDexie","createMemberLockingActivityDictionariesFromDbDexie","createMemberStarTrackWinkActivityDictionariesFromDbDexie","createPreferenceDictionaryFromDbDexie","createProfileContentDictionaryFromDbDexie","createProfileInfoDictionaryFromDbDexie","createProfileTileDictionaryFromDbDexie","createProfilePicsDictionaryFromDbDexie","createKvPhotoDictionaryFromDbDexie","createSitUserDictionaryFromDbDexie","createSitUserIdDictionaryFromDbDexie","equalDivisionAlgorithm","lArr","rArr","mid","getDictionary","tEntityName","dictionaryData","dictionary","bne","angArrBufferToB64","chatHistoryDictionary","bneStr","strTobase64","saveKvPhotoDictionaryToDbDexie","saveProfileTileDictionaryToDbDexie","profileTileDictionary","dictionaryLength","mod","leftHalfLength","createChatConversationIdDictionaryFromDbDexie","createChatConversationDictionaryFromDbDexie","createMyChatIdDictionaryFromDbDexie","myChatIdDictionary","createMyChatDictionaryFromDbDexie","myChatDictionary","emailTileDictionary","myNotificationIdDictionary","createPhotoBnIdDictionaryFromDbDexie","photoBnIdDictionary","userPhotoBnIdDictionary","setProfileTileDictionary","createProfileTileIdDictionaryFromDbDexie","profileTileIdDictionary","activitiesDictionary","mActDict","yourMemberActivityObjectStore","populateMemberActivitiesDictionaries","yourMemberLockingActivityObjectStore","myMemberStarTrackWinkActivityObjectStore","yourMemberStarTrackWinkActivityObjectStore","dbMyMActs","myBlockDictionary","myLikeDictionary","myUnlockDictionary","today","myStarDictionary","myTrackDictionary","myWinkDictionary","dbYourMActs","y","yourBlockDictionary","yourFriendDictionary","yourLikeDictionary","yourUnlockDictionary","yourStarDictionary","yourTrackDictionary","yourWinkDictionary","getCircularReplacer","saveTreeToDbDexie","tree","getCount","saveDictionaryToDbDexieSchema1","toSaltStr","updateDictionaryToObjectStore","populateSitUserIdDictionariesFromIndexedDb","setSitUserIdDictionary","populateProfileTileDictionaryFromIndexedDb","getDictionaryFromDbDexieObservable1","dicData","dictionaryObserver","Length","base64ToStr","LocalStorageService","TempFileSaverService","DictionaryIOService","tempFileSaverService","setLocalStorageService","ls","setTempFileSaverService","tfss","getTempFileSaverService","setDbDexieService","ds","getDbDexieService","setDictionaryIOService","indxs","isLocalStorage","localStorage","tmpVal","getItem","salty","localSalty","removeSalty","setItem","updateLoginSuccess","inBn","localLS","localLSuccess","setPreference","setProfileInfo","getProfileTiles","setProfileTiles","getProfilePics","tempFileSubscription","tempFileStringArr","saveTempFile","tFile","dbBoxNonxeArr","dbBoxNonce","saveTempFileBlob","tFileBlob","randomNumberGenerator$","randomNumber","createProfilePicsFromKvPhotoDictionary","getProfilePicsFromKvPhotoDictionary","filterKvPhotoArr","getProfilePicsFromDictionary","populateSitUserIdDictionaryFromIndexedDb","deepCloneJson","BTree","allDictionaries","allDictionaryDataCount","chatActivityDictionary","dexieTableDictionary","errorLogDictionary","idbStoreIndexDictionary","idbStoreTransactionDictionary","loginSuccessDictionary","masterErrorLogMap","componentDictionary","serviceDictionary","moduleDictionary","scssClassDictionary","scssFileDictionary","scssIdDictionary","modelDictionary","viewDictionary","controllerDictionary","myOutboxChatIdDictionary","myOutboxChatDictionary","myErrorLogMap","myMemberActivityDictionary","myMemberTrackingActivityDictionary","myMemberLockingActivityDictionary","myProfilePicsDictionary","personDictionary","photoDictionary","profileDictionary","sitUserTree","storeNameDictionary","yourMemberActivityDictionary","yourMemberTrackingActivityDictionary","yourMemberLockingActivityDictionary","preferenceBnDictionary","profileInfoBnDictionary","profileTileIdBnDictionary","profileTileBnDictionary","spinnerTimerDictionary","yourAllEnoteDictionary","populateStoreNameDictionary","populateAllDictionaries","outKvPhotoArr","getUserKvPhotoArrFromKvPhotoDictionary","getProfileTileBySitUserId","nonRecursiveBinarySearchProfileTile","getMasterErrorLogMap","setMasterErrorLogMap","bDic","resetMasterErrorLogMap","getMyErrorLogMap","setMyErrorLogMap","resetMyErrorLogMap","getDictionaryValues","getChatActivityDictionary","setChatActivityDictionary","ccaDic","getChatConversationDictionary","setChatConversationDictionary","cconDic","getChatConversationIdDictionary","setChatConversationIdDictionary","chiDic","getEmailTileDictionary","setEmailTileDictionary","emDic","getEnoteTileDictionary","setEnoteTileDictionary","enDic","getMyChatDictionary","setMyChatDictionary","cDic","getMyOutboxChatDictionary","setMyOutboxChatDictionary","getMyEmailTileDictionary","setMyEmailTileDictionary","eDic","getMyNotificationIdDictionary","setMyNotificationIdDictionary","nIdDic","getMyNotificationDictionary","setMyNotificationDictionary","nDic","getBuddyDictionary","setBuddyDictionary","getMyBlockDictionary","setMyBlockDictionary","getHeartbeatDictionary","setHeartbeatDictionary","hbDic","getMyLikeDictionary","setMyLikeDictionary","lDic","getMyLikeDictionaryValues","myLikeArray","getMyUnlockDictionary","setMyUnlockDictionary","uDic","getMyStarDictionary","setMyStarDictionary","tDic","getMyTrackDictionary","setMyTrackDictionary","getMyWinkDictionary","setMyWinkDictionary","wDic","getYourBlockDictionary","setYourBlockDictionary","getYourFriendDictionary","setYourFriendDictionary","fDic","getMyYourLikeDictionary","setYourLikeDictionary","getYourUnlockDictionary","setYourUnlockDictionary","getYourStarDictionary","setYourStarDictionary","getYourTrackDictionary","setYourTrackDictionary","getYourWinkDictionary","setYourWinkDictionary","getMyProfilePicsDictionary","setMyProfilePicsDictionary","profPicDic","getKvPhotoDictionary","setKvPhotoDictionary","pnumKvpDic","getPreferenceDictionary","setPreferenceDictionary","prefDic","getProfilePicsDictionary","setProfilePicsDictionary","getProfileInfoDictionary","setProfileInfoDictionary","profInfoDic","getProfileContentDictionary","setProfileContentDictionary","profContentDic","getProfileTileIdsDictionary","setProfileTileIdDictionary","pTileIdDic","getProfileTileDictionary","pTileDic","getSitUserDictionary","setSitUserDictionary","sUserDic","getSitUserIdDictionary","getPhotoDictionary","setPhotoDictionary","userPhDic","getUserPhotoBnIdDictionary","setUserPhotoBnIdDictionary","userPhBnIdDic","getSpinnerTimerDictionary","setSpinnerTimerDictionary","spinnerDic","populateMasterErrorLogMap","mErrorLogs","populateMyErrorLogMapFromIndexedDb","errLogArr","modelArrayToDictionary","modelDic","modelActivityArrayToDictionary","modelArrayToMemberActivityDictionary","populateKvPhotoOfUserInProfilePicsDictionary","tPhoto","copyFromKvPhotoToPhoto","getIndexOfKvPhotoInKvPhotoArr","mergeArraysUniq","inModel","signOnActivityId","senderUserId","receiverUserId","eArr","startTimer","resetDictionary","updateMyChatDictionary","chatarr","getPreferenceDicBn","setPreferenceDictionaryBn","getProfileInfoDictionaryBn","setProfileInfoDictionaryBn","getProfileTileIdDictionaryBn","setProfileTileIdDictionaryBn","getProfileTileDictionaryBn","setProfileTileDictionaryBn","modelArrayToBnDictionary","setDictionaryService","dios","ProfileInfoService","ProfilePicsService","photoOmni","profileExecutionOption","profileExecutionOptionArr","Set","displayProfilePicsFromEmitterOrDictionary","kvMemActGlyphArr","displayProfilePicsView","emitProfileImages","getAvatarProfileTile","displayUserPicsFromProfileTile","displayUserPicsFromDictionary","modelPPics","displaySignedInUserPicsFromServer","displayUserDataFromProfileTile","tProfileTile","executeProfileTileTasks","displayUserDataFromDictionary","executeAllNonProfileTileTasks","displayUserDataFromServer","profileContetnKvAnyArr","createProfileContentKvAnyArr","getMemberViewMgmtModel","setMemberViewMgmtModel","executeProfilePicsImagesTasks","kvphotoArr","setProfileImages","setIndexAndPageNumAndElemIdForKvPhotoArr","setPagerVKvPhotoArr","getIndexOfItemByPhotoBnIdInKvPhotoArr","getBasicPagerDynamicObservable","emitDisplayMyPagerVKvPhotoNav","emitDisplayPagerVKvPhotoNav","getPagerVKvPhotoNavWithoutUrl","getIsKvData","getIsKvFile","getIsKvUrlData","setDisplayProfileService","pbs","GenericSearchSortFilterService","activityArrayEnum","staticDictionaryEnum","genericSearchSortFilterService","activeSorter","isBlockedByDictionaryData","isBlockedByServerData","isFriendByServerData","isFriendByMyDictionaryData","isLikedByDictionaryData","isLikedByServerData","isStarredByDictionaryData","isUnlockedByDictionaryData","isUnlockedByServerData","isWinkedByDictionaryData","myCommActivity","tempUniqueMemberActivities","yourCommActivity","trackCount","destinationD","sourceD","myBlockArray","myUnblockArray","myFriendArray","myUnfriendArray","myDislikeArray","myLockArray","myUnlockArray","myStarArray","myTrackArray","myWinkArray","yourBlockArray","yourUnblockArray","yourFriendArray","yourUnfriendArray","yourLikeArray","yourDislikeArray","yourLockArray","yourUnlockArray","yourStarArray","yourTrackArray","yourWinkArray","addActivityToUserActionArray","arrayName","actionArr","callActivityArray","isActivityFoundInArrayByName","returnActivityArr","callStaticDictionary","returnActivityD","compareKeys","thisKey","thatKey","strCmpVal","numCmpVal","thisKeyParts","parseMemberActivityKey","thatKeyParts","strcmp","cmpVal","copyArray","destinationArr","sourceArr","isActivityFoundInArray","copyMemberActivityDictionary","createActionDictionaryWithLatestValueFromActionArray","destinationDName","sourceDName","latestAct","getLatestActivityFromActionArray","createAllActionDictionariesWithLatestValueFromActionArrayDictionaries","mact","mAction","updateActionDictionaryAgainstOppositeActionArray","createMemberActivityDictionariesFromAllDictionaries","MemberAction","createAndSetMemberViewGlyphMenu","emitSetMemberViewGlyphMenu","filterMemberViewGlyphByMemberActivities","serverMActs","getMyUnlockingDictionaryActivities","filterKvPhotoArrayByServerData","displayFilteredKvPhotosOfProfilePics","tfiltered","filterKvPhotoArrayByMemberLockingActivityDictionaryData","doereSitUserId","getLastValueOfDictionary","last","getLatestActivityFromActionDictionary","actionD","outAct","userAct","getMemberActivitiesOfSitUser","sitid","act","memberActivitesAndAction","getMemberActivities","getINotificationsOfAction","getINotificationsOfLockingAction","getINotificationsOfTrackingAction","mActivity","memberActvity","cActs","uniqueActs","populateDictionary","saveDictionaryToIndexedDb","createUniqueLockingUsers","commActivityArr","uniqueUsers","commActivityDictionary","actionDName","outActionDictionary","oppositeActionArr","actionKeys","actionValue","latestActionArrayValue","removeActivityFromActionArray","removeAct","processMemberActivityResult","tMAct","myMemberActivity","setMemberActivity","sendTrackingActivity","outMAct","populateRespectiveActionArray","processBlockingBehavior","processUnblockingBehavior","processFriendingBehavior","processUnfriendingBehavior","processLikingBehavior","processDislikingBehavior","processLockingBehavior","processUnlockingBehavior","processStarringBehavior","processWinkingBehavior","quickSortArray","genericSort","prefetchMyMemberActivities","emitMyActivityArr","processBuddyingBehavior","didIFriend","didYouFriend","serverSentMemberActivity","buddyActivity","getYourActivities","processTrackingBehavior","getDictionaryActivities","tOutArr","getMyLikeDictionaryActivities","myLikingActivities","myUnlockingActivities","activity","arrName","isBlockedByMyDictionary","bActs","isBlockedByYourDictionary","isDoeeSitUserActivityFoundInArr","mActs","foundMAct","isDoerSitUserActivityFoundInArr","isDoeeSitUserActivityFoundInDictionary","mActsDictionaryName","isDoerSitUserActivityFoundInDictionary","isFoundInDictionary","dic","itm","isFriendByMyDictionaryPromise","isFriendByMyDictionary","fAct","isFriendByYourDictionary","isLikedByMyDictionary","lAct","isLikedByYourDictionary","isStarredByMyDictionary","isStarredByYourDictionary","isWinkedByMyDictionary","isWinkedByYourDictionary","isMemberActivityFoundInArr","isMemberActionFoundInArr","isMyDictionaryMemberActivityEmptyForSitUser","isEmpty","isSitUserActivityFoundInDictionary","mActsD","isSitUserActivityFoundInArray","isUnlockedExpired","isExpired","expDateTicks","todaysTicks","addDate","isUnlockedByMyDictionaryPromise","setIsUnlocked","isUnlockedByMyDictionary","isUnlockedByYourDictionary","lActs","isYourDictionaryMemberActivityEmptyForSitUser","setProfileTileImage","elem","normalizeImageDataWithUrl","normalizeImageFileNameWithUrl","background","backgroundImage","createMemberActivityKey","inKey","imageResizeService","isTileInitialized","isLoaded","getMessages","getSitUserIds","resetMessages","setMessage","processProfileImagePromise","imageUrl","clearGlyphiconMenueOnDifferentMember","isOnExit","clearUserDataOnDifferentMember","emitDisplayProfileView","executeBackToBackMemberViewMyPhotosPages","emitCurrentPage","currentP","currentKvp","getCurrentPhoto","copyFromPhotoToKvPhoto","addUpdateUserPhoto","userPhotos","userPhoto","copyFromServerPhotoToClientPhoto","addUpdateProfileKvPhotoArr","copyKvPhotoIfExists","determineMemberAction","memberAction","getImageTagId","commModel","isLinkSet","isComplete","isPrefComplete","isProfInfoComplete","isProfPicsComplete","setLink","tTile","serializeMessages","msgArr","setThisImage","findDiffOf","uniquelyMergeKvPhotoArrays","dKvPhotos","sKvPhotos","outKvPhotos","unSalt","setActivityService","setMemberService","mes","EmbeddedViewRef","Injector","DomService","componentFactoryResolver","injector","childComponentRef","getElementRef","appendComponentTo","childConfig","create","attachConfig","attachView","hostView","childDomElem","rootNodes","removeComponent","detachView","destroy","unloadComponent","componentId","parentNode","removeChild","config","componentRef","instance","domService","spinnerOverlayService","setDomService","getDomService","setSpinnerOverlayService","sos","getSpinnerOverlayService","Overlay","ComponentPortal","overlay","loading","spinnerCounter","overlayComponent","overlayRef","hideSpinner","spm","showSpinnerModel","show","spinnerOverlayPortal","attach","hide","negORef","tempORef","detach","checkSpinner","executeOnPictureSelectionChange","executePagerVKvPhotoNavPagedItems","executePagerVKvPhotoNavKvPhotoTasks","executePagerVKvPhotoNavAndBackgroundImageTasks","getPagerVKvPhotoNavForKvPhotoInKvPhotoArr","setPagerVNavKvPhotoImage","executeProfilePicsKvPhotoAndGlyphMenuTasks","inpPics","executeProfileTileKvPhotoAndGlyphMenuTasks2","inpTile","inptile","executePagedItemsAndGlyphMenuTasks","tKvPhotoArr","kvPArr","executeKvPhotoAndGlyphMenuTasks","executeSetPageTasks","setPagerVKvPhotoNav","getPagerVKvPhotoNav","prepareKvPhotoForDisplay","prefixUrlToKvPhotoForDisplay","photoUrlPrefixPattern","prefixUrlToImageData","isPrivateAndUnlocked","isPandUnlocked","filterKvPhoto","setCurrentItemPage","currentitem","setupForProfilePicsToPagerVPhotoNav","iTem","pVKvPhotoNav","setupForKvPhotoArrToPagerVPhotoNav","mFloor","pgrVPhotoNav","updateKvPhotoArr","BasicPagerService","basicPagerModel","getBasicPager","GetPagerChatDynamic","setupBasicPagerModel","setBasicPager","tItems","cPage","startPageItemNo","endPageItemNo","setupPagerBrdCrm","setKvPhotoArr","currItem","inPager","getIndexOfItemByPhotoBnIdOrPhotoIdInKvPhotoArr","clearPagerServicePhotoMgmtData","getPagerVKvPhoto","setPagerButtonImagByKvPhoto","kvImage","setPagerButtonImagesByKvPhotoArr","drawPagerButtons","pgrmgmt","breadcrumArr","getImageKvArr","setImageKvArr","getPagedKvPhotoArr","setPagedImagesKvArr","pagedImageArr","getPager","setPagerWithImageKvArr","setPageNumAndIndex","setPagerOld","setPagerKv","setPagerUpTo10","getIndexOfItemByPageNumInKvPhotoArr","setPagerImage","pNum","brdcrmArr","GetPagerBreadcrum","displayBreadcrumButtons","setButtonImage","elementHasThisClass","$","hasClass","isLastPage","pagedChatArr","getPagedChats","setPagerChat","sortChats","emitPager","PagerVPhotoNavService","pagerVPhotoNavService","setPagerService","gd","setPagerServiceChatHistory","chps","getAbstractPagerVPhotoNavService","setAbstractPagerVPhotoNavService","pvs","setPagerPhotoMgmtService","pps","setPagerVPhotoNavService","pns","getPagerVPhotoNavService","setPagerSupportService","createKvPhotoDictionaryFromKvPhotoArray","kvpD","getCurrentKvPhotoByPageNumFromArr","getCurrentKvPhotoByItemNumFromArr","currPageItem","getCurrentKvPhotoByPhotoBnIdFromArr","pBnId","getPageNumByItemNumFromKvPhotoItemArrDictionary","pNumKvPhotoDictionary","pagedItemsArr","iDiv","ikvp","getPrimaryKvPhotoFromDictionary","getPrimaryKvPhotoForSitUser","copyFromLoginSuccessToKvPhoto","copySitUserToKvPhoto","setIndexAndPageNumAndElemIdForPagerPhotoMgmt","updateKvArrForPrimaryKvPhoto","updateKvPhotoDictionary","isFiltered","updateProfilePicsArraysWithPrimaryKvPhotoIfMissing","updatePrimaryKvPhotoIfMissingOnProfilePics","fkvpD","KvPhotoService","counters","currentBn","currentStateOfPhoto","isIndexedDbData","isWaitingOnCurrStateOfUser","profilePicsArr","profilePicsBoxNonceArr","userPhotoIds","indexDbProfilePicsEmitter","pImageArr","tpPics","executeMemberViewProfilePicsTasks","clearCounters","createPhotoFromSitUser","getCounters","getPrimaryImage","showSpinnerComp","getPrimaryPhoto","tempPhoto","unboxedPhoto","getSitUserPhotoIds","getUserPhotoIds","getUserPhoto","photoModel","getUserPhotosObservable","photoIds","observable","fkvP","setCounters","setCurrentPageKvPhoto","tKvp","setSitUserPhotoIds","PhotoAndPrimaryPhotoMgmtService","kvPhotoService","currentBne","clearMemberViewGlyphNames","getPrimaryKvPhotoFromArr","getUserKvPhotosFromDictionary","dKvpArr","userKvPhotoArr","initializeMemberViewComponent","initializePhotoMgmtComponent","copyLoginSuccessToSitUser","setProfileImageArr","updateProfilePicsWithKvPhoto","filterAndSortProfileKvPhotoArr","executeOnNonPrimaryPhotoMgmtAction","currKvPhoto","populateProfilePicsFromKvPhotoDictionary","tfkvp","executePhotoMgmtPrimaryAction","getPhotoMgmtAction","setPrimaryImageKvPhoto","emitDisplayPrimaryImage","processPrimaryStatusOfUserAction","kvphoto","showGlyphiconMenu","hideGlyphiconMenu","processPhotoMgmtActionResult","camelPhotoBn","updateProfilePicsArraysOnPrimaryAction","currSitUser","pMgmtAction","ckvp","tckvp","copyFromProfileImageToKvPhoto","fKvPhoto","userPhotoBnIds","getSingedInAndNonSignedInSitUsers","creteProfilePicsUsingPhotoBnIdsFromDictionary","pbnArr","processServerSentPhotoBnArr","createProfilePicsFromProfileImageArr","escapeQuoteFromPic","picData","escapeQuotePattern","extractPhotoModelDataFromUnsalted","tServerPhotoResult","pbnResult","tPhotoBnJson","unsaltPhotoBnArr","outPhotoBnArr","unsaltedUnknown","unsaltDelimiteredData","pbnStrArr","getAllPhotosOfUser","siTUserId","scopedDictionaryService","userPhotoBnCount","tPhotoBns","prepareToBeSentModelForGetAllPhotoBnOfUser","processPhotoBnResult","saveKvPhoto","pom","getUserPhotoBnIds","setUserPhotoBnIds","getUserPhotoByPhotoBnId","getUserPhotosByPhotoBnIds","photoBnIds","getUserSaltedPhotoBn","tProfileImage","processSaltedPhotoBnResult","processUnsaltedImageData","processUnsaltedObject","tPbnResult","camelCasedPhotoBn","getMCLoader","unsaltedPhotoBn","copyFromServerPhotoBnToClientPhotoBn","inPbnResult","copyFromPhotoBnToClientPhoto","convertUserPhotoToProfileImage","processUnsaltedPhotoBnIdResult","processPhotoBnIdResult","tPi","savePhotoBnToDictionary","unsaltPhotoBn","tPbn","displayUnFilteredKvPhotosOfProfilePics","anyKvPhoto","filteredPPics","filterAndSortProfilePics","determineKvPhotoPrivacy","executeMemberViewProfilePicsAfterFiltration","filterAfterGettingMemberLockingActivitiesFromServer","memActArr","memAct","getMemberLockingActivitiesFromServer","fkvp","filterKvPhotoDictionaryByMemberLockingActivityDictionaryData","kvPhotos","dictionaryLockingActivities","getMemberLockingActivitiesFromYourDictionary","filteredKvPhotoArray","filterKvPhotoDictionaryByServerData","lockingActivity","filteredKvPhotos","inKvPhotoValues","filterKvPhotoArrayByDictionaryData","pKvPhoto","filterAndSortByMemberActicvities","copyProfilePicsIfExists","filterAndSortProfilePicsOld","copyFromProfileImageArrToKvPhotoArr","getPrimaryKvPhotoFromFilteredKvPhotoArr","fKvPhotoArr","processIsUnlockedResult","getMemberLockingActivitiesFromMyDictionary","memberActions","lockingActivities","getMemberActivitiesForPhotoPrivacy","emitDictionariesUpdated","removeProfileTileImageFromProfileImageArr","setAndGetLocks","setKvPhotoService","kps","getKvPhotoService","setPhotoBnService","ps","setPhotoAndPrimaryPhotoMgmtService","pmgs","setPhotoPrivacyService","pss","getPhotoPrivacyService","AbstractProfileService","batchOfIds","isSingletonUsed","incompleteTilesArr","profileTilesArr","createProfileTileShellArr","pTiles","createProfileTileShell","checkAndSetProfileTileImage","inTile","createProfileInfoViewAndUpdateProfileTile","captureHeartbeatDataInProfileTile","copyFromProfileInfoToProfileTile","captureDistanceUnitInProfileTile","executeBeforeViewInit","copyFromProfileInfoToContent","copyProfileTileToSitUser","captureDataToProfileInfoView","processDistanceUnitForProfileTileAndProfileInfoView","computeDistanceUnitFromHeartbeatForAfterViewInit","emitUpdateDistanceAndProfileNameAndOffOn","createProfileInfoViewAndUpdateProfileTile3","determineUnit","executeAllTasks","executeProfileInfoTasks","pinfo","executePreferenceTasks","fetchAndExecuteProfileContentTasks","sourcePrefix","oneTimeProfileTileSetup","setProfileTile","setProfileTileBackgroundImage","executeProfileTileOnInit","getIncompleteTiles","intervalMsgTime","setupProfileTileImageAndDisplay","isProfileTileValid","setupMissingProfileTileProperties","getProfileNameFromSitUserKey","isProfileTileValidForOffOn","isProfileTileArrayComplete","isTilesArrComplete","periodicProfileTileSetup","thb","prepareProfileTile","outTile","prepareProfileTiles","dTiles","tProfileTilesArr","tile","sortProfileTileArrByDistance","setProfileTilesArr","processDistanceUnitForProfileTile","processProfileTileForHeartbeat","copyProfileTileIfExists","ageFromDobTicks","setupProfileTileElement","pTileElem","uniquelyAddInProfileTileArray","getIndexOfTileInArr","getBatchOfProfileTileIds","batchOfTileIds","tPref","emitPreferenceKvAnyArr","processPreferenceResult","emitProfileContentKvAnyArr","executeProfileContentTasks","pcontent","pContent","executeProfileInfoContentTasks","bnInput","getProfileInfoBoxNonce","emitProfileInfoKvAnyArr","commu","bncomm","tpInfo","tLoginSuccess","profileInfoObject","copyProfileInfoIfExists","ProfileNameService","updateProfileTileForSignedInUser","updateProfileTileForSitUser","photoMgmtServiceSitUser","createProfilePicsFromPhotoDictionary","dPhotoArr","dp","setPhotoToKvPhoto","createProfilePicsFromProfileImageArray","profilePic","inDFirst","createProfilePicsFromProfileImageDictionary","inDictionary","createProfilePicsFromSitUser","createProfilePicsFromLoginSuccess","executeOnProfileImageArrayComplete","copyProfilePicsToKvPhotoArr","executeServerProfilePicsTasks","executeProfilePicsNavigation","executeProfilePicsNavigationCoreTasks","emitPhotoMgmtPrimaryAction","rPPics","getProfilePicsFromProfilePicsDictionary","getProfilePicsFromDictionaryOrSitUser","tProfilePics","getProfilePicsOvertly","profilePicFiles","getProfileImageArr","setupDictionaryProfilePicsForViewMember","dKvPhotoArr","tFilteredKvPhotoArr","setPreferenceService","getPreferenceService","setProfileContentService","pcs","getProfileContentService","setProfileInfoService","setProfileNameService","pis","setProfilePicsService","sitUSerId","setupProfileTilesArrHeartbeats","setupProfileTileHeartbeat","getBatchOfProfileTiles","anyTile","tIncompleteTiles","boxNonceArr","cipherbox","getProfileTileIndividuallyFromServerInBackground","emitRunBackgroundProcessMethod","getProfileTileIndividuallyFromServer","getIsObjectStoreNameFoundInTables","setIsObjectStoreNameFoundInTables","setProfileTileService","pts","animationDelayMs","biasImages","defaultKvPhotoArr","indx","isStop","isUserDataCleared","pbgTimer","getWindow","isViewMemberEmitter","setSignedInUserBackgroundImageEmitter","setSignedInUserBackgroundImage","resetDbgiEmitter","startDefaultAnimation","getCurrentBackgroundPageNo","getCurrentBackgroundPageIndex","currPageNo","getBiasImage","bgi","rotateBias","imageDataUrl","startBiasAnimation","startBiasKvPhotoArrAnim","tImageData","kvgArr","prefix","currentPageElemId","currentItemElem","addClassForElement","tempElemIdStr","tElemId","removeClassForElement","toggleClassOutsideAngular","className","outsideClasses","updateStyleOutsideAngular","styleName","styleValue","setImageStringToKvPhoto","imageStr","setDefaultImageNameArrToKvPhotoArr","dImageNames","tBgis","setBackgroundStillImageForHTMLElement","setBackgroundStillImage","setBackgroundStillImageForElemId","getPicArrFromKvPhotoArr","setBiasKvPhotoArr","stopBiasAnimation","startKvPhotoAnimation","actionType","aElemRef","getAvatarElementById","setImage","elemRef","display","setBodyElementBackgroundImage","setElementBackgroundImage","chooseLockOrPicforKvPhoto","setSitUserBackgroundImage","setProfilePicsBackgroundImage","setViewMemberPage","setPhotoNavigationPageBackground","toggleClass","toggleClassForElement","toggleBackgroundMovement","setKvPhotoBackgroundImagePrimaryOrOtherwise","RendererFactory2","renderer2Factory","createRenderer","setRenderer","r2s","doc","innerHeight","offsetHeight","offsetWidth","Inject","backgroundImageAnimationService","setBackgroundImageAnimationService","setRendererService","rs","EventEmitter","productChange","eIndex","middle","binarySearch","midCeil","compareFn","nonRecursiveBinarySearch","sortAscending","sortDescending","compare_fn","compare_sitUserId","cmpr","ar","n","cmp","genericSearch","object","some","objectA","objectB","sorter","genericFilter","filters","every","partition","numbers","pivotIndex","pivotValue","temp","newPivot","quickSort","sortProfileTileKvArrUsingMap","mapped","sortProfileTilesMap","mapList","sortProfileTilesArr","quick_sort","unsorted","pivot","pop","less","greater","element","quicksortService","setBinarySearchService","bs","getBinarySearchService","setQuicksortService","qs","getQuicksortService","setGenericSearchSortFilterService","gss","getGenericSearchSortFilterService","createArrayFromMap2","createMapFromArray2","isTypeOfArray","QueuePop","inArray","RemoveFromBottom","StackPop","mergeMapsViaSpread","merged","mapFromArray","arrayFromMap","mergeArrays","dArr","sArr","dMap","sMap","makeUniq","uniq","mergeMaps","RemoveFromTop","RemoveFromArray","profileTileArrayToMap","keyValueMap","reduce","mapAccumulator","getIndexOfItemInSpinnerTimerArr","spinnerModelArr","tiles","pt","mergeProfileTileArrays","dTileArr","sTileArr","getIndexOfBnInBoxNonceArr","bns","getIndexOfItemByPhotoIdInKvPhotoArr","getIndexOfItemByProfileIdInKvPhotoArr","getIndexOfKvGlyphInArr","getIndexOfSitUserIdInArr","getIndexOfNumberInArr","mergeIdArrays","dTileIdArr","sTileIdArr","removeProfileImageFromProfileImageArr","removeDuplicateProfileTiles","rItem","removeKvPhotoDuplicatesByPhotoBnId","removePhotoDuplicatesByPhotoId","removeKvPhotoDuplicatesByPhotoId","sortMapByKey","inMap","sortMapByValue","sortMap","sortMapByPhotoBnId","uniquelyUpdateKvPhotoArray","sKvPhoto","updateProfileTileInArray","sTile","updateProfileTileArrViaMutation","tileArr","_binarySearchService","_dictionaryService","deepCopyArray","tMap","reverseOnItself","end","len","middleIndex","middleV","communicationActivityComparatorBySubType","dCa","sCa","communicationActivityComparator","memberActivityComparator","dMa","sMa","uniquelyMergeChatArrays","uniquelyMergeMemberActivityArrays","uniquelyUpdateStringArray","isEmitted","getPreviousPage","getNextPage","getLength","setRing","ring","isSameComponent","isSameUser","isDifferentMemberView","isPreviousPagePhotoMgmt","isBackToBack","updateBreadcrumRing","tMcl","addUpdate","setBreadcrumPager","tempCrumPage","searchByValue","searchById","searchByIndex","searchByKey","searchByPageNo","searchByUrl","removeByIndex","tKvAny","removeById","removeByValue","brdCrmPager","setCurrentPage","tCurrentCrumPage","eNoteTile","deepCloneProfileTileArray","copyPhotoBnIfExists","dPbn","sPbn","copyPagerVKvPhotoNavFromPagerMemberActivity","pagerVMemberActivity","copyPhotoToPhotoBn","dPhotoBn","convertPhotoToPhotoBn","ConvertPhotoToProfileImage","profImage","copyChatIfExists","dChat","sChat","copyFileBytesArr","copyBoxNonceIfExists","destTile","dCommunicator","sCommunicator","dCommunicationActivity","sCommunicationActivity","copyDateAssayIfExists","destDateAssay","sourceDateAssay","dHeartbeat","sHeartbeat","heartBeat","copyLoginSuccessIfExists","dLoginSuccess","sLoginSuccess","dProfileTile","dSitUser","copyKvPhotoToSitUser","copyKvPhotoToProfilePics","copyOrderIfExists","destOrder","sourceOrder","inPInfo","destOffOn","copyDistanceUnitIfExists","destUnit","dKvPhoto","copyProfileImageIfExists","dpImage","spImage","dpPics","spPics","dictionaryPhoto","dictionaryKvPhoto","copyUpgradedTileIfExists","copyFromContentToProfileInfo","copyFromCommunicationActivityToENoteTile","copyFromCommunicationActivityToProfileTile","commMsg","copyFromENoteTileToProfileTile","copyFromProfileTileToUpgradedTile","copyFromHeartbeatToProfileTile","copyFromPagerBreadcrumToPager","pbc","copyFromPagerBreadcrumToPagerPhotoMgmt","CopyFromBreadCrumKvToKvPhoto","CopyFromBreadCrumKvToKvPhotoOld","bcKvAny","pImages","copyFromProfileImageDictionaryToKvPhotoArr","copyFromProfileImageDictionaryToKvPhotoDictionary","outKvPhotoDictionary","pkv","copyFromProfileImageToPhoto","photoModelToCamelCasedString","camelCased","photoModelToCamelCasedModel","camelCasedPhotoModel","outModel","camelCasedPhotoBnModel","copyFromServerPhotoBnToClientPhoto","Pic","copyFromProfilePicsToKvPhotoArr","kvPhotoD","firstElem","tKvPhotoD","copyFromMemberActivityToKvGlyph","copyFromKvActionToMemberActivity","kva","copyFromMemberActivityToKvAction","copyFromKvGlyphToKvPhoto","copyFromProfileInfoToProfileInfoView","copyFromProfileTileToProfileInfo","copyFromProfilePicsToProfileInfo","createProfilePicsFromProfileTile","tKvP","pImageD","formatDate","unixTimeStampMillSec","unixTimeStampSec","jsNowForOldBrowsers","jsNow","thisD","thatD","thisDateTicks","thatDateTicks","dateDiff","later","earlier","date2","date1","diffSec","years","leftSec","days","hrs","convertToLocalWithOffset","convertToLocal","convertToDDMMYYYY","convertToYYYYMMDD","convertToYYYYMMDDFromJsTicks","ticks","compareTicks","thisTicks","thatTicks","thisTn","thatTn","nowTicks","convertGroupsToLocalTime","getDateOnly","dateParts","getMDYDate","GetMonthName","getUnixTimeStampInSecond","isCsTime","isCs","tStr","isJsTime","isJs","timeStampToDate","inTs","ageFromDobString","dobYYYY","dobMM","dobDD","getDay","ageFromDobFormat1","dobInFormat1","dateFromTicks","ageFromDobFormat2","dobInFormat2","ageFromDobFormat3","dobInFormat3","dA","tDate","getMilliseconds","getHeartbeatTimeWholeNumber","hbt","csTicksStr","dateA","tDateA","getDateAssay","getDateAssayOfJsTicks","inTicks","getJsDateToNetTicks","getDateAssayFromTicks","getDateAssayOfNow","units","ret","checkRollover","setDate","setFullYear","setMonth","setTime","addSeconds","seconds","setSeconds","addMinutes","setMinutes","addHours","hours","setHours","addDays","addWeeks","weeks","addMonths","dt","currDt","addYears","yourDate","epochTicks","ticksPerMillisecond","yourTicks","getTimezoneOffset","netTicks","jsDateTicks","localDate","compareOldSitUserKeys","thisSitUserKey","thatSitUserKey","thisSitUserKeyParts","getSitUserKeyPartsArr","thatSitUserKeyParts","thisSitUserKeyDate","thatSitUserKeyDate","thisSitUserKeyTicks","thatSitUserKeyTicks","thisDate","thatDate","sITUserKey","getEmailFromSitUserKey","getProfileNameFromEmail","getDateFromTicks","ticksInSecs","pad","getBrowserTZ","isT","getBrowserTZInDateAssay","ClientTZ","UTCoffsetDST","self","diff1","diff2","hr","jsTicksInYYMMSSmmhhssOld","millsecs","secs","padYear","padMMDD","join","timeAgoSince","diffDate","ago","totalMilliseconds","totalSeconds","totalMinutes","totalHours","totalDays","totalMonths","totalYears","milliseconds","WhenScrollEndsServiceStatic","_redirectionService","Hammer","overrides","enable","eventAction","hammer","myElement","executeAction","evType","emitGesture","emitPagerBreadcrumDirection","executePanAction","scrollToBottom","buildHammer","DIRECTION_ALL","removeComponentEmitter","tMcLoader","getRandomNumber","getUrlWithBackSlashPrefix","mcloader","querySelectorAll","offsetTop","scrollIntoView","behavior","block","inline","updateScrollY","scroll","nacl","naclUtil","StaticServiceService","util","inMemoryDataServiceStatic","keyType","saltType","passPhrase","saltBn","validateBase64","TypeError","processTwoChabi","twoChabi","getTwoChabi","resetSaltShaker","hasPairExpired","seen","WeakSet","add","unSaltModel","payload","tNaclPairClient","pkUnit8Arr","decodeBase64","skUnit8Arr","decoded1","encodeUTF8","randomBytes","decodeUTF8","getInMemoryDataServiceStatic","fetch","res","json","jsonData","resetSaltShakerEmitter","server","apiUrl","serverWithApiUrl","restrict","attrs","visibleHeight","scrollableHeight","hiddenContentHeight","$apply","dbInitialVersion","dbNewVersion","ConstantEnums","KEY_CODE","MemberActionEnums","StoreNameEnum","initialVersion","newVersion","storeNames","encrDecrKey","loginSuccessCount","dbJsSchema","resolvedPromise","nextTick","getConstantEnums","emitClearUserData","emitClearPagerPhotoNavData","emitClearProfileImages","chatHistoryIdDictionary","eMailTileDictionary","eMailTileIdDictionary","eNoteTileDictionary","eNoteTileIdDictionary","myMemberStarTrackWinkActivityDictionary","profileTileDexieDictionary","yourMemberStarTrackWinkActivityDictionary","getChatHistoryDictionary","setChatHistoryDictionary","chDic","getChatHistoryIdDictionary","setChatHistoryIdDictionary","getEmailTileIdDictionary","setEmailTileIdDictionary","getEnoteTileIdDictionary","setEnoteTileIdDictionary","getMyFriendDictionary","setMyFriendDictionary","tArr","routerC","domUtilsElementRef","domUtilsHTMLElement","navigationStart$","initService","triggerClick","getAngularElementById","routerI","ngZoneI","getDomUtilsElementRef","setDomUtilsDocument","domElements","getHtmlElementById","getElementsByClassName","getHtmlElementByClassForOffOn","doesElementWithIdHasThisClass","removeClassForElementUsingElemId","addCssClassToElement","addFocusToElement","addRemoveClasses","removeCssClassFromElement","isClassPresent","getValuefromInputElement","inputElem","AsyncSubject","actedGlyphNamesEmitter","actedGlyphEmitter","actionIdEmitter","activatedRouteEmitter","addressEmitter","amountModelEmitter","articleRejectedEmitter","isAppFeaturePageEmitter","appInitUrlEmitter","articleDownloadFileNameEmitter","articleSubjectsEmitter","backgroundProcessMethodDataForComponentEmitter","backgroundProcessMethodDataForServiceEmitter","basicPagerEmitter","batchOfProfileTileIdsEmitter","blackListCredentialArrEmitter","boxEmailBnEmitter","boxNonceEmitter","breadcrumRingEmitter","catchAllBackgroundImageEmitter","chatActivityHistoryEmitter","chatMessageEmitter","chatModelToSetupComponentEmitter","checkOffOnStatusEmitter","checkOffOnStatusFromProfileTileEmitter","clearCreditCardDataEmitter","clearMembersTilesEmitter","clearProfileImagesEmitter","clearUserDataEmitter","channelStreamMessageEmitter","chatImageUploadDataEmitter","chatModelEmitter","commActivityBoxNonceEmitter","communicationActivityEmitter","commTypeEmitter","communicatorEmitter","connectionTokenEmitter","currentFocusEmitter","currentPageNumEmitter","dictionariesUpdatedEmitter","displayDefaultGlyphiconMenuEmitter","displayDifferentMemberViewEmitter","displayViewMemberGlyphiconMenuEmitter","displayGlyphiconMenuEmitter","displayProfileViewEmitter","displayPrimaryImageEmitter","displayBgiOutsideAngularEmitter","displayMyPagerVKvPhotoNavEmitter","displayUserPicsFromServerEmitter","dobEmitter","dropDownResultEmitter","editImageEmitter","editParagraphEmitter","elementFullyRenderedEmitter","emailTileEmitter","enoteTileEmitter","enoteBoxNonceEmitter","executeProfileInfoTasksEmitter","exitPageEmitter","facilitatorAccessTokenEmitter","fileEmitter","fileChunkCountEmitter","filesEmitter","fileImagesEmitter","fileNameEmitter","gestureDivIdEmitter","groupEmitter","groupChatMessageEmitter","groupConversationEmitter","heightWidthEmitter","imageEmitter","imageFileEmitter","indexDbBoxNonceDataEmitter","indexDbChatHistoryEmitter","indexDbChatHistoryIdsEmitter","indexDbDataEmitter","indexDbDataFoundWithIndexEmitter","indexDbDataFoundWithKeyEmitter","indexDbDefaultPicsEmitter","indexDbEmailTileIdsEmitter","indexDbEmailTilesEmitter","indexDbEnoteTileIdsEmitter","indexDbEnoteTilesEmitter","indexDbLoginSuccessEmitter","indexDbMemberActivitiesEmitter","indexDbMyErrorLogsEmitter","indexDbMyMemberActivitiesEmitter","indexDbProfileImageDictionaryEmitter","indexDbPreferenceEmitter","indexDbProfileInfoEmitter","indexDbProfileTileIdsEmitter","indexDbProfileTilesEmitter","indexDbNgxSaveSuccessfulEmitter","indexDbSaveStoreEmitter","indexDbSitUserEmitter","indexDbSitUsersEmitter","indexDbTempFilesEmitter","indexDbUserEmitter","indexDbUserPhotoIdsEmitter","indexDbSitUserBoxNonceDataEmitter","indexDbYourMemberActivitiesEmitter","initModalDialogueComponentEmitter","isAddressCompleteEmitter","isBrowsingPicEmitter","isCameraGlyphVisibleEmitter","isCameraClosedBoolEmitter","isConnectionEstablishedEmitter","isCreditCardCompleteEmitter","isImageUploadFormVisibleEmitter","isModalEmitter","isMyProfileEmitter","isModalVisibleEmitter","isNewPhotoUploadedEmitter","isOpenEmitter","isReplyEmitter","isSignupModalEmitter","isToggleCameraEmitter","isUnlockedEmitter","isVsScrollEmitter","isWaitingOnCurrStateOfUserEmitter","keyValueResultEmitter","loadActivityComponentEmitter","loadAppComponentEmitter","loadChatComponentEmitter","loadCheckboxRadioComponentEmitter","loadCommunicationComponentEmitter","loadGestureComponentEmitter","loadKeyValueComponentEmitter","loadLogregComponentEmitter","loadMasterComponentEmitter","loadMemberComponentEmitter","loadModalComponentEmitter","loadModuleEmitter","loadProfileComponentEmitter","loadSlaveComponentEmitter","loadSpinnerComponentEmitter","loadStaffComponentEmitter","logRegModelEmitter","mailBoxEmitter","mainTopCssEmitter","masterErrorLogEmitter","mcLoaderEmitter","membersEmitter","memberActivityEmitter","communicationActivitiesEmitter","memberViewMgmtModelEmitter","myActivityArrEmitter","memberPhotoEmitter","myConversationsEmitter","myGroupsEmitter","naclEmitter","navbarActionTypeEmitter","notificationActivityEmitter","offOnEmitter","offOnResultEmitter","offOnStatusChangeEmitter","onKvPhotoSelectionChangeEmitter","openModalEmitter","pagedProfileImagesEmitter","pagerChatEmitter","pagedChatsEmitter","paragraphEmitter","pagerPhotoMgmtEmitter","pagerVKvPhotoNavEmitter","photoMgmtMenuObservableEmitter","photoMgmtActionEmitter","photoMgmtPrimaryActionEmitter","profileEmitter","profileImageEmitter","profileImageArrEmitter","profileImageKvArrEmitter","profileInfoEmitter","profileTileCompleteEmitter","profileTilesArrEmitter","profileTilesArrayUpdatedEmitter","profilePicsEmitter","receiverSitUserIdEmitter","refreshMemberTileEmitter","resetPickedDateEmitter","resetPasswordCodeEmitter","runBackgroundProcessMethodEmitter","runBiasModuleComponentNgAfterViewInitEmitter","runGetEnumsFromServerEmitter","runMemberTileAfterViewInitEmitter","runOffOnComponentNgAfterViewInitEmitter","saveSitUserToIndexedDbAndDictionaryEmitter","senderReceiverEmailsEmitter","setBreadcrumForPageSwitchEmitter","setPageEmitter","setPhotoMgmtPageEmitter","setPhotoMgmtPageGlyphEmitter","setMemberViewPageEmitter","setMemberViewGlyphMenuEmitter","setPhotoNavItemEmitter","setProfilePicsPageEmitter","signedInUserEmitter","sitUserBoxNonceEmitter","staffActionTypeEmitter","streamMessageEmitter","submitArticleSuccessfulEmitter","tempFileEmitter","theirActivityArrEmitter","toggleIsCancelZipInstructionEmitter","toggleIsMobileEmitter","toggleIsSendFileEmitter","toggleIsUploadEmitter","toggleIsWritePadEmitter","toggleModalDialogEmitter","toSetMemberViewMgmtModelEmitter","totalPhotoCountEmitter","updateBrdCrumRingEmitter","updateDistanceAndProfileNameAndOffOnEmitter","updateKvPhotoOnUserActionEmitter","updatePrimaryImageEmitter","upgradeEmitter","uploadedKvPhotoEmitter","uploadedProfilePicsEmitter","uploadedPicsBoxNonceEmitter","viewMemberEmitter","whenScrollEndsEmitter","yourLoginSuccessEmitter","yourCommunicatorEmitter","anchor","actionId","activatedComponentDictionary","articleDownloadFileName","articleSubjects","articlePagedParagraphs","avatarProfileTile","calledSitUserArr","chatHistoryArr","chatModel","connectionTokenArr","connectionToken","currentMemActGlyphForPhotoMgmt","currentMemActGlyphForViewMember","currentBrdcrmPage","offOnAwayElementRef","offOnRadioElementRef","isAppFeaturePage","isDevEnvironment","isProfileTileDictionaryCreatedFromIndexDb","masterErrorLogs","commActivities","memberModuleFactory","members","memberPhoto","anyModel","moduleFactory","myActivityArr","myOutboxConversations","myErrorLogs","myGroups","payPalOrder","photoMgmtGlyphMenuKvArr","primaryImageKvPhoto","primaryImageGlyphMenuKvArr","profileContentKvArr","profileModuleFactory","profileTileArrEmitterModel","resetPasswordCode","remoteDateLoadID","saltyPair","senderInfoArr","senderReceiverEmails","sharedModuleFactory","theirActivityArr","unionModuleFactory","createListeners","destroyListeners","activityElementRef","chatElementRef","communicationElementRef","keyValueElementRef","logregElementRef","memberElementRef","profileElementRef","staffElementRef","getDataFromLoginSuccess","onContainerCreated","onContainerDestroyed","registerContainer","destroyContainer","parentElemHeight","childElemHeight","childWidth","childeight","childWidthValue","geAppFeatureArr","getAnchor","setAnchor","getAppElementRef","getIsAppFeaturePage","setIsAppFeaturePage","getChatElementRef","setChatElementRef","getCommunicationElementRef","setCommunicationElementRef","getViewMemberGlyphs","setViewMemberGlyphs","getPhotoMgmtGlyphs","setPhotoMgmtGlyphs","getIsInizializationComplete","getKeyValueElementRef","setKeyValueElementRef","getLogRegModel","setLogRegModel","getLogregElementRef","setLogregElementRef","getMasterData","setMasterData","getMemberElementRef","setMemberElementRef","getMemberActivityElementRef","setMemberActivityElementRef","setPagedChats","getProfileElementRef","setProfileElementRef","getRemoteDateLoadID","setRemoteDateLoadID","getStaffElementRef","setStaffElementRef","getActionId","setActionId","_cdr","getActivedComponentDictionary","setActivedComponentDictionary","getActivatedRoute","setActivatedRoute","getAnyModel","setAnyModel","ca","getModuleFactory","setModuleFactory","getSharedModuleFactory","setSharedModuleFactory","getEnvironment","setEnvironment","getHostName","getUnionModuleFactory","setUnionModuleFactory","getMemberViewGlyphMenuKvArr","setMemberViewGlyphMenuKvArr","getPhotoMgmteGlyphMenuKvArr","setPhotoMgmteGlyphMenuKvArr","getPrimaryImageGlyphMenuKvArr","setPrimaryImageGlyphMenuKvArr","getBreadcrumRing","setBreadcrumRing","getChatModel","setChatModel","getConnectionToken","setConnectionToken","getCurrentBreadcrumPage","setCurrentBreadcrumPage","setCurrentPhoto","getENoteTile","setENoteTile","getHubConnection","setHubConnection","setDeviceInfo","getIsTablet","setIsTablet","getIsDesktop","setIsDesktop","getIsDevelopment","setIsDevelopment","setIsEditProfile","getMasterErrorLogs","setMasterErrorLogs","getMemberActivity","getCommunicationActivities","setCommunicationActivities","getMyActivityArr","setMyActivityArr","getMemberPhoto","getMembers","setMembers","getMessage","getIsModalVisible","setIsModalVisible","getMyOutboxConversations","setMyOutboxConversations","getMyErrorLogs","setMyErrorLogs","getMyGroup","setMyGroups","getIsLoggedOutByUser","getIsShowPhotoUpload","getIsToggleCamera","setIsToggleCamera","setPhotoLock","setPhotoUnLock","setPhotoMgmtAction","getPhotoMgmtServiceSitUser","setPhotoMgmtServiceSitUser","setPhotoPrivate","setPhotoPublic","getPrimaryImageKvPhoto","getNewProfileTile","getProfileTilesArr","getRemoteDataModel","setRemoteDataModel","getResetPasswordCode","getRouter","setRouter","getSalty","setSelectedProfileTile","getSenderInfoArr","setSenderInfoArr","getSenderAndReceiverEmails","setSenderAndReceiverEmails","getSpinner","setSpinner","getSpinnerCounter","setSpinnerCounter","getToggleCameraGlyphCounter","setToggleCameraGlyphCounter","getTheirActivityArr","setTheirActivityArr","getUpgrade","setUpgrade","getUserAndPageTitle","setUserAndPageTitle","setUserPhotoIds","setCommunicator","getYourCommunicator","setYourCommunicator","getYourLoginSuccess","setYourLoginSuccess","getWhenScrollEnds","setWhenScrollEnds","emitStaffActionType","emitActionId","emitActivatedRoute","emitAddress","emitAmountModel","emitAppInitUrl","emitBasicPager","emitBoxNonce","emitChatImageUploadData","emitChannelStreamMessage","emitChatActivityHistory","emitChatModel","emitChatModelToSetupComponent","emitCommunicationActivityBoxNonce","emitCommunicationActivity","emitCommType","emitEnoteBoxNonce","emitExecuteProfileInfoTasks","emitExitPage","emitBatchOfProfileTileIds","emitBlackListCredentialArr","emitBoxEmailBn","boxEmailBn","emitBreadcrumRing","emitCatchAllBackgroundImage","emitClearCreditCardData","emitClearMembersTiles","emitClearPageTitle","emitCheckLocalStorageForLoginSuccess","emitCheckOffOnStatus","emitCheckOffOnStatusFromProfileTile","emitYourCommunicator","emitConnectionToken","emitCreateDictionaryFromDbDixie","emitCurrentPageOnGlyphiconChange","emitCurrentPageNum","emitCurrentMemActGlyphForPhotoMgmt","emitCurrentMemActGlyphForViewMember","emitDatePicker","emitDisplayDifferentMemberView","emitDisplayGlyphiconMenu","emitDisplayBgiOutsideAngular","emitDisplayUserPicsFromServer","emitDistance","emitEditImage","emitEditParagraph","emitEmailTile","emitEnoteTile","emitFileChunkCount","emitFile","emitFiles","emitFileImage","emitFileImages","emitFileName","emitFireMcLoaderRoute","emitGestureDivId","emitGetKeys","emitFacilitatorAccessTokenSitUser","emitGroup","emitGroupChatMessage","emitImageFile","emitIndexDbBoxNonceData","emitIndexDbChatHistory","emitIndexDbChatHistoryIds","emitIndexDbDataFoundWithKey","emitIndexDbDataFoundWithIndex","emitIndexDbData","emitIndexDbDefaultPics","emitIndexDbEmailTileIds","emitIndexDbEmailTiles","emitIndexDbEnoteTileIds","emitIndexDbEnoteTiles","emitIndexDbLoginSuccess","emitIndexDbMemberActivities","emitInitModalDialogueComponent","emitIndexDbMyErrorLogs","emitIndexDbMyMemberActivities","emitIndexDbProfileTileIds","emitIndexDbProfileImageDictionary","emitIndexDbProfilePics","emitIndexDbProfileInfo","emitIndexDbProfileTiles","emitIndexDbPreference","emitIndexDbSaveSuccessful","emitIndexDbNgxSaveSuccessful","emitIndexDbSaveStore","emitIndexDbSitUser","emitIndexDbSitUsers","emitIndexDbSitUserBoxNonceData","emitIndexDbUser","emitIndexDbUserPhotoIds","emitIndexDbYourMemberActivities","emitIsBrowsingPic","emitIsConnectionEstablished","emitIsCreditCardComplete","emitIsImageUploadFormVisible","emitIsHome","emitIsLoginSuccess","emitIsReply","emitIsModal","emitIsModalVisible","emitIsSignupModal","emitIsToggleCamera","emitIsUnlocked","emitIsVsScroll","emitIsWaitingOnCurrStateOfUser","emitLoadChildren","emitLoadModule","emitLoadActivityComponent","emitLoadAppComponent","emitLoadStaffComponent","emitLoadChatComponent","emitLoadCheckboxRadioComponent","emitLoadCommunicationComponent","emitLoadGestureComponent","emitLoadLogregComponent","emitLoadKeyValueComponent","emitLoadLandingPage","emitLoadMasterComponents","emitLoadMemberComponent","emitLoadProfileComponent","emitLoadModalComponent","emitLoadSharedComponent","emitLoadSlaveComponents","emitLoadSpinnerComponent","emitLoginSuccess","emitMailBox","emitMainTopCss","emitMCLoader","emitMCLoaderToNavigate","emitMemberPhoto","emitMemberActivity","emitCommunicationActivities","emitToSetMemberViewMgmtModel","emitMembers","emitMyGroups","emitNavbarActionType","emitOffOn","emitOffOnResult","emitOffOnStatusChange","emitOpenModal","emitPagedProfileImages","emitPagedChats","emitParagraph","emitPagerPhotoMgmt","emitPagerVKvPhotoNav","emitPhotoBn","emitPhotoLockUnLock","emitPhotoMgmtMenuObservable","emitPhotoMgmtAction","emitProfile","emitProfileImage","emitProfileImageArr","emitProfileImageKvArr","emitProfileInfo","emitProfileInfoView","emitProfileTileComplete","emitProfileTilesArr","emitProfileTilesArrayUpdated","emitProfilePics","emitReceiverSitUserId","emitRefreshPage","emitRefreshMemberTile","emitReturnUrl","emitRunBiasModuleComponentNgAfterViewInit","emitRunGetEnumsFromServer","emitRunMemberTileAfterViewInit","emitRunOffOnComponentNgAfterViewInit","emitSaltyPair","emitSelectedProfileTile","emitSenderReceiverEmails","emitSetBreadcrumForPage","emitSetMemberViewPage","emitSetPhotoNavItem","emitSetPhotoMgmtPage","emitSetPhotoMgmtPageGlyph","emitSetProfilePicsPage","emitSignedInUser","emitSitUser","emitSitUserBoxNonce","emitStreamMessage","emitSubmitArticleSuccessful","emitTempFile","emitTheirActivityArr","emitToggleAccordion","emitToggleIsCancelZipInstruction","emitToggleIsWritePad","emitToggleIsMobile","emitToggleIsSendFile","emitToggleIsUpload","emitToggleModalDialog","emitUpdateBrdCrumRing","emitUpdateKvPhotoOnUserAction","emitUpdatePrimaryImage","emitUpgrade","emitUpgraded","emitUploadedProfilePics","emitUploadedPicsBoxNonce","emitViewMember","emitYourLoginSuccess","deserialize","serialize","reverseES6","reverseUsingReduce","rev","reverseUsingRecursion","reverseUsingForLoop","reversed","firstCharToLowerCase","testReverseOnItself","revArr","revArrStr","serialized","deserialized","firstIndexOf","trimBothQuotes","trimSingleQuotes","replacement","trimDoubleQuotes","toCamelCaseNotUsingLodash","ltr","idx","capitalizeFirstLetter","string","lowercaseFirstLetter","toPascalCase","setRawImageData","rawImageData","string2Unit8Arr","atob","unit8Arr2Str","btoa","getMonthName","mimeTypes","Sys","createMimeType","getMimeType","typ","typArr","generateFileType","fileExtension","lineBreak","filterFilter","toByteArray","hexString","unescape","b64Str","escape","b64DecodeUnicode","buff","encodeBase64","b64ToArrBuff","arrBuff","Buffer","base64String","readFile","onLoadCallback","reader","readAsText","stringToArrayBuffer","enc","blob","Blob","readAsArrayBuffer","blobToString","u","createObjectURL","revokeObjectURL","responseText","BlobToBase64","base64toBlob","bytes","base64toUint8Array","base64toImageUrl","b2Str","readUploadedFileAsText","inputFile","temporaryFileReader","handleUpload","fileContents","authorization","fonts","genderArr","sexualitieArr","sandBoxJson","enumsObservable","accountMessagesObservable","blackListCredentialsObservable","sandBoxObservable","enumsCallCounter","getAuthorizationFromServer","getAccountMessagesFromServer","getSandBoxJsonFromServer","getSandBoxJson","getAccountMessagesObservable","getEnumsObservable","allSpecialCharacters","allImageTypesDataPattern1","allImageTypesDataPattern2","allImageTypesDataPattern4","allImageTypesDataPattern5","allImageTypesDataPattern6","photoIdOrPhotoBnIdPattern","photoUrlPostfixPattern","camelCasePattern","pascalCasePattern0","pascalCasePattern1","bracketCurlyPatternGood","bracketCurlyPattern","bracketArrayPattern","bracketFnPattern","quotePattern","quotedWordPattern1","quotedWordPattern2","imagePngReplacement","quoteReplacement","angularElementRef","getCamelKey","isValue","camelKey","trimQuote","trimBrackets","getCamelValue","camelValue","getCamelCasedFromKV","cck","ccv","getCamelCasedWord","getRawImageData","outImageData","imageFileName","outImageFileName","tRawImage","replaceJpegOrSvgWithPngInRawImageData","allImageTypesPattern","bracketType","addBrackets","trimmed3","prepareInputForJsonParse","firstChar","lastChar","toCamelCasedPhotoModelString","kvWord","kvWordArr","word","performanceTimed","performance","getCamelCasedWithPerformanceTimed","outMessage","breadcrumServiceStatic","constantServiceStatic","copyServiceStatic","dateStringServiceStatic","jsRegExpServiceStatic","unitConverstionServiceStatic","setBreadcrumServiceStatic","bcs","getBreadcrumServiceStatic","setConstantServiceStatic","getConstantServiceStatic","setCopyServiceStatic","cps","getCopyServiceStatic","setDateStringServiceStatic","dss","getDateStringServiceStatic","setInMemoryDataServiceStatic","ims","setJsRegExpServiceStatic","getJsRegExpServiceStatic","setUnitConversionServiceStatic","ucs","getUnitConversionServiceStatic","strings","CountCharInString","string2Number","pascalCasePattern","pascalCaseToCamelCase","propname","convertPropertyNames","converterFn","r","apply","L","testCamelCase","originalObject","converted","charArr","outStr","getTicksFromSitUserKey","camelToPascalize","chr","trimQuotes","chars","secondPart","postFixes","dataURLtoFile","filename","mimeMatch","mime","bstr","u8arr","wdth","isValidB64","getAbStr","buffertoUnit8Array","buf","ab","ArrayBuffer","view","Unit8ArraytoBuffer","alloc","byteLength","readUploadedFileAsArrayBuffer","readStringUsingFileReaderAsArrayBuffer","inputstring","encoding","getImageFileAsBlob","ab2stBase64","tByff","ab2str","ab2stHex","ab2stISO88592","str2Ab","st","base64Str2Ab","dataUriStr2Ab","base64DataUriStr2Ab","Decodeuint8arr","uint8array","TextDecoder","Encodeuint8arr","myString","TextEncoder","createBlob","createBlobElement","rel","abToStr","arrayBufferToString","bb","unit8ArayToString","stringArray","jsonToArray","binArrayToJson","binArray","binArrayToString","tempPicStr","readFileContent","getFileTypeWhileUploading","int32View","Int32Array","verified_type","saltFile","unsubscribed","readFileDefArr","nvAnyArr","tempFileStrArr","sendModel","signedInSitUser","pBnArr","prepareUploadedKvPhotoBn","prepareUploadedKvPhotoBnOld","changeListener","saveFile","toggleIsUpload","getFormDataAndUploadStatus"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}