/******************************************************************************* * Copyright 2013 PAR Works, Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package com.parworks.mars.view.siteexplorer; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.Toast; import com.facebook.Request; import com.facebook.Response; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.model.GraphUser; import com.parworks.androidlibrary.ar.ARErrorListener; import com.parworks.androidlibrary.ar.ARListener; import com.parworks.androidlibrary.ar.ARSite; import com.parworks.androidlibrary.ar.ARSites; import com.parworks.mars.model.sync.SyncHandler; import com.parworks.mars.utils.User; public class AddCommentManager implements android.view.View.OnClickListener { public static final String TAG = AddCommentManager.class.getName(); private final Activity mActivity; private final String mSiteId; private ProgressDialog mProgressDialog; public AddCommentManager(Activity activity, String siteId) { mActivity = activity; mSiteId = siteId; mProgressDialog = new ProgressDialog(mActivity); mProgressDialog.setMessage("Loading..."); mProgressDialog.setIndeterminate(true); } @Override public void onClick(View view) { final View localView = view; if (User.getUserId(mActivity.getBaseContext()).length() > 0) { mActivity.startActivity(new Intent(mActivity, LeaveCommentActivity.class).putExtra("siteId", mSiteId)); } else { localView.setEnabled(false); mProgressDialog.show(); Session.openActiveSession(mActivity, true, new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session, SessionState state, Exception exception) { Log.d(TAG, "call"); if (session.isOpened()) { // make request to the /me API Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { // callback after Graph API response // with user object @Override public void onCompleted( GraphUser user, Response response) { Log.d(TAG, "onCompleted"); if (user != null) { User.setUserId( user.getId(), mActivity .getBaseContext()); User.setUserName( user.getName(), mActivity .getBaseContext()); mActivity .startActivity(new Intent( mActivity, LeaveCommentActivity.class) .putExtra( "siteId", mSiteId)); } else { Log.e(TAG, "User was null."); } localView.setEnabled(true); mProgressDialog.dismiss(); } }); } else { if (exception != null) { Toast.makeText(mActivity, "Failed to login to facebook.", Toast.LENGTH_SHORT).show(); Log.d(TAG, "CALL EXCEPTION WAS: " + exception.getMessage()); Log.d(TAG, "APP ID: " + session .getApplicationId()); Log.e(TAG, "session not opened."); Log.e(TAG, session.getState() + ""); Log.e(TAG, session.toString()); } localView.setEnabled(true); mProgressDialog.dismiss(); } } }); } } public void facebookOnActivityResult(int requestCode, int resultCode, Intent data) { Session.getActiveSession().onActivityResult(mActivity, requestCode, resultCode, data); } public void addComment(String userId, String userName, String commentText) { storeComment(userId, userName, commentText); } private void storeComment(final String userId, final String userName, final String comment) { ARSites sites = User.getARSites(); sites.getExisting(mSiteId, new ARListener<ARSite>() { @Override public void handleResponse(ARSite resp) { resp.addComment(userId, userName, comment, new ARListener<Void>() { @Override public void handleResponse(Void resp) { SyncHandler.syncSiteComments(mSiteId); Toast.makeText(mActivity, "Comment added!", Toast.LENGTH_SHORT).show(); } }, new ARErrorListener() { @Override public void handleError(Exception error) { Log.e(TAG, error.getMessage()); } }); } }, new ARErrorListener() { @Override public void handleError(Exception error) { Log.e(TAG, error.getMessage()); } }); } }