mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-26 08:37:29 +00:00
Merge remote-tracking branch 'upstream/master' into raniapl/development
This commit is contained in:
commit
3ca326d520
@ -79,6 +79,25 @@
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "stamatiap",
|
||||
"name": "Stamatia Papageorgiou",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/57223967?v=4",
|
||||
"profile": "https://github.com/stamatiap",
|
||||
"contributions": [
|
||||
"code",
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "The-EDev",
|
||||
"name": "Farook Al-Sammarraie",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/60552923?v=4",
|
||||
"profile": "https://github.com/The-EDev",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Zopieux",
|
||||
"name": "Alexandre Macabies",
|
||||
|
5
.github/workflows/github_nightly_release.yml
vendored
5
.github/workflows/github_nightly_release.yml
vendored
@ -15,9 +15,10 @@ jobs:
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: set up JDK 1.8
|
||||
uses: actions/setup-java@v1
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
java-version: 1.8
|
||||
distribution: 'zulu'
|
||||
java-version: '8'
|
||||
|
||||
- name: Grant execute permission for gradlew
|
||||
run: chmod +x gradlew
|
||||
|
5
.github/workflows/github_pre_release.yml
vendored
5
.github/workflows/github_pre_release.yml
vendored
@ -16,9 +16,10 @@ jobs:
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: set up JDK 1.8
|
||||
uses: actions/setup-java@v1
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
java-version: 1.8
|
||||
distribution: 'zulu'
|
||||
java-version: '8'
|
||||
|
||||
- name: Grant execute permission for gradlew
|
||||
run: chmod +x gradlew
|
||||
|
28
README.md
28
README.md
@ -9,7 +9,7 @@
|
||||
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)
|
||||
[![GPLv3 license](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE)
|
||||
[![GitHub stars](https://img.shields.io/github/stars/austinhuang0131/instagrabber.svg?style=social&label=Star)](https://GitHub.com/austinhuang0131/barinsta/stargazers/)<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||
[![All Contributors](https://img.shields.io/badge/all_contributors-42-orange.svg)](#contributors)
|
||||
[![All Contributors](https://img.shields.io/badge/all_contributors-44-orange.svg)](#contributors)
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
|
||||
Instagram client; previously known as InstaGrabber.
|
||||
@ -63,49 +63,53 @@ Prominent contributors are listed here in the [all-contributors](https://allcont
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/MeLlamoPablo"><img src="https://avatars.githubusercontent.com/u/11708035?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pablo Rodríguez</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=MeLlamoPablo" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/stamatiap"><img src="https://avatars.githubusercontent.com/u/57223967?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stamatia Papageorgiou</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=stamatiap" title="Code">💻</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/The-EDev"><img src="https://avatars.githubusercontent.com/u/60552923?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Farook Al-Sammarraie</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=The-EDev" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/Zopieux"><img src="https://avatars.githubusercontent.com/u/81353?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexandre Macabies</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=Zopieux" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://snajdovski.github.io"><img src="https://avatars2.githubusercontent.com/u/42580385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stefan Najdovski</b></sub></a><br /><a href="#design-snajdovski" title="Design">🎨</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/CrazyMarvin"><img src="https://avatars3.githubusercontent.com/u/15004217?v=4?s=100" width="100px;" alt=""/><br /><sub><b>CrazyMarvin</b></sub></a><br /><a href="#financial-CrazyMarvin" title="Financial">💵</a></td>
|
||||
<td align="center"><a href="http://kevinthomas.dev"><img src="https://avatars2.githubusercontent.com/u/15370181?s=100" width="100px;" alt=""/><br /><sub><b>Kevin Thomas</b></sub></a><br /><a href="#financial-KevinNThomas" title="Financial">💵</a></td>
|
||||
<td align="center"><a href="https://github.com/Shadowspear123"><img src="https://avatars1.githubusercontent.com/u/50462281?s=100" width="100px;" alt=""/><br /><sub><b>Shadowspear123</b></sub></a><br /><a href="#blog-Shadowspear123" title="Blogposts">📝</a> <a href="https://github.com/austinhuang0131/barinsta/issues?q=author%3AShadowspear123" title="Bug reports">🐛</a> <a href="#ideas-Shadowspear123" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-Shadowspear123" title="Answering Questions">💬</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="http://kevinthomas.dev"><img src="https://avatars2.githubusercontent.com/u/15370181?s=100" width="100px;" alt=""/><br /><sub><b>Kevin Thomas</b></sub></a><br /><a href="#financial-KevinNThomas" title="Financial">💵</a></td>
|
||||
<td align="center"><a href="https://github.com/Shadowspear123"><img src="https://avatars1.githubusercontent.com/u/50462281?s=100" width="100px;" alt=""/><br /><sub><b>Shadowspear123</b></sub></a><br /><a href="#blog-Shadowspear123" title="Blogposts">📝</a> <a href="https://github.com/austinhuang0131/barinsta/issues?q=author%3AShadowspear123" title="Bug reports">🐛</a> <a href="#ideas-Shadowspear123" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-Shadowspear123" title="Answering Questions">💬</a></td>
|
||||
<td align="center"><a href="https://github.com/RickyM7"><img src="https://avatars3.githubusercontent.com/u/24703825?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ricardo</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/issues?q=author%3ARickyM7" title="Bug reports">🐛</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Akrai"><img src="https://avatars1.githubusercontent.com/u/5624597?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Akrai</b></sub></a><br /><a href="#ideas-Akrai" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/avtkal"><img src="https://avatars.githubusercontent.com/u/63205014?v=4?s=100" width="100px;" alt=""/><br /><sub><b>avtkal</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/cizordj"><img src="https://avatars2.githubusercontent.com/u/32869222?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cézar Augusto</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/dimitrist19"><img src="https://avatars.githubusercontent.com/u/56406468?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dimitris T</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/farzadx"><img src="https://avatars2.githubusercontent.com/u/70059397?v=4?s=100" width="100px;" alt=""/><br /><sub><b>farzadx</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/dimitrist19"><img src="https://avatars.githubusercontent.com/u/56406468?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dimitris T</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/farzadx"><img src="https://avatars2.githubusercontent.com/u/70059397?v=4?s=100" width="100px;" alt=""/><br /><sub><b>farzadx</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/faydin"><img src="https://avatars2.githubusercontent.com/u/22706676?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fatih Aydın</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/fouze555"><img src="https://avatars3.githubusercontent.com/u/71935341?v=4?s=100" width="100px;" alt=""/><br /><sub><b>fouze555</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Galang23"><img src="https://avatars3.githubusercontent.com/u/13700948?s=100" width="100px;" alt=""/><br /><sub><b>Galang23</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/initdebugs"><img src="https://avatars0.githubusercontent.com/u/75781464?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Initdebugs</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://janek.xyz/"><img src="https://avatars3.githubusercontent.com/u/8365659?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jakub Janek</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/GenosseFlosse"><img src="https://avatars.githubusercontent.com/u/59205524?v=4?s=100" width="100px;" alt=""/><br /><sub><b>GenosseFlosse</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://janek.xyz/"><img src="https://avatars3.githubusercontent.com/u/8365659?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jakub Janek</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/GenosseFlosse"><img src="https://avatars.githubusercontent.com/u/59205524?v=4?s=100" width="100px;" alt=""/><br /><sub><b>GenosseFlosse</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://becauseofprog.fr/"><img src="https://avatars3.githubusercontent.com/u/24623168?s=100" width="100px;" alt=""/><br /><sub><b>kernoeb</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/MoaufmKlo"><img src="https://avatars1.githubusercontent.com/u/45636897?s=100" width="100px;" alt=""/><br /><sub><b>MoaufmKlo</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/nalinalini"><img src="https://avatars0.githubusercontent.com/u/65640431?v=4?s=100" width="100px;" alt=""/><br /><sub><b>nalinalini</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/peterge1998"><img src="https://avatars2.githubusercontent.com/u/47355238?s=100" width="100px;" alt=""/><br /><sub><b>peterge1998</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/PierreM0"><img src="https://avatars3.githubusercontent.com/u/71077853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PierreM0</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Pyrobauve"><img src="https://avatars.githubusercontent.com/u/48654473?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pyrobauve</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/PierreM0"><img src="https://avatars3.githubusercontent.com/u/71077853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PierreM0</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Pyrobauve"><img src="https://avatars.githubusercontent.com/u/48654473?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pyrobauve</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/RAMAR-RAR"><img src="https://avatars3.githubusercontent.com/u/47423745?s=100" width="100px;" alt=""/><br /><sub><b>RAMAR-RAR</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/rohang02"><img src="https://avatars3.githubusercontent.com/u/47921164?v=4?s=100" width="100px;" alt=""/><br /><sub><b>rohang02</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/retiolus"><img src="https://avatars1.githubusercontent.com/u/65604466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>retiolus</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/rikishi0071"><img src="https://avatars3.githubusercontent.com/u/18183855?v=4?s=100" width="100px;" alt=""/><br /><sub><b>rikishi0071</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://gitlab.com/sandboiii"><img src="https://avatars.githubusercontent.com/u/17468894?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexey Peschany</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Sitavi"><img src="https://avatars.githubusercontent.com/u/80586127?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sitavi</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://gitlab.com/sandboiii"><img src="https://avatars.githubusercontent.com/u/17468894?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexey Peschany</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Sitavi"><img src="https://avatars.githubusercontent.com/u/80586127?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sitavi</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://stillu.cc/"><img src="https://avatars2.githubusercontent.com/u/5843208?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Still Hsu</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/Lego8486"><img src="https://avatars1.githubusercontent.com/u/47414485?s=100" width="100px;" alt=""/><br /><sub><b>Ten_Lego</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/wagnim"><img src="https://avatars0.githubusercontent.com/u/30241419?s=100" width="100px;" alt=""/><br /><sub><b>wagnim</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/wokija"><img src="https://avatars.githubusercontent.com/u/14982166?v=4?s=100" width="100px;" alt=""/><br /><sub><b>wokija</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/ysakamoto"><img src="https://avatars3.githubusercontent.com/u/1331642?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ysakamoto</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
<td align="center"><a href="https://github.com/ZDVokoun"><img src="https://avatars.githubusercontent.com/u/76393152?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ZDVokoun</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
@ -121,7 +125,7 @@ This app's predecessor, InstaGrabber, was originally made by [@AwaisKing](https:
|
||||
|
||||
Barinsta
|
||||
Copyright (C) 2020-2021 Austin Huang <im@austinhuang.me>
|
||||
Ammar Githam <ammargitham786@gmail.com>
|
||||
Ammar Githam <ammar.githam@outlook.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -23,23 +23,29 @@ public final class FeedStoriesListAdapter extends ListAdapter<FeedStoryModel, St
|
||||
private List<FeedStoryModel> list;
|
||||
|
||||
private final Filter filter = new Filter() {
|
||||
@Nullable
|
||||
@NonNull
|
||||
@Override
|
||||
protected FilterResults performFiltering(final CharSequence filter) {
|
||||
final boolean isFilterEmpty = TextUtils.isEmpty(filter);
|
||||
final String query = isFilterEmpty ? null : filter.toString().toLowerCase();
|
||||
|
||||
for (FeedStoryModel item : list) {
|
||||
if (isFilterEmpty) item.setShown(true);
|
||||
else item.setShown(item.getProfileModel().getUsername().toLowerCase().contains(query));
|
||||
final String query = TextUtils.isEmpty(filter) ? null : filter.toString().toLowerCase();
|
||||
List<FeedStoryModel> filteredList = list;
|
||||
if (list != null && query != null) {
|
||||
filteredList = list.stream()
|
||||
.filter(feedStoryModel -> feedStoryModel.getProfileModel()
|
||||
.getUsername()
|
||||
.toLowerCase()
|
||||
.contains(query))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
return null;
|
||||
final FilterResults filterResults = new FilterResults();
|
||||
filterResults.count = filteredList != null ? filteredList.size() : 0;
|
||||
filterResults.values = filteredList;
|
||||
return filterResults;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void publishResults(final CharSequence constraint, final FilterResults results) {
|
||||
submitList(list);
|
||||
notifyDataSetChanged();
|
||||
//noinspection unchecked
|
||||
submitList((List<FeedStoryModel>) results.values, true);
|
||||
}
|
||||
};
|
||||
|
||||
@ -65,10 +71,16 @@ public final class FeedStoriesListAdapter extends ListAdapter<FeedStoryModel, St
|
||||
return filter;
|
||||
}
|
||||
|
||||
private void submitList(@Nullable final List<FeedStoryModel> list, final boolean isFiltered) {
|
||||
if (!isFiltered) {
|
||||
this.list = list;
|
||||
}
|
||||
super.submitList(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void submitList(final List<FeedStoryModel> list) {
|
||||
super.submitList(list.stream().filter(i -> i.isShown()).collect(Collectors.toList()));
|
||||
this.list = list;
|
||||
submitList(list, false);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@ -82,11 +94,11 @@ public final class FeedStoriesListAdapter extends ListAdapter<FeedStoryModel, St
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull final StoryListViewHolder holder, final int position) {
|
||||
final FeedStoryModel model = getItem(position);
|
||||
holder.bind(model, position, listener);
|
||||
holder.bind(model, listener);
|
||||
}
|
||||
|
||||
public interface OnFeedStoryClickListener {
|
||||
void onFeedStoryClick(final FeedStoryModel model, final int position);
|
||||
void onFeedStoryClick(final FeedStoryModel model);
|
||||
|
||||
void onProfileClick(final String username);
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ public final class StoryListViewHolder extends RecyclerView.ViewHolder {
|
||||
}
|
||||
|
||||
public void bind(final FeedStoryModel model,
|
||||
final int position,
|
||||
final OnFeedStoryClickListener notificationClickListener) {
|
||||
if (model == null) return;
|
||||
|
||||
@ -53,7 +52,7 @@ public final class StoryListViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
itemView.setOnClickListener(v -> {
|
||||
if (notificationClickListener == null) return;
|
||||
notificationClickListener.onFeedStoryClick(model, position);
|
||||
notificationClickListener.onFeedStoryClick(model);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@ -29,6 +30,7 @@ import androidx.appcompat.widget.PopupMenu;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.core.content.PermissionChecker;
|
||||
import androidx.core.view.WindowCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.LiveData;
|
||||
@ -100,7 +102,6 @@ import static androidx.core.content.PermissionChecker.checkSelfPermission;
|
||||
import static awais.instagrabber.fragments.HashTagFragment.ARG_HASHTAG;
|
||||
import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_SHOWN_COUNT_TOOLTIP;
|
||||
import static awais.instagrabber.utils.DownloadUtils.WRITE_PERMISSION;
|
||||
import static awais.instagrabber.utils.Utils.getAttrValue;
|
||||
import static awais.instagrabber.utils.Utils.settingsHelper;
|
||||
|
||||
public class PostViewV2Fragment extends Fragment implements EditTextDialogFragment.EditTextDialogFragmentCallback {
|
||||
@ -131,6 +132,9 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
||||
private boolean isInFullScreenMode;
|
||||
private StyledPlayerView playerView;
|
||||
private int playerViewOriginalHeight;
|
||||
private Drawable originalRootBackground;
|
||||
private ColorStateList originalLikeColorStateList;
|
||||
private ColorStateList originalSaveColorStateList;
|
||||
|
||||
private final Observer<Object> backStackSavedStateObserver = result -> {
|
||||
if (result == null) return;
|
||||
@ -141,7 +145,6 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
||||
// clear result
|
||||
backStackSavedStateResultLiveData.postValue(null);
|
||||
};
|
||||
private Drawable originalRootBackground;
|
||||
|
||||
public void setOnDeleteListener(final OnDeleteListener onDeleteListener) {
|
||||
if (onDeleteListener == null) return;
|
||||
@ -441,6 +444,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
||||
}
|
||||
|
||||
private void setupLike() {
|
||||
originalLikeColorStateList = bottom.like.getIconTint();
|
||||
final boolean likableMedia = viewModel.hasPk() /*&& viewModel.getMedia().isCommentLikesEnabled()*/;
|
||||
if (!likableMedia) {
|
||||
bottom.like.setVisibility(View.GONE);
|
||||
@ -503,25 +507,25 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
||||
|
||||
private void setLikedResources(final boolean liked) {
|
||||
final int iconResource;
|
||||
final int tintResource;
|
||||
final ColorStateList tintColorStateList;
|
||||
final Context context = getContext();
|
||||
if (context == null) return;
|
||||
final Resources resources = context.getResources();
|
||||
if (resources == null) return;
|
||||
if (liked) {
|
||||
iconResource = R.drawable.ic_like;
|
||||
tintResource = resources.getColor(R.color.red_600);
|
||||
// textResId = R.string.unlike_without_count;
|
||||
tintColorStateList = ColorStateList.valueOf(resources.getColor(R.color.red_600));
|
||||
} else {
|
||||
iconResource = R.drawable.ic_not_liked;
|
||||
tintResource = getAttrValue(context, R.attr.colorPrimary);
|
||||
// textResId = R.string.like_without_count;
|
||||
tintColorStateList = originalLikeColorStateList != null ? originalLikeColorStateList
|
||||
: ColorStateList.valueOf(resources.getColor(R.color.white));
|
||||
}
|
||||
bottom.like.setIconResource(iconResource);
|
||||
bottom.like.setIconTint(ColorStateList.valueOf(tintResource));
|
||||
bottom.like.setIconTint(tintColorStateList);
|
||||
}
|
||||
|
||||
private void setupSave() {
|
||||
originalSaveColorStateList = bottom.save.getIconTint();
|
||||
if (!viewModel.isLoggedIn() || !viewModel.hasPk() || !viewModel.getMedia().canViewerSave()) {
|
||||
bottom.save.setVisibility(View.GONE);
|
||||
return;
|
||||
@ -574,22 +578,21 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
||||
|
||||
private void setSavedResources(final boolean saved) {
|
||||
final int iconResource;
|
||||
final int tintResource;
|
||||
final ColorStateList tintColorStateList;
|
||||
final Context context = getContext();
|
||||
if (context == null) return;
|
||||
final Resources resources = context.getResources();
|
||||
if (resources == null) return;
|
||||
if (saved) {
|
||||
iconResource = R.drawable.ic_bookmark;
|
||||
tintResource = resources.getColor(R.color.blue_700);
|
||||
// textResId = R.string.saved;
|
||||
tintColorStateList = ColorStateList.valueOf(resources.getColor(R.color.blue_700));
|
||||
} else {
|
||||
iconResource = R.drawable.ic_round_bookmark_border_24;
|
||||
tintResource = getAttrValue(context, R.attr.colorPrimary);
|
||||
// textResId = R.string.save;
|
||||
tintColorStateList = originalSaveColorStateList != null ? originalSaveColorStateList
|
||||
: ColorStateList.valueOf(resources.getColor(R.color.white));
|
||||
}
|
||||
bottom.save.setIconResource(iconResource);
|
||||
bottom.save.setIconTint(ColorStateList.valueOf(tintResource));
|
||||
bottom.save.setIconTint(tintColorStateList);
|
||||
}
|
||||
|
||||
private void setupProfilePic(final User user) {
|
||||
@ -1427,8 +1430,10 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
||||
if (toolbar != null) {
|
||||
toolbar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
final View decorView = activity.getWindow().getDecorView();
|
||||
final Window window = activity.getWindow();
|
||||
final View decorView = window.getDecorView();
|
||||
decorView.setSystemUiVisibility(originalSystemUi);
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false);
|
||||
isInFullScreenMode = false;
|
||||
}
|
||||
|
||||
|
@ -23,9 +23,12 @@ import androidx.navigation.fragment.NavHostFragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import awais.instagrabber.R;
|
||||
import awais.instagrabber.adapters.FeedStoriesListAdapter;
|
||||
@ -58,15 +61,17 @@ public final class StoryListViewerFragment extends Fragment implements SwipeRefr
|
||||
private StoriesService storiesService;
|
||||
private Context context;
|
||||
private String type;
|
||||
private String currentQuery;
|
||||
private String endCursor = null;
|
||||
private FeedStoriesListAdapter adapter;
|
||||
private MenuItem menuSearch;
|
||||
|
||||
private final OnFeedStoryClickListener clickListener = new OnFeedStoryClickListener() {
|
||||
@Override
|
||||
public void onFeedStoryClick(final FeedStoryModel model, final int position) {
|
||||
public void onFeedStoryClick(final FeedStoryModel model) {
|
||||
if (model == null) return;
|
||||
final List<FeedStoryModel> feedStoryModels = feedStoriesViewModel.getList().getValue();
|
||||
if (feedStoryModels == null) return;
|
||||
final int position = Iterables.indexOf(feedStoryModels, feedStoryModel -> feedStoryModel != null
|
||||
&& Objects.equals(feedStoryModel.getStoryMediaId(), model.getStoryMediaId()));
|
||||
final NavDirections action = StoryListViewerFragmentDirections
|
||||
.actionStoryListFragmentToStoryViewerFragment(StoryViewerOptions.forFeedStoryPosition(position));
|
||||
NavHostFragment.findNavController(StoryListViewerFragment.this).navigate(action);
|
||||
@ -153,7 +158,7 @@ public final class StoryListViewerFragment extends Fragment implements SwipeRefr
|
||||
@Override
|
||||
public void onCreateOptionsMenu(@NonNull final Menu menu, final MenuInflater inflater) {
|
||||
inflater.inflate(R.menu.search, menu);
|
||||
menuSearch = menu.findItem(R.id.action_search);
|
||||
final MenuItem menuSearch = menu.findItem(R.id.action_search);
|
||||
final SearchView searchView = (SearchView) menuSearch.getActionView();
|
||||
searchView.setQueryHint(getResources().getString(R.string.action_search));
|
||||
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||
@ -166,7 +171,6 @@ public final class StoryListViewerFragment extends Fragment implements SwipeRefr
|
||||
@Override
|
||||
public boolean onQueryTextChange(final String query) {
|
||||
if (adapter != null) {
|
||||
currentQuery = query;
|
||||
adapter.getFilter().filter(query);
|
||||
}
|
||||
return true;
|
||||
|
@ -119,6 +119,7 @@ public class StoryViewerFragment extends Fragment {
|
||||
private View root;
|
||||
private FragmentStoryViewerBinding binding;
|
||||
private String currentStoryUsername;
|
||||
private String highlightTitle;
|
||||
private StoriesAdapter storiesAdapter;
|
||||
private SwipeEvent swipeEvent;
|
||||
private GestureDetectorCompat gestureDetector;
|
||||
@ -274,7 +275,9 @@ public class StoryViewerFragment extends Fragment {
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
releasePlayer();
|
||||
if (player != null) {
|
||||
player.pause();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -724,7 +727,7 @@ public class StoryViewerFragment extends Fragment {
|
||||
final HighlightModel model = models.get(currentFeedStoryIndex);
|
||||
currentStoryMediaId = model.getId();
|
||||
fetchOptions = StoryViewerOptions.forHighlight(model.getId());
|
||||
currentStoryUsername = model.getTitle();
|
||||
highlightTitle = model.getTitle();
|
||||
break;
|
||||
}
|
||||
case FEED_STORY_POSITION: {
|
||||
@ -824,8 +827,8 @@ public class StoryViewerFragment extends Fragment {
|
||||
if (type == Type.HIGHLIGHT) {
|
||||
final ActionBar actionBar = fragmentActivity.getSupportActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBarTitle = options.getName();
|
||||
actionBar.setTitle(options.getName());
|
||||
actionBarTitle = highlightTitle;
|
||||
actionBar.setTitle(highlightTitle);
|
||||
}
|
||||
} else if (hasUsername) {
|
||||
currentStoryUsername = currentStoryUsername.replace("@", "");
|
||||
|
@ -16,6 +16,7 @@ import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.view.menu.ActionMenuItemView;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.Observer;
|
||||
@ -27,6 +28,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import com.google.android.material.badge.BadgeDrawable;
|
||||
import com.google.android.material.badge.BadgeUtils;
|
||||
import com.google.android.material.internal.ToolbarUtils;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import java.util.List;
|
||||
@ -102,7 +104,9 @@ public class DirectMessageInboxFragment extends Fragment implements SwipeRefresh
|
||||
super.onPause();
|
||||
unregisterReceiver();
|
||||
isPendingRequestTotalBadgeAttached = false;
|
||||
if (pendingRequestTotalBadgeDrawable != null) {
|
||||
@SuppressLint("RestrictedApi") final ActionMenuItemView menuItemView = ToolbarUtils
|
||||
.getActionMenuItemView(fragmentActivity.getToolbar(), pendingRequestsMenuItem.getItemId());
|
||||
if (pendingRequestTotalBadgeDrawable != null && menuItemView != null) {
|
||||
BadgeUtils.detachBadgeDrawable(pendingRequestTotalBadgeDrawable, fragmentActivity.getToolbar(), pendingRequestsMenuItem.getItemId());
|
||||
pendingRequestTotalBadgeDrawable = null;
|
||||
}
|
||||
@ -217,7 +221,11 @@ public class DirectMessageInboxFragment extends Fragment implements SwipeRefresh
|
||||
pendingRequestTotalBadgeDrawable = BadgeDrawable.create(context);
|
||||
}
|
||||
if (count == null || count == 0) {
|
||||
@SuppressLint("RestrictedApi") final ActionMenuItemView menuItemView = ToolbarUtils
|
||||
.getActionMenuItemView(fragmentActivity.getToolbar(), pendingRequestsMenuItem.getItemId());
|
||||
if (menuItemView != null) {
|
||||
BadgeUtils.detachBadgeDrawable(pendingRequestTotalBadgeDrawable, fragmentActivity.getToolbar(), pendingRequestsMenuItem.getItemId());
|
||||
}
|
||||
isPendingRequestTotalBadgeAttached = false;
|
||||
pendingRequestTotalBadgeDrawable.setNumber(0);
|
||||
pendingRequestsMenuItem.setVisible(false);
|
||||
|
@ -31,6 +31,7 @@ import androidx.activity.OnBackPressedDispatcher;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.view.menu.ActionMenuItemView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsAnimationCompat;
|
||||
@ -56,6 +57,7 @@ import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat;
|
||||
|
||||
import com.google.android.material.badge.BadgeDrawable;
|
||||
import com.google.android.material.badge.BadgeUtils;
|
||||
import com.google.android.material.internal.ToolbarUtils;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
@ -554,7 +556,11 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact
|
||||
}
|
||||
isPendingRequestCountBadgeAttached = false;
|
||||
if (pendingRequestCountBadgeDrawable != null) {
|
||||
@SuppressLint("RestrictedApi") final ActionMenuItemView menuItemView = ToolbarUtils
|
||||
.getActionMenuItemView(fragmentActivity.getToolbar(), R.id.info);
|
||||
if (menuItemView != null) {
|
||||
BadgeUtils.detachBadgeDrawable(pendingRequestCountBadgeDrawable, fragmentActivity.getToolbar(), R.id.info);
|
||||
}
|
||||
pendingRequestCountBadgeDrawable = null;
|
||||
}
|
||||
}
|
||||
@ -838,7 +844,11 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact
|
||||
pendingRequestCountBadgeDrawable = BadgeDrawable.create(context);
|
||||
}
|
||||
if (count == null || count == 0) {
|
||||
@SuppressLint("RestrictedApi") final ActionMenuItemView menuItemView = ToolbarUtils
|
||||
.getActionMenuItemView(fragmentActivity.getToolbar(), R.id.info);
|
||||
if (menuItemView != null) {
|
||||
BadgeUtils.detachBadgeDrawable(pendingRequestCountBadgeDrawable, fragmentActivity.getToolbar(), R.id.info);
|
||||
}
|
||||
isPendingRequestCountBadgeAttached = false;
|
||||
pendingRequestCountBadgeDrawable.setNumber(0);
|
||||
return;
|
||||
@ -1107,7 +1117,9 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact
|
||||
if (!isAdded()) return;
|
||||
if (!entry.isVideo) {
|
||||
navigateToImageEditFragment(entry.path);
|
||||
return;
|
||||
}
|
||||
handleSentMessage(viewModel.sendUri(entry));
|
||||
});
|
||||
mediaPicker.show(getChildFragmentManager(), "MediaPicker");
|
||||
});
|
||||
|
@ -337,6 +337,12 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
binding.getRoot().postDelayed(feedStoriesAdapter::notifyDataSetChanged, 1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
binding.feedRecyclerView.refresh();
|
||||
@ -418,15 +424,16 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
|
||||
}
|
||||
|
||||
private void fetchStories() {
|
||||
if (storiesFetching) return;
|
||||
// final String cookie = settingsHelper.getString(Constants.COOKIE);
|
||||
storiesFetching = true;
|
||||
updateSwipeRefreshState();
|
||||
storiesService.getFeedStories(new ServiceCallback<List<FeedStoryModel>>() {
|
||||
@Override
|
||||
public void onSuccess(final List<FeedStoryModel> result) {
|
||||
storiesFetching = false;
|
||||
feedStoriesViewModel.getList().postValue(result);
|
||||
feedStoriesAdapter.submitList(result);
|
||||
storiesFetching = false;
|
||||
if (storyListMenu != null) storyListMenu.setVisible(true);
|
||||
updateSwipeRefreshState();
|
||||
}
|
||||
@ -451,9 +458,11 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
|
||||
}
|
||||
|
||||
public void scrollToTop() {
|
||||
if (binding != null) {
|
||||
binding.feedRecyclerView.smoothScrollToPosition(0);
|
||||
// binding.storiesContainer.setExpanded(true);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isSafeToNavigate(final NavController navController) {
|
||||
return navController.getCurrentDestination() != null
|
||||
|
@ -408,7 +408,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
}
|
||||
chainingMenuItem = menu.findItem(R.id.chaining);
|
||||
if (chainingMenuItem != null) {
|
||||
chainingMenuItem.setVisible(isNotMe);
|
||||
chainingMenuItem.setVisible(isNotMe && profileModel.hasChaining());
|
||||
}
|
||||
}
|
||||
|
||||
@ -528,7 +528,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
profileDetailsBinding.countsBarrier.getRoot().setVisibility(View.GONE);
|
||||
profileDetailsBinding.countsDivider.getRoot().setVisibility(View.GONE);
|
||||
profileDetailsBinding.mainProfileImage.setVisibility(View.INVISIBLE);
|
||||
fetchProfileDetails();
|
||||
}
|
||||
@ -663,18 +663,22 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
Toast.makeText(context, R.string.error_loading_profile, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
final long profileId = profileModel.getPk();
|
||||
if (!isReallyPrivate()) {
|
||||
if (!postsSetupDone) {
|
||||
setupPosts();
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
binding.postsRecyclerView.refresh();
|
||||
}
|
||||
if (isLoggedIn) {
|
||||
fetchStoryAndHighlights(profileId);
|
||||
}
|
||||
}
|
||||
|
||||
profileDetailsBinding.isVerified.setVisibility(profileModel.isVerified() ? View.VISIBLE : View.GONE);
|
||||
profileDetailsBinding.isPrivate.setVisibility(profileModel.isPrivate() ? View.VISIBLE : View.GONE);
|
||||
final long profileId = profileModel.getPk();
|
||||
if (isLoggedIn) {
|
||||
fetchStoryAndHighlights(profileId);
|
||||
}
|
||||
|
||||
setupButtons(profileId);
|
||||
final FavoriteRepository favoriteRepository = FavoriteRepository.getInstance(FavoriteDataSource.getInstance(getContext()));
|
||||
favoriteRepository.getFavorite(profileModel.getUsername(), FavoriteType.USER, new RepositoryCallback<Favorite>() {
|
||||
@ -746,7 +750,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
profileDetailsBinding.mainProfileImage.setImageURI(profileModel.getProfilePicUrl());
|
||||
profileDetailsBinding.mainProfileImage.setVisibility(View.VISIBLE);
|
||||
|
||||
profileDetailsBinding.countsBarrier.getRoot().setVisibility(View.VISIBLE);
|
||||
profileDetailsBinding.countsDivider.getRoot().setVisibility(View.VISIBLE);
|
||||
|
||||
final long followersCount = profileModel.getFollowerCount();
|
||||
final long followingCount = profileModel.getFollowingCount();
|
||||
@ -907,6 +911,8 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
binding.privatePage1.setImageResource(R.drawable.lock);
|
||||
binding.privatePage2.setText(R.string.priv_acc);
|
||||
binding.privatePage.setVisibility(View.VISIBLE);
|
||||
binding.privatePage1.setVisibility(View.VISIBLE);
|
||||
binding.privatePage2.setVisibility(View.VISIBLE);
|
||||
binding.postsRecyclerView.setVisibility(View.GONE);
|
||||
binding.swipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
@ -972,7 +978,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
mutePostsMenuItem.setTitle(profileModel.getFriendshipStatus().isMuting() ? R.string.unmute_posts : R.string.mute_posts);
|
||||
}
|
||||
if (chainingMenuItem != null) {
|
||||
chainingMenuItem.setVisible(true);
|
||||
chainingMenuItem.setVisible(profileModel.hasChaining());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,11 +16,15 @@ public final class FeedStoryModel implements Serializable {
|
||||
private final boolean isLive, isBestie;
|
||||
private final long timestamp;
|
||||
private final int mediaCount;
|
||||
private boolean isShown = true;
|
||||
|
||||
public FeedStoryModel(final String storyMediaId, final User profileModel, final boolean fullyRead,
|
||||
final long timestamp, final StoryModel firstStoryModel, final int mediaCount,
|
||||
final boolean isLive, final boolean isBestie) {
|
||||
public FeedStoryModel(final String storyMediaId,
|
||||
final User profileModel,
|
||||
final boolean fullyRead,
|
||||
final long timestamp,
|
||||
final StoryModel firstStoryModel,
|
||||
final int mediaCount,
|
||||
final boolean isLive,
|
||||
final boolean isBestie) {
|
||||
this.storyMediaId = storyMediaId;
|
||||
this.profileModel = profileModel;
|
||||
this.fullyRead = fullyRead;
|
||||
@ -52,10 +56,6 @@ public final class FeedStoryModel implements Serializable {
|
||||
return profileModel;
|
||||
}
|
||||
|
||||
// public void setFirstStoryModel(final StoryModel firstStoryModel) {
|
||||
// this.firstStoryModel = firstStoryModel;
|
||||
// }
|
||||
|
||||
public StoryModel getFirstStoryModel() {
|
||||
return firstStoryModel;
|
||||
}
|
||||
@ -75,12 +75,4 @@ public final class FeedStoryModel implements Serializable {
|
||||
public boolean isBestie() {
|
||||
return isBestie;
|
||||
}
|
||||
|
||||
public boolean isShown() {
|
||||
return isShown;
|
||||
}
|
||||
|
||||
public void setShown(final boolean shown) {
|
||||
isShown = shown;
|
||||
}
|
||||
}
|
@ -17,6 +17,7 @@ public class User implements Serializable {
|
||||
private final boolean isUnpublished;
|
||||
private final boolean isFavorite;
|
||||
private final boolean isDirectappInstalled;
|
||||
private final boolean hasChaining;
|
||||
private final String reelAutoArchive;
|
||||
private final String allowedCommenterType;
|
||||
private final long mediaCount;
|
||||
@ -28,11 +29,10 @@ public class User implements Serializable {
|
||||
private final long usertagsCount;
|
||||
private final String publicEmail;
|
||||
private final HdProfilePicUrlInfo hdProfilePicUrlInfo;
|
||||
private final String profileContext;
|
||||
private final List<UserProfileContextLink> profileContextLinksWithUserIds;
|
||||
private final String socialContext;
|
||||
// if a DM member is a Facebook user, this is present
|
||||
private final String interopMessagingUserFbid;
|
||||
private final String profileContext; // "also followed by" your friends
|
||||
private final List<UserProfileContextLink> profileContextLinksWithUserIds; // ^
|
||||
private final String socialContext; // AYML
|
||||
private final String interopMessagingUserFbid; // in DMs only: Facebook user ID
|
||||
|
||||
public User(final long pk,
|
||||
final String username,
|
||||
@ -46,6 +46,7 @@ public class User implements Serializable {
|
||||
final boolean isUnpublished,
|
||||
final boolean isFavorite,
|
||||
final boolean isDirectappInstalled,
|
||||
final boolean hasChaining,
|
||||
final String reelAutoArchive,
|
||||
final String allowedCommenterType,
|
||||
final long mediaCount,
|
||||
@ -73,6 +74,7 @@ public class User implements Serializable {
|
||||
this.isUnpublished = isUnpublished;
|
||||
this.isFavorite = isFavorite;
|
||||
this.isDirectappInstalled = isDirectappInstalled;
|
||||
this.hasChaining = hasChaining;
|
||||
this.reelAutoArchive = reelAutoArchive;
|
||||
this.allowedCommenterType = allowedCommenterType;
|
||||
this.mediaCount = mediaCount;
|
||||
@ -90,6 +92,53 @@ public class User implements Serializable {
|
||||
this.interopMessagingUserFbid = interopMessagingUserFbid;
|
||||
}
|
||||
|
||||
public User(final long pk,
|
||||
final String username,
|
||||
final String fullName,
|
||||
final boolean isPrivate,
|
||||
final String profilePicUrl,
|
||||
final boolean isVerified) {
|
||||
this.pk = pk;
|
||||
this.username = username;
|
||||
this.fullName = fullName;
|
||||
this.isPrivate = isPrivate;
|
||||
this.profilePicUrl = profilePicUrl;
|
||||
this.profilePicId = null;
|
||||
this.friendshipStatus = new FriendshipStatus(
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
);
|
||||
this.isVerified = isVerified;
|
||||
this.hasAnonymousProfilePicture = false;
|
||||
this.isUnpublished = false;
|
||||
this.isFavorite = false;
|
||||
this.isDirectappInstalled = false;
|
||||
this.hasChaining = false;
|
||||
this.reelAutoArchive = null;
|
||||
this.allowedCommenterType = null;
|
||||
this.mediaCount = 0;
|
||||
this.followerCount = 0;
|
||||
this.followingCount = 0;
|
||||
this.followingTagCount = 0;
|
||||
this.biography = null;
|
||||
this.externalUrl = null;
|
||||
this.usertagsCount = 0;
|
||||
this.publicEmail = null;
|
||||
this.hdProfilePicUrlInfo = null;
|
||||
this.profileContext = null;
|
||||
this.profileContextLinksWithUserIds = null;
|
||||
this.socialContext = null;
|
||||
this.interopMessagingUserFbid = null;
|
||||
}
|
||||
|
||||
public long getPk() {
|
||||
return pk;
|
||||
}
|
||||
@ -149,6 +198,10 @@ public class User implements Serializable {
|
||||
return isDirectappInstalled;
|
||||
}
|
||||
|
||||
public boolean hasChaining() {
|
||||
return hasChaining;
|
||||
}
|
||||
|
||||
public String getReelAutoArchive() {
|
||||
return reelAutoArchive;
|
||||
}
|
||||
@ -237,7 +290,7 @@ public class User implements Serializable {
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(pk, username, fullName, isPrivate, profilePicUrl, profilePicId, friendshipStatus, isVerified, hasAnonymousProfilePicture,
|
||||
isUnpublished, isFavorite, isDirectappInstalled, reelAutoArchive, allowedCommenterType, mediaCount, followerCount,
|
||||
followingCount, followingTagCount, biography, externalUrl, usertagsCount, publicEmail);
|
||||
isUnpublished, isFavorite, isDirectappInstalled, hasChaining, reelAutoArchive, allowedCommenterType, mediaCount,
|
||||
followerCount, followingCount, followingTagCount, biography, externalUrl, usertagsCount, publicEmail);
|
||||
}
|
||||
}
|
||||
|
@ -191,9 +191,7 @@ public class SearchItem {
|
||||
recentSearch.getName(),
|
||||
false,
|
||||
recentSearch.getPicUrl(),
|
||||
null, null, false, false, false, false, false,
|
||||
null, null, 0, 0, 0, 0, null, null,
|
||||
0, null, null, null, null, null, null
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
@ -205,9 +203,7 @@ public class SearchItem {
|
||||
favorite.getDisplayName(),
|
||||
false,
|
||||
favorite.getPicUrl(),
|
||||
null, null, false, false, false, false, false,
|
||||
null, null, 0, 0, 0, 0, null, null,
|
||||
0, null, null, null, null, null, null
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ public class NavigationExtensions {
|
||||
selectedItemTag = graphIdToTagMap.get(bottomNavigationView.getSelectedItemId());
|
||||
final String firstFragmentTag = graphIdToTagMap.get(firstFragmentGraphId);
|
||||
isOnFirstFragment = selectedItemTag != null && selectedItemTag.equals(firstFragmentTag);
|
||||
bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
|
||||
bottomNavigationView.setOnItemSelectedListener(item -> {
|
||||
if (fragmentManager.isStateSaved()) {
|
||||
return false;
|
||||
}
|
||||
@ -169,7 +169,7 @@ public class NavigationExtensions {
|
||||
private static void setupItemReselected(final BottomNavigationView bottomNavigationView,
|
||||
final SparseArray<String> graphIdToTagMap,
|
||||
final FragmentManager fragmentManager) {
|
||||
bottomNavigationView.setOnNavigationItemReselectedListener(item -> {
|
||||
bottomNavigationView.setOnItemReselectedListener(item -> {
|
||||
final String newlySelectedItemTag = graphIdToTagMap.get(item.getItemId());
|
||||
final Fragment fragmentByTag = fragmentManager.findFragmentByTag(newlySelectedItemTag);
|
||||
if (fragmentByTag == null) {
|
||||
|
@ -767,11 +767,7 @@ public final class ResponseBodyUtils {
|
||||
owner.optString("full_name"),
|
||||
false,
|
||||
owner.optString("profile_pic_url"),
|
||||
null,
|
||||
friendshipStatus,
|
||||
owner.optBoolean("is_verified"),
|
||||
false, false, false, false, null, null, 0, 0, 0, 0, null, null, 0, null, null,
|
||||
null, null, null, null);
|
||||
owner.optBoolean("is_verified"));
|
||||
}
|
||||
final String id = feedItem.getString(Constants.EXTRAS_ID);
|
||||
VideoVersion videoVersion = null;
|
||||
|
@ -104,7 +104,6 @@ public final class ViewUtils {
|
||||
} else {
|
||||
hiddenSuppressLayout($this$suppressLayoutCompat, suppress);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static boolean tryHiddenSuppressLayout = true;
|
||||
@ -118,6 +117,5 @@ public final class ViewUtils {
|
||||
tryHiddenSuppressLayout = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -238,11 +238,7 @@ public class CommentsViewerViewModel extends ViewModel {
|
||||
null,
|
||||
false,
|
||||
owner.getString("profile_pic_url"),
|
||||
null,
|
||||
new FriendshipStatus(false, false, false, false, false, false, false, false, false, false),
|
||||
owner.optBoolean("is_verified"),
|
||||
false, false, false, false, null, null, 0, 0, 0, 0, null, null, 0, null, null, null, null,
|
||||
null, null);
|
||||
owner.optBoolean("is_verified"));
|
||||
final JSONObject likedBy = commentJsonObject.optJSONObject("edge_liked_by");
|
||||
final String commentId = commentJsonObject.getString("id");
|
||||
final JSONObject childCommentsJsonObject = commentJsonObject.optJSONObject("edge_threaded_comments");
|
||||
|
@ -34,7 +34,6 @@ import retrofit2.Response;
|
||||
|
||||
public class GraphQLService extends BaseService {
|
||||
private static final String TAG = "GraphQLService";
|
||||
// private static final boolean loadFromMock = false;
|
||||
|
||||
private final GraphQLRepository repository;
|
||||
|
||||
@ -230,39 +229,7 @@ public class GraphQLService extends BaseService {
|
||||
userObject.optString("full_name"),
|
||||
userObject.optBoolean("is_private"),
|
||||
userObject.getString("profile_pic_url"),
|
||||
null,
|
||||
new FriendshipStatus(
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
),
|
||||
userObject.optBoolean("is_verified"),
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
null,
|
||||
null,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
userObject.optBoolean("is_verified")
|
||||
));
|
||||
// userModels.add(new ProfileModel(userObject.optBoolean("is_private"),
|
||||
// false,
|
||||
@ -357,6 +324,7 @@ public class GraphQLService extends BaseService {
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
null,
|
||||
null,
|
||||
timelineMedia.getLong("count"),
|
||||
|
@ -143,39 +143,7 @@ public class StoriesService extends BaseService {
|
||||
userJson.optString("full_name"),
|
||||
userJson.optBoolean("is_private"),
|
||||
userJson.getString("profile_pic_url"),
|
||||
null,
|
||||
new FriendshipStatus(
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
),
|
||||
userJson.optBoolean("is_verified"),
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
null,
|
||||
null,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
userJson.optBoolean("is_verified")
|
||||
);
|
||||
final long timestamp = node.getLong("latest_reel_media");
|
||||
final boolean fullyRead = !node.isNull("seen") && node.getLong("seen") == timestamp;
|
||||
@ -210,39 +178,7 @@ public class StoriesService extends BaseService {
|
||||
userJson.optString("full_name"),
|
||||
userJson.optBoolean("is_private"),
|
||||
userJson.getString("profile_pic_url"),
|
||||
null,
|
||||
new FriendshipStatus(
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
),
|
||||
userJson.optBoolean("is_verified"),
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
null,
|
||||
null,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
userJson.optBoolean("is_verified")
|
||||
);
|
||||
feedStoryModels.add(new FeedStoryModel(
|
||||
node.getString("id"),
|
||||
|
@ -38,7 +38,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="top"
|
||||
android:layout_marginTop="@dimen/private_page_margins"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone"
|
||||
@ -48,6 +47,8 @@
|
||||
android:id="@+id/privatePage1"
|
||||
android:layout_width="@dimen/private_page_size"
|
||||
android:layout_height="@dimen/private_page_size"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
app:srcCompat="@drawable/lock" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
@ -55,6 +56,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
android:text="@string/priv_acc"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
|
||||
</LinearLayout>
|
||||
|
@ -43,7 +43,9 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/title"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
||||
android:textSize="15sp"
|
||||
android:visibility="visible"
|
||||
|
@ -15,10 +15,11 @@
|
||||
android:transitionName="profile_pic"
|
||||
android:visibility="invisible"
|
||||
app:actualImageScaleType="centerCrop"
|
||||
app:layout_constraintBottom_toBottomOf="@id/btnTagged"
|
||||
app:layout_constraintBottom_toTopOf="@id/top_barrier"
|
||||
app:layout_constraintEnd_toStartOf="@id/btnFollow"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0"
|
||||
tools:foreground="@mipmap/ic_launcher"
|
||||
tools:visibility="visible" />
|
||||
|
||||
@ -112,7 +113,7 @@
|
||||
app:chipBackgroundColor="@null"
|
||||
app:chipIcon="@drawable/ic_outline_person_pin_24"
|
||||
app:chipIconTint="@color/deep_orange_800"
|
||||
app:layout_constraintBottom_toTopOf="@+id/mainFullName"
|
||||
app:layout_constraintBottom_toTopOf="@+id/top_barrier"
|
||||
app:layout_constraintStart_toEndOf="@id/mainProfileImage"
|
||||
app:layout_constraintTop_toBottomOf="@id/fav_chip"
|
||||
app:rippleColor="@color/deep_orange_400"
|
||||
@ -128,12 +129,18 @@
|
||||
app:chipBackgroundColor="@null"
|
||||
app:chipIcon="@drawable/ic_round_send_24"
|
||||
app:chipIconTint="@color/green"
|
||||
app:layout_constraintBottom_toTopOf="@+id/mainFullName"
|
||||
app:layout_constraintBottom_toTopOf="@+id/top_barrier"
|
||||
app:layout_constraintStart_toEndOf="@id/btnTagged"
|
||||
app:layout_constraintTop_toBottomOf="@id/fav_chip"
|
||||
app:rippleColor="@color/green"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/top_barrier"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:barrierDirection="bottom" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/mainFullName"
|
||||
android:layout_width="wrap_content"
|
||||
@ -146,40 +153,37 @@
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toTopOf="@id/mainBiography"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/btnTagged"
|
||||
app:layout_constraintTop_toBottomOf="@id/top_barrier"
|
||||
tools:text="Austin Huang" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/isVerified"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="center"
|
||||
android:adjustViewBounds="true"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/mainFullName"
|
||||
app:layout_constraintStart_toEndOf="@id/mainFullName"
|
||||
app:layout_constraintTop_toBottomOf="@id/btnTagged"
|
||||
app:layout_constraintTop_toTopOf="@id/mainFullName"
|
||||
app:srcCompat="@drawable/verified"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/isPrivate"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="center"
|
||||
android:adjustViewBounds="true"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:tint="@color/red_500"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/mainFullName"
|
||||
app:layout_constraintStart_toEndOf="@id/isVerified"
|
||||
app:layout_constraintTop_toBottomOf="@id/btnTagged"
|
||||
app:layout_constraintTop_toTopOf="@id/mainFullName"
|
||||
app:srcCompat="@drawable/lock"
|
||||
tools:visibility="visible" />
|
||||
|
||||
@ -233,6 +237,7 @@
|
||||
android:paddingBottom="4dp"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/profileContext"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/mainBiography"
|
||||
@ -254,7 +259,7 @@
|
||||
android:textSize="12sp"
|
||||
android:textStyle="italic"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/counts_barrier"
|
||||
app:layout_constraintBottom_toTopOf="@id/counts_divider"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/mainUrl"
|
||||
@ -262,11 +267,12 @@
|
||||
tools:visibility="visible" />
|
||||
|
||||
<include
|
||||
android:id="@+id/counts_barrier"
|
||||
android:id="@+id/counts_divider"
|
||||
layout="@layout/item_pref_divider"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/mainPostCount"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/profileContext"
|
||||
@ -285,7 +291,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
||||
app:layout_constraintEnd_toStartOf="@id/mainFollowers"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/counts_barrier"
|
||||
app:layout_constraintTop_toBottomOf="@id/counts_divider"
|
||||
tools:text="35\nPosts" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
@ -302,7 +308,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
||||
app:layout_constraintEnd_toStartOf="@id/mainFollowing"
|
||||
app:layout_constraintStart_toEndOf="@id/mainPostCount"
|
||||
app:layout_constraintTop_toBottomOf="@id/counts_barrier"
|
||||
app:layout_constraintTop_toBottomOf="@id/counts_divider"
|
||||
tools:text="68\nFollowers" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
@ -319,7 +325,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/mainFollowers"
|
||||
app:layout_constraintTop_toBottomOf="@id/counts_barrier"
|
||||
app:layout_constraintTop_toBottomOf="@id/counts_divider"
|
||||
tools:text="64\nFollowing" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
|
@ -19,9 +19,9 @@
|
||||
<color name="btn_lightpink_text_color">@color/text_color_light</color>
|
||||
|
||||
<color name="btn_orange_background">#FF5500</color>
|
||||
<color name="btn_orange_text_color">#FFFFFFFF</color>
|
||||
<color name="btn_orange_text_color">@color/white</color>
|
||||
<color name="btn_lightorange_background">#FFBB00</color>
|
||||
<color name="btn_lightorange_text_color">#FF000000</color>
|
||||
<color name="btn_lightorange_text_color">@color/black</color>
|
||||
|
||||
<color name="dm_profile_button_color">#efefef</color>
|
||||
|
||||
|
@ -9,6 +9,13 @@
|
||||
motion:layout_constraintEnd_toEndOf="parent"
|
||||
motion:layout_constraintStart_toStartOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="parent" />
|
||||
<Constraint
|
||||
android:id="@+id/privatePage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/private_page_margins"
|
||||
android:visibility="visible"
|
||||
motion:layout_constraintTop_toBottomOf="@+id/header" />
|
||||
</ConstraintSet>
|
||||
<ConstraintSet android:id="@+id/end">
|
||||
<Constraint
|
||||
|
@ -5,7 +5,7 @@ buildscript {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.2.0'
|
||||
classpath 'com.android.tools.build:gradle:4.2.1'
|
||||
def nav_version = "2.3.5"
|
||||
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
|
||||
}
|
||||
|
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionSha256Sum=9af5c8e7e2cd1a3b0f694a4ac262b9f38c75262e74a9e8b5101af302a6beadd7
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
|
||||
distributionSha256Sum=13bf8d3cf8eeeb5770d19741a59bde9bd966dd78d17f1bbad787a05ef19d1c2d
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
Loading…
Reference in New Issue
Block a user