ProfileFragment: Make good use of the cached profile
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
d00480a3a5
commit
d6d6f34088
@ -8,6 +8,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.wireguard.android.databinding.ProfileDetailFragmentBinding;
|
||||
import com.wireguard.config.Profile;
|
||||
|
||||
/**
|
||||
* Fragment for viewing information about a WireGuard profile.
|
||||
@ -16,6 +17,12 @@ import com.wireguard.android.databinding.ProfileDetailFragmentBinding;
|
||||
public class ProfileDetailFragment extends ProfileFragment {
|
||||
private ProfileDetailFragmentBinding binding;
|
||||
|
||||
@Override
|
||||
protected void onCachedProfileChanged(Profile cachedProfile) {
|
||||
if (binding != null)
|
||||
binding.setProfile(cachedProfile);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -33,17 +40,4 @@ public class ProfileDetailFragment extends ProfileFragment {
|
||||
binding.setProfile(getCachedProfile());
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected(ProfileServiceInterface service) {
|
||||
super.onServiceConnected(service);
|
||||
binding.setProfile(service.getProfiles().get(getProfile()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProfile(String profile) {
|
||||
super.setProfile(profile);
|
||||
if (binding != null)
|
||||
binding.setProfile(getCachedProfile());
|
||||
}
|
||||
}
|
||||
|
@ -20,14 +20,17 @@ abstract class ProfileFragment extends ServiceClientFragment<ProfileServiceInter
|
||||
return profile;
|
||||
}
|
||||
|
||||
protected void onCachedProfileChanged(Profile cachedProfile) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
// Restore the saved profile if there is one; otherwise grab it from the arguments.
|
||||
if (savedInstanceState != null)
|
||||
profile = savedInstanceState.getString(ProfileActivity.KEY_PROFILE_NAME);
|
||||
setProfile(savedInstanceState.getString(ProfileActivity.KEY_PROFILE_NAME));
|
||||
else if (getArguments() != null)
|
||||
profile = getArguments().getString(ProfileActivity.KEY_PROFILE_NAME);
|
||||
setProfile(getArguments().getString(ProfileActivity.KEY_PROFILE_NAME));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -39,15 +42,20 @@ abstract class ProfileFragment extends ServiceClientFragment<ProfileServiceInter
|
||||
@Override
|
||||
public void onServiceConnected(ProfileServiceInterface service) {
|
||||
super.onServiceConnected(service);
|
||||
cachedProfile = service.getProfiles().get(profile);
|
||||
updateCachedProfile(service);
|
||||
}
|
||||
|
||||
public void setProfile(String profile) {
|
||||
this.profile = profile;
|
||||
final ProfileServiceInterface service = getService();
|
||||
if (service != null)
|
||||
cachedProfile = service.getProfiles().get(profile);
|
||||
else
|
||||
cachedProfile = null;
|
||||
updateCachedProfile(getService());
|
||||
}
|
||||
|
||||
private void updateCachedProfile(ProfileServiceInterface service) {
|
||||
final Profile newCachedProfile = service != null
|
||||
? service.getProfiles().get(profile) : null;
|
||||
if (newCachedProfile != cachedProfile) {
|
||||
cachedProfile = newCachedProfile;
|
||||
onCachedProfileChanged(newCachedProfile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user