From 3739453ee4b0ce35071c82d507341ab3f8017018 Mon Sep 17 00:00:00 2001 From: Dmitry Yunitsky Date: Sat, 9 Aug 2014 22:21:41 +0300 Subject: [PATCH] FB promo dialog. --- android/AndroidManifest.xml | 6 ++ .../src/com/mapswithme/maps/MWMActivity.java | 91 +++++++++++++++++ .../src/com/mapswithme/util/Constants.java | 1 + android/src/com/mapswithme/util/FbUtil.java | 98 +++++++++++++++++++ 4 files changed, 196 insertions(+) diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index d7bad589ef..5ed0f8832a 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -48,6 +48,10 @@ android:label="@string/app_name" android:theme="@style/MWMMain"> + + @@ -190,6 +194,8 @@ android:label="@string/more_apps_title" android:screenOrientation="behind"/> + + PUBLISH_PERMISSIONS = Arrays.asList("publish_actions"); + public static void activate(Context context) { if (!Statistics.INSTANCE.isStatisticsEnabled(context)) @@ -23,5 +42,84 @@ public class FbUtil AppEventsLogger.activateApp(context, context.getString(R.string.fb_app_id)); } + public static boolean isSubsetOf(Collection subset, Collection superset) + { + for (String string : subset) + { + if (!superset.contains(string)) + return false; + } + + return true; + } + + /** + * Tries to get session with publish permissions and create a promo post. + * + * @param activity + * @return true, if should reauthorize + */ + public static boolean makeFbPromoPost(Activity activity) + { + Session session = Session.getActiveSession(); + + if (session != null) + { + // check publish permissions + List permissions = session.getPermissions(); + if (!FbUtil.isSubsetOf(PUBLISH_PERMISSIONS, permissions)) + { + Session.NewPermissionsRequest newPermissionsRequest = new Session + .NewPermissionsRequest(activity, PUBLISH_PERMISSIONS); + session.requestNewPublishPermissions(newPermissionsRequest); + return true; + } + + final Bundle postParams = new Bundle(); + postParams.putString("message", activity.getString(R.string.maps_me_is_free_today_facebook_post_android)); + postParams.putString("link", PROMO_MARKET_URL); + postParams.putString("picture", PROMO_IMAGE_URL); + + Request.Callback callback = new Request.Callback() + { + public void onCompleted(Response response) + { + FacebookRequestError error = response.getError(); + if (error != null) + Utils.toastShortcut(MWMApplication.get(), error.getErrorMessage()); + } + }; + + Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback); + + RequestAsyncTask task = new RequestAsyncTask(request); + task.execute(); + } + + return false; + } + + public static boolean isPromoTimeNow() + { + final int promoYear = 2014; + final int promoDateStart = 17; + final int promoDateEnd = 18; + final int promoHourStart = 2; + final int promoHourEnd = 22; + final Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, promoYear); + calendar.set(Calendar.MONTH, Calendar.AUGUST); + calendar.set(Calendar.DAY_OF_MONTH, promoDateStart); + calendar.set(Calendar.HOUR_OF_DAY, promoHourStart); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + final long startMillis = calendar.getTimeInMillis(); + calendar.set(Calendar.DAY_OF_MONTH, promoDateEnd); + calendar.set(Calendar.HOUR_OF_DAY, promoHourEnd); + final long endMillis = calendar.getTimeInMillis(); + + return System.currentTimeMillis() > startMillis && System.currentTimeMillis() < endMillis; + } + private FbUtil() {} }