├── .gitignore
├── .gitmodules
├── BitMarkets
├── Base.lproj
│ └── MainMenu.xib
├── Bitmarkets.temp_caseinsensitive_rename-Info.plist
├── Bitmarkets.temp_caseinsensitive_rename-Prefix.pch
├── Classes
│ └── Market
│ │ ├── Base
│ │ ├── Bitmarkets.h
│ │ ├── Bitmarkets.m
│ │ ├── MKAboutNode.h
│ │ ├── MKAboutNode.m
│ │ ├── MKDirectMessages.h
│ │ ├── MKDirectMessages.m
│ │ ├── MKMarketChannel.h
│ │ ├── MKMarketChannel.m
│ │ ├── MKMarkets.h
│ │ ├── MKMarkets.m
│ │ ├── MKRootNode.h
│ │ ├── MKRootNode.m
│ │ ├── MKUpdateMessage.h
│ │ ├── MKUpdateMessage.m
│ │ ├── MKUpdatesSubscription.h
│ │ └── MKUpdatesSubscription.m
│ │ ├── Groups
│ │ ├── MKCategory.h
│ │ ├── MKCategory.m
│ │ ├── MKGroup.h
│ │ ├── MKGroup.m
│ │ ├── MKMsgGroup.h
│ │ ├── MKMsgGroup.m
│ │ ├── MKRegion.h
│ │ └── MKRegion.m
│ │ ├── Helpers
│ │ ├── MKCurrency.h
│ │ ├── MKCurrency.m
│ │ ├── MKExchangeRate.h
│ │ └── MKExchangeRate.m
│ │ ├── Transactions
│ │ ├── Buys
│ │ │ ├── MKBuy.h
│ │ │ ├── MKBuy.m
│ │ │ ├── MKBuys.h
│ │ │ ├── MKBuys.m
│ │ │ └── Stages
│ │ │ │ ├── Bid
│ │ │ │ ├── MKBidMsg.h
│ │ │ │ ├── MKBidMsg.m
│ │ │ │ ├── MKBuyBid.h
│ │ │ │ └── MKBuyBid.m
│ │ │ │ ├── Complete
│ │ │ │ ├── MKBuyComplete.h
│ │ │ │ └── MKBuyComplete.m
│ │ │ │ ├── Delivery
│ │ │ │ ├── MKBuyDelivery.h
│ │ │ │ ├── MKBuyDelivery.m
│ │ │ │ ├── MKBuyDeliveryAddress.h
│ │ │ │ ├── MKBuyDeliveryAddress.m
│ │ │ │ ├── MKBuyerAddressMsg.h
│ │ │ │ └── MKBuyerAddressMsg.m
│ │ │ │ ├── Lock
│ │ │ │ ├── MKBuyLockEscrow.h
│ │ │ │ ├── MKBuyLockEscrow.m
│ │ │ │ ├── MKBuyLockEscrowMsg.h
│ │ │ │ └── MKBuyLockEscrowMsg.m
│ │ │ │ └── Release
│ │ │ │ ├── MKBuyPaymentMsg.h
│ │ │ │ ├── MKBuyPaymentMsg.m
│ │ │ │ ├── MKBuyPostPaymentMsg.h
│ │ │ │ ├── MKBuyPostPaymentMsg.m
│ │ │ │ ├── MKBuyPostRefundMsg.h
│ │ │ │ ├── MKBuyPostRefundMsg.m
│ │ │ │ ├── MKBuyRefundRequestMsg.h
│ │ │ │ ├── MKBuyRefundRequestMsg.m
│ │ │ │ ├── MKBuyReleaseEscrow.h
│ │ │ │ └── MKBuyReleaseEscrow.m
│ │ ├── MKDeliveryAddress.h
│ │ ├── MKDeliveryAddress.m
│ │ ├── MKEscrow.h
│ │ ├── MKEscrow.m
│ │ ├── MKLock.h
│ │ ├── MKLock.m
│ │ ├── MKRelease.h
│ │ ├── MKRelease.m
│ │ ├── MKStage.h
│ │ ├── MKStage.m
│ │ ├── MKTransaction.h
│ │ ├── MKTransaction.m
│ │ ├── MKTransactions.h
│ │ ├── MKTransactions.m
│ │ ├── Msg
│ │ │ ├── MKCancelConfirmed.h
│ │ │ ├── MKCancelConfirmed.m
│ │ │ ├── MKCancelMsg.h
│ │ │ ├── MKCancelMsg.m
│ │ │ ├── MKConfirmLockEscrowMsg.h
│ │ │ ├── MKConfirmLockEscrowMsg.m
│ │ │ ├── MKConfirmMsg.h
│ │ │ ├── MKConfirmMsg.m
│ │ │ ├── MKConfirmPaymentMsg.h
│ │ │ ├── MKConfirmPaymentMsg.m
│ │ │ ├── MKConfirmRefundMsg.h
│ │ │ ├── MKConfirmRefundMsg.m
│ │ │ ├── MKLockMsg.h
│ │ │ ├── MKLockMsg.m
│ │ │ ├── MKMessages.h
│ │ │ ├── MKMessages.m
│ │ │ ├── MKMsg.h
│ │ │ ├── MKMsg.m
│ │ │ ├── MKSellLockEscrowMsg.h
│ │ │ ├── MKSellLockEscrowMsg.m
│ │ │ ├── MKSetupLockMsg.h
│ │ │ ├── MKSetupLockMsg.m
│ │ │ ├── MKTxMsg.h
│ │ │ └── MKTxMsg.m
│ │ └── Sells
│ │ │ ├── MKSell.h
│ │ │ ├── MKSell.m
│ │ │ ├── MKSells.h
│ │ │ ├── MKSells.m
│ │ │ └── Stages
│ │ │ ├── Bid
│ │ │ ├── MKAcceptBidMsg.h
│ │ │ ├── MKAcceptBidMsg.m
│ │ │ ├── MKRejectBidMsg.h
│ │ │ ├── MKRejectBidMsg.m
│ │ │ ├── MKSellBid.h
│ │ │ ├── MKSellBid.m
│ │ │ ├── MKSellBids.h
│ │ │ └── MKSellBids.m
│ │ │ ├── Complete
│ │ │ ├── MKSellComplete.h
│ │ │ └── MKSellComplete.m
│ │ │ ├── Delivery
│ │ │ ├── MKSellDelivery.h
│ │ │ ├── MKSellDelivery.m
│ │ │ ├── MKSellDeliveryAddress.h
│ │ │ ├── MKSellDeliveryAddress.m
│ │ │ ├── MKSellPostedMsg.h
│ │ │ └── MKSellPostedMsg.m
│ │ │ ├── Lock
│ │ │ ├── MKSellLockEscrow.h
│ │ │ └── MKSellLockEscrow.m
│ │ │ ├── Post
│ │ │ ├── MKClosePostMsg.h
│ │ │ ├── MKClosePostMsg.m
│ │ │ ├── MKPost.h
│ │ │ ├── MKPost.m
│ │ │ ├── MKPostMsg.h
│ │ │ └── MKPostMsg.m
│ │ │ └── Release
│ │ │ ├── MKSellAcceptPaymentMsg.h
│ │ │ ├── MKSellAcceptPaymentMsg.m
│ │ │ ├── MKSellAcceptRefundRequestMsg.h
│ │ │ ├── MKSellAcceptRefundRequestMsg.m
│ │ │ ├── MKSellRejectRefundRequestMsg.h
│ │ │ ├── MKSellRejectRefundRequestMsg.m
│ │ │ ├── MKSellReleaseEscrow.h
│ │ │ └── MKSellReleaseEscrow.m
│ │ └── Views
│ │ ├── BNKeyView.h
│ │ ├── BNKeyView.m
│ │ ├── BNWalletView.h
│ │ ├── BNWalletView.m
│ │ ├── MKActionsView.h
│ │ ├── MKActionsView.m
│ │ ├── MKAttachmentView.h
│ │ ├── MKAttachmentView.m
│ │ ├── MKDragFileWell.h
│ │ ├── MKDragFileWell.m
│ │ ├── MKNodeView.h
│ │ ├── MKNodeView.m
│ │ ├── MKPanelManager.h
│ │ ├── MKPanelManager.m
│ │ ├── MKPanelView.h
│ │ ├── MKPanelView.m
│ │ ├── MKPasswordView.h
│ │ ├── MKPasswordView.m
│ │ ├── MKPostView.h
│ │ ├── MKPostView.m
│ │ ├── MKStatusView.h
│ │ ├── MKStatusView.m
│ │ ├── MKStepView.h
│ │ ├── MKStepView.m
│ │ ├── MKStepsView.h
│ │ ├── MKStepsView.m
│ │ ├── MKTextFieldCell.h
│ │ ├── MKTextFieldCell.m
│ │ ├── MKTxProgressView.h
│ │ └── MKTxProgressView.m
├── Images.xcassets
│ └── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── icon_128x128.png
│ │ ├── icon_128x128@2x.png
│ │ ├── icon_16x16.png
│ │ ├── icon_16x16@2x.png
│ │ ├── icon_256x256.png
│ │ ├── icon_256x256@2x.png
│ │ ├── icon_32x32.png
│ │ ├── icon_32x32@2x.png
│ │ ├── icon_512x512.png
│ │ └── icon_515x512@2x.png
├── MKAppDelegate.h
├── MKAppDelegate.m
├── en.lproj
│ └── InfoPlist.strings
├── main.m
└── resources
│ ├── app_icon
│ ├── icon_128x128.png
│ ├── icon_128x128@2x.png
│ ├── icon_16x16.png
│ ├── icon_16x16@2x.png
│ ├── icon_256x256.png
│ ├── icon_256x256@2x.png
│ ├── icon_32x32.png
│ ├── icon_32x32@2x.png
│ ├── icon_512x512.png
│ └── icon_515x512@2x.png
│ ├── categories copy.json
│ ├── categories.json
│ ├── icons
│ ├── Top
│ │ ├── add_active.png
│ │ ├── add_inactive.png
│ │ ├── compose_active.png
│ │ ├── composeicon_inactive.png
│ │ ├── delete_active.png
│ │ ├── delete_inactive.png
│ │ ├── forward_active.png
│ │ ├── message_active.png
│ │ ├── message_inactive.png
│ │ ├── refresh_active.png
│ │ ├── refresh_inactive.png
│ │ ├── reply_active.png
│ │ ├── reply_inactive.png
│ │ ├── send_active.png
│ │ └── send_inactive.png
│ ├── categories
│ │ ├── bitcoin.png
│ │ ├── camera.png
│ │ ├── clothing.png
│ │ ├── computing.png
│ │ ├── litecoin.png
│ │ ├── mobile.png
│ │ ├── music.png
│ │ ├── sports.png
│ │ └── tv.png
│ ├── left_active.png
│ ├── location_active.png
│ ├── profile_active.png
│ └── right_active.png
│ ├── licenses
│ ├── bitcoinj
│ │ └── COPYING.txt
│ ├── bitmessage
│ │ └── COPYING.txt
│ ├── open sans
│ │ └── LICENSE.txt
│ ├── python
│ │ └── LICENSE.txt
│ ├── tor
│ │ └── LICENSE.txt
│ ├── xmlrpc
│ │ └── LICENSE.txt
│ └── zipkit
│ │ └── COPYING.txt
│ ├── regions.json
│ ├── regions_hierarchical.json
│ └── themes
│ └── themes.json
├── BitMarketsTests
├── BitMarketsTests.m
├── Bitmarkets.temp_caseinsensitive_renameTests-Info.plist
└── en.lproj
│ └── InfoPlist.strings
├── Bitmarkets.xcodeproj
├── project.pbxproj
└── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── Bitmarkets.xcscmblueprint
├── CHANGELOG
├── LICENSE
├── Notes
├── Escrow.txt
└── ItemAttributes.txt
├── README.md
├── ToDo.txt
├── Vendor
├── Sparkle
│ └── Sparkle.framework
│ │ ├── Headers
│ │ ├── Resources
│ │ ├── Sparkle
│ │ └── Versions
│ │ ├── A
│ │ ├── Headers
│ │ │ ├── SUAppcast.h
│ │ │ ├── SUAppcastItem.h
│ │ │ ├── SUStandardVersionComparator.h
│ │ │ ├── SUUpdater.h
│ │ │ ├── SUVersionComparisonProtocol.h
│ │ │ ├── SUVersionDisplayProtocol.h
│ │ │ └── Sparkle.h
│ │ ├── Resources
│ │ │ ├── Autoupdate.app
│ │ │ │ └── Contents
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── MacOS
│ │ │ │ │ └── Autoupdate
│ │ │ │ │ ├── PkgInfo
│ │ │ │ │ └── Resources
│ │ │ │ │ ├── AppIcon.icns
│ │ │ │ │ ├── SUStatus.nib
│ │ │ │ │ ├── ar.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── cs.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── da.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── de.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── el.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── en.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── es.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── fr.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── is.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── it.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── ja.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── ko.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── nb.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── nl.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── pl.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── pt_BR.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── pt_PT.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── ro.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── ru.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── sk.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── sl.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── sv.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── th.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── tr.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── uk.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ ├── zh_CN.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ └── zh_TW.lproj
│ │ │ │ │ └── Sparkle.strings
│ │ │ ├── Info.plist
│ │ │ ├── SUModelTranslation.plist
│ │ │ ├── SUStatus.nib
│ │ │ ├── ar.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── cs.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── da.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── de.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── el.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── en.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── es.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── fr.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── fr_CA.lproj
│ │ │ ├── is.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── it.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── ja.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── ko.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── nb.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── nl.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── pl.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── pt.lproj
│ │ │ ├── pt_BR.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── pt_PT.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── ro.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── ru.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── sk.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── sl.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── sv.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── th.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── tr.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── uk.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ ├── zh_CN.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ │ └── zh_TW.lproj
│ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── SUUpdatePermissionPrompt.nib
│ │ │ │ └── Sparkle.strings
│ │ └── Sparkle
│ │ └── Current
└── fonts
│ └── Open_Sans
│ ├── LICENSE.txt
│ ├── OpenSans-Bold.ttf
│ ├── OpenSans-BoldItalic.ttf
│ ├── OpenSans-ExtraBold.ttf
│ ├── OpenSans-ExtraBoldItalic.ttf
│ ├── OpenSans-Italic.ttf
│ ├── OpenSans-Light.ttf
│ ├── OpenSans-LightItalic.ttf
│ ├── OpenSans-Regular.ttf
│ ├── OpenSans-Semibold.ttf
│ └── OpenSans-SemiboldItalic.ttf
├── add.sh
├── checkout.sh
├── commit.sh
├── dist
├── generate_keys.sh
├── generate_xml.sh
├── sign_update.sh
└── template.xml
├── find_projects_path_errors.sh
├── init.sh
├── pull.sh
├── push.sh
└── status.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | .DS_Store
3 | */build/*
4 | *.pbxuser
5 | !default.pbxuser
6 | *.mode1v3
7 | !default.mode1v3
8 | *.mode2v3
9 | !default.mode2v3
10 | *.perspectivev3
11 | !default.perspectivev3
12 | xcuserdata
13 | profile
14 | *.moved-aside
15 | DerivedData
16 | .idea/
17 | *.hmap
18 | *.xccheckout
19 |
20 | #CocoaPods
21 | Pods
22 |
23 | Bitmarkets.zip
24 | dist/keys/*
25 | .metadata
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "submodules/BitmessageKit"]
2 | path = submodules/BitmessageKit
3 | url = git@github.com:Voluntarynet/BitmessageKit.git
4 | branch = master
5 | [submodule "submodules/FoundationCategoriesKit"]
6 | path = submodules/FoundationCategoriesKit
7 | url = git@github.com:Voluntarynet/FoundationCategoriesKit.git
8 | branch = master
9 | [submodule "submodules/NavKit"]
10 | path = submodules/NavKit
11 | url = git@github.com:Voluntarynet/NavKit.git
12 | branch = master
13 | [submodule "submodules/NavNodeKit"]
14 | path = submodules/NavNodeKit
15 | url = git@github.com:Voluntarynet/NavNodeKit.git
16 | branch = master
17 | [submodule "submodules/BitnashKit"]
18 | path = submodules/BitnashKit
19 | url = git@github.com:Voluntarynet/BitnashKit.git
20 | branch = master
21 |
--------------------------------------------------------------------------------
/BitMarkets/Bitmarkets.temp_caseinsensitive_rename-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ATSApplicationFontsPath
6 | fonts/Open_Sans
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIconFile
12 |
13 | CFBundleIdentifier
14 | net.voluntary.${PRODUCT_NAME:rfc1034identifier}
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | ${PRODUCT_NAME}
19 | CFBundlePackageType
20 | APPL
21 | CFBundleShortVersionString
22 | 0.9.2
23 | CFBundleSignature
24 | ????
25 | CFBundleVersion
26 | 0.9.2
27 | LSApplicationCategoryType
28 | public.app-category.business
29 | LSMinimumSystemVersion
30 | ${MACOSX_DEPLOYMENT_TARGET}
31 | NSAppTransportSecurity
32 |
33 | NSAllowsArbitraryLoads
34 |
35 |
36 | NSHumanReadableCopyright
37 | Copyright © 2014 voluntary.net. All rights reserved.
38 | NSMainNibFile
39 | MainMenu
40 | NSPrincipalClass
41 | NSApplication
42 | SUAllowsAutomaticUpdates
43 |
44 | SUEnableAutomaticChecks
45 |
46 | SUFeedURL
47 | http://voluntary.net/bitmarkets/sparkle/feed.rss
48 | SUScheduledCheckInterval
49 | 86400
50 | SUShowReleaseNotes
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/BitMarkets/Bitmarkets.temp_caseinsensitive_rename-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #ifdef __OBJC__
8 | #import
9 | #endif
10 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/Bitmarkets.h:
--------------------------------------------------------------------------------
1 | //
2 | // Bitmarkets.h
3 | // Bitmarkets
4 | //
5 | // Created by Steve Dekorte on 10/28/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface Bitmarkets : NSObject
12 |
13 | + nodeRoot;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/Bitmarkets.m:
--------------------------------------------------------------------------------
1 | //
2 | // Bitmarkets.m
3 | // Bitmarkets
4 | //
5 | // Created by Steve Dekorte on 10/28/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "Bitmarkets.h"
10 | #import "MKRootNode.h"
11 |
12 | @implementation Bitmarkets
13 |
14 | + nodeRoot
15 | {
16 | return MKRootNode.sharedMKRootNode;
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKAboutNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKAboutNode.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/21/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MKAboutNode : NavInfoNode
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKDirectMessages.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKDirectMessages.h
3 | // Bitmarkets
4 | //
5 | // Created by Steve Dekorte on 12/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MKDirectMessages : NSObject
12 |
13 | @property (assign, nonatomic) BOOL needsToFetch;
14 |
15 | - (void)fetch;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKMarketChannel.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKMarketChannel.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 | // This object reads messages from the bitmarkets channel,
9 | // creates objects for each as a child to the appropriate
10 | // MKCategory
11 | //
12 |
13 | #import
14 | #import
15 |
16 | @interface MKMarketChannel : NavNode
17 |
18 | @property (strong, nonatomic) NSString *passphrase;
19 | @property (strong, nonatomic) BMChannel *channel;
20 |
21 | @property (assign, nonatomic) BOOL needsToFetchChannelMessages;
22 | //@property (assign, nonatomic) BOOL needsToFetchDirectMessages;
23 | @property (assign, nonatomic) long totalPostCount;
24 |
25 | - (void)fetch;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKMarkets.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKMarkets.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "MKMarketChannel.h"
12 | #import "MKDirectMessages.h"
13 | #import "MKUpdatesSubscription.h"
14 |
15 | #import "MKRegion.h"
16 | #import "MKCategory.h"
17 |
18 | #import "MKBuys.h"
19 | #import "MKBuy.h"
20 |
21 | #import "MKSells.h"
22 | #import "MKSell.h"
23 |
24 | @interface MKMarkets : NavInfoNode
25 |
26 | @property (strong, nonatomic) MKRegion *rootRegion;
27 |
28 | //@property (strong, nonatomic) MKCategory *rootCategory;
29 | @property (strong, nonatomic) MKMarketChannel *mkChannel;
30 | @property (strong, nonatomic) MKDirectMessages *mkDirectMessages;
31 | @property (strong, nonatomic) MKUpdatesSubscription *mkUpdatesSubscription;
32 |
33 | @property (strong, nonatomic) MKBuys *buys;
34 | @property (strong, nonatomic) MKSells *sells;
35 |
36 |
37 | - (void)read;
38 | - (void)write;
39 | - (BOOL)handleMsg:(MKMsg *)mkMsg;
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKMarkets.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKMarkets.m
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMarkets.h"
10 | #import "MKExchangeRate.h"
11 | #import
12 | #import
13 |
14 | @implementation MKMarkets
15 |
16 | - (id)init
17 | {
18 | self = [super init];
19 | self.nodeTitle = @"BitMarkets";
20 | self.nodeSuggestedWidth = @150;
21 |
22 | self.nodeShouldSortChildren = @NO;
23 |
24 | _rootRegion = (MKRegion *)[MKRegion rootInstance];
25 |
26 | [self addChild:self.rootRegion];
27 |
28 | if (NO)
29 | {
30 | [_rootRegion setShouldInlineChildren:YES];
31 | _rootRegion.nodeSuggestedWidth = @250;
32 | }
33 |
34 | self.mkChannel = [[MKMarketChannel alloc] init];
35 | [self addChild:self.mkChannel];
36 |
37 | self.mkDirectMessages = [[MKDirectMessages alloc] init];
38 | //[self addChild:self.mkDirectMessages];
39 |
40 | //self.mkUpdatesSubscription = [[MKUpdatesSubscription alloc] init];
41 |
42 | self.buys = [[MKBuys alloc] init];
43 | //[_buys read];
44 | [self addChild:_buys];
45 |
46 | self.sells = [[MKSells alloc] init];
47 | //[_sells read];
48 | [self addChild:_sells];
49 |
50 | [self.mkChannel performSelector:@selector(fetch) withObject:nil afterDelay:0.0];
51 | [self.rootRegion updateCounts];
52 | self.rootRegion.nodeDoesRememberChildPath = @YES;
53 |
54 | //[MKExchangeRate shared];
55 |
56 | [self setRefreshInterval:10];
57 | return self;
58 | }
59 |
60 | - (void)read
61 | {
62 | [_buys read];
63 | [_sells read];
64 | }
65 |
66 | - (void)write
67 | {
68 | [_buys write];
69 | [_sells write];
70 | }
71 |
72 | - (BOOL)handleMsg:(MKMsg *)msg
73 | {
74 | if ([self.sells handleMsg:msg])
75 | {
76 | return YES;
77 | }
78 |
79 | if ([self.buys handleMsg:msg])
80 | {
81 | return YES;
82 | }
83 |
84 | return NO;
85 | }
86 |
87 | - (void)refresh
88 | {
89 | if (BNErrorReport.sharedBNErrorReport.isOpen)
90 | {
91 | return;
92 | }
93 |
94 | @try
95 | {
96 | [self.sells update];
97 | [self.buys update];
98 | [self.mkChannel fetch];
99 |
100 | //[NSException raise:@"test error report" format:@""];
101 | }
102 | @catch (NSException *exception)
103 | {
104 | [BNErrorReport.sharedBNErrorReport reportException:exception];
105 | }
106 | }
107 |
108 | - (void)delete
109 | {
110 | return;
111 | }
112 |
113 | @end
114 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKRootNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKRootNode.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 4/15/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 | #import
13 |
14 | #import "MKMarkets.h"
15 | #import "MKSells.h"
16 | #import "MKBuys.h"
17 |
18 | @interface MKRootNode : NavInfoNode
19 |
20 | @property (strong, nonatomic) BMClient *bmClient;
21 | @property (strong, nonatomic) MKMarkets *markets;
22 | @property (strong, nonatomic) BNWallet *wallet;
23 |
24 | + (MKRootNode *)sharedMKRootNode;
25 | - (BMIdentity *)bitmarketsUserIdentity;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKUpdateMessage.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKUpdateMessage.h
3 | // Bitmarkets
4 | //
5 | // Created by Steve Dekorte on 12/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface MKUpdateMessage : NSObject
13 |
14 | @property (strong, nonatomic) NSDictionary *dict;
15 | @property (strong, nonatomic) BMMessage *bmMessage;
16 |
17 | - (NSString *)version;
18 | - (BOOL)isNewer;
19 | - (void)deleteIfOlder;
20 | - (void)showAlert;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKUpdateMessage.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKUpdateMessage.m
3 | // Bitmarkets
4 | //
5 | // Created by Steve Dekorte on 12/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 | // example update message
9 |
10 | /*
11 |
12 | {
13 | "_type" : "UpdateMsg",
14 | "version" : "0.0",
15 | "url" : "https://voluntary.net.s3.amazonaws.com/Bitmarkets.0.0.zip",
16 | "message" : "lots of fixes",
17 | "hashSha256" : "...",
18 | "commitHash" : "...",
19 | }
20 |
21 | */
22 |
23 | #import "MKUpdateMessage.h"
24 |
25 | @implementation MKUpdateMessage
26 |
27 | - (NSString *)currentVersion
28 | {
29 | NSDictionary *info = [NSBundle bundleForClass:[self class]].infoDictionary;
30 | NSString *versionString = [info objectForKey:@"CFBundleVersion"];
31 | return versionString;
32 | }
33 |
34 | - (NSString *)version
35 | {
36 | return [self.dict objectForKey:@"version"];
37 | }
38 |
39 | - (NSComparisonResult)compare:(id)anObject
40 | {
41 | return [self.version versionCompare:[(MKUpdateMessage *)anObject version]];
42 | }
43 |
44 | - (BOOL)isNewer
45 | {
46 | return [self.version versionCompare:self.currentVersion] == NSOrderedDescending;
47 | }
48 |
49 | - (BOOL)isCurrentVersion
50 | {
51 | return [self.version versionCompare:self.currentVersion] == NSOrderedSame;
52 | }
53 |
54 | - (void)deleteIfOlder
55 | {
56 | if (!self.isNewer)
57 | {
58 | [self.bmMessage delete];
59 | }
60 | }
61 |
62 | - (void)showAlert
63 | {
64 |
65 | }
66 |
67 | @end
68 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Base/MKUpdatesSubscription.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKUpdatesSubscription.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 | // This object reads messages from the bitmarkets channel,
9 | // creates objects for each as a child to the appropriate
10 | // MKCategory
11 | //
12 |
13 | #import
14 | #import
15 |
16 | @interface MKUpdatesSubscription : NavNode
17 |
18 | @property (strong, nonatomic) NSString *updatesAddress;
19 | @property (strong, nonatomic) BMSubscription *subscription;
20 |
21 | @property (assign) BOOL needsToFetch;
22 |
23 | @property (strong, nonatomic) NSMutableDictionary *shownMessages;
24 |
25 | - (void)fetch;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Groups/MKCategory.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKCategory.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/23/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsgGroup.h"
10 |
11 | @interface MKCategory : MKMsgGroup
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Groups/MKGroup.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKGroup.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/24/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 |
13 | //@class MKMsg;
14 |
15 | @interface MKGroup : NavInfoNode
16 |
17 | @property (strong, nonatomic) NSString *name;
18 | @property (strong, nonatomic) JSONDB *db;
19 | @property (strong, nonatomic) NSMutableArray *dictPropertyNames;
20 | //@property (assign, nonatomic) NSInteger count;
21 |
22 | + (MKGroup *)rootInstance;
23 |
24 | - (void)setDict:(NSDictionary *)dict;
25 | - (NSDictionary *)dict;
26 |
27 | - (void)setPropertiesDict:(NSDictionary *)dict;
28 | - (NSDictionary *)propertiesDict;
29 |
30 | - (void)addPropertyName:(NSString *)aName;
31 |
32 |
33 | - (void)read;
34 | - (void)write;
35 |
36 | - (NSArray *)groupSubpaths;
37 | - (NSArray *)groupNamePath;
38 |
39 | - (void)updateCounts;
40 | - (NSInteger)countOfLeafChildren;
41 |
42 | - (BNWallet *)runningWallet;
43 |
44 | //- (BOOL)handleMsg:(MKMsg *)mkMsg;
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Groups/MKMsgGroup.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKMsgGroup.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/19/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKGroup.h"
10 | #import "MKMsg.h"
11 |
12 | @interface MKMsgGroup : MKGroup
13 |
14 | - (BOOL)handleMsg:(MKMsg *)mkMsg;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Groups/MKMsgGroup.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKMsgGroup.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/19/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsgGroup.h"
10 | #import "MKMsg.h"
11 |
12 | @implementation MKMsgGroup
13 |
14 | - (BOOL)handleMsg:(MKMsg *)mkMsg // put in parent class of Buys and Sells
15 | {
16 | for (MKMsgGroup *child in self.children)
17 | {
18 | if ([child respondsToSelector:@selector(handleMsg:)])
19 | {
20 | BOOL didHandle = [child handleMsg:mkMsg];
21 |
22 | if (didHandle)
23 | {
24 | return YES;
25 | }
26 | }
27 | }
28 |
29 | return NO;
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Groups/MKRegion.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKRegion.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/24/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsgGroup.h"
10 |
11 | @interface MKRegion : MKMsgGroup
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Groups/MKRegion.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKRegion.m
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/24/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKRegion.h"
10 | #import "MKCategory.h"
11 |
12 | @implementation MKRegion
13 |
14 | - (id)init
15 | {
16 | self = [super init];
17 | self.nodeSuggestedWidth = @150;
18 | self.nodeShouldSortChildren = @YES;
19 | return self;
20 | }
21 |
22 | - (JSONDB *)db
23 | {
24 | JSONDB *db = [super db];
25 | db.name = @"regions.json";
26 | db.location = JSONDB_IN_APP_WRAPPER;
27 | return db;
28 | }
29 |
30 | - (void)setDict:(NSDictionary *)dict
31 | {
32 | [super setDict:dict];
33 |
34 | if (self.children.count == 0)
35 | {
36 | [self setChildren:[MKCategory rootInstance].children];
37 | }
38 | }
39 |
40 | // search
41 |
42 | - (BOOL)canSearch
43 | {
44 | NavNode *firstChild = [self.children firstObject];
45 |
46 | if (firstChild && [firstChild isKindOfClass:self.class])
47 | {
48 | return YES;
49 | }
50 |
51 | return NO;
52 | }
53 |
54 | - (BOOL)nodeMatchesSearch:(NSString *)aString
55 | {
56 | for (NSString *word in [self.nodeTitle componentsSeparatedByString:@" "])
57 | {
58 | if ([word hasPrefix:aString])
59 | {
60 | return YES;
61 | }
62 | }
63 |
64 | return NO;
65 | }
66 |
67 | /*
68 | - (BOOL)nodeMatchesSearch:(NSString *)aString
69 | {
70 | for (id child in self.children)
71 | {
72 | if ([child nodeMatchesSearch:aString])
73 | {
74 | return YES;
75 | }
76 | }
77 |
78 | return NO;
79 | }
80 | */
81 |
82 | @end
83 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Helpers/MKCurrency.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKCurrency.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 8/11/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MKCurrency : NSObject
12 |
13 | @property (strong, nonatomic) NSNumber *btcAmount;
14 |
15 | - (NSString *)formattedPriceSetString;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Helpers/MKCurrency.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKCurrency.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 8/11/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKCurrency.h"
10 | #import "MKExchangeRate.h"
11 | #import
12 | #import
13 |
14 | @implementation MKCurrency
15 |
16 | /*
17 | - (NSNumberFormatter *)priceFormatter
18 | {
19 | NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
20 | //[formatter setLocalizesFormat:NO];
21 | [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
22 | [formatter setPartialStringValidationEnabled:YES];
23 | [formatter setMinimum:0];
24 | [formatter setMaximumFractionDigits:6];
25 | [formatter setMaximumIntegerDigits:3];
26 | return formatter;
27 | }
28 | */
29 |
30 | - (NSString *)formattedPriceForSymbol:(NSString *)aSymbol
31 | {
32 | NSNumber *rateForSymbol = @1.0;
33 | NSInteger sigDigits = 1;
34 |
35 | if ([aSymbol isEqualToString:@"BTC"] || [aSymbol isEqualToString:@"XBT"])
36 | {
37 | rateForSymbol = @1.0;
38 | sigDigits = 4;
39 | }
40 | else
41 | {
42 | MKExchangeRate *rate = [MKExchangeRate shared];
43 | rateForSymbol = [rate btcPerSymbol:aSymbol];
44 | }
45 |
46 | if (rateForSymbol == nil)
47 | {
48 | return nil;
49 | }
50 |
51 | NSNumber *priceForSymbol = @(self.btcAmount.floatValue * rateForSymbol.floatValue);
52 | NSString *formattedPrice = [priceForSymbol asFormattedStringWithFractionalDigits:sigDigits];
53 | return formattedPrice;
54 | }
55 |
56 | - (NSArray *)defaultSymbols
57 | {
58 | return @[@"BTC", @"USD", @"EUR"];
59 | }
60 |
61 | - (NSString *)formattedPriceSetString
62 | {
63 | NSString *outputString = @"";
64 | NSString *separator = @" ";
65 |
66 | for (NSString *symbol in self.defaultSymbols)
67 | {
68 | NSString *price = [self formattedPriceForSymbol:symbol];
69 |
70 | if (price)
71 | {
72 | if (outputString.length)
73 | {
74 | outputString = [outputString stringByAppendingString:separator];
75 | }
76 |
77 | outputString = [outputString stringByAppendingString:price];
78 | //outputString = [outputString stringByAppendingString:@" "];
79 | outputString = [outputString stringByAppendingString:symbol];
80 | }
81 | }
82 |
83 | // /NSLog(@"outputString '%@'", outputString);
84 | return outputString;
85 | }
86 |
87 | @end
88 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Helpers/MKExchangeRate.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKExchangeRate.h
3 | // BitMarkets
4 | //
5 | // Created by Adam Thorsen on 4/27/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MKExchangeRate : NSObject
12 |
13 | @property (strong, nonatomic) NSURLConnection *connection;
14 | @property (strong, nonatomic) NSMutableData *responseData;
15 | @property (strong, nonatomic) NSMutableDictionary *rates;
16 | @property (strong, nonatomic) NSTimer *repeatingTimer;
17 |
18 | - (NSNumber *)btcPerSymbol:(NSString *)symbol;
19 | - (void)startRepeatingTimer;
20 | - (void)update;
21 |
22 | + (MKExchangeRate *)shared;
23 |
24 | //- (NSString *)formattedPriceForSymbol:(NSString *)aSymbol;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/MKBuy.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuy.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/17/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKTransaction.h"
11 | #import "MKPost.h"
12 | #import "MKBuyBid.h"
13 | #import "MKBuyLockEscrow.h"
14 | #import "MKBuyDelivery.h"
15 | #import "MKBuyReleaseEscrow.h"
16 | #import "MKTxProgressView.h"
17 | #import "MKBuyComplete.h"
18 |
19 | @interface MKBuy : MKTransaction
20 |
21 | @property (strong, nonatomic) MKBuyBid *bid;
22 | @property (strong, nonatomic) MKBuyLockEscrow *lockEscrow;
23 | @property (strong, nonatomic) MKBuyDelivery *delivery;
24 | @property (strong, nonatomic) MKBuyReleaseEscrow *releaseEscrow;
25 | @property (strong, nonatomic) MKBuyComplete *complete;
26 |
27 | - (MKBidMsg *)bidMsg;
28 | - (BOOL)isCanceled;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/MKBuys.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuys.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKBuy.h"
11 | #import "MKTransactions.h"
12 |
13 | @interface MKBuys : MKTransactions
14 |
15 | - (MKBuy *)addBuy;
16 |
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/MKBuys.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuys.m
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKBuys.h"
10 | #import "MKBuy.h"
11 |
12 | @implementation MKBuys
13 |
14 | - (id)init
15 | {
16 | self = [super init];
17 | self.nodeChildClass = MKBuy.class;
18 | // [self read];
19 | return self;
20 | }
21 |
22 | - (NSString *)nodeTitle
23 | {
24 | return @"Buys";
25 | }
26 |
27 | - (MKBuy *)addBuy
28 | {
29 | MKBuy *buy = [super addChild];
30 | [self write];
31 | return buy;
32 | }
33 |
34 | - (void)delete
35 | {
36 | return;
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBidMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBidMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/2/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @class MKPost;
12 |
13 | @interface MKBidMsg : MKMsg
14 |
15 | - (void)setupForPost:(MKPost *)mkPost;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBidMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKBidMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/2/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKBidMsg.h"
11 | #import "MKRootNode.h"
12 |
13 | @implementation MKBidMsg
14 |
15 | - (NSString *)nodeTitle
16 | {
17 | if (self.isInBuy)
18 | {
19 | return @"Bid Sent";
20 | }
21 |
22 | return [NSString stringWithFormat:@"Bid received from %@", self.sellerAddress];
23 |
24 | //return @"Bid Received";
25 | }
26 |
27 | - (NSString *)nodeSubtitle
28 | {
29 | return self.dateString;
30 |
31 | /*
32 | if (self.isInBuy)
33 | {
34 | return self.dateString;
35 | }
36 |
37 | return [NSString stringWithFormat:@"From %@", self.sellerAddress];
38 | */
39 | }
40 |
41 | - (void)setupForPost:(MKPost *)mkPost
42 | {
43 | //[self.dict addEntriesFromDictionary:mkPost.propertiesDict];
44 |
45 | self.postUuid = mkPost.postUuid;
46 | self.sellerAddress = mkPost.sellerAddress;
47 | self.buyerAddress = self.myAddress;
48 | }
49 |
50 | - (BOOL)send
51 | {
52 | self.debug = YES;
53 | return [self sendToSeller];
54 | }
55 |
56 |
57 | @end
58 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBuyBid.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyBid.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 | #import "MKBidMsg.h"
11 | #import "MKAcceptBidMsg.h"
12 | #import "MKRejectBidMsg.h"
13 |
14 | @interface MKBuyBid : MKStage
15 |
16 | - (MKBidMsg *)bidMsg;
17 | - (MKAcceptBidMsg *)acceptMsg;
18 | - (MKRejectBidMsg *)rejectMsg;
19 |
20 | - (BOOL)wasSent;
21 | - (BOOL)wasAccepted;
22 | - (BOOL)wasRejected;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Complete/MKBuyComplete.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyComplete.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 | #import "MKBuyDeliveryAddress.h"
11 | #import "MKBuyerAddressMsg.h"
12 |
13 | @class MKBuy;
14 |
15 | @interface MKBuyComplete : MKStage
16 |
17 | - (BOOL)isComplete;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Complete/MKBuyComplete.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyComplete.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKBuyComplete.h"
10 | #import "MKBuy.h"
11 |
12 | @implementation MKBuyComplete
13 |
14 | - (id)init
15 | {
16 | self = [super init];
17 |
18 | return self;
19 | }
20 |
21 | // node
22 |
23 | - (NSNumber *)nodeSuggestedWidth
24 | {
25 | return @300;
26 | }
27 |
28 | - (NSString *)nodeTitle
29 | {
30 | return @"Complete";
31 | }
32 |
33 | - (MKBuy *)buy
34 | {
35 | return (MKBuy *)self.nodeParent;
36 | }
37 |
38 | - (NSString *)nodeSubtitle
39 | {
40 | /*
41 | if (self.buy.releaseEscrow.wasPaid)
42 | {
43 | return @"Complete! Payment made to seller & deposit returned";
44 | }
45 |
46 | if (self.buy.releaseEscrow.wasRefunded)
47 | {
48 | return @"Complete! Payment refunded by seller & deposit returned";
49 | }
50 | */
51 |
52 | return self.buy.releaseEscrow.nodeSubtitle;
53 | }
54 |
55 | - (NSString *)nodeNote
56 | {
57 | if (self.isComplete)
58 | {
59 | return @"✓";
60 | }
61 |
62 | return nil;
63 | }
64 |
65 | - (BOOL)isActive
66 | {
67 | return NO;
68 | }
69 |
70 | - (BOOL)isComplete
71 | {
72 | return self.buy.releaseEscrow.isComplete;
73 | }
74 |
75 | @end
76 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyDelivery.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyDelivery.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 | #import "MKBuyDeliveryAddress.h"
11 | #import "MKBuyerAddressMsg.h"
12 |
13 | @class MKBuy;
14 |
15 | @interface MKBuyDelivery : MKStage
16 |
17 | - (MKBuyDeliveryAddress *)address;
18 | - (MKBuyerAddressMsg *)addressMsg;
19 | - (MKBuy *)buy;
20 |
21 | - (void)update;
22 | - (void)sendAddress;
23 | - (BOOL)isApproved;
24 |
25 | - (BOOL)isComplete;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyDeliveryAddress.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyDeliveryAddress.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/7/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKDeliveryAddress.h"
10 | #import "MKBuyerAddressMsg.h"
11 |
12 | @interface MKBuyDeliveryAddress : MKDeliveryAddress
13 |
14 | - (void)approve;
15 | - (BOOL)isApproved;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyerAddressMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyerAddressMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/10/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKBuyerAddressMsg : MKMsg
12 |
13 | - (NSDictionary *)addressDict;
14 | - (void)setAddressDict:(NSDictionary *)aDict;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyerAddressMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyerAddressMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/10/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKBuyerAddressMsg.h"
10 |
11 | @implementation MKBuyerAddressMsg
12 |
13 | - (NSString *)nodeTitle
14 | {
15 | if (self.isInBuy)
16 | {
17 | return @"Sent Address";
18 | }
19 |
20 | return @"Received Address";
21 | }
22 |
23 | - (BOOL)send
24 | {
25 | return [super sendToSeller];
26 | }
27 |
28 | - (NSDictionary *)addressDict
29 | {
30 | return self.payload;
31 | }
32 |
33 | - (void)setAddressDict:(NSDictionary *)aDict
34 | {
35 | [self setPayload:aDict];
36 | }
37 |
38 | - (id)descriptionJSONObject
39 | {
40 | return [super descriptionJSONObject];
41 | }
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Lock/MKBuyLockEscrow.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyLockEscrow.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKLock.h"
10 |
11 | @interface MKBuyLockEscrow : MKLock
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Lock/MKBuyLockEscrowMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyLockEscrowMSg.h
3 | // BitMarkets
4 | //
5 | // Created by Rich Collins on 7/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKLockMsg.h"
10 |
11 | @interface MKBuyLockEscrowMsg : MKLockMsg
12 |
13 | - (void)broadcast;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPaymentMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyPaymentMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKTxMsg.h"
10 |
11 | @interface MKBuyPaymentMsg : MKTxMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPaymentMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyPaymentMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKBuyPaymentMsg.h"
10 |
11 | @implementation MKBuyPaymentMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostPaymentMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyPostPaymentMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/14/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKBuyPostPaymentMsg : MKMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostPaymentMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyPostPaymentMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/14/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKBuyPostPaymentMsg.h"
10 |
11 | @implementation MKBuyPostPaymentMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostRefundMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyPostRefundMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/14/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKBuyPostRefundMsg : MKMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostRefundMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyPostRefundMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/14/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKBuyPostRefundMsg.h"
10 |
11 | @implementation MKBuyPostRefundMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyRefundRequestMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyRefundRequestMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKTxMsg.h"
10 |
11 | @interface MKBuyRefundRequestMsg : MKTxMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyRefundRequestMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyRefundRequestMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKBuyRefundRequestMsg.h"
10 |
11 | @implementation MKBuyRefundRequestMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyReleaseEscrow.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKBuyReleaseEscrow.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKRelease.h"
10 |
11 | @interface MKBuyReleaseEscrow : MKRelease
12 |
13 | - (BOOL)isComplete;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKDeliveryAddress.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKDeliveryAddress.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/7/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKGroup.h"
10 | #import "MKBuyerAddressMsg.h"
11 |
12 | @interface MKDeliveryAddress : MKGroup
13 |
14 | @property (strong, nonatomic) NSMutableDictionary *addressDict;
15 | @property (assign, nonatomic) BOOL isEditable;
16 |
17 | /*
18 | @property (strong, nonatomic) NSString *addressee;
19 | @property (strong, nonatomic) NSString *address1;
20 | @property (strong, nonatomic) NSString *address2;
21 | @property (strong, nonatomic) NSString *country;
22 | */
23 |
24 | /*
25 | // name
26 |
27 | - (void)setAddressee:(NSString *)aString;
28 | - (NSString *)addressee;
29 |
30 | // address1
31 |
32 | - (void)setAddress1:(NSString *)aString;
33 | - (NSString *)address1;
34 |
35 | // address2
36 |
37 | - (void)setAddress2:(NSString *)aString;
38 | - (NSString *)address2;
39 |
40 | // country
41 |
42 | - (void)setCountry:(NSString *)aString;
43 | - (NSString *)country;
44 | */
45 | // checks
46 |
47 | - (BOOL)isFilled;
48 | - (BOOL)canSend;
49 |
50 | @end
51 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKEscrow.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKEscrow.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 | #import "MKCancelMsg.h"
11 | #import "MKCancelConfirmed.h"
12 |
13 | @class MKBuy;
14 | @class MKSell;
15 |
16 | @interface MKEscrow : MKStage
17 |
18 | @property (strong, nonatomic) NSString *error;
19 |
20 | - (MKBuy *)buy;
21 | - (BOOL)isBuy;
22 |
23 | - (MKSell *)sell;
24 | - (BOOL)isSell;
25 |
26 |
27 | - (BOOL)isCancelConfirmed;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKEscrow.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKEscrow.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKEscrow.h"
10 | #import "MKBuy.h"
11 | #import "MKSell.h"
12 |
13 | @implementation MKEscrow
14 |
15 | // buy
16 |
17 | - (MKBuy *)buy
18 | {
19 | MKBuy *buy = (MKBuy *)[self firstInParentChainOfClass:MKBuy.class];
20 | assert(buy != nil);
21 | return buy;
22 | }
23 |
24 | - (BOOL)isBuy
25 | {
26 | return self.buy != nil;
27 | }
28 |
29 | // sell
30 |
31 | - (MKSell *)sell
32 | {
33 | MKSell *sell = (MKSell *)[self firstInParentChainOfClass:MKSell.class];
34 | assert(sell != nil);
35 | return sell;
36 | }
37 |
38 | - (BOOL)isSell
39 | {
40 | return self.sell != nil;
41 | }
42 |
43 |
44 | - (BOOL)isCancelConfirmed
45 | {
46 | [NSException raise:@"MKEscrow subclasses should override isCancelled method" format:@""];
47 | return NO;
48 | }
49 |
50 |
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKLock.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKLock.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKEscrow.h"
10 | #import "MKPost.h"
11 |
12 | @class MKSell;
13 | @class MKBuy;
14 | @class MKBuyLockEscrowMsg;
15 | @class MKSellLockEscrowMsg;
16 | // messages
17 |
18 | #import "MKBidMsg.h"
19 | #import "MKSetupLockMsg.h"
20 | #import "MKConfirmLockEscrowMsg.h"
21 | #import "MKCancelMsg.h"
22 | #import "MKSellLockEscrowMsg.h"
23 |
24 |
25 | @interface MKLock : MKEscrow
26 |
27 | - (BOOL)isConfirmed;
28 |
29 | // messages
30 |
31 |
32 | // messages
33 |
34 | - (MKBidMsg *)bidMsg;
35 | - (MKSetupLockMsg *)setupLockMsg;
36 | - (MKBuyLockEscrowMsg *)buyLockEscrowMsg;
37 | - (MKSellLockEscrowMsg *)sellLockEscrowMsg;
38 | - (MKLockMsg *)lockEscrowMsgToConfirm;
39 | - (MKConfirmLockEscrowMsg *)confirmLockEscrowMsg;
40 | - (MKCancelMsg *)cancelMsg;
41 | - (void)postLock:(MKLockMsg *)msg;
42 | - (void)sendMsg:(MKMsg *)msg; //subclasses should override
43 |
44 |
45 | //state machine
46 | - (void)update;
47 |
48 | // lock cancel
49 |
50 | - (BOOL)canCancel;
51 |
52 | - (BOOL)isCancelling;
53 |
54 | - (BOOL)isCancelConfirmed;
55 | - (MKCancelConfirmed *)cancelConfirmedMsg;
56 |
57 | - (MKPost *)mkPost;
58 | - (NSNumber *)lockEscrowPriceInSatoshi;
59 |
60 | - (NSString *)txDescription;
61 | - (BOOL)isBuyer;
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKRelease.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKRelease.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKEscrow.h"
10 |
11 | @class MKSell;
12 | @class MKBuy;
13 |
14 | // payment
15 |
16 | #import "MKBuyPaymentMsg.h"
17 | #import "MKSellAcceptPaymentMsg.h"
18 |
19 | // refund
20 |
21 | #import "MKBuyRefundRequestMsg.h"
22 | #import "MKSellAcceptRefundRequestMsg.h"
23 | #import "MKSellRejectRefundRequestMsg.h"
24 |
25 | // confirm
26 |
27 | #import "MKConfirmRefundMsg.h"
28 | #import "MKConfirmPaymentMsg.h"
29 |
30 |
31 |
32 | @interface MKRelease : MKEscrow
33 |
34 |
35 | - (NSString *)shortStatus;
36 |
37 | // checks
38 |
39 | - (BOOL)wasPaid;
40 | - (BOOL)wasRefunded;
41 |
42 | // payment messages
43 |
44 | - (MKBuyPaymentMsg *)buyPaymentMsg;
45 | - (MKSellAcceptPaymentMsg *)sellAcceptPaymentMsg;
46 |
47 | // refund messages
48 |
49 | - (MKBuyRefundRequestMsg *)buyRequestRefundMsg;
50 | - (MKSellAcceptRefundRequestMsg *)sellAcceptRefundRequestMsg;
51 | - (MKSellRejectRefundRequestMsg *)sellRejectRefundRequestMsg;
52 |
53 | // confirm messages
54 |
55 | - (MKConfirmRefundMsg *)confirmRefundMsg;
56 | - (MKConfirmPaymentMsg *)confirmPaymentMsg;
57 |
58 | // confirm checks
59 |
60 | - (void)lookForConfirmsIfNeeded;
61 | - (void)lookForPaymentConfirmIfNeeded;
62 | - (void)lookForRefundConfirmIfNeeded;
63 |
64 | @end
65 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKStage.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKStage.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKGroup.h"
10 |
11 | @class MKTransaction;
12 |
13 | @interface MKStage : MKGroup
14 |
15 | - (BOOL)isActive;
16 | - (BOOL)isComplete;
17 |
18 | - (MKTransaction *)transaction;
19 |
20 | - (MKStage *)nextStage;
21 | - (MKStage *)previousStage;
22 |
23 | - (BOOL)canDelete;
24 | - (BOOL)prepareToDelete;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKStage.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKStep.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 | #import "MKTransaction.h"
11 | #import
12 |
13 | @implementation MKStage
14 |
15 | - (BOOL)isActive
16 | {
17 | [NSException raise:@"subclasses must override" format:@""];
18 | return YES;
19 | }
20 |
21 | - (BOOL)isComplete
22 | {
23 | [NSException raise:@"subclasses must override" format:@""];
24 | return NO;
25 | }
26 |
27 | - (MKTransaction *)transaction
28 | {
29 | return (MKTransaction *)self.nodeParent;
30 | }
31 |
32 | - (MKStage *)nextStage
33 | {
34 | return [self.transaction.stages objectAfter:self];
35 | }
36 |
37 | - (MKStage *)previousStage
38 | {
39 | return [self.transaction.stages objectBefore:self];
40 | }
41 |
42 | - (BOOL)canDelete
43 | {
44 | return YES;
45 | }
46 |
47 | - (BOOL)prepareToDelete
48 | {
49 | return YES;
50 | }
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKTransaction.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKTransaction.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/3/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKMessages.h"
11 | #import "MKMsgGroup.h"
12 | #import "MKPost.h"
13 |
14 | @class BNTx;
15 |
16 | @interface MKTransaction : MKMsgGroup
17 |
18 | @property (strong, nonatomic) MKPost *mkPost;
19 | @property (strong, nonatomic) NSString *error;
20 |
21 | - (NSArray *)visibleStages;
22 | - (MKStage *)currentStage;
23 | - (NSArray *)stages;
24 |
25 |
26 | - (NSString *)statusTitle;
27 | - (NSString *)nodeSubtitleDetailed;
28 |
29 | - (void)update;
30 |
31 | - (BOOL)isBuy;
32 | - (NSString *)description;
33 |
34 |
35 | - (BOOL)canDelete;
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKTransactions.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKTransactions.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/12/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsgGroup.h"
10 | #import "MKTransaction.h"
11 |
12 | @interface MKTransactions : MKMsgGroup
13 |
14 | - (void)update;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/MKTransactions.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKTransactions.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/12/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKTransactions.h"
10 |
11 | @implementation MKTransactions
12 |
13 | - (id)init
14 | {
15 | self = [super init];
16 | self.nodeShouldUseCountForNodeNote = @YES;
17 | self.nodeSuggestedWidth = @350;
18 | return self;
19 | }
20 |
21 | - (NSString *)nodeNote
22 | {
23 | if (self.children.count > 0)
24 | {
25 | return [NSString stringWithFormat:@"%i", (int)self.children.count];
26 | }
27 |
28 | return nil;
29 | }
30 |
31 | - (JSONDB *)db
32 | {
33 | JSONDB *db = [super db];
34 | db.name = NSStringFromClass(self.class);
35 | db.location = JSONDB_IN_APP_SUPPORT_FOLDER;
36 | return db;
37 | }
38 |
39 | - (void)write
40 | {
41 | [super write];
42 | }
43 |
44 | - (void)read
45 | {
46 | [super read];
47 | [self update];
48 | [self postParentChainChanged];
49 | }
50 |
51 | - (void)removeChild:(id)aChild
52 | {
53 | [super removeChild:aChild];
54 | [self write];
55 | }
56 |
57 | - (BOOL)canSearch
58 | {
59 | return self.children.count > 0;
60 | }
61 |
62 | /*
63 | - (NSString *)verifyActionMessage:(NSString *)aString
64 | {
65 | if ([aString isEqualToString:@"delete"])
66 | {
67 | return @"Are you sure you want to delete this? If the sale is in progress, you may loose your escrow.";
68 | }
69 |
70 | return nil;
71 | }
72 | */
73 |
74 | - (void)update
75 | {
76 | for (id child in self.children)
77 | {
78 | if ([child respondsToSelector:@selector(update)])
79 | {
80 | [child update];
81 | }
82 | }
83 |
84 | [self writeIfNeeded];
85 | }
86 |
87 | - (void)writeIfNeeded
88 | {
89 | if ([self isDirtyRecursive])
90 | {
91 | [self write];
92 | [self setCleanRecursive];
93 | }
94 | }
95 |
96 | - (void)notifyChainDirty
97 | {
98 | NSLog(@"%@ notifyChainDirty", NSStringFromClass(self.class));
99 | //[self write];
100 | }
101 |
102 |
103 | @end
104 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKCancelConfirmed.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKCancelConfirmed.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/10/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKCancelConfirmed : MKMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKCancelConfirmed.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKCancelConfirmed.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/10/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKCancelConfirmed.h"
10 |
11 | @implementation MKCancelConfirmed
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKCancelMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKCancelMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/10/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKLockMsg.h"
10 |
11 | @interface MKCancelMsg : MKLockMsg
12 |
13 | - (void)broadcast;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKCancelMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKCancelMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/10/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKCancelMsg.h"
10 | #import "MKLock.h"
11 |
12 | @implementation MKCancelMsg
13 |
14 | - (void)configureTx
15 | {
16 | if (self.lockNode.lockEscrowMsgToConfirm)
17 | {
18 | self.tx = self.lockNode.lockEscrowMsgToConfirm.tx.cancellationTx;
19 | [self.tx unlockInputs];
20 | [self.tx sign];
21 | }
22 | else
23 | {
24 | self.tx = nil;
25 | }
26 |
27 | }
28 |
29 | - (void)broadcast
30 | {
31 | if (self.tx)
32 | {
33 | self.payload = self.tx.asJSONObject;
34 | [self write];
35 | [self.tx broadcast];
36 | }
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKConfirmLockEscrowMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKConfirmLockEscrowMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKConfirmMsg.h"
10 |
11 | @interface MKConfirmLockEscrowMsg : MKConfirmMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKConfirmLockEscrowMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKConfirmLockEscrowMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKConfirmLockEscrowMsg.h"
10 |
11 | @implementation MKConfirmLockEscrowMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKConfirmMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKConfirmMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/30/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKConfirmMsg : MKMsg
12 |
13 | @property (strong, nonatomic) NSDictionary *tx;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKConfirmMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKConfirmMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/30/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKConfirmMsg.h"
10 |
11 | @implementation MKConfirmMsg
12 |
13 | - (id)init
14 | {
15 | self = [super init];
16 | [self addPropertyName:@"tx"];
17 | return self;
18 | }
19 |
20 | - (NSString *)nodeTitle
21 | {
22 | return [NSString stringWithFormat:@"Transaction %@", [self.tx objectForKey:@"txid"]];
23 | }
24 |
25 | - (NSString *)nodeSubtitle
26 | {
27 | return [NSString stringWithFormat:@"Confirmed %@", self.dateString];
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKConfirmPaymentMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKConfirmPaymentMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKConfirmMsg.h"
10 |
11 | @interface MKConfirmPaymentMsg : MKConfirmMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKConfirmPaymentMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKConfirmPaymentMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKConfirmPaymentMsg.h"
10 |
11 | @implementation MKConfirmPaymentMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKConfirmRefundMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKConfirmRefundMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKConfirmMsg.h"
10 |
11 | @interface MKConfirmRefundMsg : MKConfirmMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKConfirmRefundMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKConfirmRefundMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKConfirmRefundMsg.h"
10 |
11 | @implementation MKConfirmRefundMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKLockMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKTxMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Rich Collins on 7/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKTxMsg.h"
10 |
11 | @class MKLock;
12 |
13 | @interface MKLockMsg : MKTxMsg
14 |
15 | - (MKLock *)lockNode;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKLockMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKTxMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Rich Collins on 7/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKLockMsg.h"
10 | #import "MKLock.h"
11 |
12 | @implementation MKLockMsg
13 |
14 | - (MKLock *)lockNode
15 | {
16 | return (MKLock *)[self nodeParent];
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKMessages.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKMessages.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/3/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKGroup.h"
10 | #import "MKPostMsg.h"
11 |
12 | @interface MKMessages : MKGroup
13 |
14 | - (MKPostMsg *)postMsg;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKMessages.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKMessages.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/3/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMessages.h"
10 | #import "MKPost.h"
11 |
12 | @implementation MKMessages
13 |
14 | - (id)init
15 | {
16 | self = [super init];
17 | return self;
18 | }
19 |
20 | - (NSNumber *)nodeSuggestedWidth
21 | {
22 | return @360;
23 | }
24 |
25 | - (NSString *)nodeTitle
26 | {
27 | return @"Messages";
28 | }
29 |
30 | - (MKPostMsg *)postMsg
31 | {
32 | return [self.children firstObjectOfClass:MKPost.class];
33 | }
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/2/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKGroup.h"
10 | #import
11 |
12 | // message names
13 |
14 | @interface MKMsg : MKGroup
15 |
16 | @property (strong, nonatomic) NSString *postUuid;
17 | @property (strong, nonatomic) NSString *sellerAddress;
18 | @property (strong, nonatomic) NSString *buyerAddress;
19 | @property (strong, nonatomic) NSNumber *dateNumber;
20 |
21 | @property (strong, nonatomic) NSDictionary *payload;
22 |
23 | @property (strong, nonatomic) BMMessage *bmMessage;
24 | @property (strong, nonatomic) NSString *ackData;
25 | @property (assign, nonatomic) BOOL updatingStatus;
26 | @property (assign, nonatomic) BOOL debug;
27 |
28 | + (MKMsg *)withBMMessage:(BMMessage *)bmMessage;
29 |
30 | // checking sender
31 |
32 | - (BOOL)bmSenderIsBuyer; // only works when first received
33 | - (BOOL)bmSenderIsSeller; // only works when first received
34 |
35 | // --- valid ---
36 |
37 | - (BOOL)hasValidPostUuid;
38 | - (BOOL)hasValidSellerAddress;
39 | - (BOOL)isValid;
40 |
41 | - (NSString *)myAddress;
42 |
43 | - (NSString *)classNameSansPrefix;
44 |
45 | - (NSString *)subject;
46 |
47 | // date
48 |
49 | - (void)addDate;
50 | - (void)setDate:(NSDate *)aDate;
51 | - (NSDate *)date;
52 |
53 | - (NSString *)dateString;
54 |
55 | //status
56 |
57 | - (BOOL)wasSent;
58 |
59 | // --- setter / getters ---
60 |
61 | - (void)setPostUuid:(NSString *)postUuid;
62 | - (NSString *)postUuid;
63 |
64 | - (void)setSellerAddress:(NSString *)sellerAddress;
65 | - (NSString *)sellerAddress;
66 |
67 | - (void)setBuyerAddress:(NSString *)buyerAddress;
68 | - (NSString *)buyerAddress;
69 |
70 | // copy
71 |
72 | - (void)copyThreadFrom:(MKMsg *)msg;
73 |
74 | // send
75 |
76 | - (BOOL)send;
77 |
78 | - (BOOL)sendFromSellerToChannel;
79 | - (BOOL)sendToBuyer;
80 | - (BOOL)sendToSeller;
81 |
82 | - (BOOL)isInBuy;
83 | - (BOOL)isInSell;
84 |
85 | - (BMSentMessage *)sentMessage;
86 |
87 | // debugging
88 |
89 | - (id)descriptionJSONObject;
90 |
91 |
92 | @end
93 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKSellLockEscrowMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKLockEscrowMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Rich Collins on 7/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKLockMsg.h"
10 |
11 | @interface MKSellLockEscrowMsg : MKLockMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKSellLockEscrowMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKLockEscrowMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Rich Collins on 7/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKSellLockEscrowMsg.h"
10 | #import "MKLock.h"
11 |
12 | @implementation MKSellLockEscrowMsg
13 |
14 | - (void)configureTx
15 | {
16 | self.tx = [self.runningWallet newTx];
17 | [self.tx configureForEscrowWithInputTx:self.lockNode.setupLockMsg.tx];
18 | [self.tx lockInputs];
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKSetupLockMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSetupLockMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Rich Collins on 7/8/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKLockMsg.h"
10 |
11 | @interface MKSetupLockMsg : MKLockMsg
12 |
13 | @property (strong, nonatomic) NSNumber *broadcastDateNumber;
14 |
15 | - (void)configureAndBroadcastTx;
16 | //- (void)broadcastIfNeeded;
17 |
18 | - (void)returnChangeToWallet;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKTxMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKEscrowMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/7/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKTxMsg : MKMsg
12 |
13 | @property BNTx *tx;
14 |
15 | - (void)configureTx;
16 | - (BOOL)isTxConfirmed;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Msg/MKTxMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKEscrowMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/7/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKTxMsg.h"
10 | #import "MKBuyLockEscrow.h"
11 | #import
12 |
13 | @implementation MKTxMsg
14 |
15 | @synthesize tx = _tx;
16 |
17 | - (BNTx *)tx
18 | {
19 | if (!_tx && self.payload && self.runningWallet)
20 | {
21 | self.tx = (BNTx *)[self.payload asObjectFromJSONObject];
22 | self.tx.wallet = self.runningWallet;
23 | }
24 |
25 | return _tx;
26 | }
27 |
28 | - (void)setTx:(BNTx *)tx
29 | {
30 | _tx = tx;
31 | }
32 |
33 |
34 | - (BOOL)isTxConfirmed
35 | {
36 | if (self.tx)
37 | {
38 | [self.tx refresh];
39 | return self.tx.isConfirmed;
40 | }
41 | else
42 | {
43 | return NO;
44 | }
45 | }
46 |
47 | - (void)configureTx
48 | {
49 | [NSException raise:@"Subclasses should override" format:@""];
50 | }
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/MKSell.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSell.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/21/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKTransaction.h"
11 | #import "MKPost.h"
12 | #import "MKSellBids.h"
13 | #import "MKSellLockEscrow.h"
14 | #import "MKSellDelivery.h"
15 | #import "MKSellReleaseEscrow.h"
16 | #import "MKSellBid.h"
17 | #import "MKSellComplete.h"
18 |
19 | @class MKSells;
20 |
21 | @interface MKSell : MKTransaction
22 |
23 | //@property (strong, nonatomic) MKPost *mkPost;
24 | @property (strong, nonatomic) MKSellBids *bids;
25 | @property (strong, nonatomic) MKSellLockEscrow *lockEscrow;
26 | @property (strong, nonatomic) MKSellDelivery *delivery;
27 | @property (strong, nonatomic) MKSellReleaseEscrow *releaseEscrow;
28 | @property (strong, nonatomic) MKSellComplete *complete;
29 |
30 | - (MKBidMsg *)acceptedBidMsg;
31 |
32 | - (BOOL)isCanceled;
33 |
34 | - (MKSells *)sells;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/MKSells.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSells.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKSell.h"
11 | #import "MKTransactions.h"
12 |
13 | @interface MKSells : MKTransactions
14 |
15 | - (MKSell *)addSell;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/MKSells.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKSells.m
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 3/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKSells.h"
11 | #import "MKSell.h"
12 | #import "MKMsg.h"
13 |
14 | @implementation MKSells
15 |
16 | - (id)init
17 | {
18 | self = [super init];
19 | self.nodeChildClass = MKSell.class;
20 | return self;
21 | }
22 |
23 | - (NSString *)nodeTitle
24 | {
25 | return @"Sells";
26 | }
27 |
28 | - (MKSell *)addSell
29 | {
30 | MKSell *sell = [super addChild];
31 | [self write];
32 | return sell;
33 | }
34 |
35 | // test
36 |
37 | - (void)write
38 | {
39 | [super write];
40 | }
41 |
42 | - (void)read
43 | {
44 | [super read];
45 | }
46 |
47 | - (void)delete
48 | {
49 | return;
50 | }
51 |
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKAcceptBidMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKAcceptBidMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/2/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKAcceptBidMsg : MKMsg
12 |
13 | - (BOOL)send;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKAcceptBidMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKAcceptBidMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/2/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKAcceptBidMsg.h"
10 |
11 | @implementation MKAcceptBidMsg
12 |
13 | - (NSString *)nodeTitle
14 | {
15 | return @"Bid Accepted";
16 | }
17 |
18 | - (BOOL)send
19 | {
20 | return [self sendToBuyer];
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKRejectBidMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKRejectBidMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKRejectBidMsg : MKMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKRejectBidMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKRejectBidMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKRejectBidMsg.h"
10 |
11 | @implementation MKRejectBidMsg
12 |
13 | - (NSString *)nodeTitle
14 | {
15 | //if (self.isInBuy)
16 | return @"Bid Rejected";
17 | }
18 |
19 | - (BOOL)send
20 | {
21 | return [self sendToBuyer];
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKSellBid.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellBid.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKGroup.h"
10 | #import "MKBidMsg.h"
11 | #import
12 |
13 | @interface MKSellBid : MKGroup
14 |
15 | @property (strong, nonatomic) NSString *error;
16 |
17 | - (MKBidMsg *)bidMsg;
18 |
19 | - (void)update;
20 |
21 | - (BOOL)wasAccepted;
22 | - (BOOL)wasRejected;
23 |
24 | - (void)accept;
25 | - (void)reject;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKSellBids.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellBids.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 | #import "MKSellBid.h"
11 |
12 | @interface MKSellBids : MKStage
13 |
14 | //- (void)setAcceptedBid:(MKSellBid *)sellBid;
15 |
16 | - (MKSellBid *)acceptedBid;
17 | - (BOOL)isComplete;
18 |
19 | - (void)sendClosePost;
20 | - (void)rejectUnacceptedBids;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Complete/MKSellComplete.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellDelivery.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 |
11 | @interface MKSellComplete : MKStage
12 |
13 | - (BOOL)isComplete;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Complete/MKSellComplete.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellDelivery.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKSellComplete.h"
10 | #import "MKSell.h"
11 | #import "MKSellReleaseEscrow.h"
12 |
13 | @implementation MKSellComplete
14 |
15 | - (id)init
16 | {
17 | self = [super init];
18 | return self;
19 | }
20 |
21 | - (MKSell *)sell
22 | {
23 | return (MKSell *)self.nodeParent;
24 | }
25 |
26 | - (NSString *)nodeTitle
27 | {
28 | return @"Complete";
29 | }
30 |
31 | - (BOOL)isActive
32 | {
33 | return NO;
34 | }
35 |
36 | - (BOOL)isComplete
37 | {
38 | return self.sell.releaseEscrow.isComplete;
39 | }
40 |
41 | - (NSString *)nodeSubtitle
42 | {
43 | /*
44 | if (self.sell.releaseEscrow.wasPaid)
45 | {
46 | return @"Complete! Payment & deposit refund is in your wallet";
47 | }
48 |
49 | if (self.sell.releaseEscrow.wasRefunded)
50 | {
51 | return @"Complete! Payment refunded to buyer & your deposit is returned";
52 | }
53 | */
54 |
55 | return self.sell.releaseEscrow.nodeSubtitle;
56 | }
57 |
58 | - (NSString *)nodeNote
59 | {
60 | if (self.isComplete)
61 | {
62 | return @"✓";
63 | }
64 |
65 | return nil;
66 | }
67 |
68 | - (void)update
69 | {
70 |
71 | }
72 |
73 | @end
74 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDelivery.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellDelivery.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 | #import "MKSellPostedMsg.h"
11 |
12 | @interface MKSellDelivery : MKStage
13 |
14 | @property (strong, nonatomic) NSNumber *hasViewedAddress;
15 |
16 | - (BOOL)isComplete;
17 |
18 | - (MKSellPostedMsg *)postedMsg;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDeliveryAddress.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellDeliveryAddress.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/11/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKDeliveryAddress.h"
10 |
11 | @interface MKSellDeliveryAddress : MKDeliveryAddress
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDeliveryAddress.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellDeliveryAddress.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/11/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKSellDeliveryAddress.h"
10 |
11 | @implementation MKSellDeliveryAddress
12 |
13 | - (id)init
14 | {
15 | self = [super init];
16 | self.isEditable = NO;
17 | self.nodeViewClass = NavMirrorView.class;
18 | return self;
19 | }
20 |
21 | - (NSString *)nodeTitle
22 | {
23 | return @"Buyer's Address";
24 | }
25 |
26 | - (NSString *)nodeSubtitle
27 | {
28 | if (self.isFilled)
29 | {
30 | return @"received ";
31 | }
32 |
33 | return @"awaiting from buyer";
34 | }
35 |
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellPostedMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellPostedMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/23/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKSellPostedMsg : MKMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellPostedMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellPostedMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/23/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKSellPostedMsg.h"
10 |
11 | @implementation MKSellPostedMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Lock/MKSellLockEscrow.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellLockEscrow.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKLock.h"
10 |
11 | @interface MKSellLockEscrow : MKLock
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKClosePostMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKClosePostMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/18/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKClosePostMsg : MKMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKClosePostMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKClosePostMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/18/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKClosePostMsg.h"
10 |
11 | @implementation MKClosePostMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPost.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKPost.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/1/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStage.h"
10 | #import "MKPostMsg.h"
11 | #import "MKBidMsg.h"
12 | #import
13 |
14 | //@class MKPostMsg;
15 | //@class MKBidMsg;
16 |
17 | @interface MKPost : MKStage
18 |
19 | @property (strong, nonatomic) NSDate *date;
20 |
21 | // msg properties
22 |
23 | @property (strong, nonatomic) NSString *postUuid;
24 |
25 | @property (strong, nonatomic) NSString *title;
26 | @property (strong, nonatomic) NSNumber *priceInSatoshi;
27 | @property (strong, nonatomic) NSString *postDescription;
28 |
29 | @property (strong, nonatomic) NSArray *regionPath;
30 | @property (strong, nonatomic) NSArray *categoryPath;
31 | @property (strong, nonatomic) NSString *sellerAddress;
32 | @property (strong, nonatomic) NSArray *attachments;
33 | @property (strong, nonatomic) BMMessage *bmMessage; // used only for browsable listing, so we can delete msg when receiving a close request
34 | @property (strong, nonatomic) NSString *composeError;
35 |
36 | @property (strong, nonatomic) NSNumber *firstPostDateNumber;
37 | @property (strong, nonatomic) NSNumber *lastPostDateNumber;
38 |
39 |
40 | // --- repost & expire ---
41 |
42 | + (NSNumber *)repostPeriodInSeconds;
43 | + (NSNumber *)expirePeriodInSeconds;
44 | - (BOOL)needsExpire;
45 | - (BOOL)needsRepost;
46 | - (void)repostIfNeeded;
47 | - (void)expireIfNeeded;
48 |
49 | // ------------------------
50 |
51 | - (NSArray *)postMessagePropertyNames;
52 |
53 | - (BOOL)isEditable;
54 | - (BOOL)canBuy;
55 |
56 | - (void)setPriceInBtc:(NSNumber *)btcNumber;
57 | - (NSNumber *)priceInBtc;
58 | - (NSNumber *)minimumPriceInBtc;
59 | - (NSNumber *)minimumTestPriceInBtc;
60 | - (BOOL)hasPriceWithinMinMaxRange;
61 |
62 | - (BOOL)placeInMarketsPath;
63 | - (BOOL)isAlreadyInMarketsPath;
64 |
65 | - (void)copy:(MKPost *)aPost;
66 | - (NSString *)titleOrDefault;
67 |
68 | // messages
69 |
70 | - (MKPostMsg *)postMsg;
71 |
72 | - (MKPostMsg *)sendPostMsg;
73 | - (MKBidMsg *)sendBidMsg;
74 |
75 | - (BOOL)isComplete;
76 |
77 | // equality
78 |
79 | - (NSUInteger)hash;
80 | - (BOOL)isEqual:(id)object;
81 |
82 | - (NSNumber *)priceInSatoshi;
83 |
84 | - (void)close;
85 |
86 |
87 | @end
88 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPostMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKPostMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/2/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @class MKPost;
12 |
13 | @interface MKPostMsg : MKMsg
14 |
15 | - (void)sendPost:(MKPost *)aPost;
16 | - (MKPost *)mkPost;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPostMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKPostMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/2/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "MKPostMsg.h"
12 | #import "MKRootNode.h"
13 |
14 | @implementation MKPostMsg
15 |
16 | - (id)init
17 | {
18 | self = [super init];
19 |
20 | return self;
21 | }
22 |
23 | /*
24 | - (NSString *)nodeNote
25 | {
26 | return self.bmStatus;
27 | }
28 | */
29 |
30 | - (NSUInteger)hash
31 | {
32 | return self.postUuid.hash;
33 | }
34 |
35 | - (BOOL)isEqual:(MKPostMsg *)object
36 | {
37 | if (![object isKindOfClass:MKPostMsg.class])
38 | {
39 | return NO;
40 | }
41 |
42 | return [self.postUuid isEqualToString:object.postUuid];
43 | }
44 |
45 | - (void)sendPost:(MKPost *)mkPost
46 | {
47 | NSMutableDictionary *payload = [NSMutableDictionary dictionaryWithDictionary:mkPost.propertiesDict];
48 | [payload removeKeysNotInArray:mkPost.postMessagePropertyNames];
49 |
50 | self.sellerAddress = self.myAddress;
51 | self.buyerAddress = nil;
52 | self.postUuid = mkPost.postUuid;
53 |
54 | [self setPayload:payload];
55 | [self send];
56 | }
57 |
58 | - (BOOL)isValid
59 | {
60 | BOOL validUuid = self.hasValidPostUuid;
61 | BOOL validSeller = self.hasValidSellerAddress;
62 | return validUuid && validSeller;
63 | }
64 |
65 | - (BOOL)send
66 | {
67 | return [self sendFromSellerToChannel];
68 | }
69 |
70 | - (MKPost *)mkPost
71 | {
72 | MKPost *mkPost = [[MKPost alloc] init];
73 | [mkPost setPropertiesDict:self.payload];
74 | mkPost.bmMessage = self.bmMessage;
75 | return mkPost;
76 | }
77 |
78 | @end
79 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptPaymentMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellAcceptPaymentMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKTxMsg.h"
10 |
11 | @interface MKSellAcceptPaymentMsg : MKTxMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptPaymentMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellAcceptPaymentMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKSellAcceptPaymentMsg.h"
10 |
11 | @implementation MKSellAcceptPaymentMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptRefundRequestMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellAcceptRefundRequestMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKTxMsg.h"
10 |
11 | @interface MKSellAcceptRefundRequestMsg : MKTxMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptRefundRequestMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellAcceptRefundRequestMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/13/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKSellAcceptRefundRequestMsg.h"
10 |
11 | @implementation MKSellAcceptRefundRequestMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellRejectRefundRequestMsg.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellRejectRefundRequestMsg.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/14/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKMsg.h"
10 |
11 | @interface MKSellRejectRefundRequestMsg : MKMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellRejectRefundRequestMsg.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellRejectRefundRequestMsg.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/14/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKSellRejectRefundRequestMsg.h"
10 |
11 | @implementation MKSellRejectRefundRequestMsg
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellReleaseEscrow.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKSellReleaseEscrow.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/6/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKRelease.h"
10 |
11 | @interface MKSellReleaseEscrow : MKRelease
12 |
13 | - (BOOL)isComplete;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/BNKeyView.h:
--------------------------------------------------------------------------------
1 | //
2 | // BNKeyView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 4/29/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface BNKeyView : NSView
12 |
13 | @property (strong, nonatomic) BNKey *node;
14 | @property (strong, nonatomic) NavView *navView;
15 | @property (strong, nonatomic) NSImageView *qrCodeImageView;
16 | @property (strong, nonatomic) NSTextView *qrCodeTextView;
17 | @property (assign, nonatomic) CGFloat qrWidth;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/BNKeyView.m:
--------------------------------------------------------------------------------
1 | //
2 | // BNKeyView.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 4/29/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "BNKeyView.h"
12 |
13 | @implementation BNKeyView
14 |
15 | - (id)initWithFrame:(NSRect)frame
16 | {
17 | self = [super initWithFrame:frame];
18 |
19 | if (self)
20 | {
21 | [self setAutoresizesSubviews:YES];
22 | [self setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable];
23 |
24 | self.qrWidth = 512;
25 | self.qrCodeImageView = [[NSImageView alloc] initWithFrame:NSMakeRect(0, 0, _qrWidth, _qrWidth)];
26 | [self addSubview:self.qrCodeImageView];
27 |
28 | self.qrCodeTextView = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, _qrWidth, 20)];
29 | [self addSubview:self.qrCodeTextView];
30 |
31 | [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(syncToNode) name:nil object:self.node];
32 | }
33 |
34 | return self;
35 | }
36 |
37 | - (void)dealloc
38 | {
39 | [NSNotificationCenter.defaultCenter removeObserver:self];
40 | }
41 |
42 | - (void)syncToNode
43 | {
44 | NSLog(@"_node.address = %@", _node.address);
45 |
46 | self.qrCodeImageView.image = [QRCodeGenerator qrImageForString:_node.address imageSize:_qrWidth];
47 | self.qrCodeTextView.string = _node.address;
48 | [_qrCodeTextView setThemePath:@"qr/address"];
49 | [_qrCodeTextView setEditable:NO];
50 | [_qrCodeTextView setNeedsDisplay:YES];
51 | }
52 |
53 | - (void)drawRect:(NSRect)dirtyRect
54 | {
55 | [super drawRect:dirtyRect];
56 | [[NSColor whiteColor] set];
57 | NSRectFill(dirtyRect);
58 | }
59 |
60 | - (void)setNode:(BNKey *)node
61 | {
62 | if (_node != node)
63 | {
64 | [NSNotificationCenter.defaultCenter removeObserver:self name:nil object:_node];
65 | _node = node;
66 | [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(syncToNode) name:nil object:_node];
67 | [self syncToNode];
68 | }
69 |
70 | [self layout];
71 | }
72 |
73 | - (void)setFrame:(NSRect)frameRect
74 | {
75 | [super setFrame:frameRect];
76 | [self layout];
77 | }
78 |
79 | - (void)layout
80 | {
81 | CGFloat minx = self.superview.width/2;
82 | CGFloat miny = self.superview.height/2;
83 | CGFloat min = minx < miny ? minx : miny;
84 |
85 | [self.qrCodeImageView setHeight:min];
86 | [self.qrCodeImageView setWidth:min];
87 |
88 | [self.qrCodeImageView centerXInSuperview];
89 | [self.qrCodeImageView centerYInSuperview];
90 | [self.qrCodeTextView placeYBelow:self.qrCodeImageView margin:20];
91 | [self.qrCodeTextView centerXInSuperview];
92 | [self setNeedsDisplay:YES];
93 | }
94 |
95 | @end
96 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/BNWalletView.h:
--------------------------------------------------------------------------------
1 | //
2 | // BNWalletView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/26/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKNodeView.h"
10 | #import "MKStatusView.h"
11 |
12 | @interface BNWalletView : MKNodeView
13 |
14 | @property (assign, nonatomic) NavView *navView;
15 |
16 | @property (strong, nonatomic) MKStatusView *statusView;
17 | @property (strong, nonatomic) NSScrollView *scrollView;
18 | @property (strong, nonatomic) NSTableView *tableView;
19 | @property (strong, nonatomic) NSTextView *standinText;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKActionsView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKActionsView.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 2/21/14.
6 | // Copyright (c) 2014 Bitmarkets.org. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "MKTextView.h"
12 |
13 | @interface MKActionsView : NSView
14 |
15 | @property (assign, nonatomic) NavView *navView;
16 | @property (assign, nonatomic) NavNode *node;
17 |
18 | @property (strong, nonatomic) NavColoredView *group;
19 |
20 | - (void)prepareToDisplay;
21 | - (void)selectFirstResponder;
22 |
23 | - (BOOL)handlesNodeActions;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKAttachmentView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKAttachmentView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 5/20/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "MKDragFileWell.h"
12 |
13 | @protocol MKAttachmentViewProtocol
14 | - (void)changedAttachment:sender;
15 | @end
16 |
17 | @interface MKAttachmentView : NavColoredView
18 |
19 | @property (assign, nonatomic) id delegate;
20 |
21 | @property (strong, nonatomic) MKDragFileWell *dragWell;
22 | @property (strong, nonatomic) NavTextView *instructions;
23 | @property (strong, nonatomic) NSButton *closeButton;
24 | @property (assign, nonatomic) BOOL editable;
25 |
26 | - (void)setImage:(NSImage *)image;
27 | - (NSImage *)image;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKDragFileWell.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @protocol MKDragFileWellProtocol
4 | - (void)droppedInWell:sender;
5 | - (BOOL)acceptsDrop:sender;
6 | @end
7 |
8 | @interface MKDragFileWell : NSImageView
9 |
10 | @property (strong, nonatomic) NSArray *filePaths;
11 | @property (assign, nonatomic) id delegate;
12 | @property (assign, nonatomic) BOOL canDrag;
13 | @property (assign, nonatomic) BOOL canDrop;
14 | @property (assign, nonatomic) NSUInteger resizeImageUntilLessThanKb;
15 |
16 | - (void)filePaths:(NSArray *)array;
17 | - (NSArray *)filePaths;
18 |
19 | - (void)setImage:(NSImage *)image;
20 | //- (NSImage *)image;
21 |
22 | // -- dragging destination
23 |
24 | - (NSDragOperation)draggingSession:(NSDraggingSession *)session
25 | sourceOperationMaskForDraggingContext:(NSDraggingContext)context;
26 |
27 | - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal;
28 | - (unsigned int)draggingEntered:(id )sender;
29 | - (BOOL)draggingUpdated:(id )sender;
30 | - (void)draggingExited:(id )sender;
31 | - (BOOL)performDragOperation:(id )sender;
32 |
33 | // delegate methods -- dragging source
34 |
35 | - (void)copy:sender;
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKNodeView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKNodeView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/16/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface MKNodeView : NavColoredView
13 |
14 | @property (strong, nonatomic) NavNode *node;
15 |
16 | - (void)layout; // subclasses should override
17 | - (void)syncFromNode; // subclasses should override
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKNodeView.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKNodeView.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/16/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKNodeView.h"
10 |
11 | @implementation MKNodeView
12 |
13 | - (id)initWithFrame:(NSRect)frame
14 | {
15 | self = [super initWithFrame:frame];
16 |
17 | if (self)
18 | {
19 | self.backgroundColor = [NSColor whiteColor];
20 | }
21 |
22 | return self;
23 | }
24 |
25 | - (void)dealloc
26 | {
27 | [NSNotificationCenter.defaultCenter removeObserver:self];
28 | }
29 |
30 | - (void)setFrame:(NSRect)frameRect
31 | {
32 | [super setFrame:frameRect];
33 | [self layout];
34 | }
35 |
36 | - (void)layout
37 | {
38 |
39 | }
40 |
41 | - (void)setNode:(NavNode *)node
42 | {
43 | if (_node != node)
44 | {
45 | [NSNotificationCenter.defaultCenter removeObserver:self name:nil object:_node];
46 | _node = node;
47 | if (_node)
48 | {
49 | [NSNotificationCenter.defaultCenter addObserver:self
50 | selector:@selector(nodeChanged:)
51 | name:nil
52 | object:_node];
53 | [self syncFromNode];
54 | }
55 | }
56 | }
57 |
58 | - (void)nodeChanged:(NSNotification *)aNote
59 | {
60 | [self syncFromNode];
61 | }
62 |
63 | - (void)syncFromNode
64 | {
65 |
66 | }
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKPanelManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKPanelManager.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/17/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKPanelView.h"
11 |
12 | @interface MKPanelManager : NSObject
13 |
14 | @property (strong, nonatomic) NSView *panelReceiver;
15 |
16 | + (MKPanelManager *)sharedPanelManager;
17 |
18 | - (MKPanelView *)openNewPanel;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKPanelManager.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKPanelManager.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/17/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKPanelManager.h"
10 | #import "MKPanelView.h"
11 |
12 | @implementation MKPanelManager
13 |
14 | static MKPanelManager *sharedPanelManager = nil;
15 |
16 | + (MKPanelManager *)sharedPanelManager
17 | {
18 | if (!sharedPanelManager)
19 | {
20 | sharedPanelManager = [[MKPanelManager alloc] init];
21 | }
22 |
23 | return sharedPanelManager;
24 | }
25 |
26 | - (void)setPanelReceiver:(NSView *)panelReceiver
27 | {
28 | _panelReceiver = panelReceiver;
29 | }
30 |
31 | - (MKPanelView *)receiverPanelView
32 | {
33 | if (_panelReceiver)
34 | {
35 | for (NSView *subview in _panelReceiver.subviews)
36 | {
37 | if ([subview isKindOfClass:MKPanelView.class])
38 | {
39 | return (MKPanelView *)subview;
40 | }
41 | }
42 | }
43 |
44 | return nil;
45 | }
46 |
47 | - (MKPanelView *)openNewPanel
48 | {
49 | if (_panelReceiver && !self.receiverPanelView)
50 | {
51 | MKPanelView *panelView = [[MKPanelView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
52 | [_panelReceiver addSubview:panelView];
53 | [panelView layout];
54 | return panelView;
55 | }
56 | else
57 | {
58 | NSString *error = @"no panel receiver";
59 | NSLog(@"%@ %@", self.className, error);
60 | [NSException raise:error format:@""];
61 | }
62 |
63 | return nil;
64 | }
65 |
66 | @end
67 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKPanelView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKPanelView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/16/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface MKPanelView : NSView
13 |
14 | @property (strong, nonatomic) NSView *innerView;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKPasswordView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKPasswordView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 7/20/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface MKPasswordView : NSView
13 |
14 | @property (strong, nonatomic) NavTextView *info;
15 | @property (strong, nonatomic) NSSecureTextField *password;
16 | @property (strong, nonatomic) NSSecureTextField *passwordConfirm;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKPasswordView.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKPasswordView.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 7/20/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKPasswordView.h"
10 |
11 | @implementation MKPasswordView
12 |
13 | - (id)initWithFrame:(NSRect)frame
14 | {
15 | self = [super initWithFrame:frame];
16 |
17 | if (self)
18 | {
19 | _info = [[NavTextView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
20 | [_info setThemePath:@"password/info"];
21 | [self addSubview:_info];
22 |
23 | _password = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
24 | [_password setThemePath:@"password/password"];
25 | [self addSubview:_password];
26 |
27 | _passwordConfirm = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
28 | [_passwordConfirm setThemePath:@"password/password"];
29 | [self addSubview:_passwordConfirm];
30 | }
31 |
32 | return self;
33 | }
34 |
35 | - (BOOL)hasPassword
36 | {
37 | return NO;
38 | }
39 |
40 | - (void)setup
41 | {
42 | [_passwordConfirm setHidden:self.hasPassword];
43 |
44 | if (!self.hasPassword)
45 | {
46 | [_info setString:@"Please choose a password"];
47 | [_passwordConfirm setHidden:NO];
48 | [self.window makeFirstResponder:_password];
49 | }
50 | else
51 | {
52 | [_passwordConfirm setHidden:YES];
53 | }
54 | }
55 |
56 | - (void)layout
57 | {
58 | [_password centerXInSuperview];
59 | [_password centerYInSuperview];
60 |
61 | [_info centerXInSuperview];
62 | [_info placeYAbove:_password margin:20];
63 |
64 | [_passwordConfirm placeYBelow:_password margin:20];
65 | }
66 |
67 | @end
68 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKPostView.h:
--------------------------------------------------------------------------------
1 | //
2 | // BMAddressedView.h
3 | // Bitmessage
4 | //
5 | // Created by Steve Dekorte on 2/21/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "MKSell.h"
12 | #import "MKExchangeRate.h"
13 | #import "MKAttachmentView.h"
14 |
15 | @interface MKPostView : NSView
16 |
17 | @property (assign, nonatomic) NavView *navView;
18 | @property (assign, nonatomic) NavNode *node;
19 |
20 | // scrolling
21 |
22 | @property (strong, nonatomic) NavColoredView *documentView;
23 | @property (strong, nonatomic) NSScrollView *scrollView;
24 |
25 | // content
26 |
27 | @property (strong, nonatomic) NavAdvTextView *title;
28 | //@property (strong, nonatomic) IBOutlet NSTextView *quantity;
29 | @property (strong, nonatomic) NavAdvTextView *price;
30 | @property (strong, nonatomic) NavAdvTextView *errorText;
31 | @property (strong, nonatomic) NavRoundButtonView *postOrBuyButton;
32 |
33 | @property (strong, nonatomic) NavColoredView *separator;
34 |
35 | @property (strong, nonatomic) NavAdvTextView *postDescription;
36 |
37 | @property (strong, nonatomic) NSImageView *regionIcon;
38 | @property (strong, nonatomic) NSTextView *region;
39 |
40 | @property (strong, nonatomic) NSImageView *categoryIcon;
41 | @property (strong, nonatomic) NSTextView *category;
42 |
43 | @property (strong, nonatomic) NSImageView *fromAddressIcon;
44 | @property (strong, nonatomic) NSTextView *fromAddress;
45 |
46 | @property (strong, nonatomic) MKAttachmentView *attachmentView;
47 |
48 | @property (assign, nonatomic) BOOL isUpdating;
49 | @property (assign, nonatomic) BOOL editable;
50 |
51 | @property (strong, nonatomic) MKExchangeRate * exchangeRate;
52 |
53 | @property (assign, nonatomic) BOOL needsLocalLayout;
54 |
55 |
56 | + (CGFloat)leftMargin;
57 |
58 | - (MKSell *)sell;
59 |
60 | - (void)selectFirstResponder;
61 |
62 | - (void)setEditable:(BOOL)isEditable;
63 |
64 | @end
65 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKStatusView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKStatusView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/12/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKNodeView.h"
11 |
12 | @interface MKStatusView : MKNodeView
13 |
14 | @property (strong, nonatomic) NavColoredView *buttonsView;
15 | @property (strong, nonatomic) NavTextView *statusTextView;
16 | @property (strong, nonatomic) NavTextView *subtitleTextView;
17 | @property (strong, nonatomic) NSString *title;
18 |
19 | @property (assign, nonatomic) SEL titleSelector;
20 | @property (assign, nonatomic) SEL subtitleSelector;
21 |
22 |
23 | - (NSDictionary *)nodeTitleAttributes;
24 | - (void)setupButtons;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKStepView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKStepView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/12/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKNodeView.h"
11 |
12 | @interface MKStepView : MKNodeView
13 |
14 | @property (assign, nonatomic) BOOL hasArrow;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKStepsView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKStepsView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/10/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MKNodeView.h"
11 |
12 | @interface MKStepsView : MKNodeView
13 |
14 | @property (assign, nonatomic) id delegate;
15 |
16 | - (void)syncFromNode;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKStepsView.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKStepsView.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/10/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKStepsView.h"
10 | #import "MKStepView.h"
11 | #import "MKTransaction.h"
12 |
13 | @implementation MKStepsView
14 |
15 | - (id)initWithFrame:(NSRect)frame
16 | {
17 | self = [super initWithFrame:frame];
18 |
19 | if (self)
20 | {
21 | self.backgroundColor = [NSColor whiteColor];
22 | }
23 |
24 | return self;
25 | }
26 |
27 | - (MKTransaction *)transaction
28 | {
29 | return (MKTransaction *)self.node;
30 | }
31 |
32 | - (void)setNode:(NavNode *)node
33 | {
34 | [super setNode:node];
35 | [self setupViews];
36 | }
37 |
38 | - (void)syncFromNode
39 | {
40 | for (MKStepView *stepView in self.subviews)
41 | {
42 | [stepView syncFromNode];
43 | }
44 |
45 | // are the stages looking at the nextStage to see how to render?
46 | // if so, we might need to do a 2nd eval
47 |
48 | /*
49 | for (MKStepView *stepView in self.subviews)
50 | {
51 | [stepView syncFromNode];
52 | }
53 | */
54 | }
55 |
56 | - (void)setupViews
57 | {
58 | [self removeAllSubviews];
59 | MKStepView *stepView = nil;
60 |
61 | for (NavNode *subnode in self.transaction.visibleStages)
62 | {
63 | stepView = [[MKStepView alloc] initWithFrame:NSMakeRect(0, 0, 100, self.height)];
64 | [stepView setNode:subnode];
65 | [self addSubview:stepView];
66 | stepView.hasArrow = YES;
67 | }
68 |
69 | if (stepView)
70 | {
71 | stepView.hasArrow = NO;
72 | }
73 |
74 | [self layout];
75 | }
76 |
77 | - (void)layout
78 | {
79 | NSInteger count = self.transaction.visibleStages.count;
80 |
81 | for (MKStepView *stepView in self.subviews)
82 | {
83 | [stepView setWidth:self.width/count];
84 | }
85 |
86 | [self stackSubviewsLeftToRightWithMargin:0.0];
87 |
88 | NSView *lastView = self.subviews.lastObject;
89 |
90 | if (lastView)
91 | {
92 | [lastView setWidth:self.width - lastView.x];
93 | }
94 |
95 | }
96 |
97 | /*
98 | - (void)display
99 | {
100 | return;
101 | }
102 | */
103 |
104 | - (void)drawRect:(NSRect)dirtyRect
105 | {
106 | [super drawRect:dirtyRect];
107 | }
108 |
109 | @end
110 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKTextFieldCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKTextFieldCell.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 7/1/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MKTextFieldCell : NSTextFieldCell
12 |
13 | @property (assign, nonatomic) CGFloat marginLeft;
14 | @property (assign, nonatomic) CGFloat marginRight;
15 | @property (assign, nonatomic) CGFloat marginTop;
16 | @property (assign, nonatomic) CGFloat marginBottom;
17 |
18 | @property (assign, nonatomic) CGFloat bottomLineWidth;
19 | @property (strong, nonatomic) NSColor *lineColor;
20 |
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKTextFieldCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // MKTextFieldCell.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 7/1/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import "MKTextFieldCell.h"
10 |
11 | @implementation MKTextFieldCell
12 |
13 | - (id)init
14 | {
15 | self = [super init];
16 |
17 | if (self)
18 | {
19 | self.marginLeft = 10.0;
20 | self.marginRight = 10.0;
21 | self.lineColor = [NSColor colorWithCalibratedWhite:.8 alpha:1.0];
22 | }
23 |
24 | return self;
25 | }
26 |
27 | - (NSRect)drawingRectForBounds:(NSRect)rect
28 | {
29 | return [self titleRectForBounds:rect];
30 | }
31 |
32 | - (NSRect)titleRectForBounds:(NSRect)rect
33 | {
34 | NSRect rectInset = NSMakeRect(
35 | rect.origin.x + self.marginLeft,
36 | rect.origin.y + _marginBottom,
37 | rect.size.width - self.marginLeft - self.marginRight,
38 | rect.size.height - self.marginBottom - self.marginTop);
39 |
40 | // vertically center
41 | NSSize titleSize = [[self attributedStringValue] size];
42 | rectInset.origin.y += (rectInset.size.height - titleSize.height)/2.0 - 0.5;
43 |
44 | return [super drawingRectForBounds:rectInset];
45 | }
46 |
47 |
48 | - (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
49 | {
50 | [super drawInteriorWithFrame:cellFrame inView:controlView];
51 |
52 | if (self.bottomLineWidth)
53 | {
54 | CGFloat x = cellFrame.origin.x;
55 | CGFloat y = cellFrame.origin.y;
56 | CGFloat h = cellFrame.size.height;
57 | CGFloat w = cellFrame.size.width;
58 |
59 | [self.lineColor set];
60 |
61 | [NSBezierPath setDefaultLineCapStyle:NSButtLineCapStyle];
62 |
63 | NSBezierPath *aPath = [NSBezierPath bezierPath];
64 | [aPath setLineWidth:self.bottomLineWidth];
65 | [aPath moveToPoint:NSMakePoint(x, y+h)];
66 | [aPath lineToPoint:NSMakePoint(x+w, y+h)];
67 | [aPath setLineCapStyle:NSSquareLineCapStyle];
68 | [aPath stroke];
69 | }
70 | }
71 |
72 | - (void)highlight:(BOOL)flag withFrame:(NSRect)cellFrame inView:(NSView *)controlView
73 | {
74 | /*
75 | [super drawRect:dirtyRect];
76 | [[NSColor whiteColor] set];
77 | NSRectFill(dirtyRect);
78 |
79 | [self drawInteriorWithFrame:cellFrame inView:controlView];
80 | */
81 | }
82 |
83 |
84 |
85 |
86 | @end
87 |
--------------------------------------------------------------------------------
/BitMarkets/Classes/Market/Views/MKTxProgressView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MKTxProgressView.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 6/4/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "MKNodeView.h"
12 | #import "MKStepsView.h"
13 | #import "MKTransaction.h"
14 | #import "MKStatusView.h"
15 | #import "MKPostView.h"
16 |
17 | @interface MKTxProgressView : MKNodeView
18 |
19 | @property (assign, nonatomic) NavView *navView;
20 |
21 | @property (strong, nonatomic) MKStepsView *stepsView;
22 | @property (strong, nonatomic) MKStatusView *statusView;
23 | @property (strong, nonatomic) NavColoredView *bottomView;
24 | @property (strong, nonatomic) MKPostView *postView;
25 | @property (strong, nonatomic) NavColoredView *maskView; // overlays grey
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "16x16",
5 | "idiom" : "mac",
6 | "filename" : "icon_16x16.png",
7 | "scale" : "1x"
8 | },
9 | {
10 | "size" : "16x16",
11 | "idiom" : "mac",
12 | "filename" : "icon_16x16@2x.png",
13 | "scale" : "2x"
14 | },
15 | {
16 | "size" : "32x32",
17 | "idiom" : "mac",
18 | "filename" : "icon_32x32.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "32x32",
23 | "idiom" : "mac",
24 | "filename" : "icon_32x32@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "128x128",
29 | "idiom" : "mac",
30 | "filename" : "icon_128x128.png",
31 | "scale" : "1x"
32 | },
33 | {
34 | "size" : "128x128",
35 | "idiom" : "mac",
36 | "filename" : "icon_128x128@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "256x256",
41 | "idiom" : "mac",
42 | "filename" : "icon_256x256.png",
43 | "scale" : "1x"
44 | },
45 | {
46 | "size" : "256x256",
47 | "idiom" : "mac",
48 | "filename" : "icon_256x256@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "512x512",
53 | "idiom" : "mac",
54 | "filename" : "icon_512x512.png",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "512x512",
59 | "idiom" : "mac",
60 | "filename" : "icon_515x512@2x.png",
61 | "scale" : "2x"
62 | }
63 | ],
64 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_515x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_515x512@2x.png
--------------------------------------------------------------------------------
/BitMarkets/MKAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // BMKAppDelegate.h
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 4/15/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 | //#import "MKRootNode.h"
13 |
14 | @interface MKAppDelegate : NavAppController
15 |
16 | //@property (strong, nonatomic) MKRootNode *rootNode;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/BitMarkets/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/BitMarkets/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // BitMarkets
4 | //
5 | // Created by Steve Dekorte on 4/15/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, const char * argv[])
12 | {
13 | return NSApplicationMain(argc, argv);
14 | }
15 |
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_128x128.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_128x128@2x.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_16x16.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_16x16@2x.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_256x256.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_256x256@2x.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_32x32.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_32x32@2x.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_512x512.png
--------------------------------------------------------------------------------
/BitMarkets/resources/app_icon/icon_515x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_515x512@2x.png
--------------------------------------------------------------------------------
/BitMarkets/resources/categories copy.json:
--------------------------------------------------------------------------------
1 | {
2 | "_type": "Group",
3 | "name": "For Sale",
4 |
5 | "children": [
6 | { "_type": "Category", "name" : "Antiques"},
7 | { "_type": "Category", "name" : "Appliances" },
8 | { "_type": "Category", "name" : "Arts and Crafts" },
9 | { "_type": "Category", "name" : "Auto Parts" },
10 | { "_type": "Category", "name" : "Bags" },
11 | { "_type": "Category", "name" : "Beauty and Health" },
12 | { "_type": "Category", "name" : "Bikes" },
13 | { "_type": "Category", "name" : "Boats" },
14 | { "_type": "Category", "name" : "Books" },
15 | { "_type": "Category", "name" : "Business" },
16 | { "_type": "Category", "name" : "CDs/DVD/VHS" },
17 | { "_type": "Category", "name" : "Cell Phones" },
18 | { "_type": "Category", "name" : "Men's Clothing", },
19 | { "_type": "Category", "name" : "Women's Clothing", },
20 | { "_type": "Category", "name" : "Collectibles" },
21 | { "_type": "Category", "name" : "Computer" },
22 | { "_type": "Category", "name" : "Electronics" },
23 | { "_type": "Category", "name" : "Farm and Garden" },
24 | { "_type": "Category", "name" : "Furniture" },
25 | { "_type": "Category", "name" : "General" },
26 | { "_type": "Category", "name" : "Heavy Equipment" },
27 | { "_type": "Category", "name" : "Household" },
28 | { "_type": "Category", "name" : "Jewelry" },
29 | { "_type": "Category", "name" : "Materials" },
30 | { "_type": "Category", "name" : "Motorcycles" },
31 | { "_type": "Category", "name" : "Musical Instruments" },
32 | { "_type": "Category", "name" : "RVs & Camping" },
33 | { "_type": "Category", "name" : "Photo and Video" },
34 | { "_type": "Category", "name" : "Shoes" },
35 | { "_type": "Category", "name" : "Sporting" },
36 | { "_type": "Category", "name" : "Tickets" },
37 | { "_type": "Category", "name" : "Tools" },
38 | { "_type": "Category", "name" : "Toys and Games" },
39 | { "_type": "Category", "name" : "Vehicles" },
40 | { "_type": "Category", "name" : "Video Gaming" }
41 | ]
42 | }
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/add_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/add_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/add_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/add_inactive.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/compose_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/compose_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/composeicon_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/composeicon_inactive.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/delete_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/delete_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/delete_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/delete_inactive.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/forward_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/forward_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/message_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/message_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/message_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/message_inactive.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/refresh_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/refresh_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/refresh_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/refresh_inactive.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/reply_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/reply_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/reply_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/reply_inactive.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/send_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/send_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/Top/send_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/send_inactive.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/bitcoin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/bitcoin.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/camera.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/clothing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/clothing.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/computing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/computing.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/litecoin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/litecoin.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/mobile.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/music.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/sports.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/sports.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/categories/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/tv.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/left_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/left_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/location_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/location_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/profile_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/profile_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/icons/right_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/right_active.png
--------------------------------------------------------------------------------
/BitMarkets/resources/licenses/bitmessage/COPYING.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012-2014 Jonathan Warren
2 | Copyright (c) 2013-2014 The Bitmessage Developers
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy
5 | of this software and associated documentation files (the "Software"), to deal
6 | in the Software without restriction, including without limitation the rights
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the Software is
9 | furnished to do so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in
12 | all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 | THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/BitMarkets/resources/licenses/xmlrpc/LICENSE.txt:
--------------------------------------------------------------------------------
1 | # License
2 |
3 | ## The Cocoa XML-RPC Framework is distributed under the MIT License:
4 |
5 | Copyright (c) 2012 Eric Czarny
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | this software and associated documentation files (the "Software"), to deal in
9 | the Software without restriction, including without limitation the rights to
10 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
11 | of the Software, and to permit persons to whom the Software is furnished to do
12 | so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
24 |
--------------------------------------------------------------------------------
/BitMarkets/resources/licenses/zipkit/COPYING.txt:
--------------------------------------------------------------------------------
1 | ZipKit is covered under the following BSD-style license:
2 | ================================================================
3 | Copyright (c) 2009, Karl Moskowski
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are
8 | met:
9 |
10 | * Redistributions of source code must retain the above copyright
11 | notice, this list of conditions and the following disclaimer.
12 | * Redistributions in binary form must reproduce the above
13 | copyright notice, this list of conditions and the following disclaimer
14 | in the documentation and/or other materials provided with the
15 | distribution.
16 | * Neither the name of Karl Moskowski nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 | ================================================================
32 |
33 | Acknowledgement using this text is appreciated:
34 | ZipKit developed by Karl Moskowski.
35 | https://github.com/kolpanic/ZipKit
36 |
37 | ------------------------------------------------------------------------------------------------
38 |
39 | The GMAppleDouble class used in this project is part of the MacFUSE project by Google Inc.
40 |
41 |
42 | See the file COPYING.TXT in the MacFUSE folder for license details.
43 |
--------------------------------------------------------------------------------
/BitMarketsTests/BitMarketsTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // BitMarketsTests.m
3 | // BitMarketsTests
4 | //
5 | // Created by Steve Dekorte on 4/15/14.
6 | // Copyright (c) 2014 voluntary.net. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface BitMarketsTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation BitMarketsTests
16 |
17 | - (void)setUp
18 | {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown
24 | {
25 | // Put teardown code here. This method is called after the invocation of each test method in the class.
26 | [super tearDown];
27 | }
28 |
29 | - (void)testExample
30 | {
31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/BitMarketsTests/Bitmarkets.temp_caseinsensitive_renameTests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | org.Bitmarkets.${PRODUCT_NAME:rfc1034identifier}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/BitMarketsTests/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Bitmarkets.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/CHANGELOG:
--------------------------------------------------------------------------------
1 | version 0.8.7.15 (Dec 10, 2014)
2 | - added Global region
3 | - fix for post layout bug
4 | - initial work on app updates via subscription
5 |
6 | version 0.8.7.14
7 | - automatic periodic reposting until a bid is accepted
8 | - window size now remembered and min window size fix
9 | - added a test category folder
10 | - seller can only post if they have sufficient funds for escrow
11 | - increased minimum price for posts
12 | - added a simple channel syncing indicator
13 | - fix for wallet balance formatting
14 | - changed "0 confirms" to "Unconfirmed" string in UI
15 | - use ... on long post names for nodeTitle
16 | - withdraw network warning
17 | - fix button overlap bug
18 | - use lower limit when posting to Tests
19 | - fixed issue with sending bid to self
20 |
21 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Voluntary.net
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/Notes/Escrow.txt:
--------------------------------------------------------------------------------
1 |
2 | Lock Escrow
3 |
4 | 1. MKBuyLockEscrow sendLockToSeller method
5 | - send buyer's utx inputs
6 |
7 | 2. MKSellLockEscrow sendLock method
8 | - add seller's utx input and signs
9 |
10 | 3. MKBuyLockEscrow postLockToBlockchain method
11 | - buyer sign tx and post
12 |
13 | 4. MKBuyLockEscrow lookForConfirm method
14 | - look for confirm in blockchain
15 | - addChild: MKConfirmLockEscrowMsg
16 |
17 | 5. MKSellLockEscrow lookForConfirm method
18 | - look for confirm in blockchain
19 | - addChild: MKConfirmLockEscrowMsg
20 |
21 |
22 |
23 |
24 | Release Escrow - buyer pays
25 |
26 | 1. MKBuyReleaseEscrow sendPayment method
27 | - send buyer's utxs inputs in MKBuyPaymentMsg
28 |
29 | 2. MKSellReleaseEscrow acceptPayment method (called when MKBuyPaymentMsg received)
30 | - add seller's utx input and signs
31 | - sends to buyer in MKSellAcceptPaymentMsg
32 |
33 | 3. MKBuyReleaseEscrow postPaymentToBlockchain
34 | - buyer sign tx and post
35 |
36 | [confirms work same as lock confirms?]
37 |
38 |
39 |
40 |
41 | Release Escrow - buyer requests refund
42 |
43 | 1. MKBuyReleaseEscrow requestRefund method
44 | - send buyer's utxs inputs in MKBuyRequestRefundMsg
45 |
46 | 2. MKSellReleaseEscrow acceptRefundRequest method (call via user input)
47 | - add seller's utx input and signs
48 | - sends to buyer in MKSellAcceptRefundMsg
49 |
50 | 3. MKBuyReleaseEscrow postPaymentToBlockchain
51 | - buyer sign tx and post
52 |
53 | [confirms work same as lock confirms?]
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/Notes/ItemAttributes.txt:
--------------------------------------------------------------------------------
1 |
2 | region: array
3 | category: array
4 |
5 | title: short string
6 | description: long string
7 | quantity: number
8 | price: number
9 | attachments: [{}, ...]
10 |
11 | considering adding these:
12 |
13 | size: string
14 | color: string
15 | gender: M/F
16 | brand: string
17 | model: string
18 | year: number [1900-next year?]
19 | age: number
20 | condition: string
21 | grade: string, grade metric: string
22 | purity/quality: number %?
23 | milage: number
24 |
25 |
26 | [post, delete]
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Resources:
--------------------------------------------------------------------------------
1 | Versions/Current/Resources
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Sparkle:
--------------------------------------------------------------------------------
1 | Versions/Current/Sparkle
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUAppcast.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUAppcast.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/12/06.
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUAPPCAST_H
10 | #define SUAPPCAST_H
11 |
12 | @protocol SUAppcastDelegate;
13 |
14 | @class SUAppcastItem;
15 | @interface SUAppcast : NSObject
16 |
17 | @property (weak) id delegate;
18 | @property (copy) NSString *userAgentString;
19 |
20 | - (void)fetchAppcastFromURL:(NSURL *)url;
21 |
22 | @property (readonly, copy) NSArray *items;
23 | @end
24 |
25 | @protocol SUAppcastDelegate
26 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast;
27 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error;
28 | @end
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUAppcastItem.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/12/06.
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUAPPCASTITEM_H
10 | #define SUAPPCASTITEM_H
11 |
12 | @interface SUAppcastItem : NSObject
13 | @property (copy, readonly) NSString *title;
14 | @property (copy, readonly) NSDate *date;
15 | @property (copy, readonly) NSString *itemDescription;
16 | @property (strong, readonly) NSURL *releaseNotesURL;
17 | @property (copy, readonly) NSString *DSASignature;
18 | @property (copy, readonly) NSString *minimumSystemVersion;
19 | @property (copy, readonly) NSString *maximumSystemVersion;
20 | @property (strong, readonly) NSURL *fileURL;
21 | @property (copy, readonly) NSString *versionString;
22 | @property (copy, readonly) NSString *displayVersionString;
23 | @property (copy, readonly) NSDictionary *deltaUpdates;
24 | @property (strong, readonly) NSURL *infoURL;
25 |
26 | // Initializes with data from a dictionary provided by the RSS class.
27 | - (instancetype)initWithDictionary:(NSDictionary *)dict;
28 | - (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error;
29 |
30 | @property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate;
31 | @property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate;
32 |
33 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions.
34 | @property (readonly, copy) NSDictionary *propertiesDictionary;
35 |
36 | - (NSURL *)infoURL;
37 |
38 | @end
39 |
40 | #endif
41 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUStandardVersionComparator.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 12/21/07.
6 | // Copyright 2007 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUSTANDARDVERSIONCOMPARATOR_H
10 | #define SUSTANDARDVERSIONCOMPARATOR_H
11 |
12 |
13 | #import "SUVersionComparisonProtocol.h"
14 |
15 | /*!
16 | Sparkle's default version comparator.
17 |
18 | This comparator is adapted from MacPAD, by Kevin Ballard.
19 | It's "dumb" in that it does essentially string comparison,
20 | in components split by character type.
21 | */
22 | @interface SUStandardVersionComparator : NSObject
23 |
24 | /*!
25 | Returns a singleton instance of the comparator.
26 | */
27 | + (SUStandardVersionComparator *)defaultComparator;
28 |
29 | /*!
30 | Compares version strings through textual analysis.
31 |
32 | See the implementation for more details.
33 | */
34 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
35 | @end
36 |
37 | #endif
38 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUVersionComparisonProtocol.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 12/21/07.
6 | // Copyright 2007 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUVERSIONCOMPARISONPROTOCOL_H
10 | #define SUVERSIONCOMPARISONPROTOCOL_H
11 |
12 | #import
13 |
14 | /*!
15 | Provides version comparison facilities for Sparkle.
16 | */
17 | @protocol SUVersionComparison
18 |
19 | /*!
20 | An abstract method to compare two version strings.
21 |
22 | Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a,
23 | and NSOrderedSame if they are equivalent.
24 | */
25 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!
26 |
27 | @end
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUVersionDisplayProtocol.h
3 | // EyeTV
4 | //
5 | // Created by Uli Kusterer on 08.12.09.
6 | // Copyright 2009 Elgato Systems GmbH. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | /*!
13 | Applies special display formatting to version numbers.
14 | */
15 | @protocol SUVersionDisplay
16 |
17 | /*!
18 | Formats two version strings.
19 |
20 | Both versions are provided so that important distinguishing information
21 | can be displayed while also leaving out unnecessary/confusing parts.
22 | */
23 | - (void)formatVersion:(NSString **)inOutVersionA andVersion:(NSString **)inOutVersionB;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/Sparkle.h:
--------------------------------------------------------------------------------
1 | //
2 | // Sparkle.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07)
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SPARKLE_H
10 | #define SPARKLE_H
11 |
12 | // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless
13 | // there are name-space collisions) so we can list all of them to start with:
14 |
15 | #import
16 |
17 | #import
18 | #import
19 | #import
20 | #import
21 |
22 | #endif
23 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 13E28
7 | CFBundleDevelopmentRegion
8 | English
9 | CFBundleExecutable
10 | Autoupdate
11 | CFBundleIconFile
12 | AppIcon
13 | CFBundleIdentifier
14 | org.sparkle-project.Sparkle.Autoupdate
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.7.1
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.7.1
25 | DTCompiler
26 | com.apple.compilers.llvm.clang.1_0
27 | DTPlatformBuild
28 | 5B1008
29 | DTPlatformVersion
30 | GM
31 | DTSDKBuild
32 | 13C64
33 | DTSDKName
34 | macosx10.9
35 | DTXcode
36 | 0511
37 | DTXcodeBuild
38 | 5B1008
39 | LSBackgroundOnly
40 | 1
41 | LSMinimumSystemVersion
42 | 10.7
43 | LSUIElement
44 | 1
45 | NSMainNibFile
46 | MainMenu
47 | NSPrincipalClass
48 | NSApplication
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 13E28
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | Sparkle
11 | CFBundleIdentifier
12 | org.andymatuschak.Sparkle
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | Sparkle
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 1.7.1 git
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 9516d6d
25 | DTCompiler
26 | com.apple.compilers.llvm.clang.1_0
27 | DTPlatformBuild
28 | 5B1008
29 | DTPlatformVersion
30 | GM
31 | DTSDKBuild
32 | 13C64
33 | DTSDKName
34 | macosx10.9
35 | DTXcode
36 | 0511
37 | DTXcodeBuild
38 | 5B1008
39 |
40 |
41 |
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/SUStatus.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/SUStatus.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr_CA.lproj:
--------------------------------------------------------------------------------
1 | fr.lproj
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt.lproj:
--------------------------------------------------------------------------------
1 | pt_BR.lproj
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/A/Sparkle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Sparkle
--------------------------------------------------------------------------------
/Vendor/Sparkle/Sparkle.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Bold.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-BoldItalic.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-ExtraBold.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Italic.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Light.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-LightItalic.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Regular.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-Semibold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Semibold.ttf
--------------------------------------------------------------------------------
/Vendor/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf
--------------------------------------------------------------------------------
/add.sh:
--------------------------------------------------------------------------------
1 | git submodule foreach --recursive git add .
2 | git add .
3 |
--------------------------------------------------------------------------------
/checkout.sh:
--------------------------------------------------------------------------------
1 | cd submodules
2 |
3 |
4 | cd BitnashKit
5 | pwd
6 | git checkout master
7 | git push origin master
8 | cd ..
9 |
10 |
11 | cd BitmessageKit
12 | cd submodules
13 |
14 |
15 | cd FoundationCategoriesKit
16 | pwd
17 | git checkout master
18 | git push origin master
19 | cd ..
20 |
21 | cd NavKit
22 | pwd
23 | git checkout master
24 | git push origin master
25 | cd ..
26 |
27 | cd NavNodeKit
28 | pwd
29 | git checkout master
30 | git push origin master
31 | cd ..
32 |
33 | cd SystemInfoKit
34 | pwd
35 | git checkout master
36 | git push origin master
37 | cd ..
38 |
39 | cd TorServerKit
40 | cd submodules/SystemInfoKit
41 | pwd
42 | git checkout master
43 | git push origin master
44 | cd ..
45 |
46 | cd ../../../TorServerKit
47 | pwd
48 | git checkout master
49 | git push origin master
50 |
51 | cd ../../../BitmessageKit
52 | pwd
53 | git checkout master
54 | git push origin master
55 |
56 | cd ../../../Bitmarkets
57 | pwd
58 | git checkout master
59 | git push origin master
60 |
--------------------------------------------------------------------------------
/commit.sh:
--------------------------------------------------------------------------------
1 | cd submodules
2 |
3 |
4 | cd BitnashKit
5 | pwd
6 | git add .
7 | git commit . -s
8 | cd ..
9 |
10 |
11 | cd BitmessageKit
12 | cd submodules
13 |
14 |
15 | cd FoundationCategoriesKit
16 | pwd
17 | git add .
18 | git commit . -s
19 | cd ..
20 |
21 | cd NavKit
22 | pwd
23 | git add .
24 | git commit . -s
25 | cd ..
26 |
27 | cd NavNodeKit
28 | pwd
29 | git add .
30 | git commit . -s
31 | cd ..
32 |
33 | cd SystemInfoKit
34 | pwd
35 | git add .
36 | git commit . -s
37 | cd ..
38 |
39 | cd TorServerKit
40 | cd submodules/SystemInfoKit
41 | pwd
42 | git add .
43 | git commit . -s
44 | cd ../..
45 |
46 | pwd
47 | git add .
48 | git commit . -s
49 |
50 | cd ../../../BitmessageKit
51 | pwd
52 | git add .
53 | git commit . -s
54 |
55 | cd ../..
56 | pwd
57 | git add .
58 | git commit . -s
59 |
--------------------------------------------------------------------------------
/dist/generate_keys.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 | for file in "dsaparam.pem" "dsa_priv.pem" "dsa_pub.pem"; do
4 | if [ -e "$file" ]; then
5 | echo "There's already a $file here! Move it aside or be more careful!"
6 | exit 1
7 | fi
8 | done
9 |
10 | openssl="/usr/bin/openssl"
11 | $openssl gendsa <($openssl dsaparam 4096) -out dsa_priv.pem
12 | chmod 0400 dsa_priv.pem
13 | $openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem
14 | chmod 0444 dsa_pub.pem
15 |
16 | echo "
17 | Generated private and public keys: dsa_priv.pem and dsa_pub.pem.
18 | BACK UP YOUR PRIVATE KEY AND KEEP IT SAFE!
19 | If you lose it, your users will be unable to upgrade!"
20 |
21 | open -R dsa_priv.pem
22 |
--------------------------------------------------------------------------------
/dist/generate_xml.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | FEED_TITLE="title"
4 | LINK="http://voluntary.net/bitpostcast.xml"
5 | FEED_DESCRIPTION="Bitmarkets Changelog"
6 | VERSION="1.0"
7 | DESCRIPTION="list of items"
8 | PUB_DATE=$(date -u)
9 | URL="http://link.to.app/Bitmarkets.zip"
10 | FILENAME="./Bitmarkets.zip"
11 | LENGTH=$(stat -f%z "$FILENAME")
12 | DSA_SIGNATURE=$(dist/sign_update.sh $FILENAME dist/keys/dsa_priv.pem)
13 |
14 | sed -e "s;%FEED_TITLE%;$FEED_TITLE;g" -e "s;%LINK%;$LINK;g" -e "s;%FEED_DESCRIPTION%;$FEED_DESCRIPTION;g" -e "s;%VERSION%;$VERSION;g" -e "s;%DESCRIPTION%;$DESCRIPTION;g" -e "s;%PUB_DATE%;$PUB_DATE;g" -e "s;%URL%;$URL;g" -e "s;%LENGTH%;$LENGTH;g" -e "s;%DSA_SIGNATURE%;$DSA_SIGNATURE;g" dist/template.xml
15 |
--------------------------------------------------------------------------------
/dist/sign_update.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 | set -o pipefail
4 | if [ "$#" -ne 2 ]; then
5 | echo "Usage: $0 update_archive private_key"
6 | exit 1
7 | fi
8 | openssl=/usr/bin/openssl
9 | $openssl dgst -sha1 -binary < "$1" | $openssl dgst -dss1 -sign "$2" | $openssl enc -base64
10 |
--------------------------------------------------------------------------------
/dist/template.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | %FEED_TITLE%
5 | %LINK%
6 | %FEED_DESCRIPTION%
7 | en
8 | -
9 | toVersion %VERSION%
10 |
11 |
14 |
15 | %PUB_DATE%
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/find_projects_path_errors.sh:
--------------------------------------------------------------------------------
1 | find . -name project.pbxproj | awk '{print "echo " $1 "; grep Users " $1}' | bash
2 |
3 |
--------------------------------------------------------------------------------
/init.sh:
--------------------------------------------------------------------------------
1 | git submodule sync
2 | git submodule init
3 | git submodule update --init --recursive --force
4 |
5 |
--------------------------------------------------------------------------------
/pull.sh:
--------------------------------------------------------------------------------
1 | git submodule foreach --recursive git pull origin master
2 | git pull origin master
3 |
--------------------------------------------------------------------------------
/push.sh:
--------------------------------------------------------------------------------
1 | git submodule foreach --recursive git push origin master
2 | git push origin master
3 | git push origin --tags
4 |
--------------------------------------------------------------------------------
/status.sh:
--------------------------------------------------------------------------------
1 | git status
2 | git submodule foreach --recursive git status
3 |
--------------------------------------------------------------------------------