Merge pull request #13446 from brave/fix-news-p3a-count-android

Fixed News P3A card counts on Android
This commit is contained in:
Darnell Andries
2022-05-25 10:02:13 -07:00
committed by GitHub
@@ -227,7 +227,8 @@ public class BraveNewTabPageLayout extends NewTabPageLayout implements Connectio
private boolean mIsNewsOn;
private boolean mIsShowOptin;
private boolean mIsShowNewsOn;
private int mmViewedNewsCardsCount;
private int mPrevVisibleNewsCardPosition = -1;
private int mNewsSessionCardViews;
private boolean mIsFeedLoaded;
private CopyOnWriteArrayList<FeedItemsCard> mExistingNewsFeedObject;
@@ -860,15 +861,11 @@ public class BraveNewTabPageLayout extends NewTabPageLayout implements Connectio
? SharedPreferencesManager.getInstance().readInt(
BRAVE_RECYCLERVIEW_POSITION + tab.getId(), 0)
: 0;
mmViewedNewsCardsCount = (tab != null) ? SharedPreferencesManager.getInstance().readInt(
"mViewedNewsCardsCount_" + tab.getId())
: 0;
if (prevScrollPosition == 0 && prevRecyclerViewPosition == 0
&& prevRecyclerViewItemPosition == 0) {
isFeedLoaded = false;
existingNewsFeedObject = null;
mmViewedNewsCardsCount = 0;
}
if (!isFeedLoaded || isFromNewTab) {
@@ -1137,8 +1134,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout implements Connectio
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
int firstCompletelyVisibleItemPosition =
linearLayoutManager.findFirstCompletelyVisibleItemPosition();
if (newState == RecyclerView.SCROLL_STATE_DRAGGING) {
mEndCardViewTime = System.currentTimeMillis();
long timeDiff = mEndCardViewTime - mStartCardViewTime;
@@ -1152,22 +1148,29 @@ public class BraveNewTabPageLayout extends NewTabPageLayout implements Connectio
mBraveNewsController.onPromotedItemView(
mUuid, mCreativeInstanceId);
}
} else {
mmViewedNewsCardsCount++;
SharedPreferencesManager.getInstance().writeInt(
"mViewedNewsCardsCount_"
+ BraveActivity.getBraveActivity()
.getActivityTab()
.getId(),
mmViewedNewsCardsCount);
if (mmViewedNewsCardsCount > 0) {
mBraveNewsController.onSessionCardViewsCountChanged(
(short) mmViewedNewsCardsCount);
}
}
}
}
int lastVisibleItemPosition =
linearLayoutManager.findLastCompletelyVisibleItemPosition();
if (lastVisibleItemPosition > -1
&& lastVisibleItemPosition > mPrevVisibleNewsCardPosition) {
for (int i = mPrevVisibleNewsCardPosition + 1;
i <= lastVisibleItemPosition; i++) {
FeedItemsCard itemsCard = mNewsItemsFeedCard.get(i);
if (itemsCard != null) {
List<FeedItemCard> feedItems = itemsCard.getFeedItems();
// Two items are shown as two cards side by side,
// and three or more items is shown as one card as a list
mNewsSessionCardViews +=
feedItems != null && feedItems.size() == 2 ? 2 : 1;
}
}
mBraveNewsController.onSessionCardViewsCountChanged(
(short) mNewsSessionCardViews);
mPrevVisibleNewsCardPosition = lastVisibleItemPosition;
}
}
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
@@ -1607,7 +1610,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout implements Connectio
mNTPBackgroundImagesBridge.getTopSites();
}
}
}
}
};
private FetchWallpaperWorkerTask.WallpaperRetrievedCallback