├── .java-version
├── fluxc-processor
├── .gitignore
└── src
│ └── main
│ └── resources
│ ├── wp-com-v3-endpoints.txt
│ ├── jp-api-endpoints.txt
│ ├── wporg-api-endpoints.txt
│ ├── wp-api-endpoints.txt
│ └── xmlrpc-endpoints.txt
├── fluxc-annotations
├── .gitignore
├── src
│ └── main
│ │ └── java
│ │ └── org
│ │ └── wordpress
│ │ └── android
│ │ └── fluxc
│ │ └── annotations
│ │ ├── action
│ │ ├── IAction.java
│ │ ├── NoPayload.java
│ │ ├── ActionBuilder.java
│ │ └── Action.java
│ │ ├── AnnotationConfig.java
│ │ ├── ActionEnum.java
│ │ ├── Endpoint.java
│ │ └── Action.java
└── build.gradle
├── .editorconfig
├── fluxc
├── src
│ └── main
│ │ ├── res
│ │ └── values
│ │ │ └── strings.xml
│ │ └── java
│ │ └── org
│ │ └── wordpress
│ │ └── android
│ │ └── fluxc
│ │ ├── FluxCError.java
│ │ ├── network
│ │ ├── Response.java
│ │ ├── rest
│ │ │ ├── JsonObjectOrFalse.java
│ │ │ ├── JsonObjectOrEmptyArray.java
│ │ │ ├── wpcom
│ │ │ │ ├── site
│ │ │ │ │ ├── DesignatePrimaryDomainResponse.kt
│ │ │ │ │ ├── ExportSiteResponse.java
│ │ │ │ │ ├── SupportedCountryResponse.kt
│ │ │ │ │ ├── PostFormatsResponse.java
│ │ │ │ │ ├── SitesFeaturesRestResponse.kt
│ │ │ │ │ ├── QuickStartCompletedResponse.java
│ │ │ │ │ ├── SiteEditorsResponse.java
│ │ │ │ │ ├── SupportedStateResponse.kt
│ │ │ │ │ ├── JetpackCapabilitiesResponse.kt
│ │ │ │ │ ├── InitiateAutomatedTransferResponse.java
│ │ │ │ │ ├── UserRoleWPComRestResponse.java
│ │ │ │ │ ├── DomainPriceResponse.kt
│ │ │ │ │ ├── AutomatedTransferStatusResponse.java
│ │ │ │ │ ├── PrivateAtomicCookieResponse.kt
│ │ │ │ │ ├── DomainAvailabilityResponse.kt
│ │ │ │ │ ├── NewSiteResponse.java
│ │ │ │ │ ├── AutomatedTransferEligibilityCheckResponse.java
│ │ │ │ │ ├── ConnectSiteInfoResponse.java
│ │ │ │ │ └── DomainSuggestionResponse.java
│ │ │ │ ├── jetpacktunnel
│ │ │ │ │ └── JetpackTunnelResponse.kt
│ │ │ │ ├── notifications
│ │ │ │ │ ├── NotificationReadApiResponse.kt
│ │ │ │ │ ├── NotificationSeenApiResponse.kt
│ │ │ │ │ ├── RegisterDeviceRestResponse.kt
│ │ │ │ │ ├── NotificationsApiResponse.kt
│ │ │ │ │ ├── NotificationHashesApiResponse.kt
│ │ │ │ │ └── NotificationHashApiResponse.kt
│ │ │ │ ├── comment
│ │ │ │ │ ├── CommentLikeWPComRestResponse.java
│ │ │ │ │ └── CommentParent.java
│ │ │ │ ├── account
│ │ │ │ │ ├── SubscriptionResponse.java
│ │ │ │ │ ├── UsernameSuggestionsResponse.java
│ │ │ │ │ ├── AccountBoolResponse.java
│ │ │ │ │ ├── AuthOptionsResponse.kt
│ │ │ │ │ ├── IsAvailableResponse.java
│ │ │ │ │ ├── signup
│ │ │ │ │ │ └── AccountCreatedDto.kt
│ │ │ │ │ └── DomainContactResponse.kt
│ │ │ │ ├── auth
│ │ │ │ │ ├── AuthEmailWPComRestResponse.java
│ │ │ │ │ └── AppSecrets.java
│ │ │ │ ├── theme
│ │ │ │ │ └── ThemeDemoPageResponse.kt
│ │ │ │ ├── scan
│ │ │ │ │ ├── threat
│ │ │ │ │ │ └── FixThreatsResponse.kt
│ │ │ │ │ ├── FetchScanHistoryResponse.kt
│ │ │ │ │ └── ScanStartResponse.kt
│ │ │ │ ├── transactions
│ │ │ │ │ └── SupportedDomainCountry.kt
│ │ │ │ ├── post
│ │ │ │ │ ├── GeoLocation.java
│ │ │ │ │ ├── PostParent.java
│ │ │ │ │ └── PostRemoteAutoSaveModel.kt
│ │ │ │ ├── reader
│ │ │ │ │ └── ReaderSearchSitesResponse.kt
│ │ │ │ └── taxonomy
│ │ │ │ │ └── TermWPComRestResponse.java
│ │ │ └── wpapi
│ │ │ │ ├── applicationpasswords
│ │ │ │ ├── ApplicationPasswordUUID.kt
│ │ │ │ ├── ApplicationPasswordCredentials.kt
│ │ │ │ └── ApplicationPasswordsListener.kt
│ │ │ │ ├── WPAPIResponse.kt
│ │ │ │ ├── WPAPINetworkError.kt
│ │ │ │ └── OnWPAPIErrorListener.kt
│ │ ├── xmlrpc
│ │ │ ├── site
│ │ │ │ └── SiteXMLRPCResponse.java
│ │ │ ├── XMLRPCException.java
│ │ │ └── XMLRPCFault.java
│ │ ├── utils
│ │ │ ├── StatsGranularity.kt
│ │ │ ├── CurrentDateUtils.kt
│ │ │ └── JsonExt.kt
│ │ ├── common
│ │ │ └── comments
│ │ │ │ └── CommentsApiPayload.kt
│ │ ├── AcceptHeaderStrategy.kt
│ │ └── HttpMethod.kt
│ │ ├── model
│ │ ├── revisions
│ │ │ ├── RevisionsModel.kt
│ │ │ ├── LocalDiffType.kt
│ │ │ └── DiffOperations.kt
│ │ ├── stats
│ │ │ ├── SummaryModel.kt
│ │ │ ├── PublicizeModel.kt
│ │ │ ├── InsightTypeModel.kt
│ │ │ ├── subscribers
│ │ │ │ ├── SubscribersModel.kt
│ │ │ │ └── PostsModel.kt
│ │ │ ├── LoadMode.kt
│ │ │ ├── VisitsModel.kt
│ │ │ ├── time
│ │ │ │ ├── FileDownloadsModel.kt
│ │ │ │ ├── SearchTermsModel.kt
│ │ │ │ ├── VideoPlaysModel.kt
│ │ │ │ ├── VisitsAndViewsModel.kt
│ │ │ │ ├── AuthorsModel.kt
│ │ │ │ ├── CountryViewsModel.kt
│ │ │ │ ├── PostAndPageViewsModel.kt
│ │ │ │ ├── ClicksModel.kt
│ │ │ │ └── ReferrersModel.kt
│ │ │ ├── TagsModel.kt
│ │ │ ├── InsightsMostPopularModel.kt
│ │ │ ├── InsightTypeDataModel.kt
│ │ │ ├── InsightsAllTimeModel.kt
│ │ │ ├── FollowersModel.kt
│ │ │ ├── CommentsModel.kt
│ │ │ ├── InsightsLatestPostModel.kt
│ │ │ ├── YearsInsightsModel.kt
│ │ │ ├── PostDetailStatsModel.kt
│ │ │ └── insights
│ │ │ │ └── PostingActivityModel.kt
│ │ ├── blaze
│ │ │ ├── BlazeTargetingDevice.kt
│ │ │ ├── BlazeTargetingTopic.kt
│ │ │ ├── BlazeTargetingLanguage.kt
│ │ │ ├── BlazeAdForecast.kt
│ │ │ ├── BlazeAdSuggestion.kt
│ │ │ ├── BlazeCampaignType.kt
│ │ │ ├── BlazeTargetingLocation.kt
│ │ │ ├── BlazeCampaignObjective.kt
│ │ │ ├── BlazeTargetingParameters.kt
│ │ │ └── BlazeCampaignsModel.kt
│ │ ├── notification
│ │ │ └── NoteIdSet.kt
│ │ ├── activity
│ │ │ ├── ActivityTypeModel.kt
│ │ │ └── BackupDownloadStatusModel.kt
│ │ ├── list
│ │ │ ├── AuthorFilter.kt
│ │ │ └── ListOrder.kt
│ │ ├── LocalOrRemoteId.kt
│ │ ├── PlanModel.kt
│ │ ├── jetpack
│ │ │ └── JetpackUser.kt
│ │ ├── jetpacksocial
│ │ │ └── JetpackSocial.kt
│ │ ├── BloggingRemindersModel.kt
│ │ ├── bloggingprompts
│ │ │ └── BloggingPromptModel.kt
│ │ ├── DomainModel.kt
│ │ ├── vertical
│ │ │ └── VerticalSegmentModel.kt
│ │ ├── encryptedlogging
│ │ │ └── EncryptionUtils.kt
│ │ ├── SiteHomepageSettings.kt
│ │ ├── scan
│ │ │ └── threat
│ │ │ │ └── FixThreatStatusModel.kt
│ │ └── plugin
│ │ │ └── PluginDirectoryType.java
│ │ ├── store
│ │ ├── StockMediaUploadItem.kt
│ │ ├── StockMediaItem.kt
│ │ ├── InvalidateDeviceRegistration.kt
│ │ └── GetDeviceRegistrationStatus.kt
│ │ ├── utils
│ │ ├── CurrentTimeProvider.kt
│ │ ├── TimeZoneProvider.kt
│ │ ├── BuildConfigWrapper.kt
│ │ ├── WhatsNewAppVersionUtils.kt
│ │ ├── AppLogWrapper.kt
│ │ ├── extensions
│ │ │ ├── MapExtensions.kt
│ │ │ └── StringExtensions.kt
│ │ ├── DateTimeUtilsWrapper.kt
│ │ ├── CommentErrorUtilsWrapper.kt
│ │ ├── PreferenceUtils.kt
│ │ └── JetpackAITranscriptionUtils.kt
│ │ ├── action
│ │ ├── ProductAction.kt
│ │ ├── PlanOffersAction.kt
│ │ ├── VerticalAction.kt
│ │ ├── EditorThemeAction.kt
│ │ ├── StockMediaAction.java
│ │ ├── EncryptedLogAction.kt
│ │ ├── WhatsNewAction.kt
│ │ └── JetpackAction.java
│ │ ├── logging
│ │ └── FluxCCrashLogger.kt
│ │ ├── module
│ │ ├── ReleaseToolsModule.java
│ │ ├── ApplicationPasswordsClientId.kt
│ │ ├── AppContextModule.java
│ │ └── ApplicationPasswordsModule.kt
│ │ └── persistence
│ │ ├── coverters
│ │ ├── BlazeCampaignsDateConverter.kt
│ │ ├── StringListConverter.kt
│ │ └── BloggingPromptDateConverter.kt
│ │ └── UpdateAllExceptId.java
└── gradle.properties-example
├── example
├── src
│ ├── androidTest
│ │ ├── resources
│ │ │ ├── jitm-dismiss-success.json
│ │ │ ├── jitm-fetch-success-empty.json
│ │ │ ├── change-username-success.json
│ │ │ ├── wc-has-orders-response-success-missing-data-key.json
│ │ │ ├── mark-notification-read-response-success.json
│ │ │ ├── post-upload-response-success.json
│ │ │ ├── wc-has-orders-response-success-no-orders.json
│ │ │ ├── eligible-for-automated-transfer-response-success.json
│ │ │ ├── mark-notification-seen-response-success.json
│ │ │ ├── wc-order-shipment-providers-failed.json
│ │ │ ├── fetch-auth-options-response-success-unverified-email.json
│ │ │ ├── update-plugin-success-response.json
│ │ │ ├── wc-response-failure-invalid-param.json
│ │ │ ├── wc-revenue-stats-response-empty.json
│ │ │ ├── authentication-error-response.json
│ │ │ ├── wc-pay-store-location-for-site-address-missing-without-url-error.json
│ │ │ ├── wc-fetch-invalid-product-id.json
│ │ │ ├── wc-fetch-product-response-manage-stock-true.json
│ │ │ ├── wc-fetch-product-response-manage-stock-false.json
│ │ │ ├── wc-fetch-product-response-manage-stock-parent.json
│ │ │ ├── wc-order-action-send-order-details-success.json
│ │ │ ├── authentication-success-response.json
│ │ │ ├── wc-pay-fetch-connection-token-response-success.json
│ │ │ ├── wc-order-notes-response-failure-invalid-id.json
│ │ │ ├── wc-pay-store-location-for-site-address-missing-with-empty-url-error.json
│ │ │ ├── wc-pay-update-gateway-invalid-data-response-error.json
│ │ │ ├── jitm-dismiss-failure.json
│ │ │ ├── jitm-fetch-failure.json
│ │ │ ├── wc-pay-capture-terminal-payment-response-success.json
│ │ │ ├── wc-product-review-response-failure-invalid-id.json
│ │ │ ├── automated-transfer-status-complete-response-success.json
│ │ │ ├── automated-transfer-status-incomplete-response-success.json
│ │ │ ├── jetpack-tunnel-root-response-failure.json
│ │ │ ├── jetpack-tunnel-wp-v2-settings-response-success.json
│ │ │ ├── wc-pay-store-location-for-site-invalid-postal-code-error.json
│ │ │ ├── wc-delete-product-variation-image-failure.json
│ │ │ ├── wc-pay-fetch-gateway-response-error.json
│ │ │ ├── wc-pay-fetch-all-gateways-response-error.json
│ │ │ ├── wc-pay-update-gateway-response-error.json
│ │ │ ├── jetpack-tunnel-timeout-error.json
│ │ │ ├── wc-pay-capture-terminal-payment-response-missing-order.json
│ │ │ ├── fetch-auth-options-response-failure-email-login-not-allowed.json
│ │ │ ├── wc-pay-capture-terminal-payment-response-unexpected-error.json
│ │ │ ├── wc-order-receipt-success.json
│ │ │ ├── wc-pay-capture-terminal-payment-response-uncapturable.json
│ │ │ ├── wc-pay-store-location-for-site-address-missing-with-url-error.json
│ │ │ ├── wc-pay-capture-terminal-payment-response-capture-error.json
│ │ │ ├── initiate-automated-transfer-response-success.json
│ │ │ ├── wc-pay-fetch-transactions-summary-response.json
│ │ │ ├── wc-pay-fetch-gateway-response-success.json
│ │ │ ├── wc-pay-update-gateway-response-success.json
│ │ │ ├── wc-pay-load-account-response-empty-status.json
│ │ │ ├── wc-pay-load-account-response-current-deadline.json
│ │ │ ├── wc-pay-load-account-response-enabled-status.json
│ │ │ ├── wc-pay-load-account-response-new-status.json
│ │ │ ├── wc-pay-load-account-response-restricted-soon-status.json
│ │ │ ├── stripe-extension-statement-descriptor-null.json
│ │ │ ├── wc-pay-fetch-all-gateways-response-success.json
│ │ │ ├── wc-pay-load-account-response-is-live-account.json
│ │ │ ├── wc-pay-capture-terminal-payment-response-amount-too-small.json
│ │ │ ├── fetch-notification-hashes-response-success.json
│ │ │ ├── wc-add-product-category-response-success.json
│ │ │ ├── wc-fetch-product-shipping-class-response-success.json
│ │ │ ├── jetpack-tunnel-root-response-success.json
│ │ │ └── wc-order-note-post-response-success.json
│ │ ├── assets
│ │ │ ├── pony.jpg
│ │ │ └── pony.mp4
│ │ └── java
│ │ │ └── org
│ │ │ └── wordpress
│ │ │ └── android
│ │ │ └── fluxc
│ │ │ ├── release
│ │ │ ├── ReleaseStack_CardsTest.kt
│ │ │ └── ReleaseStack_XMLRPCBase.java
│ │ │ ├── utils
│ │ │ └── WellSqlUtils.java
│ │ │ └── ditests
│ │ │ └── OkHttpTestComponent.kt
│ ├── test
│ │ ├── resources
│ │ │ ├── wp
│ │ │ │ ├── mobile
│ │ │ │ │ ├── remote-config-success.json
│ │ │ │ │ └── feature-flags-success.json
│ │ │ │ ├── qrcode
│ │ │ │ │ ├── authenticate-success.json
│ │ │ │ │ └── validate-success.json
│ │ │ │ ├── jetpack
│ │ │ │ │ └── scan
│ │ │ │ │ │ ├── jp-backup-daily-scan-unavailable.json
│ │ │ │ │ │ ├── jp-backup-daily-start-scan-error.json
│ │ │ │ │ │ ├── jp-complete-scan-scanning.json
│ │ │ │ │ │ ├── jp-complete-scan-idle.json
│ │ │ │ │ │ └── threat
│ │ │ │ │ │ ├── threat-file-with-context-as-string.json
│ │ │ │ │ │ ├── threat-fixable.json
│ │ │ │ │ │ ├── threat-vulnerable-extension.json
│ │ │ │ │ │ └── threat-database.json
│ │ │ │ ├── dashboard
│ │ │ │ │ └── cards_with_errors.json
│ │ │ │ └── blaze
│ │ │ │ │ └── blaze-campaigns.json
│ │ │ ├── mockito-extensions
│ │ │ │ └── org.mockito.plugins.MockMaker
│ │ │ ├── wc
│ │ │ │ ├── visitor-stats-fields.json
│ │ │ │ ├── print-shipping-labels.json
│ │ │ │ ├── product-attribute-delete.json
│ │ │ │ ├── attribute-term-operation-response.json
│ │ │ │ ├── product-attribute-create.json
│ │ │ │ ├── product-attribute-update.json
│ │ │ │ ├── order-shipping-lines.json
│ │ │ │ └── site-setting-option-response.json
│ │ │ ├── notifications
│ │ │ │ └── subject-response.json
│ │ │ └── activitylog
│ │ │ │ └── body-response.json
│ │ └── java
│ │ │ └── org
│ │ │ └── wordpress
│ │ │ └── android
│ │ │ └── fluxc
│ │ │ ├── TestSiteSqlUtils.kt
│ │ │ ├── JsonLoaderUtils.kt
│ │ │ ├── wc
│ │ │ ├── refunds
│ │ │ │ └── RefundFixtures.kt
│ │ │ └── utils
│ │ │ │ └── SiteTestUtils.kt
│ │ │ ├── CoroutinesTestUtils.kt
│ │ │ ├── WellSqlTestUtils.java
│ │ │ ├── utils
│ │ │ ├── BloggingPromptUtilsTest.kt
│ │ │ └── CurrentTimeProviderTest.kt
│ │ │ ├── converters
│ │ │ ├── StringListConverterTest.kt
│ │ │ └── BloggingPromptDateConverterTest.kt
│ │ │ ├── notifications
│ │ │ └── NotificationTestUtils.kt
│ │ │ └── endpoints
│ │ │ └── WPComV3EndpointTest.kt
│ ├── main
│ │ ├── ic_launcher-web.png
│ │ ├── res
│ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── values
│ │ │ │ ├── attrs.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── dimens.xml
│ │ │ ├── xml
│ │ │ │ └── provider_paths.xml
│ │ │ ├── drawable
│ │ │ │ ├── ic_check.xml
│ │ │ │ └── ic_clear.xml
│ │ │ └── layout
│ │ │ │ ├── fragment_woo_customers_search.xml
│ │ │ │ ├── media_list_item.xml
│ │ │ │ ├── list_item_skeleton.xml
│ │ │ │ └── list_item_section_header.xml
│ │ ├── assets
│ │ │ └── jetpack-ai-transcription-test-audio-file.m4a
│ │ └── java
│ │ │ └── org
│ │ │ └── wordpress
│ │ │ └── android
│ │ │ └── fluxc
│ │ │ └── example
│ │ │ ├── di
│ │ │ ├── WCOrderListActivityModule.kt
│ │ │ ├── ApplicationModule.kt
│ │ │ └── MainActivityModule.kt
│ │ │ ├── utils
│ │ │ ├── ArrayUtils.kt
│ │ │ └── ViewGroupExt.kt
│ │ │ └── FragmentExt.kt
│ └── debug
│ │ └── AndroidManifest.xml
├── properties-example
│ └── api.properties
└── proguard-rules.pro
├── plugins
└── woocommerce
│ └── src
│ ├── test
│ ├── resources
│ │ └── mockito-extensions
│ │ │ └── org.mockito.plugins.MockMaker
│ └── java
│ │ └── org
│ │ └── wordpress
│ │ └── android
│ │ └── fluxc
│ │ └── persistence
│ │ └── dao
│ │ └── FakeTransactionExecutor.kt
│ └── main
│ └── kotlin
│ └── org
│ └── wordpress
│ └── android
│ └── fluxc
│ ├── model
│ ├── WCBundleStats.kt
│ ├── metadata
│ │ └── MetaDataParentItemType.kt
│ ├── payments
│ │ └── inperson
│ │ │ ├── WCConnectionTokenResult.kt
│ │ │ └── WCPaymentTransactionsSummaryResult.kt
│ ├── WCProductBundleItemReport.kt
│ ├── coupons
│ │ └── CouponReport.kt
│ ├── ProductWithMetaData.kt
│ ├── WCVisitorStatsSummary.kt
│ ├── order
│ │ ├── CouponLine.kt
│ │ ├── ShippingLine.kt
│ │ └── UpdateOrderRequest.kt
│ ├── WCGiftCardStats.kt
│ ├── WCShippingMethod.kt
│ ├── gateways
│ │ └── WCGatewayModel.kt
│ ├── WCSSRModel.kt
│ ├── taxes
│ │ ├── TaxBasedOnSettingEntity.kt
│ │ ├── WCTaxClassMapper.kt
│ │ └── TaxRateEntity.kt
│ ├── shippinglabels
│ │ ├── WCShippingLabelPaperSize.kt
│ │ ├── WCShippingRatesResult.kt
│ │ └── WCAddressVerificationResult.kt
│ ├── WCProductComponent.kt
│ └── customer
│ │ └── WCCustomerFromAnalytics.kt
│ ├── persistence
│ ├── mappers
│ │ └── MappingDatabaseException.kt
│ ├── TransactionExecutor.kt
│ ├── entity
│ │ ├── ProductBasedIdentification.kt
│ │ └── ShippingMethodEntity.kt
│ └── converters
│ │ ├── LocalIdConverter.kt
│ │ ├── RemoteIdConverter.kt
│ │ ├── BigDecimalConverter.kt
│ │ ├── DiscountTypeConverter.kt
│ │ ├── ISO8601DateConverter.kt
│ │ ├── StringListConverter.kt
│ │ └── LongListConverter.kt
│ ├── network
│ └── rest
│ │ └── wpcom
│ │ └── wc
│ │ ├── addons
│ │ ├── mappers
│ │ │ └── MappingRemoteException.kt
│ │ └── dto
│ │ │ └── AddOnGroupDto.kt
│ │ ├── order
│ │ ├── OrderStatusApiResponse.kt
│ │ ├── OrderCountApiResponse.kt
│ │ ├── OrderMappingConst.kt
│ │ ├── OrderReceiptResponse.kt
│ │ ├── OrderSummaryApiResponse.kt
│ │ └── OrderShipmentTrackingApiResponse.kt
│ │ ├── system
│ │ └── WCApiVersionResponse.kt
│ │ ├── product
│ │ ├── ProductCountApiResponse.kt
│ │ ├── BatchProductApiResponse.kt
│ │ ├── BatchAddProductTagApiResponse.kt
│ │ ├── ProductShippingClassApiResponse.kt
│ │ ├── ProductTagApiResponse.kt
│ │ ├── attributes
│ │ │ ├── terms
│ │ │ │ └── AttributeTermApiResponse.kt
│ │ │ └── AttributeApiResponse.kt
│ │ ├── CoreProductVisibility.kt
│ │ ├── CoreProductStatus.kt
│ │ ├── CoreProductType.kt
│ │ ├── CoreProductBackOrders.kt
│ │ ├── CoreProductTaxStatus.kt
│ │ ├── BatchProductVariationsApiResponse.kt
│ │ └── ProductReviewApiResponse.kt
│ │ ├── payments
│ │ └── inperson
│ │ │ ├── CapturePaymentApiResponse.kt
│ │ │ └── ConnectionTokenApiResponse.kt
│ │ ├── orderstats
│ │ ├── OrderStatsApiResponse.kt
│ │ ├── RevenueStatsApiResponse.kt
│ │ ├── VisitorStatsSummaryApiResponse.kt
│ │ └── VisitorStatsApiResponse.kt
│ │ ├── customer
│ │ └── CustomerSorting.kt
│ │ ├── shippinglabels
│ │ ├── SLCreationEligibilityApiResponse.kt
│ │ ├── ShippingLabelStatusApiResponse.kt
│ │ ├── ShippingLabelApiResponse.kt
│ │ └── UpdateSettingsApiRequest.kt
│ │ ├── SiteSettingsResponse.kt
│ │ ├── bundlestats
│ │ ├── BundleStatsApiResponse.kt
│ │ └── BundlesReportApiResponse.kt
│ │ ├── onboarding
│ │ └── OnboardingTasksResponse.kt
│ │ ├── coupons
│ │ └── CouponReportDto.kt
│ │ └── tracker
│ │ └── TrackerStore.kt
│ ├── domain
│ └── GlobalAddonGroup.kt
│ └── utils
│ ├── BigDecimalExt.kt
│ ├── MapExt.kt
│ ├── JsonUtils.kt
│ └── NonNegativeIntJsonDeserializer.kt
├── .idea
├── copyright
│ └── profiles_settings.xml
├── codeStyles
│ └── codeStyleConfig.xml
├── encodings.xml
├── vcs.xml
└── externalDependencies.xml
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── jitpack.yml
├── .configure-files
├── api.properties.enc
├── tests.properties.enc
├── firebase.secrets.json.enc
└── tests.properties-extra.enc
├── config
├── lint
│ └── lint.xml
└── gradle
│ ├── gradle_build_scan.gradle
│ └── gradle_build_cache.gradle
├── .buildkite
├── shared-pipeline-vars
├── publish-fluxc-annotations.sh
├── publish-fluxc-processor.sh
├── schedules
│ └── dependency-analysis.yml
└── woocommerce-tests.sh
├── .github
└── workflows
│ └── gradle-wrapper-validation.yml
├── gradle.properties-example
├── tests
└── api
│ └── build.gradle
└── .configure
/.java-version:
--------------------------------------------------------------------------------
1 | 17.0
2 |
--------------------------------------------------------------------------------
/fluxc-processor/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/fluxc-annotations/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.{kt,kts}]
2 | max_line_length=120
3 |
--------------------------------------------------------------------------------
/fluxc/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/jitm-dismiss-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": true
3 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/jitm-fetch-success-empty.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": []
3 | }
--------------------------------------------------------------------------------
/fluxc-processor/src/main/resources/wp-com-v3-endpoints.txt:
--------------------------------------------------------------------------------
1 | /sites/$site/blogging-prompts
--------------------------------------------------------------------------------
/example/src/test/resources/wp/mobile/remote-config-success.json:
--------------------------------------------------------------------------------
1 | { "jp-deadline": "2022-10-10"}
--------------------------------------------------------------------------------
/example/src/test/resources/wp/qrcode/authenticate-success.json:
--------------------------------------------------------------------------------
1 | {"authenticated":true}
2 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/change-username-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "success":true
3 | }
4 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-has-orders-response-success-missing-data-key.json:
--------------------------------------------------------------------------------
1 | {
2 | }
3 |
--------------------------------------------------------------------------------
/example/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker:
--------------------------------------------------------------------------------
1 | mock-maker-inline
2 |
--------------------------------------------------------------------------------
/example/src/test/resources/wp/mobile/feature-flags-success.json:
--------------------------------------------------------------------------------
1 | { "flag-1": true, "flag-2": false}
--------------------------------------------------------------------------------
/example/src/test/resources/wc/visitor-stats-fields.json:
--------------------------------------------------------------------------------
1 | [
2 | "period",
3 | "visitors"
4 | ]
5 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/mark-notification-read-response-success.json:
--------------------------------------------------------------------------------
1 | {"updated":[],"success":true}
2 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker:
--------------------------------------------------------------------------------
1 | mock-maker-inline
2 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/post-upload-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID":7970,
3 | "type":"post"
4 | }
5 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-has-orders-response-success-no-orders.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": [
3 | ]
4 | }
5 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/eligible-for-automated-transfer-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "is_eligible":true
3 | }
4 |
--------------------------------------------------------------------------------
/fluxc-processor/src/main/resources/jp-api-endpoints.txt:
--------------------------------------------------------------------------------
1 | /module/stats/active
2 | /connection/url
3 | /connection/data
4 | /jitm
--------------------------------------------------------------------------------
/example/src/androidTest/resources/mark-notification-seen-response-success.json:
--------------------------------------------------------------------------------
1 | {"last_seen_time":"1543265347","success":true}
2 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-order-shipment-providers-failed.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "failed" : ""
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/example/src/test/resources/wp/qrcode/validate-success.json:
--------------------------------------------------------------------------------
1 | {"browser":"Chrome","location":"Secaucus, New Jersey","success":true}
2 |
--------------------------------------------------------------------------------
/example/properties-example/api.properties:
--------------------------------------------------------------------------------
1 | # OAuth credentials for example app
2 | wp.OAUTH.APP.ID = wp
3 | wp.OAUTH.APP.SECRET = wp
4 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/fetch-auth-options-response-success-unverified-email.json:
--------------------------------------------------------------------------------
1 | {"passwordless":false,"email_verified":false}
2 |
--------------------------------------------------------------------------------
/fluxc-processor/src/main/resources/wporg-api-endpoints.txt:
--------------------------------------------------------------------------------
1 | /plugins/info/{version}#String/
2 | /plugins/info/{version}#String/{slug}#String
3 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/jitpack.yml:
--------------------------------------------------------------------------------
1 | before_install:
2 | - cp gradle.properties-example gradle.properties && cp -a example/properties-example/ example/properties/
3 |
--------------------------------------------------------------------------------
/.configure-files/api.properties.enc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/.configure-files/api.properties.enc
--------------------------------------------------------------------------------
/example/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/FluxCError.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc;
2 |
3 | public interface FluxCError {}
4 |
--------------------------------------------------------------------------------
/.configure-files/tests.properties.enc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/.configure-files/tests.properties.enc
--------------------------------------------------------------------------------
/example/src/androidTest/resources/update-plugin-success-response.json:
--------------------------------------------------------------------------------
1 | {
2 | "slug": "UPDATE_PLUGIN_SLUG",
3 | "name": "UPDATE_PLUGIN_NAME"
4 | }
5 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-response-failure-invalid-param.json:
--------------------------------------------------------------------------------
1 | {"error":"rest_invalid_param","message":"Invalid parameter(s): include"}
2 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-revenue-stats-response-empty.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "totals": [],
4 | "intervals": []
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/assets/pony.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/androidTest/assets/pony.jpg
--------------------------------------------------------------------------------
/example/src/androidTest/assets/pony.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/androidTest/assets/pony.mp4
--------------------------------------------------------------------------------
/example/src/androidTest/resources/authentication-error-response.json:
--------------------------------------------------------------------------------
1 | {"error":"invalid_request","error_description":"Incorrect username or password."}
2 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-store-location-for-site-address-missing-without-url-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "store_address_is_incomplete"
3 | }
--------------------------------------------------------------------------------
/fluxc/gradle.properties-example:
--------------------------------------------------------------------------------
1 | fluxc.ENABLE_WPAPI = false
2 | wp.ENABLE_DATABASE_DOWNGRADE = true
3 | android.useAndroidX=true
4 | android.enableJetifier=true
--------------------------------------------------------------------------------
/.configure-files/firebase.secrets.json.enc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/.configure-files/firebase.secrets.json.enc
--------------------------------------------------------------------------------
/.configure-files/tests.properties-extra.enc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/.configure-files/tests.properties-extra.enc
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-fetch-invalid-product-id.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "woocommerce_rest_product_invalid_id",
3 | "message": "Invalid ID."
4 | }
5 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-fetch-product-response-manage-stock-true.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "id": 1537,
4 | "manage_stock": true
5 | }
6 | }
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/Response.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network;
2 |
3 | public interface Response {
4 | }
5 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-fetch-product-response-manage-stock-false.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "id": 1537,
4 | "manage_stock": false
5 | }
6 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-fetch-product-response-manage-stock-parent.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "id": 1537,
4 | "manage_stock": "parent"
5 | }
6 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-order-action-send-order-details-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "message": "Order details email sent to customer."
4 | }
5 | }
--------------------------------------------------------------------------------
/example/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/src/androidTest/resources/authentication-success-response.json:
--------------------------------------------------------------------------------
1 | {"access_token":"mocked_token","token_type":"bearer","blog_id":"0","blog_url":null,"scope":"global"}
2 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-fetch-connection-token-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data" : {
3 | "secret": "abcdef",
4 | "test_mode": true
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/example/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/config/lint/lint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-order-notes-response-failure-invalid-id.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "woocommerce_rest_shop_order_invalid_id",
3 | "message": "Invalid ID."
4 | }
5 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-store-location-for-site-address-missing-with-empty-url-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "store_address_is_incomplete",
3 | "message": ""
4 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-update-gateway-invalid-data-response-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "rest_invalid_param",
3 | "message": "Invalid parameter(s): enabled"
4 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/jitm-dismiss-failure.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "server_error",
3 | "message": "Unexpected server error",
4 | "data": {
5 | "status": 500
6 | }
7 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/jitm-fetch-failure.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "server_error",
3 | "message": "Unexpected server error",
4 | "data": {
5 | "status": 500
6 | }
7 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-capture-terminal-payment-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "status": "succeeded",
4 | "id": "dummy_payment_id"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-product-review-response-failure-invalid-id.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "woocommerce_rest_review_invalid_id",
3 | "message": "Invalid review ID."
4 | }
5 |
--------------------------------------------------------------------------------
/example/src/test/resources/wc/print-shipping-labels.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "mimeType": "application\/pdf",
4 | "b64Content": "12345=",
5 | "success": true
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/automated-transfer-status-complete-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "status":"complete",
3 | "transfer_id":197364,
4 | "step":7,
5 | "total":7
6 | }
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/automated-transfer-status-incomplete-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "status":"active",
3 | "transfer_id":197364,
4 | "step":3,
5 | "total":7
6 | }
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/jetpack-tunnel-root-response-failure.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "rest_no_route",
3 | "message": "No route was found matching the URL and request method"
4 | }
5 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/jetpack-tunnel-wp-v2-settings-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "title": "New Title",
4 | "description": "New Description"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-store-location-for-site-invalid-postal-code-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "postal_code_invalid",
3 | "message": "Error: Invalid US postal code"
4 | }
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/JsonObjectOrFalse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest;
2 |
3 | public abstract class JsonObjectOrFalse {}
4 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-delete-product-variation-image-failure.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "woocommerce_variation_invalid_image_id",
3 | "message": "#0 is an invalid image ID."
4 | }
5 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/revisions/RevisionsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.revisions
2 |
3 | class RevisionsModel(var revisions: List)
4 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/JsonObjectOrEmptyArray.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest;
2 |
3 | public abstract class JsonObjectOrEmptyArray {}
4 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-fetch-gateway-response-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "wcpay_server_error",
3 | "message": "Unexpected server error",
4 | "data": {
5 | "status": 500
6 | }
7 | }
--------------------------------------------------------------------------------
/example/src/test/resources/wp/jetpack/scan/jp-backup-daily-scan-unavailable.json:
--------------------------------------------------------------------------------
1 | {
2 | "state": "unavailable",
3 | "threats": null,
4 | "has_cloud": true,
5 | "reason": "missing_scan_capability"
6 | }
7 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-fetch-all-gateways-response-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "wcpay_server_error",
3 | "message": "Unexpected server error",
4 | "data": {
5 | "status": 500
6 | }
7 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-update-gateway-response-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "wcpay_server_error",
3 | "message": "Unexpected server error",
4 | "data": {
5 | "status": 500
6 | }
7 | }
--------------------------------------------------------------------------------
/example/src/main/assets/jetpack-ai-transcription-test-audio-file.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wordpress-mobile/WordPress-FluxC-Android/HEAD/example/src/main/assets/jetpack-ai-transcription-test-audio-file.m4a
--------------------------------------------------------------------------------
/.idea/externalDependencies.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/SummaryModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | data class SummaryModel(val likes: Int, val comments: Int, val followers: Int)
4 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/jetpack-tunnel-timeout-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "http_request_failed",
3 | "message": "cURL error 28: Operation timed out after 5001 milliseconds with 11111 bytes received"
4 | }
5 |
--------------------------------------------------------------------------------
/fluxc-annotations/src/main/java/org/wordpress/android/fluxc/annotations/action/IAction.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.annotations.action;
2 |
3 | public interface IAction {
4 | String toString();
5 | }
6 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-capture-terminal-payment-response-missing-order.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": "wcpay_missing_order",
3 | "message": "Order not found",
4 | "data": {
5 | "status": 404
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc-annotations/src/main/java/org/wordpress/android/fluxc/annotations/action/NoPayload.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.annotations.action;
2 |
3 | public class NoPayload {
4 | private NoPayload() {}
5 | }
6 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeTargetingDevice.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | class BlazeTargetingDevice(
4 | val id: String,
5 | val name: String
6 | )
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/fetch-auth-options-response-failure-email-login-not-allowed.json:
--------------------------------------------------------------------------------
1 | {"error":"email_login_not_allowed","message":"Please log in using your WordPress.com username instead of your email address."}
2 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeTargetingTopic.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | class BlazeTargetingTopic(
4 | val id: String,
5 | val description: String
6 | )
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/notification/NoteIdSet.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.notification
2 |
3 | data class NoteIdSet(val id: Int, val remoteNoteId: Long, val remoteSiteId: Long)
4 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/WCBundleStats.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | data class WCBundleStats(
4 | val itemsSold: Int,
5 | val netRevenue: Double
6 | )
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-capture-terminal-payment-response-unexpected-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": "wcpay_server_error",
3 | "message": "Unexpected server error",
4 | "data": {
5 | "status": 500
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeTargetingLanguage.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | data class BlazeTargetingLanguage(
4 | val id: String,
5 | val name: String
6 | )
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-order-receipt-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "receipt_url": "https:\/\/test.site\/wc\/file\/transient\/7e811783b66f468b61b4738231287b2a706ce1",
4 | "expiration_date": "2024-01-23"
5 | }
6 | }
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeAdForecast.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | data class BlazeAdForecast(
4 | val minImpressions: Long,
5 | val maxImpressions: Long,
6 | )
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/DesignatePrimaryDomainResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site
2 |
3 | data class DesignatePrimaryDomainResponse(val success: Boolean)
4 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/ExportSiteResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | public class ExportSiteResponse {
4 | public String status;
5 | }
6 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/metadata/MetaDataParentItemType.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.metadata
2 |
3 | enum class MetaDataParentItemType {
4 | ORDER,
5 | PRODUCT
6 | }
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-capture-terminal-payment-response-uncapturable.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": "wcpay_payment_uncapturable",
3 | "message": "The payment cannot be captured",
4 | "data": {
5 | "status": 409
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/example/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/activity/ActivityTypeModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.activity
2 |
3 | data class ActivityTypeModel(
4 | val key: String,
5 | val name: String,
6 | val count: Int
7 | )
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpapi/applicationpasswords/ApplicationPasswordUUID.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords
2 |
3 | internal typealias ApplicationPasswordUUID = String
4 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/jetpacktunnel/JetpackTunnelResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.jetpacktunnel
2 |
3 | class JetpackTunnelResponse {
4 | val data: T? = null
5 | }
6 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/TestSiteSqlUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc
2 |
3 | import org.wordpress.android.fluxc.persistence.SiteSqlUtils
4 |
5 | object TestSiteSqlUtils {
6 | val siteSqlUtils = SiteSqlUtils()
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SupportedCountryResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site
2 |
3 | class SupportedCountryResponse(
4 | val code: String?,
5 | val name: String?
6 | )
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeAdSuggestion.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | data class BlazeAdSuggestion(
4 | val tagLine: String,
5 | val description: String,
6 | val ctaText: String
7 | )
8 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/payments/inperson/WCConnectionTokenResult.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.payments.inperson
2 |
3 | data class WCConnectionTokenResult(val token: String, val isTestMode: Boolean)
4 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/mappers/MappingDatabaseException.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.mappers
2 |
3 | internal class MappingDatabaseException(override val message: String) : Exception()
4 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeCampaignType.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | enum class BlazeCampaignType(val value: String) {
4 | POST("post"),
5 | PAGE("page"),
6 | PRODUCT("product"),
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/store/StockMediaUploadItem.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.store
2 |
3 | data class StockMediaUploadItem(
4 | val name: String? = null,
5 | val title: String? = null,
6 | val url: String? = null
7 | )
8 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-store-location-for-site-address-missing-with-url-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": "store_address_is_incomplete",
3 | "message": "https://myusernametestsite2020151673500.wpcomstaging.com/wp-admin/admin.php?page=wc-settings&tab=general"
4 | }
--------------------------------------------------------------------------------
/example/src/test/resources/wp/dashboard/cards_with_errors.json:
--------------------------------------------------------------------------------
1 | {
2 | "todays_stats": {
3 | "error": "jetpack_disconnected"
4 | },
5 | "posts": {
6 | "error": "unauthorized"
7 | },
8 | "activity": {
9 | "error": "unauthorized"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/xmlrpc/site/SiteXMLRPCResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.xmlrpc.site;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | public class SiteXMLRPCResponse implements Response {}
6 |
--------------------------------------------------------------------------------
/example/src/test/resources/wp/jetpack/scan/jp-backup-daily-start-scan-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "success": false,
3 | "error": {
4 | "errors": {
5 | "vp_api_error": [
6 | "Site does not have scan capability."
7 | ]
8 | },
9 | "error_data": []
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/AuthorFilter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.list
2 |
3 | sealed class AuthorFilter {
4 | object Everyone : AuthorFilter()
5 | data class SpecificAuthor(val authorId: Long) : AuthorFilter()
6 | }
7 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-capture-terminal-payment-response-capture-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": "wcpay_capture_error",
3 | "message": "Payment capture failed to complete with the following message: ",
4 | "data": {
5 | "status": 502
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/example/src/main/res/xml/provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/PublicizeModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | data class PublicizeModel(val services: List, val hasMore: Boolean) {
4 | data class Service(val name: String, val followers: Int)
5 | }
6 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/PostFormatsResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import java.util.Map;
4 |
5 | public class PostFormatsResponse {
6 | public Map formats;
7 | }
8 |
--------------------------------------------------------------------------------
/example/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | FluxC Example
3 |
4 |
5 | Hello blank fragment
6 |
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/LocalOrRemoteId.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | sealed class LocalOrRemoteId {
4 | data class LocalId(val value: Int) : LocalOrRemoteId()
5 | data class RemoteId(val value: Long) : LocalOrRemoteId()
6 | }
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CurrentTimeProvider.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import java.util.Date
4 | import javax.inject.Inject
5 |
6 | class CurrentTimeProvider
7 | @Inject constructor() {
8 | fun currentDate() = Date()
9 | }
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/addons/mappers/MappingRemoteException.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.addons.mappers
2 |
3 | internal class MappingRemoteException(override val message: String) : Exception()
4 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeTargetingLocation.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | data class BlazeTargetingLocation(
4 | val id: Long,
5 | val name: String,
6 | val type: String,
7 | val parent: BlazeTargetingLocation?
8 | )
9 |
--------------------------------------------------------------------------------
/.buildkite/shared-pipeline-vars:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # This file is `source`'d before calling `buildkite-agent pipeline upload`, and can be used
4 | # to set up some variables that will be interpolated in the `.yml` pipeline before uploading it.
5 |
6 | export CI_TOOLKIT="automattic/a8c-ci-toolkit#3.4.2"
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/InsightTypeModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | import org.wordpress.android.fluxc.store.StatsStore.InsightType
4 |
5 | data class InsightTypeModel(val addedTypes: List, val removedTypes: List)
6 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/WCProductBundleItemReport.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | data class WCProductBundleItemReport(
4 | val name: String,
5 | val image: String?,
6 | val itemsSold: Int,
7 | val netRevenue: Double
8 | )
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeCampaignObjective.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | data class BlazeCampaignObjective(
4 | val id: String,
5 | val title: String,
6 | val description: String,
7 | val suitableForDescription: String
8 | )
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/TimeZoneProvider.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import java.util.TimeZone
4 | import javax.inject.Inject
5 |
6 | class TimeZoneProvider @Inject constructor() {
7 | fun getDefaultTimeZone(): TimeZone = TimeZone.getDefault()
8 | }
9 |
--------------------------------------------------------------------------------
/.github/workflows/gradle-wrapper-validation.yml:
--------------------------------------------------------------------------------
1 | name: "Validate Gradle Wrapper"
2 | on: [push, pull_request]
3 |
4 | jobs:
5 | validation:
6 | name: "Validation"
7 | runs-on: ubuntu-latest
8 | steps:
9 | - uses: actions/checkout@v2
10 | - uses: gradle/wrapper-validation-action@v1
11 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/initiate-automated-transfer-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "plugin_url":"https://downloads.wordpress.org/plugin/react.zip",
3 | "status":"active",
4 | "success":true,
5 | "active_theme_slug":"pub\/independent-publisher-2",
6 | "theme_url":"",
7 | "transfer_id":197364
8 | }
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/subscribers/SubscribersModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.subscribers
2 |
3 | data class SubscribersModel(val period: String, val dates: List) {
4 | data class PeriodData(val period: String, val subscribers: Long)
5 | }
6 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/notifications/NotificationReadApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.notifications
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | class NotificationReadApiResponse(val success: Boolean) : Response
6 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/coupons/CouponReport.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.coupons
2 |
3 | import java.math.BigDecimal
4 |
5 | data class CouponReport(
6 | val couponId: Long,
7 | val amount: BigDecimal,
8 | val ordersCount: Int
9 | )
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/TransactionExecutor.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence
2 |
3 | interface TransactionExecutor {
4 | suspend fun executeInTransaction(block: suspend () -> R): R
5 | fun runInTransaction(block: () -> R): R
6 | }
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/PlanModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | class PlanModel(
4 | val productId: Int?,
5 | val productSlug: String?,
6 | val productName: String?,
7 | val isCurrentPlan: Boolean,
8 | val hasDomainCredit: Boolean
9 | )
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/order/OrderStatusApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.order
2 |
3 | class OrderStatusApiResponse {
4 | val slug: String? = null
5 | val name: String? = null
6 | val total: Int = 0
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/LoadMode.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | sealed class LimitMode {
4 | data class Top(val limit: Int) : LimitMode()
5 | object All : LimitMode()
6 | }
7 |
8 | data class PagedMode(val pageSize: Int, val loadMore: Boolean = false)
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/subscribers/PostsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.subscribers
2 |
3 | data class PostsModel(val posts: List) {
4 | data class PostModel(val id: Long, val href: String, val title: String, val opens: Int, val clicks: Int)
5 | }
6 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpapi/WPAPIResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpapi
2 |
3 | sealed class WPAPIResponse {
4 | data class Success(val data: T?) : WPAPIResponse()
5 | data class Error(val error: WPAPINetworkError) : WPAPIResponse()
6 | }
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/comment/CommentLikeWPComRestResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.comment;
2 |
3 | public class CommentLikeWPComRestResponse {
4 | public boolean success;
5 | public boolean i_like;
6 | public long like_count;
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/comment/CommentParent.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.comment;
2 |
3 | import org.wordpress.android.fluxc.network.rest.JsonObjectOrFalse;
4 |
5 | public class CommentParent extends JsonObjectOrFalse {
6 | public long ID;
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/account/SubscriptionResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.account;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | public class SubscriptionResponse implements Response {
6 | public boolean subscribed;
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/auth/AuthEmailWPComRestResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.auth;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | public class AuthEmailWPComRestResponse implements Response {
6 | public boolean success;
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SitesFeaturesRestResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site
2 |
3 | data class SitesFeaturesRestResponse(
4 | val features: Map
5 | )
6 |
7 | data class SiteFeatures(
8 | val active: List
9 | )
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/ProductWithMetaData.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | import org.wordpress.android.fluxc.model.metadata.WCMetaData
4 |
5 | data class ProductWithMetaData(
6 | val product: WCProductModel,
7 | val metaData: List = emptyList()
8 | )
9 |
--------------------------------------------------------------------------------
/fluxc-annotations/src/main/java/org/wordpress/android/fluxc/annotations/action/ActionBuilder.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.annotations.action;
2 |
3 | public abstract class ActionBuilder {
4 | public static Action generateNoPayloadAction(IAction actionType) {
5 | return new Action<>(actionType, null);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/action/ProductAction.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.action
2 |
3 | import org.wordpress.android.fluxc.annotations.ActionEnum
4 | import org.wordpress.android.fluxc.annotations.action.IAction
5 |
6 | @ActionEnum
7 | enum class ProductAction : IAction {
8 | FETCH_PRODUCTS
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/VisitsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | data class VisitsModel(
4 | val period: String,
5 | val views: Int,
6 | val visitors: Int,
7 | val likes: Int,
8 | val reblogs: Int,
9 | val comments: Int,
10 | val posts: Int
11 | )
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/QuickStartCompletedResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | public class QuickStartCompletedResponse {
6 | @SerializedName("success")
7 | public boolean success;
8 | }
9 |
--------------------------------------------------------------------------------
/config/gradle/gradle_build_scan.gradle:
--------------------------------------------------------------------------------
1 |
2 | // Only run build scan on CI builds.
3 | if (System.getenv('CI')) {
4 | buildScan {
5 | termsOfServiceUrl = 'https://gradle.com/terms-of-service'
6 | termsOfServiceAgree = 'yes'
7 | tag 'CI'
8 | publishAlways()
9 | uploadInBackground = false
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/example/src/androidTest/java/org/wordpress/android/fluxc/release/ReleaseStack_CardsTest.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.release
2 |
3 | class ReleaseStack_CardsTest : ReleaseStack_Base() {
4 | @Throws(Exception::class)
5 | override fun setUp() {
6 | super.setUp()
7 | // Register
8 | init()
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-fetch-transactions-summary-response.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "count": 7,
4 | "currency": "usd",
5 | "total": 2231720,
6 | "fees": 58095,
7 | "net": 2173625,
8 | "store_currencies": [
9 | "usd"
10 | ],
11 | "customer_currencies": [
12 | "usd"
13 | ]
14 | }
15 | }
--------------------------------------------------------------------------------
/example/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/action/PlanOffersAction.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.action
2 |
3 | import org.wordpress.android.fluxc.annotations.ActionEnum
4 | import org.wordpress.android.fluxc.annotations.action.IAction
5 |
6 | @ActionEnum
7 | enum class PlanOffersAction : IAction {
8 | FETCH_PLAN_OFFERS
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/blaze/BlazeTargetingParameters.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.blaze
2 |
3 | data class BlazeTargetingParameters(
4 | val locations: List? = null,
5 | val languages: List? = null,
6 | val devices: List? = null,
7 | val topics: List? = null
8 | )
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/time/FileDownloadsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.time
2 |
3 | data class FileDownloadsModel(val fileDownloads: List, val hasMore: Boolean) {
4 | data class FileDownloads(
5 | val filename: String,
6 | val downloads: Int
7 | )
8 | }
9 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/order/OrderCountApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.order
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | class OrderCountApiResponse : Response {
6 | val slug: String? = null
7 | val total: Int = 0
8 | }
9 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/system/WCApiVersionResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.system
2 |
3 | import org.wordpress.android.fluxc.model.SiteModel
4 |
5 | data class WCApiVersionResponse(
6 | val siteModel: SiteModel,
7 | val apiVersion: String?
8 | )
9 |
--------------------------------------------------------------------------------
/fluxc-annotations/src/main/java/org/wordpress/android/fluxc/annotations/AnnotationConfig.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.annotations;
2 |
3 | public abstract class AnnotationConfig {
4 | public static final String PACKAGE = "org.wordpress.android.fluxc.generated";
5 | public static final String PACKAGE_ENDPOINTS = PACKAGE + ".endpoint";
6 | }
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/jetpack/JetpackUser.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.jetpack
2 |
3 | data class JetpackUser(
4 | val isConnected: Boolean,
5 | val isMaster: Boolean,
6 | val username: String,
7 | val wpcomId: Long,
8 | val wpcomUsername: String,
9 | val wpcomEmail: String
10 | )
11 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/TagsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | data class TagsModel(val tags: List, val hasMore: Boolean) {
4 | class TagModel(val items: List- , val views: Long) {
5 | data class Item(val name: String, val type: String, val link: String)
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteEditorsResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | public class SiteEditorsResponse implements Response {
6 | public String editor_mobile;
7 | public String editor_web;
8 | }
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/theme/ThemeDemoPageResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.theme
2 |
3 | data class DemoPageResponse(
4 | val link: String,
5 | val slug: String,
6 | val title: PageTitle,
7 | )
8 |
9 | data class PageTitle(
10 | val rendered: String,
11 | )
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/BuildConfigWrapper.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import dagger.Reusable
4 | import org.wordpress.android.fluxc.BuildConfig
5 | import javax.inject.Inject
6 |
7 | @Reusable
8 | class BuildConfigWrapper @Inject constructor() {
9 | fun isDebug() = BuildConfig.DEBUG
10 | }
11 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/InsightsMostPopularModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | data class InsightsMostPopularModel(
4 | val siteId: Long,
5 | val highestDayOfWeek: Int,
6 | val highestHour: Int,
7 | val highestDayPercent: Double,
8 | val highestHourPercent: Double
9 | )
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpapi/WPAPINetworkError.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpapi
2 |
3 | import org.wordpress.android.fluxc.network.BaseRequest.BaseNetworkError
4 |
5 | class WPAPINetworkError(
6 | baseError: BaseNetworkError,
7 | val errorCode: String? = null
8 | ) : BaseNetworkError(baseError)
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpapi/applicationpasswords/ApplicationPasswordCredentials.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords
2 |
3 | data class ApplicationPasswordCredentials(
4 | val userName: String,
5 | val password: String,
6 | val uuid: ApplicationPasswordUUID? = null
7 | )
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/scan/threat/FixThreatsResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.scan.threat
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | data class FixThreatsResponse(@SerializedName("ok") val ok: Boolean?) : Response
7 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SupportedStateResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site
2 |
3 | import android.os.Parcelable
4 | import kotlinx.parcelize.Parcelize
5 |
6 | @Parcelize
7 | class SupportedStateResponse(
8 | val code: String?,
9 | val name: String?
10 | ) : Parcelable
11 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/store/StockMediaItem.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.store
2 |
3 | data class StockMediaItem(
4 | val id: String? = null,
5 | val name: String? = null,
6 | val title: String? = null,
7 | val url: String? = null,
8 | val date: String? = null,
9 | val thumbnail: String? = null
10 | )
11 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/order/OrderMappingConst.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.order
2 |
3 | object OrderMappingConst {
4 | const val CHARGE_ID_KEY = "_charge_id"
5 | const val SHIPPING_PHONE_KEY = "_shipping_phone"
6 | const val RECEIPT_URL_KEY = "receipt_url"
7 | }
8 |
--------------------------------------------------------------------------------
/example/src/main/res/drawable/ic_check.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/config/gradle/gradle_build_cache.gradle:
--------------------------------------------------------------------------------
1 |
2 | // Only run build cache on CI builds.
3 | if (System.getenv('CI')) {
4 | buildCache {
5 | remote(HttpBuildCache) {
6 | url = "http://10.0.2.215:5071/cache/"
7 | allowUntrustedServer = true
8 | allowInsecureProtocol = true
9 | push = true
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/gradle.properties-example:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | org.gradle.jvmargs=-Xmx6G -XX:+HeapDumpOnOutOfMemoryError
4 |
5 | # WordPress-Flux-Android properties.
6 |
7 | android.useAndroidX=true
8 | android.enableJetifier=false
9 |
10 | android.nonTransitiveRClass=true
11 |
12 | # Dependency Analysis Plugin
13 | dependency.analysis.android.ignored.variants=release
14 |
--------------------------------------------------------------------------------
/example/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 8dp
6 | 4dp
7 |
8 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/account/UsernameSuggestionsResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.account;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | import java.util.List;
6 |
7 | public class UsernameSuggestionsResponse implements Response {
8 | public List suggestions;
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/transactions/SupportedDomainCountry.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.transactions
2 |
3 | import android.os.Parcelable
4 | import kotlinx.parcelize.Parcelize
5 |
6 | @Parcelize
7 | data class SupportedDomainCountry(
8 | val code: String,
9 | val name: String
10 | ) : Parcelable
11 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/utils/StatsGranularity.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.utils
2 |
3 | enum class StatsGranularity(private val value: String) {
4 | DAYS("day"),
5 | WEEKS("week"),
6 | MONTHS("month"),
7 | YEARS("year");
8 |
9 | override fun toString(): String {
10 | return value
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/InsightTypeDataModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | import org.wordpress.android.fluxc.store.StatsStore.InsightType
4 |
5 | data class InsightTypeDataModel(val type: InsightType, val status: Status, val position: Int?) {
6 | enum class Status {
7 | ADDED, REMOVED, NEW
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/account/AccountBoolResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.account;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | public class AccountBoolResponse implements Response {
6 | public boolean success;
7 | public String error;
8 | public String message;
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/post/GeoLocation.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.post;
2 |
3 | import org.wordpress.android.fluxc.network.rest.JsonObjectOrFalse;
4 |
5 | public class GeoLocation extends JsonObjectOrFalse {
6 | public double latitude;
7 | public double longitude;
8 | public String address;
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/utils/CurrentDateUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.utils
2 |
3 | import java.util.Calendar
4 | import java.util.Date
5 | import javax.inject.Inject
6 |
7 | class CurrentDateUtils
8 | @Inject constructor() {
9 | fun getCurrentDate() = Date()
10 | fun getCurrentCalendar() = Calendar.getInstance()
11 | }
12 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/WCVisitorStatsSummary.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | import org.wordpress.android.fluxc.store.WCStatsStore.StatsGranularity
4 |
5 | data class WCVisitorStatsSummary(
6 | val granularity: StatsGranularity,
7 | val date: String,
8 | val views: Int,
9 | val visitors: Int
10 | )
11 |
--------------------------------------------------------------------------------
/tests/api/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'java'
2 | dependencies {
3 | testImplementation sharedLibs.restAssured
4 | testImplementation sharedLibs.junit
5 | testImplementation sharedLibs.json
6 | }
7 |
8 | test {
9 | testLogging {
10 | events "passed", "skipped", "failed", "standardOut", "standardError"
11 | }
12 | }
13 |
14 | repositories {
15 | google()
16 | }
17 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/logging/FluxCCrashLogger.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.logging
2 |
3 | interface FluxCCrashLogger {
4 | fun recordEvent(message: String, category: String?)
5 |
6 | fun recordException(exception: Throwable, category: String?)
7 |
8 | fun sendReport(exception: Throwable?, tags: Map, message: String?)
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/account/AuthOptionsResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.account
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | @Suppress("VariableNaming")
6 | class AuthOptionsResponse : Response {
7 | var passwordless: Boolean? = null
8 | var email_verified: Boolean? = null
9 | }
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/order/CouponLine.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.order
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class CouponLine(
6 | val id: Long?,
7 | val code: String,
8 | val discount: String?,
9 | @SerializedName("discount_tax")
10 | val discountTax: String?,
11 | )
12 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionSha256Sum=258e722ec21e955201e31447b0aed14201765a3bfbae296a46cf60b70e66db70
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
5 | networkTimeout=10000
6 | validateDistributionUrl=true
7 | zipStoreBase=GRADLE_USER_HOME
8 | zipStorePath=wrapper/dists
9 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/WCGiftCardStats.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | data class WCGiftCardStats(
4 | val usedValue: Long,
5 | val netValue: Double,
6 | val intervals: List
7 | )
8 |
9 | data class WCGiftCardStatsInterval(
10 | val usedValue: Long,
11 | val netValue: Double,
12 | )
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/WCShippingMethod.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | import org.wordpress.android.fluxc.persistence.entity.ShippingMethodEntity
4 |
5 | data class WCShippingMethod (
6 | val id: String,
7 | val title: String
8 | )
9 |
10 | fun ShippingMethodEntity.toAppModel() = WCShippingMethod(this.id,this.title)
11 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/ProductCountApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | class ProductCountApiResponse : Response {
6 | val slug: String? = null
7 | val name: String? = null
8 | val total: Long = 0
9 | }
10 |
--------------------------------------------------------------------------------
/example/src/test/resources/wp/jetpack/scan/jp-complete-scan-scanning.json:
--------------------------------------------------------------------------------
1 | {
2 | "state": "scanning",
3 | "threats": [],
4 | "has_cloud": false,
5 | "credentials": [
6 | {
7 | "still_valid": true,
8 | "type": "managed",
9 | "role": "main"
10 | }
11 | ],
12 | "current": {
13 | "is_initial": false,
14 | "timestamp": "2020-11-16T08:02:31+00:00",
15 | "progress": 80
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/post/PostParent.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.post;
2 |
3 | import org.wordpress.android.fluxc.network.rest.JsonObjectOrFalse;
4 |
5 | public class PostParent extends JsonObjectOrFalse {
6 | public long ID;
7 | public String type;
8 | public String link;
9 | public String title;
10 | }
11 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/account/IsAvailableResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.account;
2 |
3 | import org.wordpress.android.fluxc.network.rest.JsonObjectOrFalse;
4 |
5 | public class IsAvailableResponse extends JsonObjectOrFalse {
6 | public String error;
7 | public String message;
8 | public String status;
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/JetpackCapabilitiesResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | data class JetpackCapabilitiesResponse(
7 | @SerializedName("capabilities") val capabilities: List?
8 | ) : Response
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/notifications/NotificationSeenApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.notifications
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | @Suppress("VariableNaming")
6 | class NotificationSeenApiResponse : Response {
7 | val last_seen_time: Long? = null
8 | val success: Boolean = false
9 | }
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/order/OrderReceiptResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.order
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class OrderReceiptResponse(
6 | @SerializedName("receipt_url") val receiptUrl: String,
7 | @SerializedName("expiration_date") val expirationDate: String,
8 | )
9 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/action/VerticalAction.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.action
2 |
3 | import org.wordpress.android.fluxc.annotations.Action
4 | import org.wordpress.android.fluxc.annotations.ActionEnum
5 | import org.wordpress.android.fluxc.annotations.action.IAction
6 |
7 | @ActionEnum
8 | enum class VerticalAction : IAction {
9 | @Action
10 | FETCH_SEGMENTS,
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/InsightsAllTimeModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | import java.util.Date
4 |
5 | data class InsightsAllTimeModel(
6 | val siteId: Long,
7 | val date: Date? = null,
8 | val visitors: Int,
9 | val views: Int,
10 | val posts: Int,
11 | val viewsBestDay: String,
12 | val viewsBestDayTotal: Int
13 | )
14 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/notifications/RegisterDeviceRestResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.notifications
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class RegisterDeviceRestResponse : Response {
7 | @SerializedName("ID")
8 | val id: String? = null
9 | }
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/payments/inperson/CapturePaymentApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.payments.inperson
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class CapturePaymentApiResponse(
6 | @SerializedName("status") val status: String,
7 | @SerializedName("id") val paymentId: String
8 | )
9 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-fetch-gateway-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data":{
3 | "id": "cod",
4 | "title": "Pay in Person",
5 | "description": "Pay by card or another accepted payment method",
6 | "order": "",
7 | "enabled": true,
8 | "method_title": "Cash on delivery",
9 | "method_description": "Have your customers pay with cash (or by other means) upon delivery."
10 | }
11 | }
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-update-gateway-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data":{
3 | "id": "cod",
4 | "title": "Pay in Person",
5 | "description": "Pay by card or another accepted payment method",
6 | "order": "",
7 | "enabled": true,
8 | "method_title": "Cash on delivery",
9 | "method_description": "Have your customers pay with cash (or by other means) upon delivery."
10 | }
11 | }
--------------------------------------------------------------------------------
/example/src/main/res/drawable/ic_clear.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/orderstats/OrderStatsApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.orderstats
2 |
3 | import com.google.gson.JsonElement
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class OrderStatsApiResponse : Response {
7 | val fields: JsonElement? = null
8 | val data: JsonElement? = null
9 | }
10 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-load-account-response-empty-status.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "has_pending_requirements": false,
4 | "has_overdue_requirements": false,
5 | "current_deadline": null,
6 | "status": "",
7 | "statement_descriptor": "DO.WPMT.CO",
8 | "store_currencies": {
9 | "default": "usd",
10 | "supported": ["usd"]
11 | },
12 | "country": "US"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc-annotations/src/main/java/org/wordpress/android/fluxc/annotations/ActionEnum.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.annotations;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Target;
5 |
6 | /**
7 | * Defines an enum of actions related to a particular store.
8 | */
9 | @Target(value = ElementType.TYPE)
10 | public @interface ActionEnum {
11 | String name() default "";
12 | }
13 |
--------------------------------------------------------------------------------
/fluxc-processor/src/main/resources/wp-api-endpoints.txt:
--------------------------------------------------------------------------------
1 | /posts/
2 | /posts//
3 |
4 | /pages/
5 | /pages//
6 |
7 | /media/
8 | /media//
9 |
10 | /comments/
11 | /comments//
12 |
13 | /settings/
14 |
15 | /users/
16 | /users/me/
17 | /users/me/application-passwords
18 | /users/me/application-passwords/#String
19 | /users/me/application-passwords/introspect
20 |
21 | /plugins/
22 | /plugins/#String
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/InitiateAutomatedTransferResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | public class InitiateAutomatedTransferResponse {
6 | public String status;
7 | public boolean success;
8 | @SerializedName("transfer_id")
9 | public int transferId;
10 | }
11 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/UserRoleWPComRestResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import java.util.List;
4 |
5 | public class UserRoleWPComRestResponse {
6 | public class UserRolesResponse {
7 | public List roles;
8 | }
9 | public String name;
10 | public String display_name;
11 | }
12 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/customer/CustomerSorting.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.customer
2 |
3 | enum class CustomerSorting {
4 | NAME_ASC,
5 | NAME_DESC,
6 | INCLUDE_ASC,
7 | INCLUDE_DESC,
8 | REGISTERED_DATE_ASC,
9 | REGISTERED_DATE_DESC,
10 | DATE_LAST_ACTIVE_ASC,
11 | DATE_LAST_ACTIVE_DESC,
12 | }
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/payments/inperson/ConnectionTokenApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.payments.inperson
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ConnectionTokenApiResponse(
6 | @SerializedName("secret") val token: String,
7 | @SerializedName("test_mode") val isTestMode: Boolean
8 | )
9 |
--------------------------------------------------------------------------------
/.buildkite/publish-fluxc-annotations.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -euo pipefail
4 |
5 | ./gradlew \
6 | :fluxc-annotations:prepareToPublishToS3 $(prepare_to_publish_to_s3_params) \
7 | :fluxc-annotations:publish
8 |
9 | # Add meta-data for the published version so we can use it in subsequent steps
10 | cat ./fluxc-annotations/build/published-version.txt | buildkite-agent meta-data set "PUBLISHED_FLUXC_ANNOTATIONS_VERSION"
11 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/JsonLoaderUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc
2 |
3 | import com.google.gson.Gson
4 |
5 | object JsonLoaderUtils {
6 | fun String.jsonFileAs(clazz: Class) =
7 | UnitTestUtils.getStringFromResourceFile(
8 | this@JsonLoaderUtils::class.java,
9 | this
10 | )?.let { Gson().fromJson(it, clazz) }
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/time/SearchTermsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.time
2 |
3 | data class SearchTermsModel(
4 | val otherSearchTerms: Int,
5 | val totalSearchTerms: Int,
6 | val unknownSearchCount: Int,
7 | val searchTerms: List,
8 | val hasMore: Boolean
9 | ) {
10 | data class SearchTerm(val text: String, val views: Int)
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/reader/ReaderSearchSitesResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.reader
2 |
3 | import com.google.gson.annotations.JsonAdapter
4 |
5 | import org.wordpress.android.fluxc.model.ReaderSiteModel
6 |
7 | @JsonAdapter(ReaderSearchSitesDeserializer::class)
8 | class ReaderSearchSitesResponse(
9 | val sites: List
10 | )
11 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/orderstats/RevenueStatsApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.orderstats
2 |
3 | import com.google.gson.JsonElement
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class RevenueStatsApiResponse : Response {
7 | val totals: JsonElement? = null
8 | val intervals: JsonElement? = null
9 | }
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/BatchProductApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | data class BatchProductApiResponse(
7 | @SerializedName("update") val updatedProducts: List? = null,
8 | ) : Response
9 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-load-account-response-current-deadline.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "has_pending_requirements": false,
4 | "has_overdue_requirements": true,
5 | "current_deadline": 1628258304,
6 | "status": "",
7 | "statement_descriptor": "DO.WPMT.CO",
8 | "store_currencies": {
9 | "default": "usd",
10 | "supported": ["usd"]
11 | },
12 | "country": "US"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-load-account-response-enabled-status.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "has_pending_requirements": false,
4 | "has_overdue_requirements": false,
5 | "current_deadline": null,
6 | "status": "enabled",
7 | "statement_descriptor": "DO.WPMT.CO",
8 | "store_currencies": {
9 | "default": "usd",
10 | "supported": ["usd"]
11 | },
12 | "country": "US"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-load-account-response-new-status.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "has_pending_requirements": false,
4 | "has_overdue_requirements": false,
5 | "current_deadline": null,
6 | "status": "new_status",
7 | "statement_descriptor": "DO.WPMT.CO",
8 | "store_currencies": {
9 | "default": "usd",
10 | "supported": ["usd"]
11 | },
12 | "country": "US"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/src/main/res/layout/fragment_woo_customers_search.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/gateways/WCGatewayModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.gateways
2 |
3 | data class WCGatewayModel(
4 | val id: String,
5 | val title: String,
6 | val description: String,
7 | val order: Int,
8 | val isEnabled: Boolean,
9 | val methodTitle: String,
10 | val methodDescription: String,
11 | val features: List
12 | )
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/entity/ProductBasedIdentification.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.entity
2 |
3 | import org.wordpress.android.fluxc.model.LocalOrRemoteId.LocalId
4 | import org.wordpress.android.fluxc.model.LocalOrRemoteId.RemoteId
5 |
6 | data class ProductBasedIdentification(
7 | val productRemoteId: RemoteId,
8 | val localSiteId: LocalId
9 | )
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/WhatsNewAppVersionUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | object WhatsNewAppVersionUtils {
4 | fun versionNameToInt(appVersion: String): Int {
5 | val majorMinor = Regex("(\\d+\\.)(\\d+)").find(appVersion, 0)?.value
6 |
7 | majorMinor?.let {
8 | return it.replace(".", "").toInt()
9 | }
10 | return -1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/example/src/test/resources/wp/jetpack/scan/jp-complete-scan-idle.json:
--------------------------------------------------------------------------------
1 | {
2 | "state": "idle",
3 | "threats": [],
4 | "has_cloud": false,
5 | "credentials": [
6 | {
7 | "still_valid": true,
8 | "type": "managed",
9 | "role": "main"
10 | }
11 | ],
12 | "most_recent": {
13 | "is_initial": false,
14 | "timestamp": "2020-11-16T06:23:26+00:00",
15 | "duration": 12,
16 | "progress": 100,
17 | "error": false
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/DomainPriceResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site
2 |
3 | @Suppress("ConstructorParameterNaming")
4 | data class DomainPriceResponse(
5 | val is_premium: Boolean = false,
6 | val product_id: Int?,
7 | val product_slug: String?,
8 | val cost: String?,
9 | val raw_price: Double?,
10 | val currency_code: String?
11 | )
12 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-load-account-response-restricted-soon-status.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "has_pending_requirements": false,
4 | "has_overdue_requirements": false,
5 | "current_deadline": null,
6 | "status": "restricted_soon",
7 | "statement_descriptor": "DO.WPMT.CO",
8 | "store_currencies": {
9 | "default": "usd",
10 | "supported": ["usd"]
11 | },
12 | "country": "US"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/src/test/resources/notifications/subject-response.json:
--------------------------------------------------------------------------------
1 | {
2 | "text": "You've received 20 likes on My Site",
3 | "ranges": [
4 | {
5 | "type": "b",
6 | "indices": [
7 | 16,
8 | 18
9 | ]
10 | },
11 | {
12 | "type": "site",
13 | "indices": [
14 | 28,
15 | 35
16 | ],
17 | "url": "http://mysite.wordpress.com",
18 | "id": 123
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/module/ReleaseToolsModule.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.module;
2 |
3 | import java.util.Locale;
4 |
5 | import javax.inject.Singleton;
6 |
7 | import dagger.Module;
8 | import dagger.Provides;
9 |
10 | @Module
11 | public class ReleaseToolsModule {
12 | @Singleton
13 | @Provides
14 | public Locale provideLocale() {
15 | return Locale.getDefault();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/AutomatedTransferStatusResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | public class AutomatedTransferStatusResponse {
6 | public String status;
7 | @SerializedName("step")
8 | public int currentStep;
9 | @SerializedName("total")
10 | public int totalSteps;
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/PrivateAtomicCookieResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site
2 |
3 | class PrivateAtomicCookieResponse(
4 | val url: String,
5 | val cookies: List
6 | )
7 |
8 | class AtomicCookie(
9 | val expires: String,
10 | val path: String,
11 | val domain: String,
12 | val name: String,
13 | val value: String
14 | )
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/xmlrpc/XMLRPCException.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.xmlrpc;
2 |
3 | public class XMLRPCException extends Exception {
4 | private static final long serialVersionUID = 7499675036625522379L;
5 |
6 | public XMLRPCException(Exception e) {
7 | super(e);
8 | }
9 |
10 | public XMLRPCException(String string) {
11 | super(string);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/orderstats/VisitorStatsSummaryApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.orderstats
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | data class VisitorStatsSummaryApiResponse(
6 | val date: String? = null,
7 | val period: String? = null,
8 | val views: Int = 0,
9 | val visitors: Int = 0
10 | ) : Response
11 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/stripe-extension-statement-descriptor-null.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "has_pending_requirements": false,
4 | "has_overdue_requirements": false,
5 | "current_deadline": null,
6 | "is_live": true,
7 | "status": "restricted_soon",
8 | "statement_descriptor": null,
9 | "store_currencies": {
10 | "default": "usd",
11 | "supported": ["usd"]
12 | },
13 | "country": "US"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/notifications/NotificationsApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.notifications
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | @Suppress("VariableNaming")
6 | class NotificationsApiResponse : Response {
7 | val last_seen_time: Long? = null
8 | val number: Int? = null
9 | val notes: List? = null
10 | }
11 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/BatchAddProductTagApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class BatchAddProductTagApiResponse : Response {
7 | @SerializedName("create")
8 | val addedTags: List? = null
9 | }
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/shippinglabels/SLCreationEligibilityApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.shippinglabels
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class SLCreationEligibilityApiResponse(
6 | @SerializedName("is_eligible")
7 | val isEligible: Boolean,
8 | @SerializedName("reason")
9 | val reason: String?
10 | )
11 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-fetch-all-gateways-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data":[
3 | {"id": "woocommerce_payments", "title": "Credit card / debit card", "description": "Enter your card details"},
4 | {"id": "bacs", "title": "Direct bank transfer", "description": "Make your payment directly into our bank account. Please use your Order ID as the payment reference. Your order will not be shipped until the funds have cleared in our account."}
5 | ]
6 | }
--------------------------------------------------------------------------------
/example/src/main/java/org/wordpress/android/fluxc/example/di/WCOrderListActivityModule.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.example.di
2 |
3 | import dagger.Module
4 | import dagger.android.ContributesAndroidInjector
5 | import org.wordpress.android.fluxc.example.WCOrderListActivity
6 |
7 | @Module
8 | internal interface WCOrderListActivityModule {
9 | @ContributesAndroidInjector
10 | fun provideWCOrderListActivityInjector(): WCOrderListActivity
11 | }
12 |
--------------------------------------------------------------------------------
/example/src/test/resources/wp/jetpack/scan/threat/threat-file-with-context-as-string.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 22917236,
3 | "signature": "PHP.Generic.BadPattern.5",
4 | "first_detected": "2020-06-25T13:10:05.000Z",
5 | "description": "This code pattern is often used to run a very dangerous shell programs on your server. The code in these files needs to be reviewed, and possibly cleaned.",
6 | "status": "current",
7 | "fixable": false,
8 | "context": ""
9 | }
10 |
--------------------------------------------------------------------------------
/fluxc-annotations/src/main/java/org/wordpress/android/fluxc/annotations/Endpoint.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.annotations;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Target;
6 |
7 | /**
8 | * Declares a valid REST endpoint.
9 | */
10 | @Documented
11 | @Target({ElementType.FIELD, ElementType.METHOD})
12 | public @interface Endpoint {
13 | String value();
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/activity/BackupDownloadStatusModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.activity
2 |
3 | import java.util.Date
4 |
5 | data class BackupDownloadStatusModel(
6 | val downloadId: Long,
7 | val rewindId: String,
8 | val backupPoint: Date,
9 | val startedAt: Date,
10 | val progress: Int?,
11 | val downloadCount: Int?,
12 | val validUntil: Date?,
13 | val url: String?
14 | )
15 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/WCSSRModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | data class WCSSRModel(
4 | val remoteSiteId: Long,
5 | val environment: String? = null,
6 | val database: String? = null,
7 | val activePlugins: String? = null,
8 | val theme: String? = null,
9 | val settings: String? = null,
10 | val security: String? = null,
11 | val pages: String? = null
12 | )
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/SiteSettingsResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc
2 |
3 | import com.google.gson.JsonElement
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class SiteSettingsResponse : Response {
7 | val id: String? = null
8 | val value: JsonElement? = null // JsonElement because this field can be a string or an array (at least)
9 | }
10 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/test/java/org/wordpress/android/fluxc/persistence/dao/FakeTransactionExecutor.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.dao
2 |
3 | import org.wordpress.android.fluxc.persistence.TransactionExecutor
4 |
5 | object FakeTransactionExecutor : TransactionExecutor {
6 | override suspend fun executeInTransaction(block: suspend () -> R): R = block()
7 |
8 | override fun runInTransaction(block: () -> R): R = block()
9 | }
10 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-load-account-response-is-live-account.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "has_pending_requirements": false,
4 | "has_overdue_requirements": false,
5 | "current_deadline": null,
6 | "is_live": true,
7 | "status": "restricted_soon",
8 | "statement_descriptor": "DO.WPMT.CO",
9 | "store_currencies": {
10 | "default": "usd",
11 | "supported": ["usd"]
12 | },
13 | "country": "US"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/example/src/main/java/org/wordpress/android/fluxc/example/di/ApplicationModule.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.example.di
2 |
3 | import android.app.Application
4 | import android.content.Context
5 |
6 | import dagger.Binds
7 | import dagger.Module
8 |
9 | @Module
10 | abstract class ApplicationModule {
11 | // Expose Application as an injectable context
12 | @Binds
13 | internal abstract fun bindContext(application: Application): Context
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/module/ApplicationPasswordsClientId.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.module
2 |
3 | import javax.inject.Qualifier
4 | import kotlin.annotation.AnnotationRetention.RUNTIME
5 |
6 | /**
7 | * Defines the name to use for naming the WordPress "application passwords" that the app
8 | * will create.
9 | */
10 | @Qualifier
11 | @MustBeDocumented
12 | @Retention(RUNTIME)
13 | annotation class ApplicationPasswordsClientId
14 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/notifications/NotificationHashesApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.notifications
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | @Suppress("VariableNaming")
6 | class NotificationHashesApiResponse : Response {
7 | val last_seen_time: Long? = null
8 | val number: Int? = null
9 | val notes: List? = null
10 | }
11 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/AppLogWrapper.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import org.wordpress.android.util.AppLog
4 | import javax.inject.Inject
5 |
6 | class AppLogWrapper
7 | @Inject constructor() {
8 | fun d(tag: AppLog.T, message: String) = AppLog.d(tag, message)
9 | fun e(tag: AppLog.T, message: String) = AppLog.e(tag, message)
10 | fun w(tag: AppLog.T, message: String) = AppLog.w(tag, message)
11 | }
12 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/taxes/TaxBasedOnSettingEntity.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.taxes
2 |
3 | import androidx.room.Entity
4 | import androidx.room.PrimaryKey
5 | import org.wordpress.android.fluxc.model.LocalOrRemoteId.LocalId
6 |
7 | @Entity(tableName = "TaxBasedOnSetting")
8 | data class TaxBasedOnSettingEntity(
9 | @PrimaryKey val localSiteId: LocalId,
10 | val selectedOption: String,
11 | )
12 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/wc/refunds/RefundFixtures.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.wc.refunds
2 |
3 | import org.wordpress.android.fluxc.network.rest.wpcom.wc.refunds.RefundRestClient.RefundResponse
4 |
5 | val REFUND_RESPONSE = RefundResponse(
6 | 1L,
7 | "2011-10-10T14:48:00",
8 | "10.00",
9 | "No reason",
10 | false,
11 | emptyList(),
12 | emptyList(),
13 | emptyList()
14 | )
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListOrder.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.list
2 |
3 | import java.util.Locale
4 |
5 | enum class ListOrder(val value: String) {
6 | ASC("ASC"),
7 | DESC("DESC");
8 | companion object {
9 | fun fromValue(value: String): ListOrder? {
10 | return values().firstOrNull { it.value.toLowerCase(Locale.ROOT) == value.toLowerCase(Locale.ROOT) }
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/time/VideoPlaysModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.time
2 |
3 | data class VideoPlaysModel(
4 | val otherPlays: Int,
5 | val totalPlays: Int,
6 | val plays: List,
7 | val hasMore: Boolean
8 | ) {
9 | data class VideoPlays(
10 | val postId: String,
11 | val title: String,
12 | val url: String?,
13 | val plays: Int
14 | )
15 | }
16 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/scan/FetchScanHistoryResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.scan
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 | import org.wordpress.android.fluxc.network.rest.wpcom.scan.threat.Threat
6 |
7 | data class FetchScanHistoryResponse(
8 | @SerializedName("threats") val threats: List?
9 | ) : Response
10 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/extensions/MapExtensions.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils.extensions
2 |
3 | @Suppress("UNCHECKED_CAST")
4 | fun Map.filterNotNull(): Map =
5 | filterValues { it != null } as Map
6 |
7 | fun MutableMap.putIfNotNull(vararg pairs: Pair) = apply {
8 | pairs.forEach { pair ->
9 | pair.second?.let { put(pair.first, it) }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/shippinglabels/ShippingLabelStatusApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.shippinglabels
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ShippingLabelStatusApiResponse(
6 | @SerializedName("success")
7 | val isSuccess: Boolean = false,
8 | @SerializedName("labels")
9 | val labels: List? = null
10 | )
11 |
--------------------------------------------------------------------------------
/example/src/main/java/org/wordpress/android/fluxc/example/di/MainActivityModule.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.example.di
2 |
3 | import dagger.Module
4 | import dagger.android.ContributesAndroidInjector
5 | import org.wordpress.android.fluxc.example.MainExampleActivity
6 |
7 | @Module
8 | internal interface MainActivityModule {
9 | @ContributesAndroidInjector(modules = [FragmentsModule::class])
10 | fun provideMainActivityInjector(): MainExampleActivity
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc-processor/src/main/resources/xmlrpc-endpoints.txt:
--------------------------------------------------------------------------------
1 | wp.getProfile
2 | wp.getOptions
3 | wp.getPostFormats
4 | wp.getUsersBlogs
5 | wp.getMediaLibrary
6 | wp.getMediaItem
7 | wp.getPost
8 | wp.getPosts
9 | wp.newPost
10 | wp.editPost
11 | wp.deletePost
12 | wp.getTerm
13 | wp.getTerms
14 | wp.newTerm
15 | wp.deleteTerm
16 | wp.editTerm
17 | wp.uploadFile
18 | wp.newComment
19 | wp.getComment
20 | wp.getComments
21 | wp.deleteComment
22 | wp.editComment
23 | system.listMethods
24 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/FollowersModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | import java.util.Date
4 |
5 | data class FollowersModel(
6 | val totalCount: Int,
7 | val followers: List,
8 | val hasMore: Boolean
9 | ) {
10 | data class FollowerModel(
11 | val avatar: String,
12 | val label: String,
13 | val url: String?,
14 | val dateSubscribed: Date
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/DomainAvailabilityResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site
2 |
3 | @Suppress("ConstructorParameterNaming")
4 | class DomainAvailabilityResponse(
5 | val product_id: Int?,
6 | val product_slug: String?,
7 | val domain_name: String?,
8 | val status: String?,
9 | val mappable: String?,
10 | val cost: String?,
11 | val supports_privacy: Boolean = false
12 | )
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/converters/LocalIdConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.converters
2 |
3 | import androidx.room.TypeConverter
4 | import org.wordpress.android.fluxc.model.LocalOrRemoteId.LocalId
5 |
6 | class LocalIdConverter {
7 | @TypeConverter
8 | fun fromLocalId(value: LocalId?) = value?.value
9 |
10 | @TypeConverter
11 | fun toLocalId(value: Int?) = value?.let { LocalId(it) }
12 | }
13 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/jetpacksocial/JetpackSocial.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.jetpacksocial
2 |
3 | data class JetpackSocial(
4 | val isShareLimitEnabled: Boolean,
5 | val toBePublicizedCount: Int,
6 | val shareLimit: Int,
7 | val publicizedCount: Int,
8 | val sharedPostsCount: Int,
9 | val sharesRemaining: Int,
10 | val isEnhancedPublishingEnabled: Boolean,
11 | val isSocialImageGeneratorEnabled: Boolean,
12 | )
13 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/time/VisitsAndViewsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.time
2 |
3 | data class VisitsAndViewsModel(val period: String, val dates: List) {
4 | data class PeriodData(
5 | val period: String,
6 | val views: Long,
7 | val visitors: Long,
8 | val likes: Long,
9 | val reblogs: Long,
10 | val comments: Long,
11 | val posts: Long
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/orderstats/VisitorStatsApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.orderstats
2 |
3 | import com.google.gson.JsonElement
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class VisitorStatsApiResponse : Response {
7 | val date: String? = null
8 | val unit: String? = null
9 | val fields: JsonElement? = null
10 | val data: JsonElement? = null
11 | }
12 |
--------------------------------------------------------------------------------
/example/src/test/resources/wc/product-attribute-delete.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 17,
3 | "name": "Size",
4 | "slug": "pa_size",
5 | "type": "select",
6 | "order_by": "name",
7 | "has_archives": true,
8 | "_links": {
9 | "self": [
10 | {
11 | "href": "https://example.com/wp-json/wc/v3/products/attributes/6"
12 | }
13 | ],
14 | "collection": [
15 | {
16 | "href": "https://example.com/wp-json/wc/v3/products/attributes"
17 | }
18 | ]
19 | }
20 | }
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/time/AuthorsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.time
2 |
3 | data class AuthorsModel(val otherViews: Int, val authors: List, val hasMore: Boolean) {
4 | data class Author(
5 | val name: String,
6 | val views: Int,
7 | val avatarUrl: String?,
8 | val posts: List
9 | )
10 | data class Post(val id: String, val title: String, val views: Int, val url: String?)
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/notifications/NotificationHashApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.notifications
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | /**
6 | * The response to fetching only the `id` and `note_hash` from the remote api endpoint
7 | */
8 | @Suppress("VariableNaming")
9 | class NotificationHashApiResponse : Response {
10 | var id: Long = 0
11 | var note_hash: Long = 0
12 | }
13 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/post/PostRemoteAutoSaveModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.post
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class PostRemoteAutoSaveModel(
6 | @SerializedName("ID") val revisionId: Long?,
7 | @SerializedName("post_ID") val remotePostId: Long?,
8 | @SerializedName("modified") val modified: String?,
9 | @SerializedName("preview_URL") val previewUrl: String?
10 | )
11 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/converters/RemoteIdConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.converters
2 |
3 | import androidx.room.TypeConverter
4 | import org.wordpress.android.fluxc.model.LocalOrRemoteId.RemoteId
5 |
6 | class RemoteIdConverter {
7 | @TypeConverter
8 | fun fromRemoteId(value: RemoteId?) = value?.value
9 |
10 | @TypeConverter
11 | fun toRemoteId(value: Long?) = value?.let { RemoteId(it) }
12 | }
13 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-pay-capture-terminal-payment-response-amount-too-small.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": "wcpay_capture_error",
3 | "message": "Payment capture failed to complete with the following message: Minimum required amount was not reached. The minimum amount to capture is 0.5 USD.",
4 | "data": {
5 | "status": 400,
6 | "extra_details": {
7 | "minimum_amount": 50,
8 | "minimum_amount_currency": "USD"
9 | },
10 | "error_type": "amount_too_small"
11 | }
12 | }
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/CommentsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | data class CommentsModel(
4 | val posts: List,
5 | val authors: List,
6 | val hasMorePosts: Boolean,
7 | val hasMoreAuthors: Boolean
8 | ) {
9 | data class Post(val id: Long, val name: String, val comments: Int, val link: String)
10 | data class Author(val name: String, val comments: Int, val link: String, val gravatar: String)
11 | }
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/account/signup/AccountCreatedDto.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.account.signup
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class AccountCreatedDto(
6 | @SerializedName("success") val success: Boolean,
7 | @SerializedName("username") val username: String,
8 | @SerializedName("user_id") val id: String,
9 | @SerializedName("bearer_token") val token: String,
10 | )
11 |
--------------------------------------------------------------------------------
/example/src/test/resources/wc/attribute-term-operation-response.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 23,
3 | "name": "XXS",
4 | "slug": "xxs",
5 | "description": "",
6 | "menu_order": 1,
7 | "count": 1,
8 | "_links": {
9 | "self": [
10 | {
11 | "href": "https://example.com/wp-json/wc/v3/products/attributes/2/terms/23"
12 | }
13 | ],
14 | "collection": [
15 | {
16 | "href": "https://example.com/wp-json/wc/v3/products/attributes/2/terms"
17 | }
18 | ]
19 | }
20 | }
--------------------------------------------------------------------------------
/example/src/test/resources/wc/product-attribute-create.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 1,
3 | "name": "Color",
4 | "slug": "pa_color",
5 | "type": "select",
6 | "order_by": "menu_order",
7 | "has_archives": true,
8 | "_links": {
9 | "self": [
10 | {
11 | "href": "https://example.com/wp-json/wc/v3/products/attributes/6"
12 | }
13 | ],
14 | "collection": [
15 | {
16 | "href": "https://example.com/wp-json/wc/v3/products/attributes"
17 | }
18 | ]
19 | }
20 | }
--------------------------------------------------------------------------------
/example/src/test/resources/wc/product-attribute-update.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 99,
3 | "name": "test_name",
4 | "slug": "pa_test",
5 | "type": "test_type",
6 | "order_by": "test",
7 | "has_archives": false,
8 | "_links": {
9 | "self": [
10 | {
11 | "href": "https://example.com/wp-json/wc/v3/products/attributes/6"
12 | }
13 | ],
14 | "collection": [
15 | {
16 | "href": "https://example.com/wp-json/wc/v3/products/attributes"
17 | }
18 | ]
19 | }
20 | }
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/BloggingRemindersModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | data class BloggingRemindersModel(
4 | val siteId: Int,
5 | val enabledDays: Set = setOf(),
6 | val hour: Int = 10,
7 | val minute: Int = 0,
8 | val isPromptIncluded: Boolean = false,
9 | val isPromptsCardEnabled: Boolean = true,
10 | ) {
11 | enum class Day {
12 | MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/common/comments/CommentsApiPayload.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.common.comments
2 |
3 | import org.wordpress.android.fluxc.Payload
4 | import org.wordpress.android.fluxc.store.CommentStore.CommentError
5 |
6 | data class CommentsApiPayload(
7 | val response: T? = null
8 | ) : Payload() {
9 | constructor(error: CommentError, response: T? = null) : this(response) {
10 | this.error = error
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/ProductShippingClassApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | @Suppress("PropertyName")
6 | class ProductShippingClassApiResponse : Response {
7 | var id: Long = 0L
8 |
9 | var name: String? = null
10 | var slug: String? = null
11 | var description: String? = null
12 |
13 | var count = 0
14 | }
15 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/bundlestats/BundleStatsApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.bundlestats
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class BundleStatsApiResponse(val totals: BundleStatsTotals)
6 |
7 | data class BundleStatsTotals(
8 | @SerializedName("items_sold")
9 | val itemsSold: Int? = null,
10 | @SerializedName("net_revenue")
11 | val netRevenue: Double? = null,
12 | )
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/converters/BigDecimalConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.converters
2 |
3 | import androidx.room.TypeConverter
4 | import java.math.BigDecimal
5 |
6 | class BigDecimalConverter {
7 | @TypeConverter
8 | fun bigDecimalToString(input: BigDecimal): String = input.toPlainString()
9 |
10 | @TypeConverter
11 | fun stringToBigDecimal(input: String): BigDecimal = input.toBigDecimalOrNull() ?: BigDecimal.ZERO
12 | }
13 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/bloggingprompts/BloggingPromptModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.bloggingprompts
2 |
3 | import java.util.Date
4 |
5 | data class BloggingPromptModel(
6 | val id: Int,
7 | val text: String,
8 | val date: Date,
9 | val isAnswered: Boolean,
10 | val attribution: String,
11 | val respondentsCount: Int,
12 | val respondentsAvatarUrls: List,
13 | val answeredLink: String,
14 | val bloganuaryId: String? = null,
15 | )
16 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/DateTimeUtilsWrapper.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import dagger.Reusable
4 | import org.wordpress.android.util.DateTimeUtils
5 | import java.util.Date
6 | import javax.inject.Inject
7 |
8 | @Reusable
9 | class DateTimeUtilsWrapper @Inject constructor() {
10 | fun timestampFromIso8601(strDate: String?) = DateTimeUtils.timestampFromIso8601(strDate)
11 | fun iso8601UTCFromDate(date: Date?): String? = DateTimeUtils.iso8601UTCFromDate(date)
12 | }
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/converters/DiscountTypeConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.converters
2 |
3 | import androidx.room.TypeConverter
4 | import org.wordpress.android.fluxc.persistence.entity.CouponEntity.DiscountType
5 |
6 | class DiscountTypeConverter {
7 | @TypeConverter
8 | fun fromDiscountType(type: DiscountType) = type.value
9 |
10 | @TypeConverter
11 | fun toDiscountType(value: String) = DiscountType.fromString(value)
12 | }
13 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/time/CountryViewsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.time
2 |
3 | data class CountryViewsModel(
4 | val otherViews: Int,
5 | val totalViews: Int,
6 | val countries: List,
7 | val hasMore: Boolean
8 | ) {
9 | data class Country(
10 | val countryCode: String,
11 | val fullName: String,
12 | val views: Int,
13 | val flagIconUrl: String?,
14 | val flatFlagIconUrl: String?
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/domain/GlobalAddonGroup.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.domain
2 |
3 | data class GlobalAddonGroup(
4 | val name: String,
5 | val restrictedCategoriesIds: CategoriesRestriction,
6 | val addons: List
7 | ) {
8 | sealed class CategoriesRestriction {
9 | object AllProductsCategories : CategoriesRestriction()
10 | data class SpecifiedProductCategories(val productCategories: List) : CategoriesRestriction()
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/example/src/main/java/org/wordpress/android/fluxc/example/utils/ArrayUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.example.utils
2 |
3 | object ArrayUtils {
4 | private const val INDEX_NOT_FOUND = -1
5 |
6 | @JvmStatic
7 | fun contains(stringArray: Array, string: String): Boolean {
8 | return indexOf(stringArray, string) != INDEX_NOT_FOUND
9 | }
10 |
11 | @JvmStatic
12 | fun indexOf(stringArray: Array, string: String): Int {
13 | return stringArray.indexOf(string)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/NewSiteResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | public class NewSiteResponse implements Response {
6 | public boolean success;
7 | public BlogDetails blog_details;
8 | public String error;
9 | public String message;
10 |
11 | public static class BlogDetails {
12 | public String url;
13 | public String blogid;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtilsWrapper.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import dagger.Reusable
4 | import org.wordpress.android.fluxc.network.BaseRequest.BaseNetworkError
5 | import org.wordpress.android.fluxc.store.CommentStore.CommentError
6 | import javax.inject.Inject
7 |
8 | @Reusable
9 | class CommentErrorUtilsWrapper @Inject constructor() {
10 | fun networkToCommentError(error: BaseNetworkError): CommentError = CommentErrorUtils.networkToCommentError(error)
11 | }
12 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/utils/BigDecimalExt.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import java.math.BigDecimal
4 |
5 | /**
6 | * Returns the sum of all values produced by [selector] function applied to each element in the collection.
7 | */
8 | public inline fun Iterable.sumBy(selector: (T) -> BigDecimal): BigDecimal {
9 | var sum: BigDecimal = BigDecimal.ZERO
10 | for (element in this) {
11 | sum += selector(element)
12 | }
13 | return sum
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/AutomatedTransferEligibilityCheckResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | public class AutomatedTransferEligibilityCheckResponse {
6 | @SerializedName("is_eligible")
7 | public boolean isEligible;
8 | public EligibilityError[] errors;
9 |
10 | class EligibilityError {
11 | public String code;
12 | public String message;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/AcceptHeaderStrategy.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network
2 |
3 | import javax.inject.Inject
4 |
5 | sealed class AcceptHeaderStrategy(val header: String = ACCEPT_HEADER, open val value: String) {
6 | class JsonAcceptHeader @Inject constructor() : AcceptHeaderStrategy(value = APPLICATION_JSON_VALUE)
7 |
8 | companion object {
9 | private const val ACCEPT_HEADER = "Accept"
10 | private const val APPLICATION_JSON_VALUE = "application/json"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/onboarding/OnboardingTasksResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.onboarding
2 |
3 | data class TaskGroupDto(
4 | val id: String,
5 | val tasks: List
6 | )
7 |
8 | data class TaskDto(
9 | val id: String,
10 | val isComplete: Boolean = false,
11 | val isVisited: Boolean = false,
12 | val isActioned: Boolean = false,
13 | val canView: Boolean = false,
14 | val actionUrl: String?
15 | )
16 |
17 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/action/EditorThemeAction.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.action
2 |
3 | import org.wordpress.android.fluxc.annotations.Action
4 | import org.wordpress.android.fluxc.annotations.ActionEnum
5 | import org.wordpress.android.fluxc.annotations.action.IAction
6 | import org.wordpress.android.fluxc.store.EditorThemeStore.FetchEditorThemePayload
7 |
8 | @ActionEnum
9 | enum class EditorThemeAction : IAction {
10 | @Action(payloadType = FetchEditorThemePayload::class)
11 | FETCH_EDITOR_THEME
12 | }
13 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/InsightsLatestPostModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | import java.util.Date
4 |
5 | data class InsightsLatestPostModel(
6 | val siteId: Long,
7 | val postTitle: String,
8 | val postURL: String,
9 | val postDate: Date,
10 | val postId: Long,
11 | val postViewsCount: Int = 0,
12 | val postCommentCount: Int = 0,
13 | val postLikeCount: Int,
14 | val dayViews: List>,
15 | val featuredImageUrl: String
16 | )
17 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/utils/JsonExt.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.utils
2 |
3 | import com.google.gson.Gson
4 | import com.google.gson.reflect.TypeToken
5 |
6 | // Convert an object of type T to type R
7 | inline fun T.convert(): R {
8 | val gson = Gson()
9 | val json = gson.toJson(this)
10 | return gson.fromJson(json, object : TypeToken() {}.type)
11 | }
12 |
13 | // Convert an object to a Map
14 | fun T.toMap(): Map {
15 | return convert()
16 | }
17 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/utils/MapExt.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | fun MutableMap.putIfNotEmpty(vararg pairs: Pair) = apply {
4 | pairs.forEach { pair ->
5 | pair.second?.takeIf { it.isNotEmpty() }
6 | ?.let { put(pair.first, it) }
7 | }
8 | }
9 |
10 | fun MutableMap.putIfNotNull(vararg pairs: Pair) = apply {
11 | pairs.forEach { pair ->
12 | pair.second?.let { put(pair.first, it) }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/CoroutinesTestUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc
2 |
3 | import kotlinx.coroutines.CoroutineScope
4 | import kotlinx.coroutines.Dispatchers
5 | import kotlinx.coroutines.runBlocking
6 | import kotlin.coroutines.CoroutineContext
7 | import kotlin.coroutines.EmptyCoroutineContext
8 |
9 | fun test(context: CoroutineContext = EmptyCoroutineContext, block: suspend CoroutineScope.() -> T) {
10 | runBlocking(context, block)
11 | }
12 |
13 | val TEST_SCOPE = CoroutineScope(Dispatchers.Unconfined)
14 |
--------------------------------------------------------------------------------
/example/src/test/resources/wc/order-shipping-lines.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": 2,
4 | "method_title": "Flat Rate Shipping",
5 | "method_id": "flat_rate",
6 | "instance_id": "0",
7 | "total": "10.00",
8 | "total_tax": "0.00",
9 | "taxes": [],
10 | "meta_data": []
11 | },
12 | {
13 | "id": 3,
14 | "method_title": "Local Pickup Shipping",
15 | "method_id": "local_pickup",
16 | "instance_id": "0",
17 | "total": "20.00",
18 | "total_tax": "0.00",
19 | "taxes": [],
20 | "meta_data": []
21 | }
22 | ]
23 |
--------------------------------------------------------------------------------
/fluxc-annotations/src/main/java/org/wordpress/android/fluxc/annotations/action/Action.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.annotations.action;
2 |
3 | public class Action {
4 | private final IAction mActionType;
5 | private final T mPayload;
6 |
7 | public Action(IAction actionType, T payload) {
8 | mActionType = actionType;
9 | mPayload = payload;
10 | }
11 |
12 | public IAction getType() {
13 | return mActionType;
14 | }
15 |
16 | public T getPayload() {
17 | return mPayload;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/taxes/WCTaxClassMapper.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.taxes
2 |
3 | import org.wordpress.android.fluxc.network.rest.wpcom.wc.taxes.WCTaxRestClient.TaxClassApiResponse
4 | import javax.inject.Inject
5 |
6 | class WCTaxClassMapper
7 | @Inject constructor() {
8 | fun map(response: TaxClassApiResponse): WCTaxClassModel {
9 | return WCTaxClassModel().apply {
10 | name = response.name ?: ""
11 | slug = response.slug ?: ""
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/src/test/resources/wp/jetpack/scan/threat/threat-fixable.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 22856973,
3 | "signature": "Vulnerable.WP.Extension",
4 | "first_detected": "2020-06-24T21:03:20.000Z",
5 | "description": "The plugin WooCommerce (version 4.1.0) has a known vulnerability",
6 | "status": "current",
7 | "fixable": {
8 | "fixer": "update",
9 | "target": "4.2.2"
10 | },
11 | "extension": {
12 | "type": "plugin",
13 | "slug": "woocommerce",
14 | "name": "WooCommerce",
15 | "version": "4.1.0",
16 | "isPremium": false
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/auth/AppSecrets.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.auth;
2 |
3 | public class AppSecrets {
4 | private final String mAppId;
5 | private final String mAppSecret;
6 |
7 | public AppSecrets(String appId, String appSecret) {
8 | mAppId = appId;
9 | mAppSecret = appSecret;
10 | }
11 |
12 | public String getAppId() {
13 | return mAppId;
14 | }
15 |
16 | public String getAppSecret() {
17 | return mAppSecret;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/order/OrderSummaryApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.order
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class OrderSummaryApiResponse : Response {
7 | val id: Long? = null
8 |
9 | @SerializedName("date_created_gmt")
10 | val dateCreatedGmt: String? = null
11 |
12 | @SerializedName("date_modified_gmt")
13 | val dateModifiedGmt: String? = null
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/DomainModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | import org.wordpress.android.fluxc.network.rest.wpcom.site.Domain
4 |
5 | /**
6 | * Lightweight version of the [Domain] to be stored in the database.
7 | */
8 | data class DomainModel(
9 | val domain: String,
10 | val primaryDomain: Boolean,
11 | val wpcomDomain: Boolean
12 | )
13 |
14 | fun Domain.asDomainModel() = DomainModel(
15 | domain = domain.orEmpty(),
16 | primaryDomain = primaryDomain,
17 | wpcomDomain = wpcomDomain
18 | )
19 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/order/OrderShipmentTrackingApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.order
2 |
3 | import org.wordpress.android.fluxc.network.Response
4 |
5 | @Suppress("PropertyName", "VariableNaming")
6 | class OrderShipmentTrackingApiResponse : Response {
7 | val tracking_id: String? = null
8 | val tracking_provider: String? = null
9 | val tracking_link: String? = null
10 | val tracking_number: String? = null
11 | val date_shipped: String? = null
12 | }
13 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/WellSqlTestUtils.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc;
2 |
3 | import com.yarolegovich.wellsql.WellSql;
4 |
5 | import org.wordpress.android.fluxc.model.AccountModel;
6 |
7 | public class WellSqlTestUtils {
8 | public static void setupWordPressComAccount() {
9 | AccountModel account = new AccountModel();
10 | account.setUserId(20151021);
11 | account.setUserName("fluxc");
12 | account.setEmail("flux@capacitorsrus.co");
13 |
14 | WellSql.insert(account).execute();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/time/PostAndPageViewsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.time
2 |
3 | data class PostAndPageViewsModel(val views: List, val hasMore: Boolean) {
4 | data class ViewsModel(
5 | val id: Long,
6 | val title: String,
7 | val views: Int,
8 | val type: ViewsType,
9 | val url: String
10 | )
11 |
12 | enum class ViewsType {
13 | POST,
14 | PAGE,
15 | HOMEPAGE,
16 | OTHER,
17 | ATTACHMENT
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/ProductTagApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | import com.google.gson.JsonElement
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | @Suppress("PropertyName")
7 | class ProductTagApiResponse : Response {
8 | var id: Long = 0L
9 |
10 | var name: String? = null
11 | var slug: String? = null
12 | var description: String? = null
13 |
14 | val error: JsonElement? = null
15 |
16 | var count = 0
17 | }
18 |
--------------------------------------------------------------------------------
/fluxc-annotations/src/main/java/org/wordpress/android/fluxc/annotations/Action.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.annotations;
2 |
3 | import org.wordpress.android.fluxc.annotations.action.NoPayload;
4 |
5 | import java.lang.annotation.ElementType;
6 | import java.lang.annotation.Target;
7 |
8 | /**
9 | * Defines an individual action with optional payload. To annotate an option with no payload, don't set the
10 | * {@link Action#payloadType}.
11 | */
12 | @Target(ElementType.FIELD)
13 | public @interface Action {
14 | Class payloadType() default NoPayload.class;
15 | }
16 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/action/StockMediaAction.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.action;
2 |
3 | import org.wordpress.android.fluxc.annotations.Action;
4 | import org.wordpress.android.fluxc.annotations.ActionEnum;
5 | import org.wordpress.android.fluxc.annotations.action.IAction;
6 | import org.wordpress.android.fluxc.store.StockMediaStore;
7 |
8 | @ActionEnum
9 | public enum StockMediaAction implements IAction {
10 | // Remote actions
11 | @Action(payloadType = StockMediaStore.FetchStockMediaListPayload.class)
12 | FETCH_STOCK_MEDIA
13 | }
14 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/time/ClicksModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats.time
2 |
3 | data class ClicksModel(val otherClicks: Int, val totalClicks: Int, val groups: List, val hasMore: Boolean) {
4 | data class Group(
5 | val groupId: String?,
6 | val name: String?,
7 | val icon: String?,
8 | val url: String?,
9 | val views: Int?,
10 | val clicks: List
11 | )
12 | data class Click(val name: String, val views: Int, val icon: String?, val url: String?)
13 | }
14 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/ConnectSiteInfoResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | public class ConnectSiteInfoResponse implements Response {
6 | public boolean exists;
7 | public boolean isWordPress;
8 | public boolean hasJetpack;
9 | public boolean isJetpackActive;
10 | public boolean isJetpackConnected;
11 | public boolean isWordPressDotCom; // CHECKSTYLE IGNORE
12 | public String urlAfterRedirects;
13 | }
14 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/store/InvalidateDeviceRegistration.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.store
2 |
3 | import org.wordpress.android.fluxc.utils.PreferenceUtils
4 | import javax.inject.Inject
5 |
6 | class InvalidateDeviceRegistration @Inject constructor(
7 | private val prefsWrapper: PreferenceUtils.PreferenceUtilsWrapper
8 | ) {
9 | operator fun invoke() {
10 | prefsWrapper.getFluxCPreferences()
11 | .edit()
12 | .remove(NotificationStore.WPCOM_PUSH_DEVICE_SERVER_ID)
13 | .apply()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/addons/dto/AddOnGroupDto.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.addons.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.model.addons.RemoteAddonDto
5 |
6 | data class AddOnGroupDto(
7 | @SerializedName("id") val id: Long,
8 | @SerializedName("name") val name: String,
9 | @SerializedName("restrict_to_category_ids") val categoryIds: List?,
10 | @SerializedName("fields") val addons: List
11 | )
12 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/YearsInsightsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | data class YearsInsightsModel(val years: List) {
4 | data class YearInsights(
5 | val avgComments: Double?,
6 | val avgImages: Double?,
7 | val avgLikes: Double?,
8 | val avgWords: Double?,
9 | val totalComments: Int,
10 | val totalImages: Int,
11 | val totalLikes: Int,
12 | val totalPosts: Int,
13 | val totalWords: Int,
14 | val year: String
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/fetch-notification-hashes-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "last_seen_time": "1545385215",
3 | "number": 5,
4 | "notes": [
5 | {
6 | "id": 3633457829,
7 | "note_hash": 1880451709
8 | },
9 | {
10 | "id": 3689918893,
11 | "note_hash": 33118303
12 | },
13 | {
14 | "id": 3616322875,
15 | "note_hash": 3760179657
16 | },
17 | {
18 | "id": 3689748979,
19 | "note_hash": 3333755643
20 | },
21 | {
22 | "id": 3604874081,
23 | "note_hash": 1502673285
24 | }
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------
/example/src/test/resources/wp/jetpack/scan/threat/threat-vulnerable-extension.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 22920156,
3 | "signature": "Vulnerable.WP.Extension",
4 | "first_detected": "2020-06-25T14:03:40.000Z",
5 | "description": "The plugin WooCommerce (version 4.1.0) has a known vulnerability",
6 | "status": "current",
7 | "fixable": {
8 | "fixer": "update",
9 | "target": "4.2.2"
10 | },
11 | "extension": {
12 | "type": "plugin",
13 | "slug": "woocommerce",
14 | "name": "WooCommerce",
15 | "version": "4.1.0",
16 | "isPremium": false
17 | }
18 | }
19 |
20 |
21 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/module/AppContextModule.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.module;
2 |
3 | import android.content.Context;
4 |
5 | import javax.inject.Singleton;
6 |
7 | import dagger.Module;
8 | import dagger.Provides;
9 |
10 | @Module
11 | public class AppContextModule {
12 | private final Context mAppContext;
13 |
14 | public AppContextModule(Context appContext) {
15 | mAppContext = appContext;
16 | }
17 |
18 | @Singleton
19 | @Provides
20 | Context providesContext() {
21 | return mAppContext;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/coverters/BlazeCampaignsDateConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.coverters
2 |
3 | import androidx.room.TypeConverter
4 | import org.wordpress.android.fluxc.network.rest.wpcom.blaze.BlazeCampaignsUtils
5 | import java.util.Date
6 |
7 | class BlazeCampaignsDateConverter {
8 | @TypeConverter
9 | fun stringToDate(value: String?) = value?.let { BlazeCampaignsUtils.stringToDate(it) }
10 |
11 | @TypeConverter
12 | fun dateToString(date: Date?) = date?.let { BlazeCampaignsUtils.dateToString(it) }
13 | }
14 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/action/EncryptedLogAction.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.action
2 |
3 | import org.wordpress.android.fluxc.annotations.Action
4 | import org.wordpress.android.fluxc.annotations.ActionEnum
5 | import org.wordpress.android.fluxc.annotations.action.IAction
6 | import org.wordpress.android.fluxc.store.EncryptedLogStore.UploadEncryptedLogPayload
7 |
8 | @ActionEnum
9 | enum class EncryptedLogAction : IAction {
10 | @Action(payloadType = UploadEncryptedLogPayload::class)
11 | UPLOAD_LOG,
12 | @Action
13 | RESET_UPLOAD_STATES
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/module/ApplicationPasswordsModule.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.module
2 |
3 | import dagger.BindsOptionalOf
4 | import dagger.Module
5 | import org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsListener
6 |
7 | @Module
8 | interface ApplicationPasswordsModule {
9 | @BindsOptionalOf
10 | fun bindOptionalApplicationPasswordsListener(): ApplicationPasswordsListener
11 | @BindsOptionalOf
12 | @ApplicationPasswordsClientId
13 | fun bindOptionalApplicationPasswordsClientId(): String
14 | }
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/DomainSuggestionResponse.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.site;
2 |
3 | import org.wordpress.android.fluxc.network.Response;
4 |
5 | public class DomainSuggestionResponse implements Response {
6 | public String cost;
7 | public String domain_name;
8 | public boolean is_free;
9 | public boolean is_premium;
10 | public boolean supports_privacy;
11 |
12 | public int product_id;
13 | public String product_slug;
14 | public String vendor;
15 | public float relevance;
16 | }
17 |
--------------------------------------------------------------------------------
/example/src/androidTest/java/org/wordpress/android/fluxc/utils/WellSqlUtils.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils;
2 |
3 | import com.yarolegovich.wellsql.WellSql;
4 |
5 | import org.wordpress.android.fluxc.model.PostModel;
6 | import org.wordpress.android.fluxc.model.TermModel;
7 |
8 | public class WellSqlUtils {
9 | public static int getTotalPostsCount() {
10 | return WellSql.select(PostModel.class).getAsCursor().getCount();
11 | }
12 |
13 | public static int getTotalTermsCount() {
14 | return WellSql.select(TermModel.class).getAsCursor().getCount();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/vertical/VerticalSegmentModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.vertical
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class VerticalSegmentModel(
6 | @SerializedName("segment_type_title") val title: String,
7 | @SerializedName("segment_type_subtitle") val subtitle: String,
8 | @SerializedName("icon_URL") val iconUrl: String,
9 | @SerializedName("icon_color") val iconColor: String,
10 | @SerializedName("id") val segmentId: Long,
11 | @SerializedName("mobile") val isMobileSegment: Boolean
12 | )
13 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpapi/applicationpasswords/ApplicationPasswordsListener.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords
2 |
3 | import org.wordpress.android.fluxc.model.SiteModel
4 | import org.wordpress.android.fluxc.network.rest.wpapi.WPAPINetworkError
5 |
6 | interface ApplicationPasswordsListener {
7 | fun onNewPasswordCreated(isPasswordRegenerated: Boolean) {}
8 | fun onPasswordGenerationFailed(networkError: WPAPINetworkError) {}
9 | fun onFeatureUnavailable(siteModel: SiteModel, networkError: WPAPINetworkError) {}
10 | }
11 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/shippinglabels/ShippingLabelApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.shippinglabels
2 |
3 | import com.google.gson.JsonElement
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class ShippingLabelApiResponse : Response {
7 | val orderId: Long? = null
8 | val paperSize: String? = null
9 |
10 | val formData: JsonElement? = null
11 | val storeOptions: JsonElement? = null
12 | val labelsData: List? = null
13 |
14 | val success: Boolean? = null
15 | }
16 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/encryptedlogging/EncryptionUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.encryptedlogging
2 |
3 | import com.goterl.lazysodium.LazySodiumAndroid
4 | import com.goterl.lazysodium.SodiumAndroid
5 |
6 | /**
7 | * Convenience helpers for Encrypted Logging
8 | */
9 | object EncryptionUtils {
10 | /**
11 | * Use a single shared instance of the Sodium library.
12 | *
13 | * The initialization is inexpensive, but verbose, so this is just syntactic sugar.
14 | */
15 | @JvmStatic
16 | val sodium = LazySodiumAndroid(SodiumAndroid())
17 | }
18 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/extensions/StringExtensions.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils.extensions
2 |
3 | import java.net.URLEncoder
4 |
5 | /**
6 | * Encodes delimiting characters as per
7 | * [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986#section-2.2)
8 | */
9 | fun String.encodeRfc3986Delimiters(): String {
10 | val rfc3986Delimiters = "!'()*"
11 |
12 | return replace("[$rfc3986Delimiters]".toRegex()) {
13 | URLEncoder.encode(it.value, "UTF-8")
14 | }
15 | }
16 |
17 | fun String.slashJoin(end: String) = "${this.trimEnd('/')}/${end.trimStart('/')}"
18 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/action/WhatsNewAction.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.action
2 |
3 | import org.wordpress.android.fluxc.annotations.Action
4 | import org.wordpress.android.fluxc.annotations.ActionEnum
5 | import org.wordpress.android.fluxc.annotations.action.IAction
6 | import org.wordpress.android.fluxc.store.WhatsNewStore.WhatsNewFetchPayload
7 |
8 | @ActionEnum
9 | enum class WhatsNewAction : IAction {
10 | // Remote actions
11 | @Action(payloadType = WhatsNewFetchPayload::class)
12 | FETCH_REMOTE_ANNOUNCEMENT,
13 |
14 | @Action
15 | FETCH_CACHED_ANNOUNCEMENT
16 | }
17 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/stats/PostDetailStatsModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.stats
2 |
3 | data class PostDetailStatsModel(
4 | val views: Int = 0,
5 | val dayViews: List,
6 | val weekViews: List,
7 | val yearsTotal: List,
8 | val yearsAverage: List
9 | ) {
10 | data class Year(val year: Int, val months: List, val value: Int)
11 | data class Month(val month: Int, val count: Int)
12 | data class Week(val days: List, val average: Int, val total: Int)
13 | data class Day(val period: String, val count: Int)
14 | }
15 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/payments/inperson/WCPaymentTransactionsSummaryResult.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.payments.inperson
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class WCPaymentTransactionsSummaryResult(
6 | @SerializedName("count") val transactionsCount: Int,
7 | val currency: String,
8 | val total: Int,
9 | val fees: Int,
10 | val net: Int,
11 | @SerializedName("store_currencies") val storeCurrencies: List?,
12 | @SerializedName("customer_currencies") val customerCurrencies: List?,
13 | )
14 |
--------------------------------------------------------------------------------
/example/src/androidTest/java/org/wordpress/android/fluxc/ditests/OkHttpTestComponent.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.ditests
2 |
3 | import dagger.Component
4 | import org.wordpress.android.fluxc.module.ReleaseNetworkModule
5 | import org.wordpress.android.fluxc.module.OkHttpClientModule
6 | import javax.inject.Singleton
7 |
8 | @Singleton
9 | @Component(
10 | modules = [
11 | OkHttpClientModule::class,
12 | ReleaseNetworkModule::class,
13 | TestInterceptorModule::class
14 | ]
15 | )
16 | interface OkHttpTestComponent {
17 | fun inject(test: OkHttpInjectionTest)
18 | }
19 |
--------------------------------------------------------------------------------
/example/src/main/java/org/wordpress/android/fluxc/example/FragmentExt.kt:
--------------------------------------------------------------------------------
1 | @file:JvmName("FragmentExtensions")
2 | package org.wordpress.android.fluxc.example
3 |
4 | import androidx.fragment.app.Fragment
5 |
6 | /**
7 | * Shortcut for appending messages to the log in MainActivity
8 | */
9 | fun Fragment.prependToLog(s: String) {
10 | (activity as? MainExampleActivity)?.prependToLog(s)
11 | }
12 |
13 | fun Fragment.replaceFragment(fragment: Fragment) {
14 | parentFragmentManager.beginTransaction()
15 | .replace(R.id.fragment_container, fragment)
16 | .addToBackStack(null)
17 | .commit()
18 | }
19 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/SiteHomepageSettings.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | import org.wordpress.android.fluxc.model.SiteHomepageSettings.ShowOnFront.PAGE
4 | import org.wordpress.android.fluxc.model.SiteHomepageSettings.ShowOnFront.POSTS
5 |
6 | sealed class SiteHomepageSettings(val showOnFront: ShowOnFront) {
7 | data class StaticPage(val pageForPostsId: Long, val pageOnFrontId: Long) : SiteHomepageSettings(PAGE)
8 | object Posts : SiteHomepageSettings(POSTS)
9 |
10 | enum class ShowOnFront(val value: String) {
11 | PAGE("page"), POSTS("posts")
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/attributes/terms/AttributeTermApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product.attributes.terms
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class AttributeTermApiResponse : Response {
7 | val id: String? = null
8 | val name: String? = null
9 | val slug: String? = null
10 | val description: String? = null
11 | val count: String? = null
12 | @SerializedName("menu_order")
13 | val menuOrder: String? = null
14 | }
15 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/shippinglabels/WCShippingLabelPaperSize.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.shippinglabels
2 |
3 | enum class WCShippingLabelPaperSize(val stringValue: String) {
4 | A4("a4"),
5 | LABEL("label"),
6 | LEGAL("legal"),
7 | LETTER("letter");
8 |
9 | companion object {
10 | fun fromString(value: String): WCShippingLabelPaperSize {
11 | // When the value is unknown, WCS in wp-admin uses Label by default
12 | return WCShippingLabelPaperSize.values().find { it.stringValue == value } ?: LABEL
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/shippinglabels/UpdateSettingsApiRequest.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.shippinglabels
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class UpdateSettingsApiRequest(
6 | @SerializedName("selected_payment_method_id")
7 | val selectedPaymentMethodId: Int?,
8 | @SerializedName("enabled")
9 | val isCreatingLabelsEnabled: Boolean?,
10 | @SerializedName("paper_size")
11 | val paperSize: String?,
12 | @SerializedName("email_receipts")
13 | val isEmailReceiptEnabled: Boolean?
14 | )
15 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/converters/ISO8601DateConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.converters
2 |
3 | import androidx.room.TypeConverter
4 | import org.wordpress.android.util.DateTimeUtils
5 | import java.util.Date
6 |
7 | /**
8 | * A Room type converter for ISO 8601-formatted dates
9 | */
10 | class ISO8601DateConverter {
11 | @TypeConverter
12 | fun stringToDate(value: String?) = value?.let { DateTimeUtils.dateUTCFromIso8601(it) }
13 |
14 | @TypeConverter
15 | fun dateToString(date: Date?) = date?.let { DateTimeUtils.iso8601FromDate(it) }
16 | }
17 |
--------------------------------------------------------------------------------
/.buildkite/publish-fluxc-processor.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -euo pipefail
4 |
5 | # Retrieve data from previous steps
6 | PUBLISHED_FLUXC_ANNOTATIONS_VERSION=$(buildkite-agent meta-data get "PUBLISHED_FLUXC_ANNOTATIONS_VERSION")
7 |
8 | ./gradlew \
9 | -PfluxcAnnotationsVersion="$PUBLISHED_FLUXC_ANNOTATIONS_VERSION" \
10 | :fluxc-processor:prepareToPublishToS3 $(prepare_to_publish_to_s3_params) \
11 | :fluxc-processor:publish
12 |
13 | # Add meta-data for the published version so we can use it in subsequent steps
14 | cat ./fluxc-processor/build/published-version.txt | buildkite-agent meta-data set "PUBLISHED_FLUXC_PROCESSOR_VERSION"
15 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/coverters/StringListConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.coverters
2 |
3 | import androidx.room.TypeConverter
4 |
5 | class StringListConverter {
6 | companion object {
7 | private const val SEPARATOR = ","
8 | }
9 |
10 | @TypeConverter
11 | fun listToString(value: List): String = value.joinToString(separator = SEPARATOR)
12 |
13 | @TypeConverter
14 | fun stringToList(value: String): List = if (value.isEmpty()) {
15 | emptyList()
16 | } else {
17 | value.split(SEPARATOR).toList()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/bundlestats/BundlesReportApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.bundlestats
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class BundlesReportApiResponse(
6 | @SerializedName("items_sold")
7 | val itemsSold: Int? = null,
8 | @SerializedName("net_revenue")
9 | val netRevenue: Double? = null,
10 | @SerializedName("extended_info")
11 | val extendedInfo: ExtendedInfo
12 | )
13 |
14 | data class ExtendedInfo(
15 | val name: String? = null,
16 | val image: String? = null,
17 | )
18 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-add-product-category-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "id": 105,
4 | "name": "test12",
5 | "slug": "test12",
6 | "parent": 0,
7 | "description": "",
8 | "display": "default",
9 | "image": null,
10 | "menu_order": 0,
11 | "count": 0,
12 | "_links": {
13 | "self": [{
14 | "href": "https:\/\/awootestshop.mystagingwebsite.com\/wp-json\/wc\/v3\/products\/categories\/105"
15 | }],
16 | "collection": [{
17 | "href": "https:\/\/awootestshop.mystagingwebsite.com\/wp-json\/wc\/v3\/products\/categories"
18 | }]
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/example/src/main/res/layout/media_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
13 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/attributes/AttributeApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product.attributes
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | class AttributeApiResponse : Response {
7 | val id: String? = null
8 | val name: String? = null
9 | val slug: String? = null
10 | val type: String? = null
11 | @SerializedName("order_by")
12 | val orderBy: String? = null
13 | @SerializedName("has_archives")
14 | val hasArchives: Boolean? = null
15 | }
16 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/utils/JsonUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import com.google.gson.JsonElement
4 |
5 | const val EMPTY_JSON_ARRAY = "[]"
6 |
7 | fun JsonElement?.isElementNullOrEmpty(): Boolean {
8 | return this?.let {
9 | when{
10 | this.isJsonObject -> this.asJsonObject.size() == 0
11 | this.isJsonArray -> this.asJsonArray.size()== 0
12 | this.isJsonPrimitive && this.asJsonPrimitive.isString -> this.asString.isEmpty()
13 | this.isJsonNull -> true
14 | else -> false
15 | }
16 | } ?: true
17 | }
18 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/wc-fetch-product-shipping-class-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "id": 34,
4 | "name": "example1",
5 | "slug": "example-1",
6 | "description": "Testing shipping class",
7 | "count": 1,
8 | "_links": {
9 | "self": [
10 | {
11 | "href": "https:\/\/anitaastestwooshop.mystagingwebsite.com\/wp-json\/wc\/v3\/products\/shipping_classes\/34"
12 | }
13 | ],
14 | "collection": [
15 | {
16 | "href": "https:\/\/anitaastestwooshop.mystagingwebsite.com\/wp-json\/wc\/v3\/products\/shipping_classes"
17 | }
18 | ]
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/WCProductComponent.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class WCProductComponent(
6 | @SerializedName("id") val id: Long,
7 | @SerializedName("title") val title: String,
8 | @SerializedName("description") val description: String,
9 | @SerializedName("query_type") val queryType: String,
10 | @SerializedName("query_ids") val queryIds: List,
11 | @SerializedName("default_option_id") val defaultOptionId: String,
12 | @SerializedName("thumbnail_src") val thumbnailUrl: String?
13 | )
14 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/utils/BloggingPromptUtilsTest.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import org.junit.Assert
4 | import org.junit.Test
5 | import org.wordpress.android.fluxc.network.rest.wpcom.bloggingprompts.BloggingPromptsUtils
6 |
7 | class BloggingPromptUtilsTest {
8 | @Test
9 | fun testBloggingPromptDateStringToDateObject() {
10 | val date = "2022-05-01"
11 |
12 | // A string date converted to Date and back should be unaltered
13 | val result = BloggingPromptsUtils.stringToDate(date)
14 | Assert.assertEquals(date, BloggingPromptsUtils.dateToString(result))
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpapi/OnWPAPIErrorListener.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpapi
2 |
3 | import org.wordpress.android.fluxc.network.BaseRequest
4 | import org.wordpress.android.fluxc.network.BaseRequest.BaseNetworkError
5 |
6 | fun interface OnWPAPIErrorListener {
7 | fun onErrorResponse(error: WPAPINetworkError)
8 | }
9 |
10 | class WPAPIErrorListenerWrapper(
11 | private val listener: OnWPAPIErrorListener
12 | ) : BaseRequest.BaseErrorListener {
13 | override fun onErrorResponse(error: BaseNetworkError) {
14 | listener.onErrorResponse(error as WPAPINetworkError)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/shippinglabels/WCShippingRatesResult.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.shippinglabels
2 |
3 | import org.wordpress.android.fluxc.network.rest.wpcom.wc.shippinglabels.ShippingLabelRestClient.ShippingRatesApiResponse.ShippingOption.Rate
4 |
5 | data class WCShippingRatesResult(
6 | val packageRates: List
7 | ) {
8 | data class ShippingOption(
9 | val optionId: String,
10 | val rates: List
11 | )
12 |
13 | data class ShippingPackage(
14 | val boxId: String,
15 | val shippingOptions: List
16 | )
17 | }
18 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/CoreProductVisibility.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | enum class CoreProductVisibility(val value: String) {
4 | VISIBLE("visible"),
5 | CATALOG("catalog"),
6 | SEARCH("search"),
7 | HIDDEN("hidden");
8 |
9 | companion object {
10 | private val valueMap = values().associateBy(CoreProductVisibility::value)
11 |
12 | /**
13 | * Convert the base value into the associated CoreProductVisibility object
14 | */
15 | fun fromValue(value: String) = valueMap[value]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/.buildkite/schedules/dependency-analysis.yml:
--------------------------------------------------------------------------------
1 | # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json
2 | ---
3 |
4 | agents:
5 | queue: "android"
6 |
7 | steps:
8 | - label: "dependency analysis"
9 | command: |
10 | echo "--- 📊 Analyzing"
11 | cp gradle.properties-example gradle.properties && cp -a example/properties-example/ example/properties/
12 | ./gradlew buildHealth
13 | plugins: [$CI_TOOLKIT]
14 | artifact_paths:
15 | - "build/reports/dependency-analysis/build-health-report.*"
16 | notify:
17 | - slack: "#android-core-notifs"
18 | if: build.state == "failed"
19 |
--------------------------------------------------------------------------------
/example/src/androidTest/resources/jetpack-tunnel-root-response-success.json:
--------------------------------------------------------------------------------
1 | {
2 | "data": {
3 | "name": "Site Title",
4 | "description": "",
5 | "url": "https:\/\/demo-site.blog",
6 | "home": "https:\/\/demo-site.blog",
7 | "gmt_offset": "0",
8 | "timezone_string": "",
9 | "namespaces": [
10 | "oembed\/1.0",
11 | "akismet\/v1",
12 | "jetpack\/v4",
13 | "wc\/v1",
14 | "wc\/v2",
15 | "wc\/v3",
16 | "wp\/v2"
17 | ],
18 | "authentication": [],
19 | "_links": {
20 | "help": [
21 | {
22 | "href": "http:\/\/v2.wp-api.org\/"
23 | }
24 | ]
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/account/DomainContactResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.account
2 |
3 | @Suppress("VariableNaming")
4 | class DomainContactResponse {
5 | var first_name: String? = null
6 | var last_name: String? = null
7 | var organization: String? = null
8 | var address_1: String? = null
9 | var address_2: String? = null
10 | var postal_code: String? = null
11 | var city: String? = null
12 | var state: String? = null
13 | var country_code: String? = null
14 | var email: String? = null
15 | var phone: String? = null
16 | var fax: String? = null
17 | }
18 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/shippinglabels/WCAddressVerificationResult.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.shippinglabels
2 |
3 | import org.wordpress.android.fluxc.model.shippinglabels.WCShippingLabelModel.ShippingLabelAddress
4 |
5 | sealed class WCAddressVerificationResult {
6 | data class Valid(
7 | val suggestedAddress: ShippingLabelAddress,
8 | val isTrivialNormalization: Boolean
9 | ) : WCAddressVerificationResult()
10 | data class InvalidAddress(val message: String) : WCAddressVerificationResult()
11 | data class InvalidRequest(val message: String) : WCAddressVerificationResult()
12 | }
13 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/CoreProductStatus.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | enum class CoreProductStatus(val value: String) {
4 | DRAFT("draft"),
5 | PENDING("pending"),
6 | PRIVATE("private"),
7 | PUBLISH("publish"),
8 | TRASH("trash");
9 |
10 | companion object {
11 | private val valueMap = values().associateBy(CoreProductStatus::value)
12 |
13 | /**
14 | * Convert the base value into the associated CoreProductStatus object
15 | */
16 | fun fromValue(value: String) = valueMap[value]
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/CoreProductType.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | enum class CoreProductType(val value: String) {
4 | SIMPLE("simple"),
5 | GROUPED("grouped"),
6 | EXTERNAL("external"),
7 | VARIABLE("variable"),
8 | BUNDLE("bundle");
9 |
10 | companion object {
11 | private val valueMap = values().associateBy(CoreProductType::value)
12 |
13 | /**
14 | * Convert the base value into the associated CoreProductType object
15 | */
16 | fun fromValue(value: String) = valueMap[value]
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/example/src/main/res/layout/list_item_skeleton.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/utils/CurrentTimeProviderTest.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import kotlinx.coroutines.delay
4 | import org.assertj.core.api.Assertions.assertThat
5 | import org.junit.Test
6 | import org.wordpress.android.fluxc.test
7 |
8 | class CurrentTimeProviderTest {
9 | private val currentTimeProvider = CurrentTimeProvider()
10 |
11 | @Test
12 | fun `always returns current date`() = test {
13 | val firstDate = currentTimeProvider.currentDate()
14 | delay(1)
15 | val secondDate = currentTimeProvider.currentDate()
16 |
17 | assertThat(firstDate).isNotEqualTo(secondDate)
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/example/src/test/resources/activitylog/body-response.json:
--------------------------------------------------------------------------------
1 | {
2 | "text": "Comment text",
3 | "ranges": [
4 | {
5 | "url": "https://www.wordpress.com",
6 | "indices": [
7 | 27,
8 | 39
9 | ],
10 | "site_id": 123,
11 | "section": "post",
12 | "intent": "edit",
13 | "context": "single",
14 | "id": 111
15 | },
16 | {
17 | "url": "https://www.wordpress.com",
18 | "indices": [
19 | 0,
20 | 7
21 | ],
22 | "site_id": 123,
23 | "section": "comment",
24 | "intent": "edit",
25 | "context": "single",
26 | "id": 17,
27 | "root_id": 68
28 | }
29 | ]
30 | }
31 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/action/JetpackAction.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.action;
2 |
3 | import org.wordpress.android.fluxc.annotations.Action;
4 | import org.wordpress.android.fluxc.annotations.ActionEnum;
5 | import org.wordpress.android.fluxc.annotations.action.IAction;
6 | import org.wordpress.android.fluxc.model.SiteModel;
7 | import org.wordpress.android.fluxc.store.JetpackStore.ActivateStatsModulePayload;
8 |
9 | @ActionEnum
10 | public enum JetpackAction implements IAction {
11 | @Action(payloadType = SiteModel.class)
12 | INSTALL_JETPACK,
13 | @Action(payloadType = ActivateStatsModulePayload.class)
14 | ACTIVATE_STATS_MODULE
15 | }
16 |
--------------------------------------------------------------------------------
/example/src/main/java/org/wordpress/android/fluxc/example/utils/ViewGroupExt.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.example.utils
2 |
3 | import android.view.View
4 | import android.view.ViewGroup
5 | import android.widget.Button
6 |
7 | fun ViewGroup.toggleSiteDependentButtons(enabled: Boolean = true) =
8 | childViewsAsSequence()
9 | .filter { it is Button }
10 | .forEach { it.isEnabled = enabled }
11 |
12 | fun ViewGroup.childViewsAsSequence(): Sequence =
13 | mutableListOf().apply {
14 | for (it in 0 until childCount) {
15 | add(getChildAt(it))
16 | }
17 | }.asSequence()
18 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/converters/StringListConverterTest.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.converters
2 |
3 | import org.junit.Assert
4 | import org.junit.Test
5 | import org.wordpress.android.fluxc.persistence.coverters.StringListConverter
6 |
7 | class StringListConverterTest {
8 | @Test
9 | fun testStringToListToStringConversion() {
10 | val converter = StringListConverter()
11 |
12 | val string = "apple,banana,1"
13 |
14 | // A string converted to list and back should be unaltered
15 | val result = converter.stringToList(string)
16 | Assert.assertEquals(string, converter.listToString(result))
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/example/src/test/resources/wc/site-setting-option-response.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "woocommerce_enable_coupons",
3 | "label": "Enable coupons",
4 | "description": "Enable the use of coupon codes",
5 | "type": "checkbox",
6 | "default": "yes",
7 | "tip": "Coupons can be applied from the cart and checkout pages.",
8 | "value": "yes",
9 | "_links": {
10 | "self": [
11 | {
12 | "href": "https://awootestshop.mystagingwebsite.com/wp-json/wc/v3/settings/general/woocommerce_enable_coupons"
13 | }
14 | ],
15 | "collection": [
16 | {
17 | "href": "https://awootestshop.mystagingwebsite.com/wp-json/wc/v3/settings/general"
18 | }
19 | ]
20 | }
21 | }
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/coverters/BloggingPromptDateConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.coverters
2 |
3 | import androidx.room.TypeConverter
4 | import org.wordpress.android.fluxc.network.rest.wpcom.bloggingprompts.BloggingPromptsUtils
5 | import java.util.Date
6 |
7 | /**
8 | * A Room type converter for Blogging Prompt dates in YYYY-MM-DD format
9 | */
10 | class BloggingPromptDateConverter {
11 | @TypeConverter
12 | fun stringToDate(value: String?) = value?.let { BloggingPromptsUtils.stringToDate(it) }
13 |
14 | @TypeConverter
15 | fun dateToString(date: Date?) = date?.let { BloggingPromptsUtils.dateToString(it) }
16 | }
17 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/CoreProductBackOrders.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | /**
4 | * Standard Core WooCommerce product back order options
5 | */
6 | enum class CoreProductBackOrders(val value: String) {
7 | NO("no"),
8 | NOTIFY("notify"),
9 | YES("yes");
10 |
11 | companion object {
12 | private val valueMap = values().associateBy(CoreProductBackOrders::value)
13 |
14 | /**
15 | * Convert the base value into the associated CoreProductBackOrders object
16 | */
17 | fun fromValue(value: String) = valueMap[value]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/notifications/NotificationTestUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.notifications
2 |
3 | import com.google.gson.Gson
4 | import org.wordpress.android.fluxc.network.rest.wpcom.notifications.NotificationApiResponse
5 | import org.wordpress.android.fluxc.network.rest.wpcom.notifications.NotificationsApiResponse
6 |
7 | object NotificationTestUtils {
8 | fun parseNotificationsApiResponseFromJsonString(json: String) =
9 | Gson().fromJson(json, NotificationsApiResponse::class.java)
10 |
11 | fun parseNotificationApiResponseFromJsonString(json: String) =
12 | Gson().fromJson(json, NotificationApiResponse::class.java)
13 | }
14 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/xmlrpc/XMLRPCFault.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.xmlrpc;
2 |
3 | public class XMLRPCFault extends XMLRPCException {
4 | private static final long serialVersionUID = 5676562456612956519L;
5 | private String mFaultString;
6 | private int mFaultCode;
7 |
8 | public XMLRPCFault(String faultString, int faultCode) {
9 | super(faultString);
10 | this.mFaultString = faultString;
11 | this.mFaultCode = faultCode;
12 | }
13 |
14 | public String getFaultString() {
15 | return mFaultString;
16 | }
17 |
18 | public int getFaultCode() {
19 | return mFaultCode;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/CoreProductTaxStatus.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | /**
4 | * Standard Core WooCommerce product tax statuses
5 | */
6 | enum class CoreProductTaxStatus(val value: String) {
7 | TAXABLE("taxable"),
8 | SHIPPING("shipping"),
9 | NONE("none");
10 |
11 | companion object {
12 | private val valueMap = values().associateBy(CoreProductTaxStatus::value)
13 |
14 | /**
15 | * Convert the base value into the associated CoreProductTaxStatus object
16 | */
17 | fun fromValue(value: String) = valueMap[value]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/fluxc-annotations/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "java"
3 | alias(sharedLibs.plugins.automattic.publishToS3)
4 | }
5 |
6 | java {
7 | sourceCompatibility = JavaVersion.VERSION_1_8
8 | targetCompatibility = JavaVersion.VERSION_1_8
9 |
10 | withSourcesJar()
11 | withJavadocJar()
12 | }
13 |
14 | project.afterEvaluate {
15 | publishing {
16 | publications {
17 | FluxCAnnotationsPublication(MavenPublication) {
18 | from components.java
19 |
20 | groupId "org.wordpress.fluxc"
21 | artifactId "fluxc-annotations"
22 | // version is set by 'publish-to-s3' plugin
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/HttpMethod.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network
2 |
3 | import com.android.volley.Request.Method as VolleyMethod
4 |
5 | enum class HttpMethod {
6 | GET, POST, DELETE, PUT, HEAD, OPTIONS, TRACE, PATCH
7 | }
8 |
9 | fun HttpMethod.toVolleyMethod(): Int = when (this) {
10 | HttpMethod.GET -> VolleyMethod.GET
11 | HttpMethod.POST -> VolleyMethod.POST
12 | HttpMethod.DELETE -> VolleyMethod.DELETE
13 | HttpMethod.PUT -> VolleyMethod.PUT
14 | HttpMethod.HEAD -> VolleyMethod.HEAD
15 | HttpMethod.OPTIONS -> VolleyMethod.OPTIONS
16 | HttpMethod.TRACE -> VolleyMethod.TRACE
17 | HttpMethod.PATCH -> VolleyMethod.PATCH
18 | }
19 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/order/ShippingLine.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.order
2 |
3 | import com.google.gson.annotations.JsonAdapter
4 | import com.google.gson.annotations.SerializedName
5 | import org.wordpress.android.fluxc.utils.NullStringJsonAdapter
6 |
7 | data class ShippingLine(
8 | val id: Long? = null,
9 | val total: String? = null,
10 | @SerializedName("total_tax")
11 | val totalTax: String? = null,
12 | @SerializedName("method_id")
13 | @JsonAdapter(NullStringJsonAdapter::class, nullSafe = false)
14 | val methodId: String? = null,
15 | @SerializedName("method_title")
16 | val methodTitle: String? = null
17 | )
18 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/entity/ShippingMethodEntity.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.entity
2 |
3 | import androidx.room.Entity
4 | import org.wordpress.android.fluxc.model.LocalOrRemoteId.LocalId
5 | import org.wordpress.android.fluxc.model.WCShippingMethod
6 |
7 | @Entity(tableName = "ShippingMethod", primaryKeys = ["localSiteId", "id"])
8 | data class ShippingMethodEntity (
9 | val id: String,
10 | val localSiteId: LocalId,
11 | val title: String
12 | )
13 |
14 | fun WCShippingMethod.toEntity(localSiteId: LocalId) = ShippingMethodEntity(
15 | id = this.id,
16 | localSiteId = localSiteId,
17 | title = this.title
18 | )
19 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/converters/StringListConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.converters
2 |
3 | import androidx.room.TypeConverter
4 |
5 | class StringListConverter {
6 | companion object {
7 | private const val SEPARATOR = ","
8 | }
9 |
10 | @TypeConverter
11 | fun listToString(value: List?): String? =
12 | value?.joinToString(separator = SEPARATOR)
13 |
14 | @TypeConverter
15 | fun stringToList(value: String?): List? = value?.let {
16 | if (it.isEmpty()) {
17 | emptyList()
18 | } else {
19 | it.split(SEPARATOR)
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/example/src/androidTest/java/org/wordpress/android/fluxc/release/ReleaseStack_XMLRPCBase.java:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.release;
2 |
3 | import org.wordpress.android.fluxc.example.BuildConfig;
4 | import org.wordpress.android.fluxc.model.SiteModel;
5 |
6 | public class ReleaseStack_XMLRPCBase extends ReleaseStack_Base {
7 | static SiteModel sSite;
8 |
9 | {
10 | sSite = new SiteModel();
11 | sSite.setId(1);
12 | sSite.setSelfHostedSiteId(0);
13 | sSite.setUsername(BuildConfig.TEST_WPORG_USERNAME_SH_SIMPLE);
14 | sSite.setPassword(BuildConfig.TEST_WPORG_PASSWORD_SH_SIMPLE);
15 | sSite.setXmlRpcUrl(BuildConfig.TEST_WPORG_URL_SH_SIMPLE_ENDPOINT);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/converters/BloggingPromptDateConverterTest.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.converters
2 |
3 | import org.junit.Assert
4 | import org.junit.Test
5 | import org.wordpress.android.fluxc.persistence.coverters.BloggingPromptDateConverter
6 |
7 | class BloggingPromptDateConverterTest {
8 | @Test
9 | fun testBloggingPromptDateStringToDateObject() {
10 | val converter = BloggingPromptDateConverter()
11 |
12 | val date = "2022-05-01"
13 |
14 | // A string date converted to Date and back should be unaltered
15 | val result = converter.stringToDate(date)
16 | Assert.assertEquals(date, converter.dateToString(result))
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/scan/ScanStartResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.scan
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | data class ScanStartResponse(
7 | @SerializedName("error") val error: Error? = null,
8 | @SerializedName("success") val success: Boolean?
9 | ) : Response {
10 | data class Error(
11 | @SerializedName("error_data") val errorData: List?,
12 | @SerializedName("errors") val errors: Errors?
13 | )
14 |
15 | data class Errors(
16 | @SerializedName("vp_api_error") val vpApiError: List?
17 | )
18 | }
19 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/scan/threat/FixThreatStatusModel.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.scan.threat
2 |
3 | data class FixThreatStatusModel(
4 | val id: Long,
5 | val status: FixStatus,
6 | val error: String? = null
7 | ) {
8 | enum class FixStatus(val value: String) {
9 | NOT_STARTED("not_started"),
10 | IN_PROGRESS("in_progress"),
11 | NOT_FIXED("not_fixed"),
12 | FIXED("fixed"),
13 | UNKNOWN("unknown");
14 |
15 | companion object {
16 | fun fromValue(value: String?): FixStatus {
17 | return values().firstOrNull { it.value == value } ?: UNKNOWN
18 | }
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/customer/WCCustomerFromAnalytics.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.customer
2 |
3 | data class WCCustomerFromAnalytics(
4 | val avgOrderValue: Double,
5 | val city: String,
6 | val country: String,
7 | val dateLastActive: String,
8 | val dateLastActiveGmt: String,
9 | val dateLastOrder: String,
10 | val dateRegistered: String,
11 | val dateRegisteredGmt: String,
12 | val email: String,
13 | val id: Long,
14 | val name: String,
15 | val ordersCount: Int,
16 | val postcode: String,
17 | val state: String,
18 | val totalSpend: Double,
19 | val userId: Long,
20 | val username: String
21 | )
22 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/converters/LongListConverter.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.persistence.converters
2 |
3 | import androidx.room.TypeConverter
4 |
5 | class LongListConverter {
6 | companion object {
7 | private const val SEPARATOR = ","
8 | }
9 |
10 | @TypeConverter
11 | fun listToString(value: List?): String? =
12 | value?.joinToString(separator = SEPARATOR)
13 |
14 | @TypeConverter
15 | fun stringToList(value: String?): List? = value?.let {
16 | if (it.isEmpty()) {
17 | emptyList()
18 | } else {
19 | it.split(SEPARATOR).map(String::toLong)
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/.configure:
--------------------------------------------------------------------------------
1 | {
2 | "project_name": "FluxC-Android",
3 | "branch": "trunk",
4 | "pinned_hash": "18dbcdc1545c8211582869d7f375914bf5a19c9b",
5 | "files_to_copy": [
6 | {
7 | "file": "android/FluxC/tests.properties",
8 | "destination": "example/properties/tests.properties"
9 | },
10 | {
11 | "file": "android/FluxC/tests.properties-extra",
12 | "destination": "example/properties/tests.properties-extra"
13 | },
14 | {
15 | "file": "android/FluxC/api.properties",
16 | "destination": "example/properties/api.properties"
17 | },
18 | {
19 | "file": "android/FluxC/firebase.secrets.json",
20 | "destination": ".configure-files/firebase.secrets.json"
21 | }
22 | ]
23 | }
--------------------------------------------------------------------------------
/example/src/test/java/org/wordpress/android/fluxc/endpoints/WPComV3EndpointTest.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.endpoints
2 |
3 | import org.assertj.core.api.Assertions.assertThat
4 | import org.junit.Test
5 | import org.wordpress.android.fluxc.generated.endpoint.WPCOMV3
6 |
7 | class WPComV3EndpointTest {
8 | @Test
9 | fun testAllEndpoints() {
10 | assertThat("/sites/123/blogging-prompts/")
11 | .isEqualTo(WPCOMV3.sites.site(123).blogging_prompts.endpoint)
12 | }
13 |
14 | @Test
15 | fun testUrls() {
16 | assertThat("https://public-api.wordpress.com/wpcom/v3/sites/123/blogging-prompts/")
17 | .isEqualTo(WPCOMV3.sites.site(123).blogging_prompts.url)
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/model/revisions/LocalDiffType.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.revisions
2 |
3 | enum class LocalDiffType constructor(private val string: String) {
4 | TITLE("title"),
5 | CONTENT("post"),
6 | UNKNOWN("unknown");
7 |
8 | override fun toString(): String {
9 | return string
10 | }
11 |
12 | companion object {
13 | @JvmStatic
14 | fun fromString(string: String?): LocalDiffType {
15 | return when (string) {
16 | "title" -> TITLE
17 | "post" -> CONTENT
18 | else -> {
19 | UNKNOWN
20 | }
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/fluxc/src/main/java/org/wordpress/android/fluxc/utils/PreferenceUtils.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.utils
2 |
3 | import android.content.Context
4 | import android.content.SharedPreferences
5 | import javax.inject.Inject
6 |
7 | object PreferenceUtils {
8 | @JvmStatic
9 | fun getFluxCPreferences(context: Context): SharedPreferences {
10 | return context.getSharedPreferences("${context.packageName}_fluxc-preferences", Context.MODE_PRIVATE)
11 | }
12 |
13 | class PreferenceUtilsWrapper
14 | @Inject constructor(private val context: Context) {
15 | fun getFluxCPreferences(): SharedPreferences {
16 | return PreferenceUtils.getFluxCPreferences(context)
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/product/BatchProductVariationsApiResponse.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.network.rest.wpcom.wc.product
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.wordpress.android.fluxc.network.Response
5 |
6 | /**
7 | * Representation of Batch Update Product Variations API response.
8 | */
9 | data class BatchProductVariationsApiResponse(
10 | @SerializedName("create") val createdVariations: List? = null,
11 | @SerializedName("update") val updatedVariations: List? = null,
12 | @SerializedName("delete") val deletedVariations: List? = null
13 | ) : Response
14 |
--------------------------------------------------------------------------------
/plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/order/UpdateOrderRequest.kt:
--------------------------------------------------------------------------------
1 | package org.wordpress.android.fluxc.model.order
2 |
3 | import org.wordpress.android.fluxc.model.WCOrderStatusModel
4 |
5 | data class UpdateOrderRequest(
6 | val customerId: Long? = null,
7 | val status: WCOrderStatusModel? = null,
8 | val lineItems: List