Files
rr3-apk/decompiled-community/sources/com/facebook/share/ShareApi.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

574 lines
26 KiB
Java

package com.facebook.share;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import com.facebook.AccessToken;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookGraphResponseException;
import com.facebook.FacebookRequestError;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.HttpMethod;
import com.facebook.internal.CollectionMapper;
import com.facebook.internal.Mutable;
import com.facebook.internal.NativeProtocol;
import com.facebook.internal.Utility;
import com.facebook.internal.instrument.crashshield.CrashShieldHandler;
import com.facebook.share.Sharer;
import com.facebook.share.internal.ShareConstants;
import com.facebook.share.internal.ShareContentValidation;
import com.facebook.share.internal.ShareInternalUtility;
import com.facebook.share.internal.VideoUploader;
import com.facebook.share.model.ShareContent;
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.model.SharePhoto;
import com.facebook.share.model.SharePhotoContent;
import com.facebook.share.model.ShareVideoContent;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes2.dex */
public final class ShareApi {
private static final String DEFAULT_CHARSET = "UTF-8";
private static final String DEFAULT_GRAPH_NODE = "me";
private static final String GRAPH_PATH_FORMAT = "%s/%s";
private static final String PHOTOS_EDGE = "photos";
private static final String TAG = "ShareApi";
private String graphNode = "me";
private String message;
private final ShareContent shareContent;
public static /* synthetic */ void access$000(ShareApi shareApi, ArrayList arrayList, CollectionMapper.OnMapValueCompleteListener onMapValueCompleteListener) {
if (CrashShieldHandler.isObjectCrashing(ShareApi.class)) {
return;
}
try {
shareApi.stageArrayList(arrayList, onMapValueCompleteListener);
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, ShareApi.class);
}
}
public static /* synthetic */ void access$100(ShareApi shareApi, SharePhoto sharePhoto, CollectionMapper.OnMapValueCompleteListener onMapValueCompleteListener) {
if (CrashShieldHandler.isObjectCrashing(ShareApi.class)) {
return;
}
try {
shareApi.stagePhoto(sharePhoto, onMapValueCompleteListener);
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, ShareApi.class);
}
}
public static void share(ShareContent shareContent, FacebookCallback<Sharer.Result> facebookCallback) {
if (CrashShieldHandler.isObjectCrashing(ShareApi.class)) {
return;
}
try {
new ShareApi(shareContent).share(facebookCallback);
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, ShareApi.class);
}
}
public ShareApi(ShareContent shareContent) {
this.shareContent = shareContent;
}
public String getMessage() {
if (CrashShieldHandler.isObjectCrashing(this)) {
return null;
}
try {
return this.message;
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
return null;
}
}
public void setMessage(String str) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
this.message = str;
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
public String getGraphNode() {
if (CrashShieldHandler.isObjectCrashing(this)) {
return null;
}
try {
return this.graphNode;
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
return null;
}
}
public void setGraphNode(String str) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
this.graphNode = str;
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
public ShareContent getShareContent() {
if (CrashShieldHandler.isObjectCrashing(this)) {
return null;
}
try {
return this.shareContent;
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
return null;
}
}
public boolean canShare() {
if (CrashShieldHandler.isObjectCrashing(this)) {
return false;
}
try {
if (getShareContent() == null) {
return false;
}
AccessToken currentAccessToken = AccessToken.getCurrentAccessToken();
if (!AccessToken.isCurrentAccessTokenActive()) {
return false;
}
Set<String> permissions = currentAccessToken.getPermissions();
if (permissions != null && permissions.contains("publish_actions")) {
return true;
}
Log.w(TAG, "The publish_actions permissions are missing, the share will fail unless this app was authorized to publish in another installation.");
return true;
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
return false;
}
}
public void share(FacebookCallback<Sharer.Result> facebookCallback) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
if (!canShare()) {
ShareInternalUtility.invokeCallbackWithError(facebookCallback, "Insufficient permissions for sharing content via Api.");
return;
}
ShareContent shareContent = getShareContent();
try {
ShareContentValidation.validateForApiShare(shareContent);
if (shareContent instanceof ShareLinkContent) {
shareLinkContent((ShareLinkContent) shareContent, facebookCallback);
} else if (shareContent instanceof SharePhotoContent) {
sharePhotoContent((SharePhotoContent) shareContent, facebookCallback);
} else if (shareContent instanceof ShareVideoContent) {
shareVideoContent((ShareVideoContent) shareContent, facebookCallback);
}
} catch (FacebookException e) {
ShareInternalUtility.invokeCallbackWithException(facebookCallback, e);
}
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
private String getGraphPath(String str) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return null;
}
try {
return String.format(Locale.ROOT, GRAPH_PATH_FORMAT, URLEncoder.encode(getGraphNode(), "UTF-8"), str);
} catch (UnsupportedEncodingException unused) {
return null;
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
return null;
}
}
private void addCommonParameters(Bundle bundle, ShareContent shareContent) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
List<String> peopleIds = shareContent.getPeopleIds();
if (!Utility.isNullOrEmpty(peopleIds)) {
bundle.putString("tags", TextUtils.join(", ", peopleIds));
}
if (!Utility.isNullOrEmpty(shareContent.getPlaceId())) {
bundle.putString("place", shareContent.getPlaceId());
}
if (!Utility.isNullOrEmpty(shareContent.getPageId())) {
bundle.putString("page", shareContent.getPageId());
}
if (Utility.isNullOrEmpty(shareContent.getRef())) {
return;
}
bundle.putString("ref", shareContent.getRef());
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
private static void handleImagesOnAction(Bundle bundle) {
if (CrashShieldHandler.isObjectCrashing(ShareApi.class)) {
return;
}
try {
String string = bundle.getString("image");
if (string != null) {
try {
try {
JSONArray jSONArray = new JSONArray(string);
for (int i = 0; i < jSONArray.length(); i++) {
JSONObject optJSONObject = jSONArray.optJSONObject(i);
if (optJSONObject != null) {
putImageInBundleWithArrayFormat(bundle, i, optJSONObject);
} else {
bundle.putString(String.format(Locale.ROOT, "image[%d][url]", Integer.valueOf(i)), jSONArray.getString(i));
}
}
bundle.remove("image");
} catch (JSONException unused) {
}
} catch (JSONException unused2) {
putImageInBundleWithArrayFormat(bundle, 0, new JSONObject(string));
bundle.remove("image");
}
}
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, ShareApi.class);
}
}
private static void putImageInBundleWithArrayFormat(Bundle bundle, int i, JSONObject jSONObject) throws JSONException {
if (CrashShieldHandler.isObjectCrashing(ShareApi.class)) {
return;
}
try {
Iterator<String> keys = jSONObject.keys();
while (keys.hasNext()) {
String next = keys.next();
bundle.putString(String.format(Locale.ROOT, "image[%d][%s]", Integer.valueOf(i), next), jSONObject.get(next).toString());
}
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, ShareApi.class);
}
}
/* JADX WARN: Multi-variable type inference failed */
/* JADX WARN: Type inference failed for: r12v7, types: [T, java.lang.Integer] */
private void sharePhotoContent(SharePhotoContent sharePhotoContent, final FacebookCallback<Sharer.Result> facebookCallback) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
final Mutable mutable = new Mutable(0);
AccessToken currentAccessToken = AccessToken.getCurrentAccessToken();
ArrayList arrayList = new ArrayList();
final ArrayList arrayList2 = new ArrayList();
final ArrayList arrayList3 = new ArrayList();
GraphRequest.Callback callback = new GraphRequest.Callback() { // from class: com.facebook.share.ShareApi.1
/* JADX WARN: Multi-variable type inference failed */
/* JADX WARN: Type inference failed for: r1v4, types: [T, java.lang.Integer] */
@Override // com.facebook.GraphRequest.Callback
public void onCompleted(GraphResponse graphResponse) {
JSONObject jSONObject = graphResponse.getJSONObject();
if (jSONObject != null) {
arrayList2.add(jSONObject);
}
if (graphResponse.getError() != null) {
arrayList3.add(graphResponse);
}
mutable.value = Integer.valueOf(((Integer) r0.value).intValue() - 1);
if (((Integer) mutable.value).intValue() == 0) {
if (!arrayList3.isEmpty()) {
ShareInternalUtility.invokeCallbackWithResults(facebookCallback, null, (GraphResponse) arrayList3.get(0));
} else {
if (arrayList2.isEmpty()) {
return;
}
ShareInternalUtility.invokeCallbackWithResults(facebookCallback, ((JSONObject) arrayList2.get(0)).optString("id"), graphResponse);
}
}
}
};
try {
for (SharePhoto sharePhoto : sharePhotoContent.getPhotos()) {
try {
Bundle sharePhotoCommonParameters = getSharePhotoCommonParameters(sharePhoto, sharePhotoContent);
Bitmap bitmap = sharePhoto.getBitmap();
Uri imageUrl = sharePhoto.getImageUrl();
String caption = sharePhoto.getCaption();
if (caption == null) {
caption = getMessage();
}
String str = caption;
if (bitmap != null) {
arrayList.add(GraphRequest.newUploadPhotoRequest(currentAccessToken, getGraphPath(PHOTOS_EDGE), bitmap, str, sharePhotoCommonParameters, callback));
} else if (imageUrl != null) {
arrayList.add(GraphRequest.newUploadPhotoRequest(currentAccessToken, getGraphPath(PHOTOS_EDGE), imageUrl, str, sharePhotoCommonParameters, callback));
}
} catch (JSONException e) {
ShareInternalUtility.invokeCallbackWithException(facebookCallback, e);
return;
}
}
mutable.value = Integer.valueOf(((Integer) mutable.value).intValue() + arrayList.size());
Iterator it = arrayList.iterator();
while (it.hasNext()) {
((GraphRequest) it.next()).executeAsync();
}
} catch (FileNotFoundException e2) {
ShareInternalUtility.invokeCallbackWithException(facebookCallback, e2);
}
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
private void shareLinkContent(ShareLinkContent shareLinkContent, final FacebookCallback<Sharer.Result> facebookCallback) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
GraphRequest.Callback callback = new GraphRequest.Callback() { // from class: com.facebook.share.ShareApi.2
@Override // com.facebook.GraphRequest.Callback
public void onCompleted(GraphResponse graphResponse) {
JSONObject jSONObject = graphResponse.getJSONObject();
ShareInternalUtility.invokeCallbackWithResults(facebookCallback, jSONObject == null ? null : jSONObject.optString("id"), graphResponse);
}
};
Bundle bundle = new Bundle();
addCommonParameters(bundle, shareLinkContent);
bundle.putString("message", getMessage());
bundle.putString("link", Utility.getUriString(shareLinkContent.getContentUrl()));
bundle.putString("ref", shareLinkContent.getRef());
new GraphRequest(AccessToken.getCurrentAccessToken(), getGraphPath("feed"), bundle, HttpMethod.POST, callback).executeAsync();
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
private void shareVideoContent(ShareVideoContent shareVideoContent, FacebookCallback<Sharer.Result> facebookCallback) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
try {
VideoUploader.uploadAsync(shareVideoContent, getGraphNode(), facebookCallback);
} catch (FileNotFoundException e) {
ShareInternalUtility.invokeCallbackWithException(facebookCallback, e);
}
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
private Bundle getSharePhotoCommonParameters(SharePhoto sharePhoto, SharePhotoContent sharePhotoContent) throws JSONException {
if (CrashShieldHandler.isObjectCrashing(this)) {
return null;
}
try {
Bundle parameters = sharePhoto.getParameters();
if (!parameters.containsKey("place") && !Utility.isNullOrEmpty(sharePhotoContent.getPlaceId())) {
parameters.putString("place", sharePhotoContent.getPlaceId());
}
if (!parameters.containsKey("tags") && !Utility.isNullOrEmpty(sharePhotoContent.getPeopleIds())) {
List<String> peopleIds = sharePhotoContent.getPeopleIds();
if (!Utility.isNullOrEmpty(peopleIds)) {
JSONArray jSONArray = new JSONArray();
for (String str : peopleIds) {
JSONObject jSONObject = new JSONObject();
jSONObject.put("tag_uid", str);
jSONArray.put(jSONObject);
}
parameters.putString("tags", jSONArray.toString());
}
}
if (!parameters.containsKey("ref") && !Utility.isNullOrEmpty(sharePhotoContent.getRef())) {
parameters.putString("ref", sharePhotoContent.getRef());
}
return parameters;
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
return null;
}
}
private void stageArrayList(final ArrayList arrayList, final CollectionMapper.OnMapValueCompleteListener onMapValueCompleteListener) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
final JSONArray jSONArray = new JSONArray();
stageCollectionValues(new CollectionMapper.Collection<Integer>() { // from class: com.facebook.share.ShareApi.3
@Override // com.facebook.internal.CollectionMapper.Collection
public Iterator<Integer> keyIterator() {
final int size = arrayList.size();
final Mutable mutable = new Mutable(0);
return new Iterator<Integer>() { // from class: com.facebook.share.ShareApi.3.1
@Override // java.util.Iterator
public void remove() {
}
/* JADX WARN: Multi-variable type inference failed */
@Override // java.util.Iterator
public boolean hasNext() {
return ((Integer) mutable.value).intValue() < size;
}
/* JADX WARN: Can't rename method to resolve collision */
/* JADX WARN: Multi-variable type inference failed */
/* JADX WARN: Type inference failed for: r1v4, types: [T, java.lang.Integer] */
@Override // java.util.Iterator
public Integer next() {
Mutable mutable2 = mutable;
T t = mutable2.value;
Integer num = (Integer) t;
mutable2.value = Integer.valueOf(((Integer) t).intValue() + 1);
return num;
}
};
}
@Override // com.facebook.internal.CollectionMapper.Collection
public Object get(Integer num) {
return arrayList.get(num.intValue());
}
@Override // com.facebook.internal.CollectionMapper.Collection
public void set(Integer num, Object obj, CollectionMapper.OnErrorListener onErrorListener) {
try {
jSONArray.put(num.intValue(), obj);
} catch (JSONException e) {
String localizedMessage = e.getLocalizedMessage();
if (localizedMessage == null) {
localizedMessage = "Error staging object.";
}
onErrorListener.onError(new FacebookException(localizedMessage));
}
}
}, new CollectionMapper.OnMapperCompleteListener() { // from class: com.facebook.share.ShareApi.4
@Override // com.facebook.internal.CollectionMapper.OnMapperCompleteListener
public void onComplete() {
onMapValueCompleteListener.onComplete(jSONArray);
}
@Override // com.facebook.internal.CollectionMapper.OnErrorListener
public void onError(FacebookException facebookException) {
onMapValueCompleteListener.onError(facebookException);
}
});
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
private <T> void stageCollectionValues(CollectionMapper.Collection<T> collection, CollectionMapper.OnMapperCompleteListener onMapperCompleteListener) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
CollectionMapper.iterate(collection, new CollectionMapper.ValueMapper() { // from class: com.facebook.share.ShareApi.5
@Override // com.facebook.internal.CollectionMapper.ValueMapper
public void mapValue(Object obj, CollectionMapper.OnMapValueCompleteListener onMapValueCompleteListener) {
if (obj instanceof ArrayList) {
ShareApi.access$000(ShareApi.this, (ArrayList) obj, onMapValueCompleteListener);
} else if (obj instanceof SharePhoto) {
ShareApi.access$100(ShareApi.this, (SharePhoto) obj, onMapValueCompleteListener);
} else {
onMapValueCompleteListener.onComplete(obj);
}
}
}, onMapperCompleteListener);
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
private void stagePhoto(final SharePhoto sharePhoto, final CollectionMapper.OnMapValueCompleteListener onMapValueCompleteListener) {
if (CrashShieldHandler.isObjectCrashing(this)) {
return;
}
try {
Bitmap bitmap = sharePhoto.getBitmap();
Uri imageUrl = sharePhoto.getImageUrl();
if (bitmap == null && imageUrl == null) {
onMapValueCompleteListener.onError(new FacebookException("Photos must have an imageURL or bitmap."));
return;
}
GraphRequest.Callback callback = new GraphRequest.Callback() { // from class: com.facebook.share.ShareApi.6
@Override // com.facebook.GraphRequest.Callback
public void onCompleted(GraphResponse graphResponse) {
FacebookRequestError error = graphResponse.getError();
if (error != null) {
String errorMessage = error.getErrorMessage();
onMapValueCompleteListener.onError(new FacebookGraphResponseException(graphResponse, errorMessage != null ? errorMessage : "Error staging photo."));
return;
}
JSONObject jSONObject = graphResponse.getJSONObject();
if (jSONObject == null) {
onMapValueCompleteListener.onError(new FacebookException("Error staging photo."));
return;
}
String optString = jSONObject.optString(ShareConstants.MEDIA_URI);
if (optString == null) {
onMapValueCompleteListener.onError(new FacebookException("Error staging photo."));
return;
}
JSONObject jSONObject2 = new JSONObject();
try {
jSONObject2.put("url", optString);
jSONObject2.put(NativeProtocol.IMAGE_USER_GENERATED_KEY, sharePhoto.getUserGenerated());
onMapValueCompleteListener.onComplete(jSONObject2);
} catch (JSONException e) {
String localizedMessage = e.getLocalizedMessage();
onMapValueCompleteListener.onError(new FacebookException(localizedMessage != null ? localizedMessage : "Error staging photo."));
}
}
};
if (bitmap != null) {
ShareInternalUtility.newUploadStagingResourceWithImageRequest(AccessToken.getCurrentAccessToken(), bitmap, callback).executeAsync();
return;
}
try {
ShareInternalUtility.newUploadStagingResourceWithImageRequest(AccessToken.getCurrentAccessToken(), imageUrl, callback).executeAsync();
} catch (FileNotFoundException e) {
String localizedMessage = e.getLocalizedMessage();
if (localizedMessage == null) {
localizedMessage = "Error staging photo.";
}
onMapValueCompleteListener.onError(new FacebookException(localizedMessage));
}
} catch (Throwable th) {
CrashShieldHandler.handleThrowable(th, this);
}
}
}