mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-22 22:57:29 +00:00
Merge remote-tracking branch 'upstream/master' into raniapl/development
This commit is contained in:
commit
3ca326d520
@ -79,6 +79,25 @@
|
|||||||
"code"
|
"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",
|
"login": "Zopieux",
|
||||||
"name": "Alexandre Macabies",
|
"name": "Alexandre Macabies",
|
||||||
|
7
.github/workflows/github_nightly_release.yml
vendored
7
.github/workflows/github_nightly_release.yml
vendored
@ -15,10 +15,11 @@ jobs:
|
|||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: set up JDK 1.8
|
- name: set up JDK 1.8
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v2
|
||||||
with:
|
with:
|
||||||
java-version: 1.8
|
distribution: 'zulu'
|
||||||
|
java-version: '8'
|
||||||
|
|
||||||
- name: Grant execute permission for gradlew
|
- name: Grant execute permission for gradlew
|
||||||
run: chmod +x 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
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: set up JDK 1.8
|
- name: set up JDK 1.8
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v2
|
||||||
with:
|
with:
|
||||||
java-version: 1.8
|
distribution: 'zulu'
|
||||||
|
java-version: '8'
|
||||||
|
|
||||||
- name: Grant execute permission for gradlew
|
- name: Grant execute permission for gradlew
|
||||||
run: chmod +x 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)
|
[![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)
|
[![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 -->
|
[![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 -->
|
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||||
|
|
||||||
Instagram client; previously known as InstaGrabber.
|
Instagram client; previously known as InstaGrabber.
|
||||||
@ -63,49 +63,53 @@ Prominent contributors are listed here in the [all-contributors](https://allcont
|
|||||||
</tr>
|
</tr>
|
||||||
<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/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://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://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="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>
|
||||||
<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/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/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/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/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>
|
||||||
<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/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/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/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://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>
|
||||||
<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://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/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/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/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>
|
||||||
<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/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/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/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://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>
|
||||||
<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://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/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/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>
|
<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/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>
|
<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>
|
</tr>
|
||||||
@ -121,7 +125,7 @@ This app's predecessor, InstaGrabber, was originally made by [@AwaisKing](https:
|
|||||||
|
|
||||||
Barinsta
|
Barinsta
|
||||||
Copyright (C) 2020-2021 Austin Huang <im@austinhuang.me>
|
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
|
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
|
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 List<FeedStoryModel> list;
|
||||||
|
|
||||||
private final Filter filter = new Filter() {
|
private final Filter filter = new Filter() {
|
||||||
@Nullable
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
protected FilterResults performFiltering(final CharSequence filter) {
|
protected FilterResults performFiltering(final CharSequence filter) {
|
||||||
final boolean isFilterEmpty = TextUtils.isEmpty(filter);
|
final String query = TextUtils.isEmpty(filter) ? null : filter.toString().toLowerCase();
|
||||||
final String query = isFilterEmpty ? null : filter.toString().toLowerCase();
|
List<FeedStoryModel> filteredList = list;
|
||||||
|
if (list != null && query != null) {
|
||||||
for (FeedStoryModel item : list) {
|
filteredList = list.stream()
|
||||||
if (isFilterEmpty) item.setShown(true);
|
.filter(feedStoryModel -> feedStoryModel.getProfileModel()
|
||||||
else item.setShown(item.getProfileModel().getUsername().toLowerCase().contains(query));
|
.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
|
@Override
|
||||||
protected void publishResults(final CharSequence constraint, final FilterResults results) {
|
protected void publishResults(final CharSequence constraint, final FilterResults results) {
|
||||||
submitList(list);
|
//noinspection unchecked
|
||||||
notifyDataSetChanged();
|
submitList((List<FeedStoryModel>) results.values, true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -65,10 +71,16 @@ public final class FeedStoriesListAdapter extends ListAdapter<FeedStoryModel, St
|
|||||||
return filter;
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void submitList(@Nullable final List<FeedStoryModel> list, final boolean isFiltered) {
|
||||||
|
if (!isFiltered) {
|
||||||
|
this.list = list;
|
||||||
|
}
|
||||||
|
super.submitList(list);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void submitList(final List<FeedStoryModel> list) {
|
public void submitList(final List<FeedStoryModel> list) {
|
||||||
super.submitList(list.stream().filter(i -> i.isShown()).collect(Collectors.toList()));
|
submitList(list, false);
|
||||||
this.list = list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@ -82,11 +94,11 @@ public final class FeedStoriesListAdapter extends ListAdapter<FeedStoryModel, St
|
|||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull final StoryListViewHolder holder, final int position) {
|
public void onBindViewHolder(@NonNull final StoryListViewHolder holder, final int position) {
|
||||||
final FeedStoryModel model = getItem(position);
|
final FeedStoryModel model = getItem(position);
|
||||||
holder.bind(model, position, listener);
|
holder.bind(model, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface OnFeedStoryClickListener {
|
public interface OnFeedStoryClickListener {
|
||||||
void onFeedStoryClick(final FeedStoryModel model, final int position);
|
void onFeedStoryClick(final FeedStoryModel model);
|
||||||
|
|
||||||
void onProfileClick(final String username);
|
void onProfileClick(final String username);
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,6 @@ public final class StoryListViewHolder extends RecyclerView.ViewHolder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void bind(final FeedStoryModel model,
|
public void bind(final FeedStoryModel model,
|
||||||
final int position,
|
|
||||||
final OnFeedStoryClickListener notificationClickListener) {
|
final OnFeedStoryClickListener notificationClickListener) {
|
||||||
if (model == null) return;
|
if (model == null) return;
|
||||||
|
|
||||||
@ -53,7 +52,7 @@ public final class StoryListViewHolder extends RecyclerView.ViewHolder {
|
|||||||
|
|
||||||
itemView.setOnClickListener(v -> {
|
itemView.setOnClickListener(v -> {
|
||||||
if (notificationClickListener == null) return;
|
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.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.Window;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@ -29,6 +30,7 @@ import androidx.appcompat.widget.PopupMenu;
|
|||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
import androidx.core.content.PermissionChecker;
|
import androidx.core.content.PermissionChecker;
|
||||||
|
import androidx.core.view.WindowCompat;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.lifecycle.LiveData;
|
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.HashTagFragment.ARG_HASHTAG;
|
||||||
import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_SHOWN_COUNT_TOOLTIP;
|
import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_SHOWN_COUNT_TOOLTIP;
|
||||||
import static awais.instagrabber.utils.DownloadUtils.WRITE_PERMISSION;
|
import static awais.instagrabber.utils.DownloadUtils.WRITE_PERMISSION;
|
||||||
import static awais.instagrabber.utils.Utils.getAttrValue;
|
|
||||||
import static awais.instagrabber.utils.Utils.settingsHelper;
|
import static awais.instagrabber.utils.Utils.settingsHelper;
|
||||||
|
|
||||||
public class PostViewV2Fragment extends Fragment implements EditTextDialogFragment.EditTextDialogFragmentCallback {
|
public class PostViewV2Fragment extends Fragment implements EditTextDialogFragment.EditTextDialogFragmentCallback {
|
||||||
@ -131,6 +132,9 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
private boolean isInFullScreenMode;
|
private boolean isInFullScreenMode;
|
||||||
private StyledPlayerView playerView;
|
private StyledPlayerView playerView;
|
||||||
private int playerViewOriginalHeight;
|
private int playerViewOriginalHeight;
|
||||||
|
private Drawable originalRootBackground;
|
||||||
|
private ColorStateList originalLikeColorStateList;
|
||||||
|
private ColorStateList originalSaveColorStateList;
|
||||||
|
|
||||||
private final Observer<Object> backStackSavedStateObserver = result -> {
|
private final Observer<Object> backStackSavedStateObserver = result -> {
|
||||||
if (result == null) return;
|
if (result == null) return;
|
||||||
@ -141,7 +145,6 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
// clear result
|
// clear result
|
||||||
backStackSavedStateResultLiveData.postValue(null);
|
backStackSavedStateResultLiveData.postValue(null);
|
||||||
};
|
};
|
||||||
private Drawable originalRootBackground;
|
|
||||||
|
|
||||||
public void setOnDeleteListener(final OnDeleteListener onDeleteListener) {
|
public void setOnDeleteListener(final OnDeleteListener onDeleteListener) {
|
||||||
if (onDeleteListener == null) return;
|
if (onDeleteListener == null) return;
|
||||||
@ -441,6 +444,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setupLike() {
|
private void setupLike() {
|
||||||
|
originalLikeColorStateList = bottom.like.getIconTint();
|
||||||
final boolean likableMedia = viewModel.hasPk() /*&& viewModel.getMedia().isCommentLikesEnabled()*/;
|
final boolean likableMedia = viewModel.hasPk() /*&& viewModel.getMedia().isCommentLikesEnabled()*/;
|
||||||
if (!likableMedia) {
|
if (!likableMedia) {
|
||||||
bottom.like.setVisibility(View.GONE);
|
bottom.like.setVisibility(View.GONE);
|
||||||
@ -503,25 +507,25 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
|
|
||||||
private void setLikedResources(final boolean liked) {
|
private void setLikedResources(final boolean liked) {
|
||||||
final int iconResource;
|
final int iconResource;
|
||||||
final int tintResource;
|
final ColorStateList tintColorStateList;
|
||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
if (context == null) return;
|
if (context == null) return;
|
||||||
final Resources resources = context.getResources();
|
final Resources resources = context.getResources();
|
||||||
if (resources == null) return;
|
if (resources == null) return;
|
||||||
if (liked) {
|
if (liked) {
|
||||||
iconResource = R.drawable.ic_like;
|
iconResource = R.drawable.ic_like;
|
||||||
tintResource = resources.getColor(R.color.red_600);
|
tintColorStateList = ColorStateList.valueOf(resources.getColor(R.color.red_600));
|
||||||
// textResId = R.string.unlike_without_count;
|
|
||||||
} else {
|
} else {
|
||||||
iconResource = R.drawable.ic_not_liked;
|
iconResource = R.drawable.ic_not_liked;
|
||||||
tintResource = getAttrValue(context, R.attr.colorPrimary);
|
tintColorStateList = originalLikeColorStateList != null ? originalLikeColorStateList
|
||||||
// textResId = R.string.like_without_count;
|
: ColorStateList.valueOf(resources.getColor(R.color.white));
|
||||||
}
|
}
|
||||||
bottom.like.setIconResource(iconResource);
|
bottom.like.setIconResource(iconResource);
|
||||||
bottom.like.setIconTint(ColorStateList.valueOf(tintResource));
|
bottom.like.setIconTint(tintColorStateList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupSave() {
|
private void setupSave() {
|
||||||
|
originalSaveColorStateList = bottom.save.getIconTint();
|
||||||
if (!viewModel.isLoggedIn() || !viewModel.hasPk() || !viewModel.getMedia().canViewerSave()) {
|
if (!viewModel.isLoggedIn() || !viewModel.hasPk() || !viewModel.getMedia().canViewerSave()) {
|
||||||
bottom.save.setVisibility(View.GONE);
|
bottom.save.setVisibility(View.GONE);
|
||||||
return;
|
return;
|
||||||
@ -574,22 +578,21 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
|
|
||||||
private void setSavedResources(final boolean saved) {
|
private void setSavedResources(final boolean saved) {
|
||||||
final int iconResource;
|
final int iconResource;
|
||||||
final int tintResource;
|
final ColorStateList tintColorStateList;
|
||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
if (context == null) return;
|
if (context == null) return;
|
||||||
final Resources resources = context.getResources();
|
final Resources resources = context.getResources();
|
||||||
if (resources == null) return;
|
if (resources == null) return;
|
||||||
if (saved) {
|
if (saved) {
|
||||||
iconResource = R.drawable.ic_bookmark;
|
iconResource = R.drawable.ic_bookmark;
|
||||||
tintResource = resources.getColor(R.color.blue_700);
|
tintColorStateList = ColorStateList.valueOf(resources.getColor(R.color.blue_700));
|
||||||
// textResId = R.string.saved;
|
|
||||||
} else {
|
} else {
|
||||||
iconResource = R.drawable.ic_round_bookmark_border_24;
|
iconResource = R.drawable.ic_round_bookmark_border_24;
|
||||||
tintResource = getAttrValue(context, R.attr.colorPrimary);
|
tintColorStateList = originalSaveColorStateList != null ? originalSaveColorStateList
|
||||||
// textResId = R.string.save;
|
: ColorStateList.valueOf(resources.getColor(R.color.white));
|
||||||
}
|
}
|
||||||
bottom.save.setIconResource(iconResource);
|
bottom.save.setIconResource(iconResource);
|
||||||
bottom.save.setIconTint(ColorStateList.valueOf(tintResource));
|
bottom.save.setIconTint(tintColorStateList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupProfilePic(final User user) {
|
private void setupProfilePic(final User user) {
|
||||||
@ -1427,8 +1430,10 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
if (toolbar != null) {
|
if (toolbar != null) {
|
||||||
toolbar.setVisibility(View.VISIBLE);
|
toolbar.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
final View decorView = activity.getWindow().getDecorView();
|
final Window window = activity.getWindow();
|
||||||
|
final View decorView = window.getDecorView();
|
||||||
decorView.setSystemUiVisibility(originalSystemUi);
|
decorView.setSystemUiVisibility(originalSystemUi);
|
||||||
|
WindowCompat.setDecorFitsSystemWindows(window, false);
|
||||||
isInFullScreenMode = false;
|
isInFullScreenMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,9 +23,12 @@ import androidx.navigation.fragment.NavHostFragment;
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import awais.instagrabber.R;
|
import awais.instagrabber.R;
|
||||||
import awais.instagrabber.adapters.FeedStoriesListAdapter;
|
import awais.instagrabber.adapters.FeedStoriesListAdapter;
|
||||||
@ -58,15 +61,17 @@ public final class StoryListViewerFragment extends Fragment implements SwipeRefr
|
|||||||
private StoriesService storiesService;
|
private StoriesService storiesService;
|
||||||
private Context context;
|
private Context context;
|
||||||
private String type;
|
private String type;
|
||||||
private String currentQuery;
|
|
||||||
private String endCursor = null;
|
private String endCursor = null;
|
||||||
private FeedStoriesListAdapter adapter;
|
private FeedStoriesListAdapter adapter;
|
||||||
private MenuItem menuSearch;
|
|
||||||
|
|
||||||
private final OnFeedStoryClickListener clickListener = new OnFeedStoryClickListener() {
|
private final OnFeedStoryClickListener clickListener = new OnFeedStoryClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFeedStoryClick(final FeedStoryModel model, final int position) {
|
public void onFeedStoryClick(final FeedStoryModel model) {
|
||||||
if (model == null) return;
|
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
|
final NavDirections action = StoryListViewerFragmentDirections
|
||||||
.actionStoryListFragmentToStoryViewerFragment(StoryViewerOptions.forFeedStoryPosition(position));
|
.actionStoryListFragmentToStoryViewerFragment(StoryViewerOptions.forFeedStoryPosition(position));
|
||||||
NavHostFragment.findNavController(StoryListViewerFragment.this).navigate(action);
|
NavHostFragment.findNavController(StoryListViewerFragment.this).navigate(action);
|
||||||
@ -153,7 +158,7 @@ public final class StoryListViewerFragment extends Fragment implements SwipeRefr
|
|||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(@NonNull final Menu menu, final MenuInflater inflater) {
|
public void onCreateOptionsMenu(@NonNull final Menu menu, final MenuInflater inflater) {
|
||||||
inflater.inflate(R.menu.search, menu);
|
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();
|
final SearchView searchView = (SearchView) menuSearch.getActionView();
|
||||||
searchView.setQueryHint(getResources().getString(R.string.action_search));
|
searchView.setQueryHint(getResources().getString(R.string.action_search));
|
||||||
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||||
@ -166,7 +171,6 @@ public final class StoryListViewerFragment extends Fragment implements SwipeRefr
|
|||||||
@Override
|
@Override
|
||||||
public boolean onQueryTextChange(final String query) {
|
public boolean onQueryTextChange(final String query) {
|
||||||
if (adapter != null) {
|
if (adapter != null) {
|
||||||
currentQuery = query;
|
|
||||||
adapter.getFilter().filter(query);
|
adapter.getFilter().filter(query);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -119,6 +119,7 @@ public class StoryViewerFragment extends Fragment {
|
|||||||
private View root;
|
private View root;
|
||||||
private FragmentStoryViewerBinding binding;
|
private FragmentStoryViewerBinding binding;
|
||||||
private String currentStoryUsername;
|
private String currentStoryUsername;
|
||||||
|
private String highlightTitle;
|
||||||
private StoriesAdapter storiesAdapter;
|
private StoriesAdapter storiesAdapter;
|
||||||
private SwipeEvent swipeEvent;
|
private SwipeEvent swipeEvent;
|
||||||
private GestureDetectorCompat gestureDetector;
|
private GestureDetectorCompat gestureDetector;
|
||||||
@ -274,7 +275,9 @@ public class StoryViewerFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
releasePlayer();
|
if (player != null) {
|
||||||
|
player.pause();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -724,7 +727,7 @@ public class StoryViewerFragment extends Fragment {
|
|||||||
final HighlightModel model = models.get(currentFeedStoryIndex);
|
final HighlightModel model = models.get(currentFeedStoryIndex);
|
||||||
currentStoryMediaId = model.getId();
|
currentStoryMediaId = model.getId();
|
||||||
fetchOptions = StoryViewerOptions.forHighlight(model.getId());
|
fetchOptions = StoryViewerOptions.forHighlight(model.getId());
|
||||||
currentStoryUsername = model.getTitle();
|
highlightTitle = model.getTitle();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FEED_STORY_POSITION: {
|
case FEED_STORY_POSITION: {
|
||||||
@ -824,8 +827,8 @@ public class StoryViewerFragment extends Fragment {
|
|||||||
if (type == Type.HIGHLIGHT) {
|
if (type == Type.HIGHLIGHT) {
|
||||||
final ActionBar actionBar = fragmentActivity.getSupportActionBar();
|
final ActionBar actionBar = fragmentActivity.getSupportActionBar();
|
||||||
if (actionBar != null) {
|
if (actionBar != null) {
|
||||||
actionBarTitle = options.getName();
|
actionBarTitle = highlightTitle;
|
||||||
actionBar.setTitle(options.getName());
|
actionBar.setTitle(highlightTitle);
|
||||||
}
|
}
|
||||||
} else if (hasUsername) {
|
} else if (hasUsername) {
|
||||||
currentStoryUsername = currentStoryUsername.replace("@", "");
|
currentStoryUsername = currentStoryUsername.replace("@", "");
|
||||||
|
@ -16,6 +16,7 @@ import android.view.ViewGroup;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.view.menu.ActionMenuItemView;
|
||||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.lifecycle.Observer;
|
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.BadgeDrawable;
|
||||||
import com.google.android.material.badge.BadgeUtils;
|
import com.google.android.material.badge.BadgeUtils;
|
||||||
|
import com.google.android.material.internal.ToolbarUtils;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -102,7 +104,9 @@ public class DirectMessageInboxFragment extends Fragment implements SwipeRefresh
|
|||||||
super.onPause();
|
super.onPause();
|
||||||
unregisterReceiver();
|
unregisterReceiver();
|
||||||
isPendingRequestTotalBadgeAttached = false;
|
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());
|
BadgeUtils.detachBadgeDrawable(pendingRequestTotalBadgeDrawable, fragmentActivity.getToolbar(), pendingRequestsMenuItem.getItemId());
|
||||||
pendingRequestTotalBadgeDrawable = null;
|
pendingRequestTotalBadgeDrawable = null;
|
||||||
}
|
}
|
||||||
@ -217,7 +221,11 @@ public class DirectMessageInboxFragment extends Fragment implements SwipeRefresh
|
|||||||
pendingRequestTotalBadgeDrawable = BadgeDrawable.create(context);
|
pendingRequestTotalBadgeDrawable = BadgeDrawable.create(context);
|
||||||
}
|
}
|
||||||
if (count == null || count == 0) {
|
if (count == null || count == 0) {
|
||||||
BadgeUtils.detachBadgeDrawable(pendingRequestTotalBadgeDrawable, fragmentActivity.getToolbar(), pendingRequestsMenuItem.getItemId());
|
@SuppressLint("RestrictedApi") final ActionMenuItemView menuItemView = ToolbarUtils
|
||||||
|
.getActionMenuItemView(fragmentActivity.getToolbar(), pendingRequestsMenuItem.getItemId());
|
||||||
|
if (menuItemView != null) {
|
||||||
|
BadgeUtils.detachBadgeDrawable(pendingRequestTotalBadgeDrawable, fragmentActivity.getToolbar(), pendingRequestsMenuItem.getItemId());
|
||||||
|
}
|
||||||
isPendingRequestTotalBadgeAttached = false;
|
isPendingRequestTotalBadgeAttached = false;
|
||||||
pendingRequestTotalBadgeDrawable.setNumber(0);
|
pendingRequestTotalBadgeDrawable.setNumber(0);
|
||||||
pendingRequestsMenuItem.setVisible(false);
|
pendingRequestsMenuItem.setVisible(false);
|
||||||
|
@ -31,6 +31,7 @@ import androidx.activity.OnBackPressedDispatcher;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.ActionBar;
|
import androidx.appcompat.app.ActionBar;
|
||||||
|
import androidx.appcompat.view.menu.ActionMenuItemView;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowInsetsAnimationCompat;
|
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.BadgeDrawable;
|
||||||
import com.google.android.material.badge.BadgeUtils;
|
import com.google.android.material.badge.BadgeUtils;
|
||||||
|
import com.google.android.material.internal.ToolbarUtils;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
@ -554,7 +556,11 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact
|
|||||||
}
|
}
|
||||||
isPendingRequestCountBadgeAttached = false;
|
isPendingRequestCountBadgeAttached = false;
|
||||||
if (pendingRequestCountBadgeDrawable != null) {
|
if (pendingRequestCountBadgeDrawable != null) {
|
||||||
BadgeUtils.detachBadgeDrawable(pendingRequestCountBadgeDrawable, fragmentActivity.getToolbar(), R.id.info);
|
@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;
|
pendingRequestCountBadgeDrawable = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -838,7 +844,11 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact
|
|||||||
pendingRequestCountBadgeDrawable = BadgeDrawable.create(context);
|
pendingRequestCountBadgeDrawable = BadgeDrawable.create(context);
|
||||||
}
|
}
|
||||||
if (count == null || count == 0) {
|
if (count == null || count == 0) {
|
||||||
BadgeUtils.detachBadgeDrawable(pendingRequestCountBadgeDrawable, fragmentActivity.getToolbar(), R.id.info);
|
@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;
|
isPendingRequestCountBadgeAttached = false;
|
||||||
pendingRequestCountBadgeDrawable.setNumber(0);
|
pendingRequestCountBadgeDrawable.setNumber(0);
|
||||||
return;
|
return;
|
||||||
@ -1107,7 +1117,9 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact
|
|||||||
if (!isAdded()) return;
|
if (!isAdded()) return;
|
||||||
if (!entry.isVideo) {
|
if (!entry.isVideo) {
|
||||||
navigateToImageEditFragment(entry.path);
|
navigateToImageEditFragment(entry.path);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
handleSentMessage(viewModel.sendUri(entry));
|
||||||
});
|
});
|
||||||
mediaPicker.show(getChildFragmentManager(), "MediaPicker");
|
mediaPicker.show(getChildFragmentManager(), "MediaPicker");
|
||||||
});
|
});
|
||||||
|
@ -337,6 +337,12 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
|
|||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
binding.getRoot().postDelayed(feedStoriesAdapter::notifyDataSetChanged, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() {
|
public void onRefresh() {
|
||||||
binding.feedRecyclerView.refresh();
|
binding.feedRecyclerView.refresh();
|
||||||
@ -418,15 +424,16 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void fetchStories() {
|
private void fetchStories() {
|
||||||
|
if (storiesFetching) return;
|
||||||
// final String cookie = settingsHelper.getString(Constants.COOKIE);
|
// final String cookie = settingsHelper.getString(Constants.COOKIE);
|
||||||
storiesFetching = true;
|
storiesFetching = true;
|
||||||
updateSwipeRefreshState();
|
updateSwipeRefreshState();
|
||||||
storiesService.getFeedStories(new ServiceCallback<List<FeedStoryModel>>() {
|
storiesService.getFeedStories(new ServiceCallback<List<FeedStoryModel>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(final List<FeedStoryModel> result) {
|
public void onSuccess(final List<FeedStoryModel> result) {
|
||||||
|
storiesFetching = false;
|
||||||
feedStoriesViewModel.getList().postValue(result);
|
feedStoriesViewModel.getList().postValue(result);
|
||||||
feedStoriesAdapter.submitList(result);
|
feedStoriesAdapter.submitList(result);
|
||||||
storiesFetching = false;
|
|
||||||
if (storyListMenu != null) storyListMenu.setVisible(true);
|
if (storyListMenu != null) storyListMenu.setVisible(true);
|
||||||
updateSwipeRefreshState();
|
updateSwipeRefreshState();
|
||||||
}
|
}
|
||||||
@ -451,8 +458,10 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void scrollToTop() {
|
public void scrollToTop() {
|
||||||
binding.feedRecyclerView.smoothScrollToPosition(0);
|
if (binding != null) {
|
||||||
// binding.storiesContainer.setExpanded(true);
|
binding.feedRecyclerView.smoothScrollToPosition(0);
|
||||||
|
// binding.storiesContainer.setExpanded(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSafeToNavigate(final NavController navController) {
|
private boolean isSafeToNavigate(final NavController navController) {
|
||||||
|
@ -408,7 +408,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
}
|
}
|
||||||
chainingMenuItem = menu.findItem(R.id.chaining);
|
chainingMenuItem = menu.findItem(R.id.chaining);
|
||||||
if (chainingMenuItem != null) {
|
if (chainingMenuItem != null) {
|
||||||
chainingMenuItem.setVisible(isNotMe);
|
chainingMenuItem.setVisible(isNotMe && profileModel.hasChaining());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -528,7 +528,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRefresh() {
|
public void onRefresh() {
|
||||||
profileDetailsBinding.countsBarrier.getRoot().setVisibility(View.GONE);
|
profileDetailsBinding.countsDivider.getRoot().setVisibility(View.GONE);
|
||||||
profileDetailsBinding.mainProfileImage.setVisibility(View.INVISIBLE);
|
profileDetailsBinding.mainProfileImage.setVisibility(View.INVISIBLE);
|
||||||
fetchProfileDetails();
|
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();
|
Toast.makeText(context, R.string.error_loading_profile, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!postsSetupDone) {
|
final long profileId = profileModel.getPk();
|
||||||
setupPosts();
|
if (!isReallyPrivate()) {
|
||||||
} else {
|
if (!postsSetupDone) {
|
||||||
binding.postsRecyclerView.refresh();
|
setupPosts();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
binding.postsRecyclerView.refresh();
|
||||||
|
}
|
||||||
|
if (isLoggedIn) {
|
||||||
|
fetchStoryAndHighlights(profileId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
profileDetailsBinding.isVerified.setVisibility(profileModel.isVerified() ? View.VISIBLE : View.GONE);
|
profileDetailsBinding.isVerified.setVisibility(profileModel.isVerified() ? View.VISIBLE : View.GONE);
|
||||||
profileDetailsBinding.isPrivate.setVisibility(profileModel.isPrivate() ? View.VISIBLE : View.GONE);
|
profileDetailsBinding.isPrivate.setVisibility(profileModel.isPrivate() ? View.VISIBLE : View.GONE);
|
||||||
final long profileId = profileModel.getPk();
|
|
||||||
if (isLoggedIn) {
|
|
||||||
fetchStoryAndHighlights(profileId);
|
|
||||||
}
|
|
||||||
setupButtons(profileId);
|
setupButtons(profileId);
|
||||||
final FavoriteRepository favoriteRepository = FavoriteRepository.getInstance(FavoriteDataSource.getInstance(getContext()));
|
final FavoriteRepository favoriteRepository = FavoriteRepository.getInstance(FavoriteDataSource.getInstance(getContext()));
|
||||||
favoriteRepository.getFavorite(profileModel.getUsername(), FavoriteType.USER, new RepositoryCallback<Favorite>() {
|
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.setImageURI(profileModel.getProfilePicUrl());
|
||||||
profileDetailsBinding.mainProfileImage.setVisibility(View.VISIBLE);
|
profileDetailsBinding.mainProfileImage.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
profileDetailsBinding.countsBarrier.getRoot().setVisibility(View.VISIBLE);
|
profileDetailsBinding.countsDivider.getRoot().setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
final long followersCount = profileModel.getFollowerCount();
|
final long followersCount = profileModel.getFollowerCount();
|
||||||
final long followingCount = profileModel.getFollowingCount();
|
final long followingCount = profileModel.getFollowingCount();
|
||||||
@ -907,6 +911,8 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
binding.privatePage1.setImageResource(R.drawable.lock);
|
binding.privatePage1.setImageResource(R.drawable.lock);
|
||||||
binding.privatePage2.setText(R.string.priv_acc);
|
binding.privatePage2.setText(R.string.priv_acc);
|
||||||
binding.privatePage.setVisibility(View.VISIBLE);
|
binding.privatePage.setVisibility(View.VISIBLE);
|
||||||
|
binding.privatePage1.setVisibility(View.VISIBLE);
|
||||||
|
binding.privatePage2.setVisibility(View.VISIBLE);
|
||||||
binding.postsRecyclerView.setVisibility(View.GONE);
|
binding.postsRecyclerView.setVisibility(View.GONE);
|
||||||
binding.swipeRefreshLayout.setRefreshing(false);
|
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);
|
mutePostsMenuItem.setTitle(profileModel.getFriendshipStatus().isMuting() ? R.string.unmute_posts : R.string.mute_posts);
|
||||||
}
|
}
|
||||||
if (chainingMenuItem != null) {
|
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 boolean isLive, isBestie;
|
||||||
private final long timestamp;
|
private final long timestamp;
|
||||||
private final int mediaCount;
|
private final int mediaCount;
|
||||||
private boolean isShown = true;
|
|
||||||
|
|
||||||
public FeedStoryModel(final String storyMediaId, final User profileModel, final boolean fullyRead,
|
public FeedStoryModel(final String storyMediaId,
|
||||||
final long timestamp, final StoryModel firstStoryModel, final int mediaCount,
|
final User profileModel,
|
||||||
final boolean isLive, final boolean isBestie) {
|
final boolean fullyRead,
|
||||||
|
final long timestamp,
|
||||||
|
final StoryModel firstStoryModel,
|
||||||
|
final int mediaCount,
|
||||||
|
final boolean isLive,
|
||||||
|
final boolean isBestie) {
|
||||||
this.storyMediaId = storyMediaId;
|
this.storyMediaId = storyMediaId;
|
||||||
this.profileModel = profileModel;
|
this.profileModel = profileModel;
|
||||||
this.fullyRead = fullyRead;
|
this.fullyRead = fullyRead;
|
||||||
@ -52,10 +56,6 @@ public final class FeedStoryModel implements Serializable {
|
|||||||
return profileModel;
|
return profileModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void setFirstStoryModel(final StoryModel firstStoryModel) {
|
|
||||||
// this.firstStoryModel = firstStoryModel;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public StoryModel getFirstStoryModel() {
|
public StoryModel getFirstStoryModel() {
|
||||||
return firstStoryModel;
|
return firstStoryModel;
|
||||||
}
|
}
|
||||||
@ -75,12 +75,4 @@ public final class FeedStoryModel implements Serializable {
|
|||||||
public boolean isBestie() {
|
public boolean isBestie() {
|
||||||
return 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 isUnpublished;
|
||||||
private final boolean isFavorite;
|
private final boolean isFavorite;
|
||||||
private final boolean isDirectappInstalled;
|
private final boolean isDirectappInstalled;
|
||||||
|
private final boolean hasChaining;
|
||||||
private final String reelAutoArchive;
|
private final String reelAutoArchive;
|
||||||
private final String allowedCommenterType;
|
private final String allowedCommenterType;
|
||||||
private final long mediaCount;
|
private final long mediaCount;
|
||||||
@ -28,11 +29,10 @@ public class User implements Serializable {
|
|||||||
private final long usertagsCount;
|
private final long usertagsCount;
|
||||||
private final String publicEmail;
|
private final String publicEmail;
|
||||||
private final HdProfilePicUrlInfo hdProfilePicUrlInfo;
|
private final HdProfilePicUrlInfo hdProfilePicUrlInfo;
|
||||||
private final String profileContext;
|
private final String profileContext; // "also followed by" your friends
|
||||||
private final List<UserProfileContextLink> profileContextLinksWithUserIds;
|
private final List<UserProfileContextLink> profileContextLinksWithUserIds; // ^
|
||||||
private final String socialContext;
|
private final String socialContext; // AYML
|
||||||
// if a DM member is a Facebook user, this is present
|
private final String interopMessagingUserFbid; // in DMs only: Facebook user ID
|
||||||
private final String interopMessagingUserFbid;
|
|
||||||
|
|
||||||
public User(final long pk,
|
public User(final long pk,
|
||||||
final String username,
|
final String username,
|
||||||
@ -46,6 +46,7 @@ public class User implements Serializable {
|
|||||||
final boolean isUnpublished,
|
final boolean isUnpublished,
|
||||||
final boolean isFavorite,
|
final boolean isFavorite,
|
||||||
final boolean isDirectappInstalled,
|
final boolean isDirectappInstalled,
|
||||||
|
final boolean hasChaining,
|
||||||
final String reelAutoArchive,
|
final String reelAutoArchive,
|
||||||
final String allowedCommenterType,
|
final String allowedCommenterType,
|
||||||
final long mediaCount,
|
final long mediaCount,
|
||||||
@ -73,6 +74,7 @@ public class User implements Serializable {
|
|||||||
this.isUnpublished = isUnpublished;
|
this.isUnpublished = isUnpublished;
|
||||||
this.isFavorite = isFavorite;
|
this.isFavorite = isFavorite;
|
||||||
this.isDirectappInstalled = isDirectappInstalled;
|
this.isDirectappInstalled = isDirectappInstalled;
|
||||||
|
this.hasChaining = hasChaining;
|
||||||
this.reelAutoArchive = reelAutoArchive;
|
this.reelAutoArchive = reelAutoArchive;
|
||||||
this.allowedCommenterType = allowedCommenterType;
|
this.allowedCommenterType = allowedCommenterType;
|
||||||
this.mediaCount = mediaCount;
|
this.mediaCount = mediaCount;
|
||||||
@ -90,6 +92,53 @@ public class User implements Serializable {
|
|||||||
this.interopMessagingUserFbid = interopMessagingUserFbid;
|
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() {
|
public long getPk() {
|
||||||
return pk;
|
return pk;
|
||||||
}
|
}
|
||||||
@ -149,6 +198,10 @@ public class User implements Serializable {
|
|||||||
return isDirectappInstalled;
|
return isDirectappInstalled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasChaining() {
|
||||||
|
return hasChaining;
|
||||||
|
}
|
||||||
|
|
||||||
public String getReelAutoArchive() {
|
public String getReelAutoArchive() {
|
||||||
return reelAutoArchive;
|
return reelAutoArchive;
|
||||||
}
|
}
|
||||||
@ -237,7 +290,7 @@ public class User implements Serializable {
|
|||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(pk, username, fullName, isPrivate, profilePicUrl, profilePicId, friendshipStatus, isVerified, hasAnonymousProfilePicture,
|
return Objects.hash(pk, username, fullName, isPrivate, profilePicUrl, profilePicId, friendshipStatus, isVerified, hasAnonymousProfilePicture,
|
||||||
isUnpublished, isFavorite, isDirectappInstalled, reelAutoArchive, allowedCommenterType, mediaCount, followerCount,
|
isUnpublished, isFavorite, isDirectappInstalled, hasChaining, reelAutoArchive, allowedCommenterType, mediaCount,
|
||||||
followingCount, followingTagCount, biography, externalUrl, usertagsCount, publicEmail);
|
followerCount, followingCount, followingTagCount, biography, externalUrl, usertagsCount, publicEmail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -191,9 +191,7 @@ public class SearchItem {
|
|||||||
recentSearch.getName(),
|
recentSearch.getName(),
|
||||||
false,
|
false,
|
||||||
recentSearch.getPicUrl(),
|
recentSearch.getPicUrl(),
|
||||||
null, null, false, false, false, false, false,
|
false
|
||||||
null, null, 0, 0, 0, 0, null, null,
|
|
||||||
0, null, null, null, null, null, null
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,9 +203,7 @@ public class SearchItem {
|
|||||||
favorite.getDisplayName(),
|
favorite.getDisplayName(),
|
||||||
false,
|
false,
|
||||||
favorite.getPicUrl(),
|
favorite.getPicUrl(),
|
||||||
null, null, false, false, false, false, false,
|
false
|
||||||
null, null, 0, 0, 0, 0, null, null,
|
|
||||||
0, null, null, null, null, null, null
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ public class NavigationExtensions {
|
|||||||
selectedItemTag = graphIdToTagMap.get(bottomNavigationView.getSelectedItemId());
|
selectedItemTag = graphIdToTagMap.get(bottomNavigationView.getSelectedItemId());
|
||||||
final String firstFragmentTag = graphIdToTagMap.get(firstFragmentGraphId);
|
final String firstFragmentTag = graphIdToTagMap.get(firstFragmentGraphId);
|
||||||
isOnFirstFragment = selectedItemTag != null && selectedItemTag.equals(firstFragmentTag);
|
isOnFirstFragment = selectedItemTag != null && selectedItemTag.equals(firstFragmentTag);
|
||||||
bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
|
bottomNavigationView.setOnItemSelectedListener(item -> {
|
||||||
if (fragmentManager.isStateSaved()) {
|
if (fragmentManager.isStateSaved()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -169,7 +169,7 @@ public class NavigationExtensions {
|
|||||||
private static void setupItemReselected(final BottomNavigationView bottomNavigationView,
|
private static void setupItemReselected(final BottomNavigationView bottomNavigationView,
|
||||||
final SparseArray<String> graphIdToTagMap,
|
final SparseArray<String> graphIdToTagMap,
|
||||||
final FragmentManager fragmentManager) {
|
final FragmentManager fragmentManager) {
|
||||||
bottomNavigationView.setOnNavigationItemReselectedListener(item -> {
|
bottomNavigationView.setOnItemReselectedListener(item -> {
|
||||||
final String newlySelectedItemTag = graphIdToTagMap.get(item.getItemId());
|
final String newlySelectedItemTag = graphIdToTagMap.get(item.getItemId());
|
||||||
final Fragment fragmentByTag = fragmentManager.findFragmentByTag(newlySelectedItemTag);
|
final Fragment fragmentByTag = fragmentManager.findFragmentByTag(newlySelectedItemTag);
|
||||||
if (fragmentByTag == null) {
|
if (fragmentByTag == null) {
|
||||||
|
@ -767,11 +767,7 @@ public final class ResponseBodyUtils {
|
|||||||
owner.optString("full_name"),
|
owner.optString("full_name"),
|
||||||
false,
|
false,
|
||||||
owner.optString("profile_pic_url"),
|
owner.optString("profile_pic_url"),
|
||||||
null,
|
owner.optBoolean("is_verified"));
|
||||||
friendshipStatus,
|
|
||||||
owner.optBoolean("is_verified"),
|
|
||||||
false, false, false, false, null, null, 0, 0, 0, 0, null, null, 0, null, null,
|
|
||||||
null, null, null, null);
|
|
||||||
}
|
}
|
||||||
final String id = feedItem.getString(Constants.EXTRAS_ID);
|
final String id = feedItem.getString(Constants.EXTRAS_ID);
|
||||||
VideoVersion videoVersion = null;
|
VideoVersion videoVersion = null;
|
||||||
|
@ -104,7 +104,6 @@ public final class ViewUtils {
|
|||||||
} else {
|
} else {
|
||||||
hiddenSuppressLayout($this$suppressLayoutCompat, suppress);
|
hiddenSuppressLayout($this$suppressLayoutCompat, suppress);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean tryHiddenSuppressLayout = true;
|
private static boolean tryHiddenSuppressLayout = true;
|
||||||
@ -118,6 +117,5 @@ public final class ViewUtils {
|
|||||||
tryHiddenSuppressLayout = false;
|
tryHiddenSuppressLayout = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -238,11 +238,7 @@ public class CommentsViewerViewModel extends ViewModel {
|
|||||||
null,
|
null,
|
||||||
false,
|
false,
|
||||||
owner.getString("profile_pic_url"),
|
owner.getString("profile_pic_url"),
|
||||||
null,
|
owner.optBoolean("is_verified"));
|
||||||
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);
|
|
||||||
final JSONObject likedBy = commentJsonObject.optJSONObject("edge_liked_by");
|
final JSONObject likedBy = commentJsonObject.optJSONObject("edge_liked_by");
|
||||||
final String commentId = commentJsonObject.getString("id");
|
final String commentId = commentJsonObject.getString("id");
|
||||||
final JSONObject childCommentsJsonObject = commentJsonObject.optJSONObject("edge_threaded_comments");
|
final JSONObject childCommentsJsonObject = commentJsonObject.optJSONObject("edge_threaded_comments");
|
||||||
|
@ -34,7 +34,6 @@ import retrofit2.Response;
|
|||||||
|
|
||||||
public class GraphQLService extends BaseService {
|
public class GraphQLService extends BaseService {
|
||||||
private static final String TAG = "GraphQLService";
|
private static final String TAG = "GraphQLService";
|
||||||
// private static final boolean loadFromMock = false;
|
|
||||||
|
|
||||||
private final GraphQLRepository repository;
|
private final GraphQLRepository repository;
|
||||||
|
|
||||||
@ -230,39 +229,7 @@ public class GraphQLService extends BaseService {
|
|||||||
userObject.optString("full_name"),
|
userObject.optString("full_name"),
|
||||||
userObject.optBoolean("is_private"),
|
userObject.optBoolean("is_private"),
|
||||||
userObject.getString("profile_pic_url"),
|
userObject.getString("profile_pic_url"),
|
||||||
null,
|
userObject.optBoolean("is_verified")
|
||||||
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
|
|
||||||
));
|
));
|
||||||
// userModels.add(new ProfileModel(userObject.optBoolean("is_private"),
|
// userModels.add(new ProfileModel(userObject.optBoolean("is_private"),
|
||||||
// false,
|
// false,
|
||||||
@ -357,6 +324,7 @@ public class GraphQLService extends BaseService {
|
|||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
timelineMedia.getLong("count"),
|
timelineMedia.getLong("count"),
|
||||||
|
@ -143,39 +143,7 @@ public class StoriesService extends BaseService {
|
|||||||
userJson.optString("full_name"),
|
userJson.optString("full_name"),
|
||||||
userJson.optBoolean("is_private"),
|
userJson.optBoolean("is_private"),
|
||||||
userJson.getString("profile_pic_url"),
|
userJson.getString("profile_pic_url"),
|
||||||
null,
|
userJson.optBoolean("is_verified")
|
||||||
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
|
|
||||||
);
|
);
|
||||||
final long timestamp = node.getLong("latest_reel_media");
|
final long timestamp = node.getLong("latest_reel_media");
|
||||||
final boolean fullyRead = !node.isNull("seen") && node.getLong("seen") == timestamp;
|
final boolean fullyRead = !node.isNull("seen") && node.getLong("seen") == timestamp;
|
||||||
@ -210,39 +178,7 @@ public class StoriesService extends BaseService {
|
|||||||
userJson.optString("full_name"),
|
userJson.optString("full_name"),
|
||||||
userJson.optBoolean("is_private"),
|
userJson.optBoolean("is_private"),
|
||||||
userJson.getString("profile_pic_url"),
|
userJson.getString("profile_pic_url"),
|
||||||
null,
|
userJson.optBoolean("is_verified")
|
||||||
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
|
|
||||||
);
|
);
|
||||||
feedStoryModels.add(new FeedStoryModel(
|
feedStoryModels.add(new FeedStoryModel(
|
||||||
node.getString("id"),
|
node.getString("id"),
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="top"
|
android:layout_gravity="top"
|
||||||
android:layout_marginTop="@dimen/private_page_margins"
|
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
@ -48,6 +47,8 @@
|
|||||||
android:id="@+id/privatePage1"
|
android:id="@+id/privatePage1"
|
||||||
android:layout_width="@dimen/private_page_size"
|
android:layout_width="@dimen/private_page_size"
|
||||||
android:layout_height="@dimen/private_page_size"
|
android:layout_height="@dimen/private_page_size"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible"
|
||||||
app:srcCompat="@drawable/lock" />
|
app:srcCompat="@drawable/lock" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
@ -55,6 +56,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible"
|
||||||
android:text="@string/priv_acc"
|
android:text="@string/priv_acc"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
|
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -43,7 +43,9 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/title"
|
android:layout_below="@+id/title"
|
||||||
|
android:ellipsize="end"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
|
android:maxLines="1"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
||||||
android:textSize="15sp"
|
android:textSize="15sp"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
|
@ -15,10 +15,11 @@
|
|||||||
android:transitionName="profile_pic"
|
android:transitionName="profile_pic"
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:actualImageScaleType="centerCrop"
|
app:actualImageScaleType="centerCrop"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/btnTagged"
|
app:layout_constraintBottom_toTopOf="@id/top_barrier"
|
||||||
app:layout_constraintEnd_toStartOf="@id/btnFollow"
|
app:layout_constraintEnd_toStartOf="@id/btnFollow"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintVertical_bias="0"
|
||||||
tools:foreground="@mipmap/ic_launcher"
|
tools:foreground="@mipmap/ic_launcher"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
@ -112,7 +113,7 @@
|
|||||||
app:chipBackgroundColor="@null"
|
app:chipBackgroundColor="@null"
|
||||||
app:chipIcon="@drawable/ic_outline_person_pin_24"
|
app:chipIcon="@drawable/ic_outline_person_pin_24"
|
||||||
app:chipIconTint="@color/deep_orange_800"
|
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_constraintStart_toEndOf="@id/mainProfileImage"
|
||||||
app:layout_constraintTop_toBottomOf="@id/fav_chip"
|
app:layout_constraintTop_toBottomOf="@id/fav_chip"
|
||||||
app:rippleColor="@color/deep_orange_400"
|
app:rippleColor="@color/deep_orange_400"
|
||||||
@ -128,12 +129,18 @@
|
|||||||
app:chipBackgroundColor="@null"
|
app:chipBackgroundColor="@null"
|
||||||
app:chipIcon="@drawable/ic_round_send_24"
|
app:chipIcon="@drawable/ic_round_send_24"
|
||||||
app:chipIconTint="@color/green"
|
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_constraintStart_toEndOf="@id/btnTagged"
|
||||||
app:layout_constraintTop_toBottomOf="@id/fav_chip"
|
app:layout_constraintTop_toBottomOf="@id/fav_chip"
|
||||||
app:rippleColor="@color/green"
|
app:rippleColor="@color/green"
|
||||||
tools:visibility="visible" />
|
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
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/mainFullName"
|
android:id="@+id/mainFullName"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@ -146,40 +153,37 @@
|
|||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/mainBiography"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/btnTagged"
|
app:layout_constraintTop_toBottomOf="@id/top_barrier"
|
||||||
tools:text="Austin Huang" />
|
tools:text="Austin Huang" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/isVerified"
|
android:id="@+id/isVerified"
|
||||||
android:layout_width="30dp"
|
android:layout_width="30dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="0dp"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
android:paddingTop="4dp"
|
|
||||||
android:paddingBottom="4dp"
|
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/mainFullName"
|
app:layout_constraintBottom_toBottomOf="@id/mainFullName"
|
||||||
app:layout_constraintStart_toEndOf="@id/mainFullName"
|
app:layout_constraintStart_toEndOf="@id/mainFullName"
|
||||||
app:layout_constraintTop_toBottomOf="@id/btnTagged"
|
app:layout_constraintTop_toTopOf="@id/mainFullName"
|
||||||
app:srcCompat="@drawable/verified"
|
app:srcCompat="@drawable/verified"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/isPrivate"
|
android:id="@+id/isPrivate"
|
||||||
android:layout_width="25dp"
|
android:layout_width="25dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="0dp"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
android:paddingTop="4dp"
|
|
||||||
android:paddingBottom="4dp"
|
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:tint="@color/red_500"
|
android:tint="@color/red_500"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/mainFullName"
|
app:layout_constraintBottom_toBottomOf="@id/mainFullName"
|
||||||
app:layout_constraintStart_toEndOf="@id/isVerified"
|
app:layout_constraintStart_toEndOf="@id/isVerified"
|
||||||
app:layout_constraintTop_toBottomOf="@id/btnTagged"
|
app:layout_constraintTop_toTopOf="@id/mainFullName"
|
||||||
app:srcCompat="@drawable/lock"
|
app:srcCompat="@drawable/lock"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
@ -233,6 +237,7 @@
|
|||||||
android:paddingBottom="4dp"
|
android:paddingBottom="4dp"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/profileContext"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/mainBiography"
|
app:layout_constraintTop_toBottomOf="@id/mainBiography"
|
||||||
@ -254,7 +259,7 @@
|
|||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
android:textStyle="italic"
|
android:textStyle="italic"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toTopOf="@id/counts_barrier"
|
app:layout_constraintBottom_toTopOf="@id/counts_divider"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/mainUrl"
|
app:layout_constraintTop_toBottomOf="@id/mainUrl"
|
||||||
@ -262,11 +267,12 @@
|
|||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/counts_barrier"
|
android:id="@+id/counts_divider"
|
||||||
layout="@layout/item_pref_divider"
|
layout="@layout/item_pref_divider"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/mainPostCount"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/profileContext"
|
app:layout_constraintTop_toBottomOf="@id/profileContext"
|
||||||
@ -285,7 +291,7 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
||||||
app:layout_constraintEnd_toStartOf="@id/mainFollowers"
|
app:layout_constraintEnd_toStartOf="@id/mainFollowers"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/counts_barrier"
|
app:layout_constraintTop_toBottomOf="@id/counts_divider"
|
||||||
tools:text="35\nPosts" />
|
tools:text="35\nPosts" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
@ -302,7 +308,7 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
||||||
app:layout_constraintEnd_toStartOf="@id/mainFollowing"
|
app:layout_constraintEnd_toStartOf="@id/mainFollowing"
|
||||||
app:layout_constraintStart_toEndOf="@id/mainPostCount"
|
app:layout_constraintStart_toEndOf="@id/mainPostCount"
|
||||||
app:layout_constraintTop_toBottomOf="@id/counts_barrier"
|
app:layout_constraintTop_toBottomOf="@id/counts_divider"
|
||||||
tools:text="68\nFollowers" />
|
tools:text="68\nFollowers" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
@ -319,7 +325,7 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
app:layout_constraintBottom_toBottomOf="@id/highlights_barrier"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="@id/mainFollowers"
|
app:layout_constraintStart_toEndOf="@id/mainFollowers"
|
||||||
app:layout_constraintTop_toBottomOf="@id/counts_barrier"
|
app:layout_constraintTop_toBottomOf="@id/counts_divider"
|
||||||
tools:text="64\nFollowing" />
|
tools:text="64\nFollowing" />
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Barrier
|
<androidx.constraintlayout.widget.Barrier
|
||||||
|
@ -19,9 +19,9 @@
|
|||||||
<color name="btn_lightpink_text_color">@color/text_color_light</color>
|
<color name="btn_lightpink_text_color">@color/text_color_light</color>
|
||||||
|
|
||||||
<color name="btn_orange_background">#FF5500</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_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>
|
<color name="dm_profile_button_color">#efefef</color>
|
||||||
|
|
||||||
|
@ -9,6 +9,13 @@
|
|||||||
motion:layout_constraintEnd_toEndOf="parent"
|
motion:layout_constraintEnd_toEndOf="parent"
|
||||||
motion:layout_constraintStart_toStartOf="parent"
|
motion:layout_constraintStart_toStartOf="parent"
|
||||||
motion:layout_constraintTop_toTopOf="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>
|
||||||
<ConstraintSet android:id="@+id/end">
|
<ConstraintSet android:id="@+id/end">
|
||||||
<Constraint
|
<Constraint
|
||||||
|
@ -5,7 +5,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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"
|
def nav_version = "2.3.5"
|
||||||
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
|
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
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionSha256Sum=9af5c8e7e2cd1a3b0f694a4ac262b9f38c75262e74a9e8b5101af302a6beadd7
|
distributionSha256Sum=13bf8d3cf8eeeb5770d19741a59bde9bd966dd78d17f1bbad787a05ef19d1c2d
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
Loading…
Reference in New Issue
Block a user