Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add 'takeoffer' API method #4673

Merged
merged 2 commits into from
Oct 22, 2020
Merged

Add 'takeoffer' API method #4673

merged 2 commits into from
Oct 22, 2020

Conversation

ghubstan
Copy link
Member

PR #4672 has to be reviewed & merged before this PR.

  • Add new core.offer.takeoffer.TakeOfferModel

    Would have been nice to move more logic from
    bisq.desktop.main.offer.takeoffer.TakeOfferDataModel,
    but it has JFX dependencies that cannot be use in :core.

  • Add grpc protos to support takeoffer, confirmpaymentsent, confirmpaymentreceived

    Only takeoffer is implemented in this commit.

  • Refactor OfferInfo grpc proto wrapper, and add offer state field

  • Add new TradeInfo grpc proto wrapper

  • Implement takeoffer on server and cli side

  • Refactor offer/trade tests, add test cases

These refactoring changes are for reducing existing and potential
duplication coming with the addition of new trading protocol support
in the gRPC API.  Some minor styling and logic simplification changes
are also include.

- Convert OfferUtil to injected singleton, and move various offer related
  utility methods into it.

- Delete both MakerFeeProvider classes, which were wrappers around the same
  static old OfferUtil method.

- Inject OfferUtil into CreateOfferDataModel, CreateOfferViewModel,
  TakeOfferDataModel, TakeOfferViewModel, MutableOfferDataModel,
  MutableOfferViewModel, OfferDataModel, EditOfferDataModel,
  EditOfferViewModel

- Refactor TakeOfferViewModel

	Use OfferUtil, remove unused fields & methods.
	Made minor logic simplification, style and formatting changes.

- MutableOfferDataModel

	Made minor logic simplification, style and formatting changes.

- MutableOfferView uses new paymentAccount.isHalCashAccount().

- MutableOfferViewModel

	Refactored to use new VolumeUtil, CoinUtil, OfferUtil.
	Removed unused fields & accessors.
	Made minor style change.

- Refactored OfferDataModel to use new OfferUtil

- Refactor CreateOfferService

	Inject and use OfferUtil
	Move some utility methods to OfferUtil
	Remove unused fields

- Offer

	Refactored to use new VolumeUtil for volume calculations.
	Made stateProperty and errorMessageProperty fields private.

- PaymentAccount

	Moved isHalCashAccount type check to this class.
	Moved getTradeCurrency logic to this class.

- Contract, radeStatistics2, TradeStatistics3

	Refactored to use new VolumeUtil for volume calculations.

- Trade

	Refactored to use new VolumeUtil for volume calculations.
	Made minor logic simplification, style and formatting changes.

- CoinUtil

	Moved some coin utility methods into this class

- CoinUtilTest

	Moved (coin related) tests from CoinCryptoUtilsTest and OfferUtilTest
	into CoinUtilTest, and deleted OfferUtilTest, CoinCryptoUtilsTest.

- Adjust create and edit offer tests to model refactoring
- Add new core.offer.takeoffer.TakeOfferModel

	Would have been nice to move more logic from
	bisq.desktop.main.offer.takeoffer.TakeOfferDataModel,
	but it has JFX dependencies that cannot be use in :core.

- Add grpc protos to support takeoffer, confirmpaymentsent, confirmpaymentreceived

	Only takeoffer is implemented in this commit.

- Refactor OfferInfo grpc proto wrapper, and add offer state field

- Add new TradeInfo grpc proto wrapper

- Implement takeoffer on server and cli side

- Refactor offer/trade tests, add test cases
Copy link
Member

@sqrrm sqrrm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some smaller comments, but over all I think it looks good again.

private Volume volume;

@Inject
public TakeOfferModel(AccountAgeWitnessService accountAgeWitnessService,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a lot of code that would be nice to reuse from TakeOfferDataModel here. Can be done later though in some pure refactor commit.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mentioned that I wanted to move more from TakeOfferDataModel into core TakeOfferModel`, but I could not pass JFX property values into the new core model. If you or @chimp1984 know how, do tell.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't think we want to have any jfx dependency in core, rather some stuff could probably be rewritten in TakeOfferDataModel to utilize the new class.

ghubstan added a commit to ghubstan/bisq that referenced this pull request Oct 22, 2020
Resolves issue found during bisq-network#4673
review, and mentioned in comment
bisq-network#4673 (comment)
ghubstan added a commit to ghubstan/bisq that referenced this pull request Oct 22, 2020
Resolves issue found during bisq-network#4673
review, and suggested in comment
bisq-network#4673 (comment)
ghubstan added a commit to ghubstan/bisq that referenced this pull request Oct 22, 2020
Resolves issue found during bisq-network#4673
review, and suggested in comment
bisq-network#4673 (comment)

Also shortened comment lines to < 90 chars.
ghubstan added a commit to ghubstan/bisq that referenced this pull request Oct 22, 2020
Resolves issue found during bisq-network#4673
review, and suggested in comment
bisq-network#4673 (comment)
@sqrrm sqrrm merged commit e809af3 into bisq-network:master Oct 22, 2020
@ghubstan ghubstan deleted the 2-takeoffer branch October 22, 2020 15:19
@ripcurlx ripcurlx added this to the v1.5.0 milestone Nov 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants