Skip to content

Instantly share code, notes, and snippets.

@alexytiger
alexytiger / truffle-config.js
Last active February 20, 2020 00:54
e-book
const HDWalletProvider = require('@truffle/hdwallet-provider');
const { readFileSync } = require('fs');
const path = require('path');
module.exports = {
networks: {
ganache: {
host: "127.0.0.1",
pragma solidity >=0.4.22 <0.7.0;
import "./HitchensUnorderedKeySet.sol";
import "./SafeRemotePurchase.sol";
import "./Ownable.sol";
contract FleaMarketFactory is Ownable {
using HitchensUnorderedKeySetLib for HitchensUnorderedKeySetLib.Set;
HitchensUnorderedKeySetLib.Set private widgetSet;
/**
based on
https://solidity.readthedocs.io/en/v0.5.14/solidity-by-example.html
*/
pragma solidity >=0.4.22 <0.7.0;
import "@openzeppelin/contracts/math/SafeMath.sol";
import "./Ownable.sol";
contract SafeRemotePurchase is Ownable {
public confirmDelivery(contractAddress: string): Observable<string> {
const contract: Contract = new ethers.Contract(contractAddress,
this.abi, this.provider.getSigner());
const token = contract.buyerConfirmReceived();
return from(token)
.pipe(
switchMap((tx: any) => {
public confirmPurchase(contractAddress: string,
etherValue: string): Observable<string> {
const contract: Contract =
new ethers.Contract(contractAddress, this.abi,
this.provider.getSigner());
const wei = utils.parseEther(etherValue);
const token = contract.buyerPurchase({
value: wei
confirmBuy$ = createEffect(
() =>
this.actions$.pipe(
ofType(PurchaseContractActions.confirmBuy),
withLatestFrom(
this.store$.pipe(select(fromStore.getSelectedPurchaseContract))),
switchMap(([payload, contract]) => {
const dialogConfig = new MatDialogConfig();
dialogConfig.width = '420px';
public removePurchaseContract(productKey: string): Observable<string> {
const bytes32Key = utils.formatBytes32String(productKey);
const token = this.contractToken.removeContractByKey(bytes32Key);
return from(token)
.pipe(
switchMap((tx: any) => {
console.log('removeContractByKey Transaction', tx);
removeProduct$ = createEffect(
() =>
this.actions$.pipe(
ofType(PurchaseContractActions.removePurchaseContract),
map(payload => payload.key),
switchMap(key => {
const dialogConfig = new MatDialogConfig();
dialogConfig.width = '420px';
dialogConfig.disableClose = true;
reload$ = createEffect(
() =>
this.actions$.pipe(
ofType(
PurchaseContractActions.abortSelectedPurchaseContractSuccess,
PurchaseContractActions.confirmBuySuccess,
PurchaseContractActions.confirmDeliverySuccess,
PurchaseContractActions.releaseEscrowSuccess,
PurchaseContractActions.withdrawByOwnerSuccess),
withLatestFrom(
abortContract$ = createEffect(
() =>
this.actions$.pipe(
ofType(PurchaseContractActions.abortSelectedPurchaseContract),
withLatestFrom(
this.store$.pipe(select(fromStore.getSelectedPurchaseContract))),
switchMap(([action, contract]) => {
const dialogConfig = new MatDialogConfig();
dialogConfig.width = '420px';