diff --git a/app/build.gradle b/app/build.gradle
index ad8f2c270..b610d0640 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -84,7 +84,7 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.10'
//PlayStoreApi
- implementation 'com.github.whyorean:playstore-api-v2:2.4'
+ implementation 'com.github.whyorean:playstore-api-v2:2.5'
//OkHTTP3
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index a69866ef8..c011815a3 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -34,6 +34,7 @@
-dontwarn okio.**
-keep class com.google.**
-dontwarn com.google.**
+-keep class com.google.gson.Gson {*;}
# Glide
-keep public class * implements com.bumptech.glide.module.GlideModule
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 99ceddeca..7248eda0c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -153,6 +153,7 @@
+
buildSplitRequestList(Context context, App app,
AndroidAppDeliveryData deliveryData) {
- List splitList = deliveryData.getSplitList();
+ List splitList = deliveryData.getSplitDeliveryDataList();
List requestList = new ArrayList<>();
- for (Split split : splitList) {
+ for (SplitDeliveryData split : splitList) {
final Request request = buildSplitRequest(context, app, split);
requestList.add(request);
}
diff --git a/app/src/main/java/com/aurora/store/iterator/CustomAppListIterator.java b/app/src/main/java/com/aurora/store/iterator/CustomAppListIterator.java
index 7a4b66ac1..7352a0e83 100644
--- a/app/src/main/java/com/aurora/store/iterator/CustomAppListIterator.java
+++ b/app/src/main/java/com/aurora/store/iterator/CustomAppListIterator.java
@@ -88,7 +88,7 @@ public class CustomAppListIterator implements Iterator {
private boolean shouldSkip(App app) {
return (!filterModel.isPaidApps() && !app.isFree())
- || (!filterModel.isAppsWithAds() && app.containsAds())
+ || (!filterModel.isAppsWithAds() && app.isContainsAds())
|| (!filterModel.isGsfDependentApps() && !app.getDependencies().isEmpty())
|| (filterModel.getRating() > 0 && app.getRating().getAverage() < filterModel.getRating())
|| (filterModel.getDownloads() > 0 && app.getInstalls() < filterModel.getDownloads());
diff --git a/app/src/main/java/com/aurora/store/model/App.java b/app/src/main/java/com/aurora/store/model/App.java
index 5dabc63ad..c7444023c 100644
--- a/app/src/main/java/com/aurora/store/model/App.java
+++ b/app/src/main/java/com/aurora/store/model/App.java
@@ -22,10 +22,10 @@
*/
package com.aurora.store.model;
-import android.text.TextUtils;
-
import com.aurora.store.R;
+import com.dragons.aurora.playstoreapiv2.Features;
import com.dragons.aurora.playstoreapiv2.GooglePlayAPI;
+import com.dragons.aurora.playstoreapiv2.ProductDetailsSection;
import java.util.ArrayList;
import java.util.Collection;
@@ -35,183 +35,57 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import lombok.Data;
-public class App implements Comparable {
- private String packageName = "unknown";
- private String displayName;
- private String versionName = "unknown";
- private int versionCode = 0;
- private int offerType;
- private String updated;
- private long size;
- private long installs;
- private Rating rating = new Rating();
- private String categoryIconUrl;
+@Data
+public class App {
+
+ private Features features;
private ImageSource pageBackgroundImage;
- private String iconUrl;
- private String videoUrl;
- private String changes;
- private String developerName;
- private String description;
- private String shortDescription;
- private Set permissions = new HashSet<>();
- private boolean isInstalled;
- private boolean isFree;
- private boolean isAd;
private List screenshotUrls = new ArrayList<>();
- private Review userReview;
- private String categoryId;
- private String price;
- private boolean containsAds;
- private Set dependencies = new HashSet<>();
private Map offerDetails = new HashMap<>();
- private boolean system;
- private boolean inPlayStore;
private Map relatedLinks = new HashMap<>();
+ private Rating rating = new Rating();
+ private Restriction restriction;
+ private Review userReview;
+ private Set dependencies = new HashSet<>();
+ private Set permissions = new HashSet<>();
+ private String categoryIconUrl;
+ private String categoryId;
+ private String categoryName;
+ private String changes;
+ private String description;
+ private String developerName;
+ private String developerEmail;
+ private String developerAddress;
+ private String developerWebsite;
+ private String displayName;
+ private String downloadString;
+ private String footerHtml;
+ private String iconUrl;
+ private String instantAppLink;
+ private String labeledRating;
+ private String packageName = "unknown";
+ private String price;
+ private String shortDescription;
+ private String testingProgramEmail;
+ private String updated;
+ private String versionName = "unknown";
+ private String videoUrl;
+ private boolean containsAds;
private boolean earlyAccess;
+ private boolean inPlayStore;
+ private boolean isAd;
+ private boolean isFree;
+ private boolean isInstalled;
+ private boolean system;
private boolean testingProgramAvailable;
private boolean testingProgramOptedIn;
- private String testingProgramEmail;
- private Restriction restriction;
- private String labeledRating;
- private String instantAppLink;
-
- public String getLabeledRating() {
- return labeledRating;
- }
-
- public void setLabeledRating(String labeledRating) {
- this.labeledRating = labeledRating;
- }
-
- public String getPackageName() {
- return packageName;
- }
-
- public void setPackageName(String packageName) {
- this.packageName = packageName;
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public void setDisplayName(String displayName) {
- this.displayName = displayName;
- }
-
- public String getVersionName() {
- return versionName;
- }
-
- public void setVersionName(String versionName) {
- this.versionName = versionName;
- }
-
- public int getVersionCode() {
- return versionCode;
- }
-
- public void setVersionCode(int versionCode) {
- this.versionCode = versionCode;
- }
-
- public int getOfferType() {
- return offerType;
- }
-
- public void setOfferType(int offerType) {
- this.offerType = offerType;
- }
-
- public String getUpdated() {
- return updated;
- }
-
- public void setUpdated(String updated) {
- this.updated = updated;
- }
-
- public long getSize() {
- return size;
- }
-
- public void setSize(long size) {
- this.size = size;
- }
-
- public long getInstalls() {
- return installs;
- }
-
- public void setInstalls(long installs) {
- this.installs = installs;
- }
-
- public Rating getRating() {
- return rating;
- }
-
- public String getCategoryIconUrl() {
- return categoryIconUrl;
- }
-
- public void setCategoryIconUrl(String categoryIconUrl) {
- this.categoryIconUrl = categoryIconUrl;
- }
-
- public ImageSource getPageBackgroundImage() {
- return pageBackgroundImage;
- }
-
- public void setPageBackgroundImage(ImageSource pageBackgroundImage) {
- this.pageBackgroundImage = pageBackgroundImage;
- }
-
- public void setIconUrl(String iconUrl) {
- this.iconUrl = iconUrl;
- }
-
- public ImageSource getIconInfo() {
- ImageSource imageSource = new ImageSource();
- if (!TextUtils.isEmpty(iconUrl)) {
- imageSource.setUrl(iconUrl);
- }
- return imageSource;
- }
-
- public String getVideoUrl() {
- return videoUrl;
- }
-
- public void setVideoUrl(String videoUrl) {
- this.videoUrl = videoUrl;
- }
-
- public String getChanges() {
- return changes;
- }
-
- public void setChanges(String changes) {
- this.changes = changes;
- }
-
- public String getDeveloperName() {
- return developerName;
- }
-
- public void setDeveloperName(String developerName) {
- this.developerName = developerName;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
+ private int offerType;
+ private int versionCode = 0;
+ private long installs;
+ private long size;
public Set getPermissions() {
return permissions;
@@ -221,22 +95,6 @@ public class App implements Comparable {
this.permissions = new HashSet<>(permissions);
}
- public String getShortDescription() {
- return shortDescription;
- }
-
- public void setShortDescription(String shortDescription) {
- this.shortDescription = shortDescription;
- }
-
- public boolean isInstalled() {
- return isInstalled;
- }
-
- public void setInstalled(boolean installed) {
- isInstalled = installed;
- }
-
public int getInstalledVersionCode() {
return versionCode;
}
@@ -245,152 +103,6 @@ public class App implements Comparable {
return versionName;
}
- public boolean isFree() {
- return isFree;
- }
-
- public void setFree(boolean free) {
- isFree = free;
- }
-
- public boolean isAd() {
- return isAd;
- }
-
- public void setAd(boolean ad) {
- isAd = ad;
- }
-
- public List getScreenshotUrls() {
- return screenshotUrls;
- }
-
- public Review getUserReview() {
- return userReview;
- }
-
- public void setUserReview(Review userReview) {
- this.userReview = userReview;
- }
-
- public String getCategoryId() {
- return categoryId;
- }
-
- public void setCategoryId(String categoryId) {
- this.categoryId = categoryId;
- }
-
- public String getPrice() {
- return price;
- }
-
- public void setPrice(String price) {
- this.price = price;
- }
-
- public boolean containsAds() {
- return containsAds;
- }
-
- public void setContainsAds(boolean containsAds) {
- this.containsAds = containsAds;
- }
-
- public Set getDependencies() {
- return dependencies;
- }
-
- public Map getOfferDetails() {
- return offerDetails;
- }
-
- public boolean isSystem() {
- return system;
- }
-
- public void setSystem(boolean system) {
- this.system = system;
- }
-
- public boolean isInPlayStore() {
- return inPlayStore;
- }
-
- public void setInPlayStore(boolean inPlayStore) {
- this.inPlayStore = inPlayStore;
- }
-
- public Map getRelatedLinks() {
- return relatedLinks;
- }
-
- public boolean isEarlyAccess() {
- return earlyAccess;
- }
-
- public void setEarlyAccess(boolean earlyAccess) {
- this.earlyAccess = earlyAccess;
- }
-
- public boolean isTestingProgramAvailable() {
- return testingProgramAvailable;
- }
-
- public void setTestingProgramAvailable(boolean testingProgramAvailable) {
- this.testingProgramAvailable = testingProgramAvailable;
- }
-
- public boolean isTestingProgramOptedIn() {
- return testingProgramOptedIn;
- }
-
- public void setTestingProgramOptedIn(boolean testingProgramOptedIn) {
- this.testingProgramOptedIn = testingProgramOptedIn;
- }
-
- public String getTestingProgramEmail() {
- return testingProgramEmail;
- }
-
- public void setTestingProgramEmail(String testingProgramEmail) {
- this.testingProgramEmail = testingProgramEmail;
- }
-
- public Restriction getRestriction() {
- return restriction;
- }
-
- public void setRestriction(Restriction restriction) {
- this.restriction = restriction;
- }
-
- public String getInstantAppLink() {
- return instantAppLink;
- }
-
- public void setInstantAppLink(String instantAppLink) {
- this.instantAppLink = instantAppLink;
- }
-
- @Override
- public int compareTo(App o) {
- return getDisplayName().compareToIgnoreCase(o.getDisplayName());
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof App))
- return false;
-
- return getPackageName().equals(((App) obj).getPackageName());
- }
-
- @Override
- public int hashCode() {
- return (getPackageName().isEmpty()) ? 0 : getPackageName().hashCode();
- }
-
public enum Restriction {
GENERIC(-1),
diff --git a/app/src/main/java/com/aurora/store/model/AppBuilder.java b/app/src/main/java/com/aurora/store/model/AppBuilder.java
index 3d68a7f6c..5269c9707 100644
--- a/app/src/main/java/com/aurora/store/model/AppBuilder.java
+++ b/app/src/main/java/com/aurora/store/model/AppBuilder.java
@@ -34,8 +34,8 @@ import com.dragons.aurora.playstoreapiv2.DetailsResponse;
import com.dragons.aurora.playstoreapiv2.DocV2;
import com.dragons.aurora.playstoreapiv2.GooglePlayAPI;
import com.dragons.aurora.playstoreapiv2.Image;
+import com.dragons.aurora.playstoreapiv2.ProductDetailsSection;
import com.dragons.aurora.playstoreapiv2.RelatedLink;
-import com.dragons.aurora.playstoreapiv2.Unknown25Item;
import java.util.List;
import java.util.regex.Matcher;
@@ -45,6 +45,8 @@ public class AppBuilder {
static public App build(DetailsResponse detailsResponse) {
App app = build(detailsResponse.getDocV2());
+ app.setFooterHtml(detailsResponse.hasFooterHtml() ? detailsResponse.getFooterHtml() : "");
+ app.setFeatures(detailsResponse.getFeatures());
if (TextUtils.isEmpty(app.getCategoryIconUrl()) || app.getRelatedLinks().isEmpty()) {
walkBadges(app, detailsResponse.getBadgeList());
}
@@ -73,9 +75,11 @@ public class AppBuilder {
app.setPackageName(appDetails.getPackageName());
app.setVersionName(appDetails.getVersionString());
app.setVersionCode(appDetails.getVersionCode());
+ app.setCategoryName(appDetails.getCategoryName());
app.setDeveloperName(appDetails.getDeveloperName());
app.setSize(appDetails.getInstallationSize());
app.setInstalls(getInstallsNum(appDetails.getNumDownloads()));
+ app.setDownloadString(appDetails.getNumDownloads());
app.setUpdated(appDetails.getUploadDate());
app.setChanges(appDetails.getRecentChangesHtml());
app.setPermissions(appDetails.getPermissionList());
@@ -85,6 +89,10 @@ public class AppBuilder {
app.setTestingProgramAvailable(appDetails.hasTestingProgramInfo());
app.setLabeledRating(details.getRelatedLinks().getRated().getLabel());
app.setAd(details.getDetailsUrl().contains("nocache_isad=1"));
+ app.setDeveloperName(appDetails.getDeveloperName());
+ app.setDeveloperEmail(appDetails.getDeveloperEmail());
+ app.setDeveloperAddress(appDetails.getDeveloperAddress());
+ app.setDeveloperWebsite(appDetails.getDeveloperWebsite());
if (appDetails.getHasInstantLink() && !TextUtils.isEmpty(appDetails.getInstantLink())) {
app.setInstantAppLink(appDetails.getInstantLink());
}
@@ -94,11 +102,12 @@ public class AppBuilder {
}
fillImages(app, details.getImageList());
fillDependencies(app, appDetails);
+ fillOfferDetails(app, details);
return app;
}
static private long getInstallsNum(String installsRaw) {
- Matcher matcher = Pattern.compile("[\\d]+").matcher(installsRaw.replaceAll("[,\\.\\s]+", ""));
+ Matcher matcher = Pattern.compile("[\\d]+").matcher(installsRaw.replaceAll("[,.\\s]+", ""));
if (matcher.find()) {
return Util.parseLong(matcher.group(0), 0);
}
@@ -125,14 +134,14 @@ public class AppBuilder {
}
static private void fillOfferDetails(App app, DocV2 details) {
- if (!details.hasUnknown25() || details.getUnknown25().getItemCount() == 0) {
+ if (!details.hasUnknown25() || details.getUnknown25().getSectionCount() == 0) {
return;
}
- for (Unknown25Item item : details.getUnknown25().getItemList()) {
+ for (ProductDetailsSection item : details.getUnknown25().getSectionList()) {
if (!item.hasContainer()) {
continue;
}
- app.getOfferDetails().put(item.getLabel(), item.getContainer().getValue());
+ app.getOfferDetails().put(item.getLabel(), item.getContainer().getDescription());
}
}
diff --git a/app/src/main/java/com/aurora/store/notification/GeneralNotification.java b/app/src/main/java/com/aurora/store/notification/GeneralNotification.java
index 73b4a58e5..a9a9065ea 100644
--- a/app/src/main/java/com/aurora/store/notification/GeneralNotification.java
+++ b/app/src/main/java/com/aurora/store/notification/GeneralNotification.java
@@ -135,7 +135,7 @@ public class GeneralNotification extends NotificationBase {
if (NotificationUtil.isNotificationEnabled(context)) {
Glide.with(context.getApplicationContext())
.asBitmap()
- .load(app.getIconInfo().getUrl())
+ .load(app.getIconUrl())
.into(new SimpleTarget() {
@Override
public void onResourceReady(@NotNull Bitmap bitmap, Transition super Bitmap> transition) {
diff --git a/app/src/main/java/com/aurora/store/section/BlackListedAppSection.java b/app/src/main/java/com/aurora/store/section/BlackListedAppSection.java
index c557ba511..05f30911b 100644
--- a/app/src/main/java/com/aurora/store/section/BlackListedAppSection.java
+++ b/app/src/main/java/com/aurora/store/section/BlackListedAppSection.java
@@ -103,7 +103,7 @@ public class BlackListedAppSection extends Section {
GlideApp
.with(context)
- .load(app.getIconInfo().getUrl())
+ .load(app.getIconUrl())
.transforms(new CenterCrop(), new RoundedCorners(30))
.into(contentHolder.img);
diff --git a/app/src/main/java/com/aurora/store/section/EndlessResultSection.java b/app/src/main/java/com/aurora/store/section/EndlessResultSection.java
index f09e9c382..328e1de5b 100644
--- a/app/src/main/java/com/aurora/store/section/EndlessResultSection.java
+++ b/app/src/main/java/com/aurora/store/section/EndlessResultSection.java
@@ -37,7 +37,7 @@ public class EndlessResultSection extends InstallAppSection {
if (PackageUtil.isInstalled(context, app.getPackageName()))
Version.add(context.getString(R.string.action_installed));
Extra.add(app.getPrice());
- Extra.add(context.getString(app.containsAds() ? R.string.list_app_has_ads : R.string.list_app_no_ads));
+ Extra.add(context.getString(app.isContainsAds() ? R.string.list_app_has_ads : R.string.list_app_no_ads));
Extra.add(context.getString(app.getDependencies().isEmpty() ? R.string.list_app_independent_from_gsf : R.string.list_app_depends_on_gsf));
if (!StringUtils.isEmpty(app.getUpdated()))
Extra.add(app.getUpdated());
diff --git a/app/src/main/java/com/aurora/store/section/FavouriteAppSection.java b/app/src/main/java/com/aurora/store/section/FavouriteAppSection.java
index 422126c84..ea236ec67 100644
--- a/app/src/main/java/com/aurora/store/section/FavouriteAppSection.java
+++ b/app/src/main/java/com/aurora/store/section/FavouriteAppSection.java
@@ -111,7 +111,7 @@ public class FavouriteAppSection extends Section {
GlideApp
.with(context)
- .load(app.getIconInfo().getUrl())
+ .load(app.getIconUrl())
.transforms(new CenterCrop(), new RoundedCorners(30))
.into(contentHolder.img);
diff --git a/app/src/main/java/com/aurora/store/section/InstallAppSection.java b/app/src/main/java/com/aurora/store/section/InstallAppSection.java
index 514e8022f..647c903e1 100644
--- a/app/src/main/java/com/aurora/store/section/InstallAppSection.java
+++ b/app/src/main/java/com/aurora/store/section/InstallAppSection.java
@@ -114,7 +114,7 @@ public class InstallAppSection extends Section {
GlideApp
.with(context)
- .load(app.getIconInfo().getUrl())
+ .load(app.getIconUrl())
.transition(new DrawableTransitionOptions().crossFade())
.transforms(new CenterCrop(), new RoundedCorners(30))
.into(contentHolder.AppIcon);
diff --git a/app/src/main/java/com/aurora/store/section/SearchResultSection.java b/app/src/main/java/com/aurora/store/section/SearchResultSection.java
index c81e6ce24..0f312ef0f 100644
--- a/app/src/main/java/com/aurora/store/section/SearchResultSection.java
+++ b/app/src/main/java/com/aurora/store/section/SearchResultSection.java
@@ -37,7 +37,7 @@ public class SearchResultSection extends InstallAppSection {
if (PackageUtil.isInstalled(context, app.getPackageName()))
Version.add(context.getString(R.string.action_installed));
Extra.add(app.getPrice());
- Extra.add(context.getString(app.containsAds() ? R.string.list_app_has_ads : R.string.list_app_no_ads));
+ Extra.add(context.getString(app.isContainsAds() ? R.string.list_app_has_ads : R.string.list_app_no_ads));
Extra.add(context.getString(app.getDependencies().isEmpty() ? R.string.list_app_independent_from_gsf : R.string.list_app_depends_on_gsf));
if (!StringUtils.isEmpty(app.getUpdated()))
Extra.add(app.getUpdated());
diff --git a/app/src/main/java/com/aurora/store/section/UpdateAppSection.java b/app/src/main/java/com/aurora/store/section/UpdateAppSection.java
index 078f0ad66..917744bad 100644
--- a/app/src/main/java/com/aurora/store/section/UpdateAppSection.java
+++ b/app/src/main/java/com/aurora/store/section/UpdateAppSection.java
@@ -116,7 +116,7 @@ public class UpdateAppSection extends Section {
: Html.fromHtml(app.getChanges()).toString());
GlideApp
.with(context)
- .load(app.getIconInfo().getUrl())
+ .load(app.getIconUrl())
.transition(new DrawableTransitionOptions().crossFade())
.transforms(new CenterCrop(), new RoundedCorners(30))
.into(contentHolder.imgIcon);
diff --git a/app/src/main/java/com/aurora/store/sheet/MoreInfoSheet.java b/app/src/main/java/com/aurora/store/sheet/MoreInfoSheet.java
deleted file mode 100644
index e2110ddc4..000000000
--- a/app/src/main/java/com/aurora/store/sheet/MoreInfoSheet.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Aurora Store
- * Copyright (C) 2019, Rahul Kumar Patel
- *
- * Aurora Store is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * Aurora Store is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Aurora Store. If not, see .
- *
- *
- */
-
-package com.aurora.store.sheet;
-
-import android.os.Build;
-import android.os.Bundle;
-import android.text.Html;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.aurora.store.R;
-import com.aurora.store.model.App;
-import com.google.android.material.bottomsheet.BottomSheetBehavior;
-import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-public class MoreInfoSheet extends BottomSheetDialogFragment {
-
- @BindView(R.id.content_readMore)
- TextView contentReadMore;
-
- private App app;
-
- public MoreInfoSheet() {
- }
-
- public void setApp(App app) {
- this.app = app;
- }
-
- @Override
- public void onStart() {
- super.onStart();
- getDialog().getBehavior().setState(BottomSheetBehavior.STATE_EXPANDED);
- }
-
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.sheet_read_more, container, false);
- ButterKnife.bind(this, view);
- view.setFitsSystemWindows(true);
- return view;
- }
-
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- contentReadMore.setText(Html.fromHtml(app.getDescription(), Html.FROM_HTML_MODE_LEGACY).toString());
- else
- contentReadMore.setText(Html.fromHtml(app.getDescription()).toString());
- }
-}
diff --git a/app/src/main/java/com/aurora/store/task/AppDetailTask.java b/app/src/main/java/com/aurora/store/task/AppDetailTask.java
index 4e8883d7f..08bbb95a1 100644
--- a/app/src/main/java/com/aurora/store/task/AppDetailTask.java
+++ b/app/src/main/java/com/aurora/store/task/AppDetailTask.java
@@ -24,6 +24,7 @@ import android.content.Context;
import com.aurora.store.model.App;
import com.aurora.store.model.AppBuilder;
+import com.aurora.store.util.Log;
import com.aurora.store.util.PackageUtil;
import com.dragons.aurora.playstoreapiv2.DetailsResponse;
import com.dragons.aurora.playstoreapiv2.GooglePlayAPI;
@@ -40,6 +41,7 @@ public class AppDetailTask {
public App getInfo(String packageName) throws Exception {
DetailsResponse response = api.details(packageName);
+ Log.writeToFile(context,response);
App app = AppBuilder.build(response);
if (PackageUtil.isInstalled(context, app))
app.setInstalled(true);
diff --git a/app/src/main/java/com/aurora/store/task/AuthTask.java b/app/src/main/java/com/aurora/store/task/AuthTask.java
index ed39cfdf3..0020d4ab3 100644
--- a/app/src/main/java/com/aurora/store/task/AuthTask.java
+++ b/app/src/main/java/com/aurora/store/task/AuthTask.java
@@ -53,6 +53,10 @@ public class AuthTask extends BaseTask {
if (image.getImageType() == GooglePlayAPI.IMAGE_TYPE_APP_ICON) {
PrefUtil.putString(context, Accountant.PROFILE_AVATAR, image.getImageUrl());
}
+
+ if (image.getImageType() == GooglePlayAPI.IMAGE_TYPE_GOOGLE_PLUS_BACKGROUND) {
+ PrefUtil.putString(context, Accountant.PROFILE_BACKGROUND, image.getImageUrl());
+ }
}
return !loginInfo.isEmpty();
}
diff --git a/app/src/main/java/com/aurora/store/task/LiveUpdate.java b/app/src/main/java/com/aurora/store/task/LiveUpdate.java
index 52a613adb..4cc10466c 100644
--- a/app/src/main/java/com/aurora/store/task/LiveUpdate.java
+++ b/app/src/main/java/com/aurora/store/task/LiveUpdate.java
@@ -64,7 +64,7 @@ public class LiveUpdate {
//Add and to PseudoMaps
PackageUtil.addToPseudoPackageMap(context, app.getPackageName(), app.getDisplayName());
- PackageUtil.addToPseudoURLMap(context, app.getPackageName(), app.getIconInfo().getUrl());
+ PackageUtil.addToPseudoURLMap(context, app.getPackageName(), app.getIconUrl());
}
private FetchListener getFetchListener() {
diff --git a/app/src/main/java/com/aurora/store/ui/accounts/AccountsActivity.java b/app/src/main/java/com/aurora/store/ui/accounts/AccountsActivity.java
index d1a7615b5..c5c88b44e 100644
--- a/app/src/main/java/com/aurora/store/ui/accounts/AccountsActivity.java
+++ b/app/src/main/java/com/aurora/store/ui/accounts/AccountsActivity.java
@@ -20,7 +20,9 @@
package com.aurora.store.ui.accounts;
+import android.content.Intent;
import android.os.Bundle;
+import android.view.Menu;
import android.view.MenuItem;
import androidx.appcompat.app.ActionBar;
@@ -29,7 +31,9 @@ import androidx.fragment.app.FragmentTransaction;
import com.aurora.store.R;
import com.aurora.store.ui.accounts.fragment.AccountsFragment;
+import com.aurora.store.ui.preference.SettingsActivity;
import com.aurora.store.ui.single.activity.BaseActivity;
+import com.aurora.store.util.ViewUtil;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -45,19 +49,36 @@ public class AccountsActivity extends BaseActivity {
setContentView(R.layout.activity_accounts);
ButterKnife.bind(this);
setupActionbar();
- init();
+
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.content, new AccountsFragment())
+ .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+ .commitAllowingStateLoss();
}
@Override
public boolean onOptionsItemSelected(final MenuItem menuItem) {
- if (menuItem.getItemId() == android.R.id.home) {
- onBackPressed();
- return true;
+ switch (menuItem.getItemId()) {
+ case android.R.id.home: {
+ onBackPressed();
+ return true;
+ }
+ case R.id.action_setting: {
+ startActivity(new Intent(this, SettingsActivity.class), ViewUtil.getEmptyActivityBundle(this));
+ return true;
+ }
}
return false;
}
+ @Override
+ public boolean onCreateOptionsMenu(final Menu menu) {
+ getMenuInflater().inflate(R.menu.menu_intro, menu);
+ return true;
+ }
+
@Override
protected void onResume() {
super.onResume();
@@ -73,13 +94,4 @@ public class AccountsActivity extends BaseActivity {
actionBar.setTitle(getString(R.string.menu_account));
}
}
-
- private void init() {
- AccountsFragment fragment = new AccountsFragment();
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.content, fragment)
- .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
- .commitAllowingStateLoss();
- }
}
diff --git a/app/src/main/java/com/aurora/store/ui/accounts/fragment/AccountsFragment.java b/app/src/main/java/com/aurora/store/ui/accounts/fragment/AccountsFragment.java
index 30bb3dbd4..b94e1bee7 100644
--- a/app/src/main/java/com/aurora/store/ui/accounts/fragment/AccountsFragment.java
+++ b/app/src/main/java/com/aurora/store/ui/accounts/fragment/AccountsFragment.java
@@ -42,13 +42,13 @@ import androidx.fragment.app.Fragment;
import com.aurora.store.GlideApp;
import com.aurora.store.R;
import com.aurora.store.api.PlayStoreApiAuthenticator;
-import com.aurora.store.ui.preference.SettingsActivity;
import com.aurora.store.ui.single.activity.GoogleLoginActivity;
import com.aurora.store.util.Accountant;
import com.aurora.store.util.ContextUtil;
import com.aurora.store.util.Log;
import com.aurora.store.util.NetworkUtil;
import com.aurora.store.util.PrefUtil;
+import com.aurora.store.util.Util;
import com.dragons.aurora.playstoreapiv2.GooglePlayAPI;
import com.dragons.aurora.playstoreapiv2.Image;
import com.dragons.aurora.playstoreapiv2.UserProfile;
@@ -130,6 +130,14 @@ public class AccountsFragment extends Fragment {
return view;
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ if (Accountant.isLoggedIn(context)) {
+ Util.validateApi(context);
+ }
+ }
+
@Override
public void onDestroy() {
disposable.clear();
@@ -139,8 +147,6 @@ public class AccountsFragment extends Fragment {
@OnClick(R.id.btn_positive)
public void openLoginActivity() {
context.startActivity(new Intent(context, GoogleLoginActivity.class));
- if (getActivity() instanceof SettingsActivity)
- getActivity().finish();
}
@OnClick(R.id.btn_negative)
diff --git a/app/src/main/java/com/aurora/store/ui/details/DetailsActivity.java b/app/src/main/java/com/aurora/store/ui/details/DetailsActivity.java
index 9a7d1cc0f..6e0c73255 100644
--- a/app/src/main/java/com/aurora/store/ui/details/DetailsActivity.java
+++ b/app/src/main/java/com/aurora/store/ui/details/DetailsActivity.java
@@ -244,7 +244,7 @@ public class DetailsActivity extends BaseActivity {
private void drawBasic() {
GlideApp.with(this)
.asBitmap()
- .load(app.getIconInfo().getUrl())
+ .load(app.getIconUrl())
.transition(new BitmapTransitionOptions().crossFade())
.transforms(new CenterCrop(), new RoundedCorners(50))
.into(icon);
diff --git a/app/src/main/java/com/aurora/store/ui/details/ReadMoreActivity.java b/app/src/main/java/com/aurora/store/ui/details/ReadMoreActivity.java
new file mode 100644
index 000000000..f520ccbb8
--- /dev/null
+++ b/app/src/main/java/com/aurora/store/ui/details/ReadMoreActivity.java
@@ -0,0 +1,131 @@
+/*
+ * Aurora Store
+ * Copyright (C) 2019, Rahul Kumar Patel
+ *
+ * Aurora Store is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Aurora Store is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Aurora Store. If not, see .
+ *
+ *
+ */
+
+package com.aurora.store.ui.details;
+
+import android.os.Build;
+import android.os.Bundle;
+import android.text.Html;
+import android.view.MenuItem;
+import android.widget.LinearLayout;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.appcompat.widget.Toolbar;
+
+import com.aurora.store.R;
+import com.aurora.store.model.App;
+import com.aurora.store.ui.single.activity.BaseActivity;
+import com.aurora.store.ui.view.MoreLayout;
+import com.aurora.store.util.TextUtil;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class ReadMoreActivity extends BaseActivity {
+
+ public static App app;
+ @BindView(R.id.toolbar)
+ Toolbar toolbar;
+ @BindView(R.id.txt_changelog)
+ AppCompatTextView txtChangelog;
+ @BindView(R.id.content_readMore)
+ AppCompatTextView contentReadMore;
+ @BindView(R.id.layout_more)
+ LinearLayout layoutMore;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_read_more);
+ ButterKnife.bind(this);
+ if (app == null) {
+ finish();
+ return;
+ }
+ setupActionBar();
+ setupMore();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(final MenuItem menuItem) {
+ switch (menuItem.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(menuItem);
+ }
+
+ private void setupActionBar() {
+ setSupportActionBar(toolbar);
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ actionBar.setDisplayShowTitleEnabled(true);
+ actionBar.setTitle(app.getDisplayName());
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ app = null;
+ super.onDestroy();
+ }
+
+ private void setupMore() {
+
+ String changes = app.getChanges();
+
+ if (TextUtil.isEmpty(changes))
+ txtChangelog.setText(getString(R.string.details_no_changes));
+ else
+ txtChangelog.setText(Html.fromHtml(changes).toString());
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+ contentReadMore.setText(Html.fromHtml(app.getDescription(), Html.FROM_HTML_MODE_LEGACY).toString());
+ else
+ contentReadMore.setText(Html.fromHtml(app.getDescription()));
+
+ MoreLayout m1 = new MoreLayout(this);
+ m1.setLabel(getString(R.string.details_more_version));
+ m1.setValue(app.getVersionName());
+
+ MoreLayout m2 = new MoreLayout(this);
+ m2.setLabel(getString(R.string.details_more_updated));
+ m2.setValue(app.getUpdated());
+
+ MoreLayout m3 = new MoreLayout(this);
+ m3.setLabel(getString(R.string.menu_downloads));
+ m3.setValue(app.getDownloadString());
+
+ layoutMore.addView(m1);
+ layoutMore.addView(m2);
+ layoutMore.addView(m3);
+
+ for (String key : app.getOfferDetails().keySet()) {
+ MoreLayout moreLayout = new MoreLayout(this);
+ moreLayout.setLabel(key);
+ moreLayout.setValue(app.getOfferDetails().get(key));
+ layoutMore.addView(moreLayout);
+ }
+ }
+}
diff --git a/app/src/main/java/com/aurora/store/ui/details/views/AbstractDetails.java b/app/src/main/java/com/aurora/store/ui/details/views/AbstractDetails.java
index b67b9ed95..e097c8904 100644
--- a/app/src/main/java/com/aurora/store/ui/details/views/AbstractDetails.java
+++ b/app/src/main/java/com/aurora/store/ui/details/views/AbstractDetails.java
@@ -23,7 +23,6 @@ package com.aurora.store.ui.details.views;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
-import android.transition.TransitionManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
@@ -80,8 +79,11 @@ public abstract class AbstractDetails {
protected void setText(int viewId, String text) {
TextView textView = activity.findViewById(viewId);
- if (null != textView) {
- textView.setText(text);
+ if (textView != null) {
+ if (text.isEmpty())
+ textView.setVisibility(View.GONE);
+ else
+ textView.setText(text);
}
}
@@ -94,7 +96,6 @@ public abstract class AbstractDetails {
}
protected void show(ViewGroup viewGroup, int... viewIds) {
- TransitionManager.beginDelayedTransition(viewGroup);
for (int viewId : viewIds) {
activity.findViewById(viewId).setVisibility(View.VISIBLE);
}
diff --git a/app/src/main/java/com/aurora/store/ui/details/views/ActionButton.java b/app/src/main/java/com/aurora/store/ui/details/views/ActionButton.java
index 805ec2386..5eaa8f8d3 100644
--- a/app/src/main/java/com/aurora/store/ui/details/views/ActionButton.java
+++ b/app/src/main/java/com/aurora/store/ui/details/views/ActionButton.java
@@ -302,7 +302,7 @@ public class ActionButton extends AbstractDetails {
//Add and to PseudoMaps
PackageUtil.addToPseudoPackageMap(context, app.getPackageName(), app.getDisplayName());
- PackageUtil.addToPseudoURLMap(context, app.getPackageName(), app.getIconInfo().getUrl());
+ PackageUtil.addToPseudoURLMap(context, app.getPackageName(), app.getIconUrl());
}
private FetchListener getFetchListener() {
diff --git a/app/src/main/java/com/aurora/store/ui/details/views/GeneralDetails.java b/app/src/main/java/com/aurora/store/ui/details/views/GeneralDetails.java
index 99c2953c4..7f825ac3c 100644
--- a/app/src/main/java/com/aurora/store/ui/details/views/GeneralDetails.java
+++ b/app/src/main/java/com/aurora/store/ui/details/views/GeneralDetails.java
@@ -20,48 +20,37 @@
package com.aurora.store.ui.details.views;
+import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.content.res.ColorStateList;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.text.Html;
import android.text.TextUtils;
import android.text.format.Formatter;
-import android.text.util.Linkify;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import androidx.annotation.Nullable;
-import androidx.core.graphics.ColorUtils;
-import androidx.palette.graphics.Palette;
+import androidx.core.text.HtmlCompat;
import com.aurora.store.GlideApp;
import com.aurora.store.R;
-import com.aurora.store.manager.CategoryManager;
import com.aurora.store.model.App;
-import com.aurora.store.sheet.MoreInfoSheet;
import com.aurora.store.ui.details.DetailsActivity;
-import com.aurora.store.util.ColorUtil;
-import com.aurora.store.util.Log;
+import com.aurora.store.ui.details.ReadMoreActivity;
+import com.aurora.store.ui.view.FeatureChip;
import com.aurora.store.util.TextUtil;
-import com.aurora.store.util.ThemeUtil;
import com.aurora.store.util.Util;
import com.aurora.store.util.ViewUtil;
-import com.bumptech.glide.load.DataSource;
-import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
-import com.bumptech.glide.request.RequestListener;
-import com.bumptech.glide.request.target.Target;
+import com.dragons.aurora.playstoreapiv2.Feature;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
+import org.apache.commons.lang3.StringUtils;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import java.util.ArrayList;
@@ -85,10 +74,10 @@ public class GeneralDetails extends AbstractDetails {
RelativeLayout moreLayout;
@BindView(R.id.versionString)
TextView app_version;
- @BindView(R.id.txt_new)
- TextView txtNew;
@BindView(R.id.chip_group_info)
ChipGroup chipGroupInfo;
+ @BindView(R.id.chip_group_features)
+ ChipGroup chipGroupFeatures;
@BindView(R.id.txt_updated)
Chip txtUpdated;
@BindView(R.id.txt_google_dependencies)
@@ -101,8 +90,14 @@ public class GeneralDetails extends AbstractDetails {
Chip txtSize;
@BindView(R.id.category)
Chip category;
- @BindView(R.id.developer_layout)
- LinearLayout developerLayout;
+ @BindView(R.id.txt_footer)
+ TextView txtFooter;
+ @BindView(R.id.txt_dev_web_desc)
+ TextView txtDevWeb;
+ @BindView(R.id.txt_dev_email_desc)
+ TextView txtDevEmail;
+ @BindView(R.id.txt_dev_addr_desc)
+ TextView txtDevAddr;
@BindView(R.id.btn_positive)
MaterialButton btnPositive;
@BindView(R.id.btn_negative)
@@ -118,7 +113,6 @@ public class GeneralDetails extends AbstractDetails {
drawAppBadge();
if (app.isInPlayStore()) {
drawGeneralDetails();
- drawDescription();
setupReadMore();
}
}
@@ -126,21 +120,9 @@ public class GeneralDetails extends AbstractDetails {
private void drawAppBadge() {
GlideApp.with(context)
.asBitmap()
- .load(app.getIconInfo().getUrl())
+ .load(app.getIconUrl())
.transition(new BitmapTransitionOptions().crossFade())
.transforms(new CenterCrop(), new RoundedCorners(50))
- .listener(new RequestListener() {
- @Override
- public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {
- return false;
- }
-
- @Override
- public boolean onResourceReady(Bitmap resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
- getPalette(resource);
- return false;
- }
- })
.into(appIcon);
setText(R.id.displayName, app.getDisplayName());
setText(R.id.packageName, app.getPackageName());
@@ -149,118 +131,45 @@ public class GeneralDetails extends AbstractDetails {
drawVersion();
}
- private void getPalette(Bitmap bitmap) {
- Palette.from(bitmap).generate(palette -> {
- if (palette != null)
- paintEmAll(palette);
- });
- }
-
- private void paintEmAll(Palette palette) {
- Palette.Swatch swatch = palette.getDarkVibrantSwatch();
- int colorPrimary = Color.GRAY;
- int colorPrimaryText = Color.BLACK;
-
- //Make sure we get a fallback swatch if DarkVibrantSwatch is not available
- if (swatch == null)
- swatch = palette.getVibrantSwatch();
-
- //Make sure we get another fallback swatch if VibrantSwatch is not available
- if (swatch == null)
- swatch = palette.getDominantSwatch();
-
- if (swatch != null) {
- colorPrimary = swatch.getRgb();
- colorPrimaryText = ColorUtil.manipulateColor(colorPrimary, 0.3f);
- }
-
- if (ColorUtil.isColorLight(colorPrimary))
- btnPositive.setTextColor(Color.BLACK);
- else
- btnPositive.setTextColor(Color.WHITE);
-
- btnPositive.setBackgroundColor(colorPrimary);
- btnPositive.setStrokeColor(ColorStateList.valueOf(colorPrimary));
-
- if (ThemeUtil.isLightTheme(context)) {
- btnNegative.setTextColor(colorPrimaryText);
- txtDevName.setTextColor(colorPrimaryText);
- txtNew.setTextColor(colorPrimaryText);
- txtDescShort.setTextColor(colorPrimaryText);
- txtDescShort.setBackgroundTintList(ColorStateList.valueOf(ColorUtils.setAlphaComponent(colorPrimary, 60)));
- }
- }
-
private void drawGeneralDetails() {
- if (context != null) {
- if (app.isEarlyAccess()) {
- setText(R.id.rating, R.string.early_access);
- } else {
- setText(R.id.rating, R.string.details_rating, app.getRating().getAverage());
- }
-
- final String category = new CategoryManager(context).getCategoryName(app.getCategoryId());
- if (TextUtil.isEmpty(category))
- hide(R.id.category);
- else
- setText(R.id.category, new CategoryManager(context).getCategoryName(app.getCategoryId()));
-
- if (app.getPrice() != null && app.getPrice().isEmpty())
- setText(R.id.price, R.string.category_appFree);
- else
- setText(R.id.price, app.getPrice());
- setText(R.id.contains_ads, app.containsAds() ? R.string.details_contains_ads : R.string.details_no_ads);
-
- txtUpdated.setText(app.getUpdated());
- txtDependencies.setText(app.getDependencies().isEmpty()
- ? R.string.list_app_independent_from_gsf
- : R.string.list_app_depends_on_gsf);
- txtRating.setText(app.getLabeledRating());
- txtInstalls.setText(app.getInstalls() <= 100 ? "Unknown" : Util.addDiPrefix(app.getInstalls()));
- txtSize.setText(app.getSize() == 0 ? "Unknown" : Formatter.formatShortFileSize(context, app.getSize()));
- setText(R.id.app_desc_short, TextUtil.emptyIfNull(app.getShortDescription()));
-
- drawOfferDetails();
- drawChanges();
-
-
- show(rootLayout, R.id.chip_group_info, R.id.app_desc_short);
+ if (app.isEarlyAccess()) {
+ setText(R.id.rating, R.string.early_access);
+ } else {
+ setText(R.id.rating, R.string.details_rating, app.getRating().getAverage());
}
- }
- private void drawChanges() {
- String changes = app.getChanges();
- if (TextUtil.isEmpty(changes))
- setText(R.id.txt_changelog, context.getString(R.string.details_no_changes));
+ setText(R.id.category, app.getCategoryName());
+
+ if (app.getPrice() != null && app.getPrice().isEmpty())
+ setText(R.id.price, R.string.category_appFree);
else
- setText(R.id.txt_changelog, Html.fromHtml(changes).toString());
- show(rootLayout, R.id.changes_container);
+ setText(R.id.price, app.getPrice());
+ setText(R.id.contains_ads, app.isContainsAds() ? R.string.details_contains_ads : R.string.details_no_ads);
+
+ txtUpdated.setText(app.getUpdated());
+ txtDependencies.setText(app.getDependencies().isEmpty()
+ ? R.string.list_app_independent_from_gsf
+ : R.string.list_app_depends_on_gsf);
+ txtRating.setText(app.getLabeledRating());
+ txtInstalls.setText(app.getInstalls() <= 100 ? "Unknown" : Util.addDiPrefix(app.getInstalls()));
+ txtSize.setText(app.getSize() == 0 ? "Unknown" : Formatter.formatShortFileSize(context, app.getSize()));
+
+ setText(R.id.app_desc_short, TextUtil.emptyIfNull(app.getShortDescription()));
+ setText(R.id.txt_footer, TextUtil.emptyIfNull(app.getFooterHtml()));
+
+ txtDevWeb.setText(app.getDeveloperWebsite());
+ txtDevEmail.setText(app.getDeveloperEmail());
+ txtDevAddr.setText(HtmlCompat.fromHtml(app.getDeveloperAddress(), HtmlCompat.FROM_HTML_MODE_LEGACY));
+
+ drawOfferDetails();
+ drawFeatures();
+ show(rootLayout, R.id.developer_container);
+ show(rootLayout, R.id.chip_group_info, R.id.app_desc_short);
}
private void drawOfferDetails() {
List keyList = new ArrayList<>(app.getOfferDetails().keySet());
Collections.reverse(keyList);
- for (String key : keyList) {
- addOfferItem(key, app.getOfferDetails().get(key));
- }
- }
-
- private void addOfferItem(String key, String value) {
- if (null == value) {
- return;
- }
- TextView itemView = new TextView(context);
- try {
- itemView.setAutoLinkMask(Linkify.ALL);
- itemView.setText(context.getString(R.string.two_items, key, Html.fromHtml(value)));
- } catch (RuntimeException e) {
- Log.w("System WebView missing: %s", e.getMessage());
- itemView.setAutoLinkMask(0);
- itemView.setText(context.getString(R.string.two_items, key, Html.fromHtml(value)));
- }
- itemView.setTextColor(ViewUtil.getStyledAttribute(context, android.R.attr.textColorPrimary));
- developerLayout.addView(itemView);
- ViewUtil.setVisibility(developerLayout, true);
}
private void drawVersion() {
@@ -310,21 +219,27 @@ public class GeneralDetails extends AbstractDetails {
}
}
- private void drawDescription() {
- if (context != null) {
- if (TextUtils.isEmpty(app.getDescription())) {
- hide(R.id.more_layout);
- } else {
- show(rootLayout, R.id.more_layout);
- }
+ private void drawFeatures() {
+ if (app.getFeatures() == null)
+ return;
+ for (Feature feature : app.getFeatures().getFeaturePresenceList()) {
+ FeatureChip chip = new FeatureChip(context);
+ chip.setLabel(StringUtils.capitalize(feature.getLabel()));
+ chipGroupFeatures.addView(chip);
}
+ show(R.id.chip_group_features);
}
private void setupReadMore() {
- moreLayout.setOnClickListener(v -> {
- MoreInfoSheet moreInfoSheet = new MoreInfoSheet();
- moreInfoSheet.setApp(app);
- moreInfoSheet.show(activity.getSupportFragmentManager(), "MORE");
- });
+ if (TextUtils.isEmpty(app.getDescription())) {
+ hide(R.id.more_layout);
+ } else {
+ show(rootLayout, R.id.more_layout);
+ moreLayout.setOnClickListener(v -> {
+ ReadMoreActivity.app = app;
+ activity.startActivity(new Intent(activity, ReadMoreActivity.class),
+ ViewUtil.getEmptyActivityBundle(activity));
+ });
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/aurora/store/ui/intro/IntroActivity.java b/app/src/main/java/com/aurora/store/ui/intro/IntroActivity.java
index bd1b28d25..d154bf0cb 100644
--- a/app/src/main/java/com/aurora/store/ui/intro/IntroActivity.java
+++ b/app/src/main/java/com/aurora/store/ui/intro/IntroActivity.java
@@ -40,6 +40,7 @@ import androidx.navigation.Navigation;
import com.aurora.store.R;
import com.aurora.store.api.PlayStoreApiAuthenticator;
+import com.aurora.store.ui.main.AuroraActivity;
import com.aurora.store.ui.preference.SettingsActivity;
import com.aurora.store.ui.single.activity.BaseActivity;
import com.aurora.store.ui.single.activity.GoogleLoginActivity;
@@ -99,7 +100,7 @@ public class IntroActivity extends BaseActivity {
protected void onResume() {
super.onResume();
if (Accountant.isLoggedIn(this)) {
- startActivity(new Intent(this, SplashActivity.class));
+ startActivity(new Intent(this, AuroraActivity.class));
supportFinishAfterTransition();
}
}
@@ -200,7 +201,6 @@ public class IntroActivity extends BaseActivity {
return;
}
startActivity(new Intent(this, GoogleLoginActivity.class), ViewUtil.getEmptyActivityBundle(this));
- supportFinishAfterTransition();
}
private void resetAnonymousLogin() {
diff --git a/app/src/main/java/com/aurora/store/ui/intro/fragment/WelcomeFragment.java b/app/src/main/java/com/aurora/store/ui/intro/fragment/WelcomeFragment.java
index eb49ba9ea..787717e28 100644
--- a/app/src/main/java/com/aurora/store/ui/intro/fragment/WelcomeFragment.java
+++ b/app/src/main/java/com/aurora/store/ui/intro/fragment/WelcomeFragment.java
@@ -48,9 +48,4 @@ public class WelcomeFragment extends Fragment {
ButterKnife.bind(this, view);
return view;
}
-
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- }
}
diff --git a/app/src/main/java/com/aurora/store/ui/main/AuroraActivity.java b/app/src/main/java/com/aurora/store/ui/main/AuroraActivity.java
index 266940300..f8a1c2981 100644
--- a/app/src/main/java/com/aurora/store/ui/main/AuroraActivity.java
+++ b/app/src/main/java/com/aurora/store/ui/main/AuroraActivity.java
@@ -255,6 +255,7 @@ public class AuroraActivity extends BaseActivity {
@Override
public void onDrawerOpened(@NonNull View drawerView) {
+ ImageView backgroundView = drawerView.findViewById(R.id.background);
ImageView imageView = drawerView.findViewById(R.id.img);
TextView textView1 = drawerView.findViewById(R.id.line1);
TextView textView2 = drawerView.findViewById(R.id.line2);
@@ -266,6 +267,11 @@ public class AuroraActivity extends BaseActivity {
.circleCrop()
.into(imageView);
+ GlideApp
+ .with(AuroraActivity.this)
+ .load(Accountant.getBackgroundImageURL(AuroraActivity.this))
+ .into(backgroundView);
+
textView1.setText(Accountant.isAnonymous(AuroraActivity.this)
? getText(R.string.account_dummy)
: Accountant.getUserName(AuroraActivity.this));
@@ -289,8 +295,8 @@ public class AuroraActivity extends BaseActivity {
Intent intent = new Intent(this, GenericActivity.class);
switch (item.getItemId()) {
case R.id.action_accounts:
- intent.putExtra(Constants.FRAGMENT_NAME, Constants.FRAGMENT_ACCOUNTS);
- startActivity(intent, ViewUtil.getEmptyActivityBundle(this));
+ startActivity(new Intent(this, AccountsActivity.class),
+ ViewUtil.getEmptyActivityBundle(this));
break;
case R.id.action_all_apps:
startActivity(new Intent(this, InstalledAppActivity.class),
diff --git a/app/src/main/java/com/aurora/store/ui/main/fragment/category/CategoriesFragment.java b/app/src/main/java/com/aurora/store/ui/main/fragment/category/CategoriesFragment.java
index a2d70bd8f..8bb119925 100644
--- a/app/src/main/java/com/aurora/store/ui/main/fragment/category/CategoriesFragment.java
+++ b/app/src/main/java/com/aurora/store/ui/main/fragment/category/CategoriesFragment.java
@@ -30,6 +30,7 @@ import android.widget.ProgressBar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -58,6 +59,7 @@ public class CategoriesFragment extends Fragment implements CategoriesSection.Cl
@BindView(R.id.progress_bar)
ProgressBar progressBar;
+ private AppCompatActivity activity;
private Context context;
private CategoryManager categoryManager;
@@ -78,9 +80,10 @@ public class CategoriesFragment extends Fragment implements CategoriesSection.Cl
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
+ activity = (AuroraActivity) getActivity();
categoryManager = new CategoryManager(context);
- CategoriesModel categoriesModel = ViewModelProviders.of(this).get(CategoriesModel.class);
- categoriesModel.getFetchCompleted().observe(this, success -> {
+ CategoriesModel categoriesModel = ViewModelProviders.of(activity).get(CategoriesModel.class);
+ categoriesModel.getFetchCompleted().observe(activity, success -> {
if (success) {
setupRecycler();
progressBar.setVisibility(View.GONE);
diff --git a/app/src/main/java/com/aurora/store/ui/main/fragment/home/HomeFragment.java b/app/src/main/java/com/aurora/store/ui/main/fragment/home/HomeFragment.java
index 748384a0e..1e1950e1e 100644
--- a/app/src/main/java/com/aurora/store/ui/main/fragment/home/HomeFragment.java
+++ b/app/src/main/java/com/aurora/store/ui/main/fragment/home/HomeFragment.java
@@ -29,6 +29,7 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -64,6 +65,7 @@ public class HomeFragment extends Fragment {
@BindView(R.id.btn_top_family)
MaterialButton btnTopFamily;
+ private AppCompatActivity activity;
private Context context;
private FeaturedAppsAdapter topAppsAdapter;
private FeaturedAppsAdapter topGamesAdapter;
@@ -106,18 +108,19 @@ public class HomeFragment extends Fragment {
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
+ activity = (AuroraActivity) getActivity();
setupRecyclers();
- HomeAppsModel homeAppsModel = ViewModelProviders.of(this).get(HomeAppsModel.class);
- homeAppsModel.getTopApps().observe(this, appList -> {
+ HomeAppsModel homeAppsModel = ViewModelProviders.of(activity).get(HomeAppsModel.class);
+ homeAppsModel.getTopApps().observe(activity, appList -> {
topAppsAdapter.addData(appList);
});
- homeAppsModel.getTopGames().observe(this, appList -> {
+ homeAppsModel.getTopGames().observe(activity, appList -> {
topGamesAdapter.addData(appList);
});
- homeAppsModel.getTopFamily().observe(this, appList -> {
+ homeAppsModel.getTopFamily().observe(activity, appList -> {
topFamilyAdapter.addData(appList);
});
- homeAppsModel.getError().observe(this, errorType -> {
+ homeAppsModel.getError().observe(activity, errorType -> {
});
}
diff --git a/app/src/main/java/com/aurora/store/ui/main/fragment/updates/UpdatableAppsModel.java b/app/src/main/java/com/aurora/store/ui/main/fragment/updates/UpdatableAppsModel.java
index c7a867645..092c31262 100644
--- a/app/src/main/java/com/aurora/store/ui/main/fragment/updates/UpdatableAppsModel.java
+++ b/app/src/main/java/com/aurora/store/ui/main/fragment/updates/UpdatableAppsModel.java
@@ -3,70 +3,43 @@ package com.aurora.store.ui.main.fragment.updates;
import android.app.Application;
import androidx.annotation.NonNull;
-import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.aurora.store.AuroraApplication;
-import com.aurora.store.enums.ErrorType;
-import com.aurora.store.exception.CredentialsEmptyException;
-import com.aurora.store.exception.InvalidApiException;
import com.aurora.store.model.App;
import com.aurora.store.task.UpdatableAppsTask;
-import com.dragons.aurora.playstoreapiv2.AuthException;
-import com.dragons.aurora.playstoreapiv2.GooglePlayAPI;
+import com.aurora.store.viewmodel.BaseViewModel;
-import java.net.UnknownHostException;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-public class UpdatableAppsModel extends AndroidViewModel {
-
- private Application application;
- private CompositeDisposable disposable = new CompositeDisposable();
-
- private GooglePlayAPI api;
-
+public class UpdatableAppsModel extends BaseViewModel {
private MutableLiveData> listMutableLiveData = new MutableLiveData<>();
- private MutableLiveData errorTypeMutableLiveData = new MutableLiveData<>();
public UpdatableAppsModel(@NonNull Application application) {
super(application);
- this.application = application;
this.api = AuroraApplication.api;
fetchUpdatableApps();
}
- public LiveData getErrorTypeMutableLiveData() {
- return errorTypeMutableLiveData;
- }
public LiveData> getListMutableLiveData() {
return listMutableLiveData;
}
public void fetchUpdatableApps() {
- disposable.add(Observable.fromCallable(() -> new UpdatableAppsTask(api, application)
+ disposable.add(Observable.fromCallable(() -> new UpdatableAppsTask(api, getApplication())
.getUpdatableApps())
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe((appList) -> {
listMutableLiveData.setValue(appList);
- }, err -> {
- if (err instanceof CredentialsEmptyException || err instanceof InvalidApiException)
- errorTypeMutableLiveData.setValue(ErrorType.LOGOUT_ERR);
- else if (err instanceof AuthException)
- errorTypeMutableLiveData.setValue(ErrorType.SESSION_EXPIRED);
- else if (err instanceof UnknownHostException)
- errorTypeMutableLiveData.setValue(ErrorType.NO_NETWORK);
- else
- errorTypeMutableLiveData.setValue(ErrorType.UNKNOWN);
- }));
+ }, err -> handleError(err)));
}
@Override
diff --git a/app/src/main/java/com/aurora/store/ui/main/fragment/updates/UpdatesFragment.java b/app/src/main/java/com/aurora/store/ui/main/fragment/updates/UpdatesFragment.java
index f4a953267..bf8e2d4eb 100644
--- a/app/src/main/java/com/aurora/store/ui/main/fragment/updates/UpdatesFragment.java
+++ b/app/src/main/java/com/aurora/store/ui/main/fragment/updates/UpdatesFragment.java
@@ -29,6 +29,7 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;
@@ -46,6 +47,7 @@ import com.aurora.store.section.UpdateAppSection;
import com.aurora.store.sheet.AppMenuSheet;
import com.aurora.store.ui.details.DetailsActivity;
import com.aurora.store.ui.main.AuroraActivity;
+import com.aurora.store.ui.single.fragment.BaseFragment;
import com.aurora.store.ui.view.CustomSwipeToRefresh;
import com.aurora.store.util.Util;
import com.aurora.store.util.ViewUtil;
@@ -64,7 +66,7 @@ import io.github.luizgrp.sectionedrecyclerviewadapter.SectionedRecyclerViewAdapt
import io.reactivex.disposables.CompositeDisposable;
-public class UpdatesFragment extends Fragment implements UpdateAppSection.ClickListener {
+public class UpdatesFragment extends BaseFragment implements UpdateAppSection.ClickListener {
@BindView(R.id.swipe_layout)
CustomSwipeToRefresh customSwipeToRefresh;
@@ -75,6 +77,7 @@ public class UpdatesFragment extends Fragment implements UpdateAppSection.ClickL
@BindView(R.id.btn_action)
MaterialButton btnAction;
+ private AppCompatActivity activity;
private Context context;
private Fetch fetch;
private CompositeDisposable disposable = new CompositeDisposable();
@@ -100,16 +103,17 @@ public class UpdatesFragment extends Fragment implements UpdateAppSection.ClickL
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
+ activity = (AuroraActivity) getActivity();
fetch = DownloadManager.getFetchInstance(context);
setupRecycler();
- model = ViewModelProviders.of(this).get(UpdatableAppsModel.class);
- model.getListMutableLiveData().observe(this, appList -> {
+ model = ViewModelProviders.of(activity).get(UpdatableAppsModel.class);
+ model.getListMutableLiveData().observe(activity, appList -> {
dispatchAppsToAdapter(appList);
customSwipeToRefresh.setRefreshing(false);
});
- model.getErrorTypeMutableLiveData().observe(this, errorType -> {
+ model.getError().observe(activity, errorType -> {
switch (errorType) {
case NO_API:
case SESSION_EXPIRED:
diff --git a/app/src/main/java/com/aurora/store/ui/single/activity/GoogleLoginActivity.java b/app/src/main/java/com/aurora/store/ui/single/activity/GoogleLoginActivity.java
index cc3346d2c..e923225c8 100644
--- a/app/src/main/java/com/aurora/store/ui/single/activity/GoogleLoginActivity.java
+++ b/app/src/main/java/com/aurora/store/ui/single/activity/GoogleLoginActivity.java
@@ -82,6 +82,7 @@ public class GoogleLoginActivity extends BaseActivity {
String oauth_token = cookieMap.get(OAUTH_TOKEN);
webview.evaluateJavascript("(function() { return document.getElementById('profileIdentifier').innerHTML; })();",
email -> {
+ email = email.replaceAll("\"", "");
generateTokens(email, oauth_token);
});
}
diff --git a/app/src/main/java/com/aurora/store/ui/single/activity/ManualDownloadActivity.java b/app/src/main/java/com/aurora/store/ui/single/activity/ManualDownloadActivity.java
index 8fb3e5739..04d734ac9 100644
--- a/app/src/main/java/com/aurora/store/ui/single/activity/ManualDownloadActivity.java
+++ b/app/src/main/java/com/aurora/store/ui/single/activity/ManualDownloadActivity.java
@@ -38,7 +38,6 @@ import androidx.appcompat.widget.Toolbar;
import com.aurora.store.R;
import com.aurora.store.manager.CategoryManager;
import com.aurora.store.model.App;
-import com.aurora.store.model.ImageSource;
import com.aurora.store.task.DeliveryData;
import com.aurora.store.task.LiveUpdate;
import com.aurora.store.ui.details.DetailsActivity;
@@ -114,20 +113,15 @@ public class ManualDownloadActivity extends BaseActivity {
}
private void drawAppBadge() {
- ImageSource imageSource = app.getIconInfo();
- if (null != imageSource.getApplicationInfo()) {
- appIcon.setImageDrawable(getPackageManager().getApplicationIcon(imageSource.getApplicationInfo()));
- } else {
- Glide.with(this)
- .asBitmap()
- .load(imageSource.getUrl())
- .apply(new RequestOptions()
- .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
- .placeholder(R.color.colorTransparent)
- .priority(Priority.HIGH))
- .transition(new BitmapTransitionOptions().crossFade())
- .into(appIcon);
- }
+ Glide.with(this)
+ .asBitmap()
+ .load(app.getIconUrl())
+ .apply(new RequestOptions()
+ .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
+ .placeholder(R.color.colorTransparent)
+ .priority(Priority.HIGH))
+ .transition(new BitmapTransitionOptions().crossFade())
+ .into(appIcon);
setText(R.id.displayName, app.getDisplayName());
setText(R.id.packageName, app.getPackageName());
@@ -158,7 +152,7 @@ public class ManualDownloadActivity extends BaseActivity {
setText(R.id.price, R.string.category_appFree);
else
setText(R.id.price, app.getPrice());
- setText(R.id.contains_ads, app.containsAds() ? R.string.details_contains_ads : R.string.details_no_ads);
+ setText(R.id.contains_ads, app.isContainsAds() ? R.string.details_contains_ads : R.string.details_no_ads);
setText(R.id.txt_rating, app.getLabeledRating());
setText(R.id.txt_installs, Util.addDiPrefix(app.getInstalls()));
setText(R.id.txt_size, Formatter.formatShortFileSize(this, app.getSize()));
diff --git a/app/src/main/java/com/aurora/store/ui/single/fragment/BaseFragment.java b/app/src/main/java/com/aurora/store/ui/single/fragment/BaseFragment.java
new file mode 100644
index 000000000..8c7e5fe2f
--- /dev/null
+++ b/app/src/main/java/com/aurora/store/ui/single/fragment/BaseFragment.java
@@ -0,0 +1,21 @@
+package com.aurora.store.ui.single.fragment;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+public class BaseFragment extends Fragment {
+
+ @Override
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ }
+}
diff --git a/app/src/main/java/com/aurora/store/ui/view/FeatureChip.java b/app/src/main/java/com/aurora/store/ui/view/FeatureChip.java
new file mode 100644
index 000000000..9160d2eb6
--- /dev/null
+++ b/app/src/main/java/com/aurora/store/ui/view/FeatureChip.java
@@ -0,0 +1,46 @@
+package com.aurora.store.ui.view;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.RelativeLayout;
+
+import com.aurora.store.R;
+import com.google.android.material.chip.Chip;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class FeatureChip extends RelativeLayout {
+
+ @BindView(R.id.chip)
+ public Chip chip;
+
+ public FeatureChip(Context context) {
+ super(context);
+ init();
+ }
+
+ public FeatureChip(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public FeatureChip(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init();
+ }
+
+ private void init() {
+ View view = inflate(getContext(), R.layout.item_feature_chip, this);
+ ButterKnife.bind(this, view);
+ }
+
+ public void setLabel(String label) {
+ chip.setText(label);
+ }
+
+ public void setProgress(int progress) {
+
+ }
+}
diff --git a/app/src/main/java/com/aurora/store/ui/view/LinkView.java b/app/src/main/java/com/aurora/store/ui/view/LinkView.java
index 8ef6c6a03..f8121273d 100644
--- a/app/src/main/java/com/aurora/store/ui/view/LinkView.java
+++ b/app/src/main/java/com/aurora/store/ui/view/LinkView.java
@@ -35,7 +35,6 @@ import com.aurora.store.R;
public class LinkView extends RelativeLayout {
- Context context;
CardView link_card;
ImageView card_icon;
TextView card_title;
@@ -48,21 +47,20 @@ public class LinkView extends RelativeLayout {
public LinkView(Context context, String linkURL, String title, String summary, int cardIconID) {
super(context);
- this.context = context;
this.linkURL = linkURL;
this.title = title;
this.summary = summary;
this.cardIconID = cardIconID;
- init(context);
+ init();
}
public LinkView(Context context, AttributeSet attrs) {
super(context, attrs);
- init(context);
+ init();
}
- private void init(Context context) {
- View view = inflate(context, R.layout.item_link, this);
+ private void init() {
+ View view = inflate(getContext(), R.layout.item_link, this);
card_icon = view.findViewById(R.id.link_icon);
card_title = view.findViewById(R.id.link_title);
card_summary = view.findViewById(R.id.link_summary);
@@ -73,7 +71,7 @@ public class LinkView extends RelativeLayout {
view.setOnClickListener(click -> {
final Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(linkURL));
- context.startActivity(browserIntent);
+ getContext().startActivity(browserIntent);
});
}
}
diff --git a/app/src/main/java/com/aurora/store/ui/view/MoreLayout.java b/app/src/main/java/com/aurora/store/ui/view/MoreLayout.java
new file mode 100644
index 000000000..e66fed5f2
--- /dev/null
+++ b/app/src/main/java/com/aurora/store/ui/view/MoreLayout.java
@@ -0,0 +1,48 @@
+package com.aurora.store.ui.view;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.aurora.store.R;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class MoreLayout extends LinearLayout {
+
+ @BindView(R.id.txt_column1)
+ public TextView txtColumn1;
+ @BindView(R.id.txt_column2)
+ public TextView txtColumn2;
+
+ public MoreLayout(Context context) {
+ super(context);
+ init();
+ }
+
+ public MoreLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public MoreLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init();
+ }
+
+ private void init() {
+ View view = inflate(getContext(), R.layout.item_more_two_column, this);
+ ButterKnife.bind(this, view);
+ }
+
+ public void setLabel(String label) {
+ txtColumn1.setText(label);
+ }
+
+ public void setValue(String value) {
+ txtColumn2.setText(value);
+ }
+}
diff --git a/app/src/main/java/com/aurora/store/util/Accountant.java b/app/src/main/java/com/aurora/store/util/Accountant.java
index 8d01cf716..04f452302 100644
--- a/app/src/main/java/com/aurora/store/util/Accountant.java
+++ b/app/src/main/java/com/aurora/store/util/Accountant.java
@@ -29,6 +29,7 @@ public class Accountant {
public static final String EMAIL = "EMAIL";
public static final String PROFILE_NAME = "PROFILE_NAME";
public static final String PROFILE_AVATAR = "PROFILE_AVATAR";
+ public static final String PROFILE_BACKGROUND = "PROFILE_BACKGROUND";
public static final String LOGGED_IN = "LOGGED_IN";
public static final String ANONYMOUS = "ANONYMOUS";
@@ -54,11 +55,16 @@ public class Accountant {
return PrefUtil.getString(context, PROFILE_AVATAR);
}
+ public static String getBackgroundImageURL(Context context) {
+ return PrefUtil.getString(context, PROFILE_BACKGROUND);
+ }
+
public static void completeCheckout(Context context) {
PrefUtil.remove(context, LOGGED_IN);
PrefUtil.remove(context, EMAIL);
PrefUtil.remove(context, PROFILE_NAME);
PrefUtil.remove(context, PROFILE_AVATAR);
+ PrefUtil.remove(context, PROFILE_BACKGROUND);
LoginInfo.removeSavedInstance(context);
}
diff --git a/app/src/main/java/com/aurora/store/util/Log.java b/app/src/main/java/com/aurora/store/util/Log.java
index 694a874c4..43b1a2289 100644
--- a/app/src/main/java/com/aurora/store/util/Log.java
+++ b/app/src/main/java/com/aurora/store/util/Log.java
@@ -20,8 +20,14 @@
package com.aurora.store.util;
+import android.content.Context;
+
import com.aurora.store.Constants;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
public class Log {
public static void e(String message, Object... args) {
@@ -55,4 +61,14 @@ public class Log {
public static void w(String message) {
android.util.Log.w(Constants.TAG, message);
}
+
+ public static void writeToFile(Context context, Object object) {
+ try {
+ FileWriter out = new FileWriter(new File(context.getFilesDir(), "AuroraLogs.txt"));
+ out.write(object.toString());
+ out.close();
+ } catch (IOException e) {
+ Log.e(e.getMessage());
+ }
+ }
}
diff --git a/app/src/main/java/com/aurora/store/util/Util.java b/app/src/main/java/com/aurora/store/util/Util.java
index fba1fd9eb..ce239eca1 100644
--- a/app/src/main/java/com/aurora/store/util/Util.java
+++ b/app/src/main/java/com/aurora/store/util/Util.java
@@ -538,12 +538,16 @@ public class Util {
public static Map parseCookieString(String cookies) {
Map cookieList = new HashMap<>();
- Pattern cookiePattern = Pattern.compile("([^=]+)=([^;]*);?\\s?");
- Matcher matcher = cookiePattern.matcher(cookies);
- while (matcher.find()) {
- String cookieKey = matcher.group(1);
- String cookieValue = matcher.group(2);
- cookieList.put(cookieKey, cookieValue);
+ try {
+ Pattern cookiePattern = Pattern.compile("([^=]+)=([^;]*);?\\s?");
+ Matcher matcher = cookiePattern.matcher(cookies);
+ while (matcher.find()) {
+ String cookieKey = matcher.group(1);
+ String cookieValue = matcher.group(2);
+ cookieList.put(cookieKey, cookieValue);
+ }
+ } catch (Exception e) {
+ Log.d(e.getMessage());
}
return cookieList;
}
diff --git a/app/src/main/res/anim/anim_falldown.xml b/app/src/main/res/anim/anim_falldown.xml
deleted file mode 100644
index 781032aff..000000000
--- a/app/src/main/res/anim/anim_falldown.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/anim/anim_slideright.xml b/app/src/main/res/anim/anim_slideright.xml
deleted file mode 100644
index 3cf5571e4..000000000
--- a/app/src/main/res/anim/anim_slideright.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/anim/item_falldown.xml b/app/src/main/res/anim/item_falldown.xml
deleted file mode 100644
index 58af49353..000000000
--- a/app/src/main/res/anim/item_falldown.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/anim/item_slideright.xml b/app/src/main/res/anim/item_slideright.xml
deleted file mode 100644
index 5613f0382..000000000
--- a/app/src/main/res/anim/item_slideright.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/feature_chip_bg.xml b/app/src/main/res/drawable/feature_chip_bg.xml
new file mode 100644
index 000000000..be7a2d56e
--- /dev/null
+++ b/app/src/main/res/drawable/feature_chip_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/feature_chip_level.xml b/app/src/main/res/drawable/feature_chip_level.xml
new file mode 100644
index 000000000..b7db7ede5
--- /dev/null
+++ b/app/src/main/res/drawable/feature_chip_level.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/app/src/main/res/drawable/ic_about.xml b/app/src/main/res/drawable/ic_about.xml
deleted file mode 100644
index 5b919114f..000000000
--- a/app/src/main/res/drawable/ic_about.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_action.xml b/app/src/main/res/drawable/ic_action.xml
deleted file mode 100644
index 702150964..000000000
--- a/app/src/main/res/drawable/ic_action.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_all.xml b/app/src/main/res/drawable/ic_all.xml
deleted file mode 100644
index 6b9a989e8..000000000
--- a/app/src/main/res/drawable/ic_all.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_bulletin.xml b/app/src/main/res/drawable/ic_bulletin.xml
deleted file mode 100644
index 7004b6171..000000000
--- a/app/src/main/res/drawable/ic_bulletin.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_communication.xml b/app/src/main/res/drawable/ic_cat_communication.xml
deleted file mode 100644
index 44c70898a..000000000
--- a/app/src/main/res/drawable/ic_cat_communication.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_family.xml b/app/src/main/res/drawable/ic_cat_family.xml
deleted file mode 100644
index dcc835ecb..000000000
--- a/app/src/main/res/drawable/ic_cat_family.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_games.xml b/app/src/main/res/drawable/ic_cat_games.xml
deleted file mode 100644
index 9605b59b9..000000000
--- a/app/src/main/res/drawable/ic_cat_games.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_music.xml b/app/src/main/res/drawable/ic_cat_music.xml
deleted file mode 100644
index 1f9315610..000000000
--- a/app/src/main/res/drawable/ic_cat_music.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_personalization.xml b/app/src/main/res/drawable/ic_cat_personalization.xml
deleted file mode 100644
index f79e0bf80..000000000
--- a/app/src/main/res/drawable/ic_cat_personalization.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_photography.xml b/app/src/main/res/drawable/ic_cat_photography.xml
deleted file mode 100644
index f710dbb06..000000000
--- a/app/src/main/res/drawable/ic_cat_photography.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_shopping.xml b/app/src/main/res/drawable/ic_cat_shopping.xml
deleted file mode 100644
index f67010860..000000000
--- a/app/src/main/res/drawable/ic_cat_shopping.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_social.xml b/app/src/main/res/drawable/ic_cat_social.xml
deleted file mode 100644
index 44c70898a..000000000
--- a/app/src/main/res/drawable/ic_cat_social.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_social_alt.xml b/app/src/main/res/drawable/ic_cat_social_alt.xml
deleted file mode 100644
index 5eec74495..000000000
--- a/app/src/main/res/drawable/ic_cat_social_alt.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml
deleted file mode 100644
index 532552cc2..000000000
--- a/app/src/main/res/drawable/ic_delete.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_download_alt.xml b/app/src/main/res/drawable/ic_download_alt.xml
deleted file mode 100644
index 249144de3..000000000
--- a/app/src/main/res/drawable/ic_download_alt.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_empty_box.xml b/app/src/main/res/drawable/ic_empty_box.xml
deleted file mode 100644
index ba72da211..000000000
--- a/app/src/main/res/drawable/ic_empty_box.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_filter.xml b/app/src/main/res/drawable/ic_filter.xml
index be37f6188..b187a3f1b 100644
--- a/app/src/main/res/drawable/ic_filter.xml
+++ b/app/src/main/res/drawable/ic_filter.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/drawable/ic_installation.xml b/app/src/main/res/drawable/ic_installation.xml
index 79eedd140..451f010d0 100644
--- a/app/src/main/res/drawable/ic_installation.xml
+++ b/app/src/main/res/drawable/ic_installation.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/drawable/ic_language.xml b/app/src/main/res/drawable/ic_language.xml
index bc824bfe3..132447dfd 100644
--- a/app/src/main/res/drawable/ic_language.xml
+++ b/app/src/main/res/drawable/ic_language.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/drawable/ic_login.xml b/app/src/main/res/drawable/ic_login.xml
deleted file mode 100644
index 47078b5df..000000000
--- a/app/src/main/res/drawable/ic_login.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_mail.xml b/app/src/main/res/drawable/ic_mail.xml
new file mode 100644
index 000000000..19f15b550
--- /dev/null
+++ b/app/src/main/res/drawable/ic_mail.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_map.xml b/app/src/main/res/drawable/ic_map.xml
new file mode 100644
index 000000000..95e993415
--- /dev/null
+++ b/app/src/main/res/drawable/ic_map.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_network.xml b/app/src/main/res/drawable/ic_network.xml
index fb5a18730..261d1e769 100644
--- a/app/src/main/res/drawable/ic_network.xml
+++ b/app/src/main/res/drawable/ic_network.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/drawable/ic_no_network.xml b/app/src/main/res/drawable/ic_no_network.xml
deleted file mode 100644
index 65fbf377e..000000000
--- a/app/src/main/res/drawable/ic_no_network.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_no_updates.xml b/app/src/main/res/drawable/ic_no_updates.xml
deleted file mode 100644
index 1d65d0704..000000000
--- a/app/src/main/res/drawable/ic_no_updates.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_notifications.xml b/app/src/main/res/drawable/ic_notifications.xml
index fb436ff3c..6cec7c206 100644
--- a/app/src/main/res/drawable/ic_notifications.xml
+++ b/app/src/main/res/drawable/ic_notifications.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/drawable/ic_playstore.xml b/app/src/main/res/drawable/ic_playstore.xml
deleted file mode 100644
index 3440b6e92..000000000
--- a/app/src/main/res/drawable/ic_playstore.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_read_more.xml b/app/src/main/res/drawable/ic_read_more.xml
deleted file mode 100644
index 095bd5e93..000000000
--- a/app/src/main/res/drawable/ic_read_more.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_search_alt.xml b/app/src/main/res/drawable/ic_search_alt.xml
deleted file mode 100644
index 9b80c53eb..000000000
--- a/app/src/main/res/drawable/ic_search_alt.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_share.xml b/app/src/main/res/drawable/ic_share.xml
deleted file mode 100644
index 3ab1fb04e..000000000
--- a/app/src/main/res/drawable/ic_share.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_shield.xml b/app/src/main/res/drawable/ic_shield.xml
new file mode 100644
index 000000000..28c2294fa
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shield.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_ui.xml b/app/src/main/res/drawable/ic_ui.xml
index df512373c..db3006a20 100644
--- a/app/src/main/res/drawable/ic_ui.xml
+++ b/app/src/main/res/drawable/ic_ui.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/drawable/ic_unknown.xml b/app/src/main/res/drawable/ic_unknown.xml
deleted file mode 100644
index d385d1f2c..000000000
--- a/app/src/main/res/drawable/ic_unknown.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_update.xml b/app/src/main/res/drawable/ic_update.xml
index 0f9a8bfba..00fd74049 100644
--- a/app/src/main/res/drawable/ic_update.xml
+++ b/app/src/main/res/drawable/ic_update.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/drawable/rounded_bg.xml b/app/src/main/res/drawable/rounded_bg.xml
deleted file mode 100644
index 3e6f762d1..000000000
--- a/app/src/main/res/drawable/rounded_bg.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/search_bg.xml b/app/src/main/res/drawable/search_bg.xml
deleted file mode 100644
index 5228038d5..000000000
--- a/app/src/main/res/drawable/search_bg.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_details.xml b/app/src/main/res/layout/activity_details.xml
index 5e08571eb..83c35aedb 100644
--- a/app/src/main/res/layout/activity_details.xml
+++ b/app/src/main/res/layout/activity_details.xml
@@ -74,8 +74,21 @@
app:autoSizeTextType="uniform"
tools:visibility="visible" />
-
-
+
+
+
+
@@ -85,6 +98,7 @@
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/margin_small"
android:orientation="horizontal"
android:visibility="invisible"
tools:itemCount="5"
@@ -128,26 +142,25 @@
-
-
-
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index f5ee0b003..ed56b5cd1 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -58,6 +58,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
+ android:background="?android:attr/windowBackground"
app:headerLayout="@layout/item_nav_header"
app:itemIconTint="?android:attr/colorAccent"
app:itemTextAppearance="@style/TextAppearance.Aurora.Line2"
diff --git a/app/src/main/res/layout/activity_read_more.xml b/app/src/main/res/layout/activity_read_more.xml
new file mode 100644
index 000000000..83d89f1af
--- /dev/null
+++ b/app/src/main/res/layout/activity_read_more.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_dev_applist.xml b/app/src/main/res/layout/fragment_dev_applist.xml
deleted file mode 100644
index bd89a4ac0..000000000
--- a/app/src/main/res/layout/fragment_dev_applist.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/include_details_actions_button.xml b/app/src/main/res/layout/include_details_actions_button.xml
index 54d18d97e..6454288af 100644
--- a/app/src/main/res/layout/include_details_actions_button.xml
+++ b/app/src/main/res/layout/include_details_actions_button.xml
@@ -46,7 +46,7 @@
diff --git a/app/src/main/res/layout/include_details_dev_info.xml b/app/src/main/res/layout/include_details_dev_info.xml
new file mode 100644
index 000000000..fbef2aff9
--- /dev/null
+++ b/app/src/main/res/layout/include_details_dev_info.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/include_details_exodus.xml b/app/src/main/res/layout/include_details_exodus.xml
index 813e6151a..1218f5b8f 100644
--- a/app/src/main/res/layout/include_details_exodus.xml
+++ b/app/src/main/res/layout/include_details_exodus.xml
@@ -31,10 +31,11 @@
+ android:src="@drawable/ic_shield"
+ android:tint="?android:attr/colorAccent" />
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_exodus.xml b/app/src/main/res/layout/item_exodus.xml
index a581e75d4..47487c141 100644
--- a/app/src/main/res/layout/item_exodus.xml
+++ b/app/src/main/res/layout/item_exodus.xml
@@ -1,5 +1,4 @@
-
-
+ android:layout_height="@dimen/height_nav_header"
+ android:background="@color/colorScrim">
+
+
+ android:layout_above="@id/line1"
+ android:layout_marginBottom="@dimen/margin_small"
+ android:layout_marginStart="@dimen/margin_normal" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_sheet_menu.xml b/app/src/main/res/layout/item_sheet_menu.xml
deleted file mode 100644
index 392c2738c..000000000
--- a/app/src/main/res/layout/item_sheet_menu.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_sheet_menu_iconed.xml b/app/src/main/res/layout/item_sheet_menu_iconed.xml
deleted file mode 100644
index daea72679..000000000
--- a/app/src/main/res/layout/item_sheet_menu_iconed.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_cluster_apps.xml b/app/src/main/res/layout/view_cluster_apps.xml
deleted file mode 100644
index d52b076fb..000000000
--- a/app/src/main/res/layout/view_cluster_apps.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_error.xml b/app/src/main/res/layout/view_error.xml
deleted file mode 100644
index 8c9a62bf6..000000000
--- a/app/src/main/res/layout/view_error.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_featured_apps.xml b/app/src/main/res/layout/view_featured_apps.xml
deleted file mode 100644
index e54f66a4b..000000000
--- a/app/src/main/res/layout/view_featured_apps.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_accounts.xml b/app/src/main/res/menu/menu_accounts.xml
deleted file mode 100644
index fcf6b4924..000000000
--- a/app/src/main/res/menu/menu_accounts.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/menu/menu_download_single.xml b/app/src/main/res/menu/menu_download_single.xml
deleted file mode 100644
index 7c9e70084..000000000
--- a/app/src/main/res/menu/menu_download_single.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/navigation/nav_graph_main.xml b/app/src/main/res/navigation/nav_graph_main.xml
index e6e4c5c40..d69c8ceec 100644
--- a/app/src/main/res/navigation/nav_graph_main.xml
+++ b/app/src/main/res/navigation/nav_graph_main.xml
@@ -22,4 +22,10 @@
android:name="com.aurora.store.ui.main.fragment.category.CategoriesFragment"
android:label="@string/title_categories"
tools:layout="@layout/fragment_categories" />
+
+
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 458eb581c..f038db14e 100755
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -44,5 +44,6 @@
52dp
52dp
+ 148dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dcecd5cae..d12205cee 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -87,11 +87,17 @@
"Read all reviews"
"Contains ads"
"Download"
+ "Developer contact"
+ "Email"
+ "Address"
+ "Website"
"Add to favourites"
"Remove from favourites"
"Install"
"Installing"
"Read more"
+ "Updated on"
+ "Version"
"No ads"
"App permissions"
"Purchase"
diff --git a/app/src/main/res/values/styles_text.xml b/app/src/main/res/values/styles_text.xml
index 1d4924d8d..3648bd425 100644
--- a/app/src/main/res/values/styles_text.xml
+++ b/app/src/main/res/values/styles_text.xml
@@ -68,7 +68,7 @@
diff --git a/app/src/main/res/xml/searchable.xml b/app/src/main/res/xml/searchable.xml
deleted file mode 100644
index 5ae74ae09..000000000
--- a/app/src/main/res/xml/searchable.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
\ No newline at end of file