refactor(perf): initial optimizations for concurrent requests. Profile now loads faster

This commit is contained in:
LucasGGamerM
2023-02-24 15:55:49 -03:00
parent 1d55354be2
commit 5d11bee59d
2 changed files with 8 additions and 25 deletions

View File

@@ -5,7 +5,6 @@ import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import org.joinmastodon.android.R; import org.joinmastodon.android.R;
import org.joinmastodon.android.api.ObjectValidationException;
import org.joinmastodon.android.api.requests.accounts.GetAccountByHandle; import org.joinmastodon.android.api.requests.accounts.GetAccountByHandle;
import org.joinmastodon.android.api.requests.accounts.GetAccountByID; import org.joinmastodon.android.api.requests.accounts.GetAccountByID;
import org.joinmastodon.android.api.requests.search.GetSearchResults; import org.joinmastodon.android.api.requests.search.GetSearchResults;
@@ -13,14 +12,11 @@ import org.joinmastodon.android.api.requests.statuses.GetStatusByID;
import org.joinmastodon.android.api.requests.timelines.GetPublicTimeline; import org.joinmastodon.android.api.requests.timelines.GetPublicTimeline;
import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.Account;
import org.joinmastodon.android.model.Filter; import org.joinmastodon.android.model.Filter;
import org.joinmastodon.android.model.Hashtag;
import org.joinmastodon.android.model.SearchResult;
import org.joinmastodon.android.model.SearchResults; import org.joinmastodon.android.model.SearchResults;
import org.joinmastodon.android.model.Status; import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.model.TimelineDefinition; import org.joinmastodon.android.model.TimelineDefinition;
import org.joinmastodon.android.utils.StatusFilterPredicate; import org.joinmastodon.android.utils.StatusFilterPredicate;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -52,11 +48,6 @@ public class CustomLocalTimelineFragment extends StatusListFragment {
setTitle(this.domain); setTitle(this.domain);
} }
// @Override
// protected TimelineDefinition makeTimelineDefinition() {
// return TimelineDefinition.ofCustomLocalTimeline(domain);
// }
@Override @Override
protected void doLoadData(int offset, int count){ protected void doLoadData(int offset, int count){
currentRequest=new GetPublicTimeline(true, false, refreshing ? null : maxID, count) currentRequest=new GetPublicTimeline(true, false, refreshing ? null : maxID, count)
@@ -67,30 +58,21 @@ public class CustomLocalTimelineFragment extends StatusListFragment {
maxID=result.get(result.size()-1).id; maxID=result.get(result.size()-1).id;
if (getActivity() == null) return; if (getActivity() == null) return;
result=result.stream().filter(new StatusFilterPredicate(accountID, Filter.FilterContext.PUBLIC)).collect(Collectors.toList()); result=result.stream().filter(new StatusFilterPredicate(accountID, Filter.FilterContext.PUBLIC)).collect(Collectors.toList());
result.stream().forEach(status -> { result.stream().forEach(status -> {
status.account.acct += "@"+domain; status.account.acct += "@"+domain;
currentRequest=new GetSearchResults(status.url, null, true) status.reloadWhenClicked = true;
.setCallback(new Callback<>(){ new GetAccountByHandle(status.account.acct)
.setCallback(new Callback<Account>() {
@Override @Override
public void onSuccess(SearchResults result){ public void onSuccess(Account result) {
status.id = result.statuses.get(0).id; status.account.id = result.id;
status.account.id = result.statuses.get(0).account.id;
status.account.note = result.statuses.get(0).account.note;
status.account = result.statuses.get(0).account;
try {
status.account.postprocess();
} catch (ObjectValidationException e) {
throw new RuntimeException(e);
}
} }
@Override @Override
public void onError(ErrorResponse error){ public void onError(ErrorResponse error) {
error.showToast(getContext()); error.showToast(getContext());
} }
}) }).exec(accountID);
.exec(accountID);
}); });
onDataLoaded(result, !result.isEmpty()); onDataLoaded(result, !result.isEmpty());

View File

@@ -62,6 +62,7 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{
public transient boolean spoilerRevealed; public transient boolean spoilerRevealed;
public transient boolean textExpanded, textExpandable; public transient boolean textExpanded, textExpandable;
public transient boolean hasGapAfter; public transient boolean hasGapAfter;
public boolean reloadWhenClicked;
private transient String strippedText; private transient String strippedText;
@Override @Override