/* * Created by Itzik Braun on 12/3/2015. * Copyright (c) 2015 deluge. All rights reserved. * * Last Modification at: 3/12/15 4:27 PM */ package com.braunster.chatsdk.object; import android.os.Handler; import android.os.Looper; import android.text.Editable; import android.text.TextWatcher; import com.braunster.chatsdk.dao.BUser; import com.braunster.chatsdk.network.BNetworkManager; import org.apache.commons.lang3.StringUtils; /** * Created by braunster on 04/11/14. * * * This class was made to make it easy to listen to text change then save them to the right user metadata. * Also this class update the user in the server. * * Currently only for String meta data. */ public class SaveDetailTextWatcher implements TextWatcher { public static final long INDEX_DELAY_DEFAULT = 500; private long indexDelay = INDEX_DELAY_DEFAULT; private String metaKey; /** Contain the string that was last typed.*/ private Editable editable; public SaveDetailTextWatcher(long indexDelay, String metaKey) { this.indexDelay = indexDelay; this.metaKey = metaKey; } public SaveDetailTextWatcher(String metaKey) { this.metaKey = metaKey; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { editable = s; handler.removeCallbacks(indexRunnable); handler.postDelayed(indexRunnable, INDEX_DELAY_DEFAULT); } private Handler handler = new Handler(Looper.getMainLooper()); private Runnable indexRunnable = new Runnable() { @Override public void run() { if (StringUtils.isBlank(editable.toString())) return; BUser user = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel(); String metadata = user.metaStringForKey(metaKey); if (StringUtils.isNotBlank(metadata) && metadata.equals(editable.toString())) return; user.setMetadataString(metaKey, editable.toString()); BNetworkManager.sharedManager().getNetworkAdapter().pushUser(); } }; }