Esempio n. 1
0
 public MegacoolReceivedShareOpenedEvent(bool isFirstSession, string senderUserId,
                                         MegacoolShare share, DateTime createdAt)
 {
     IsFirstSession = isFirstSession;
     SenderUserId   = senderUserId;
     Share          = share;
     CreatedAt      = createdAt;
 }
    public static MegacoolSentShareOpenedEvent BuildSentShareOpenedEvent(ref MCLSentShareOpenedEvent e)
    {
        string        receiverUserId = string.Copy(e.receiver_user_id);
        MegacoolShare share          = BuildShare(ref e.share);
        DateTime      createdAt      = epoch.AddSeconds(e.created_at).ToLocalTime();

        return(new MegacoolSentShareOpenedEvent(e.is_first_session, receiverUserId, share,
                                                createdAt));
    }
    // Creates and sends a referral link to a friend
    void ReferAFriend()
    {
        Dictionary <string, string> data = new Dictionary <string, string>();

        data.Add("welcomeText", "Nick has invited you!");
        MegacoolShare share = new MegacoolShare("referral", data);

        Megacool.Instance.Share(new MegacoolShareConfig {
            Share       = share,
            RecordingId = "_guaranteedToBeUniqueRecordingId",
        });
    }
    void shares(AndroidJavaObject jShares)
    {
        int size = jShares.Call <int>("size");
        List <MegacoolShare> result = new List <MegacoolShare>(size);

        for (int i = 0; i < size; i++)
        {
            AndroidJavaObject jShare = jShares.Call <AndroidJavaObject>("get", i);
            MegacoolShare     share  = MegacoolAndroidAgent.BuildShare(jShare);
            result.Add(share);
        }
        shareHandler(result);
    }
    public static MegacoolSentShareOpenedEvent BuildSentShareOpenedEvent(AndroidJavaObject jEvent)
    {
        bool     isFirstSession = jEvent.Call <bool>("isFirstSession");
        string   receiverUserId = jEvent.Call <string>("getReceiverUserId");
        long     createdTime    = jEvent.Call <AndroidJavaObject>("getCreatedAt").Call <long>("getTime");
        DateTime createdAt      = _epoch.AddMilliseconds(createdTime).ToLocalTime();

        AndroidJavaObject jShare = null;

        try {
            jShare = jEvent.Call <AndroidJavaObject>("getShare");
#pragma warning disable RECS0022 // Methods that return null will throw on older versions of Unity
        } catch (Exception) { }
#pragma warning restore RECS0022
        MegacoolShare share = BuildShare(jShare);
        return(new MegacoolSentShareOpenedEvent(isFirstSession, receiverUserId, share, createdAt));
    }
Esempio n. 6
0
    public MegacoolEvent(Megacool.MegacoolSentShareOpenedEvent e)
    {
        Share        = new MegacoolShare(e);
        Type         = MegacoolEventType.SentShareOpened;
        FirstSession = e.isFirstSession != 0;

        if (e.eventDataLength > 0)
        {
            byte[] bytes = new byte[e.eventDataLength];
            Marshal.Copy(e.eventDataBytes, bytes, 0, e.eventDataLength);

            Data = MegacoolThirdParty_MiniJSON.Json.Deserialize(System.Text.Encoding.UTF8.GetString(bytes)) as Dictionary <string, object>;
        }
        else
        {
            Data = new Dictionary <string, object>();
        }
    }
Esempio n. 7
0
    public MegacoolEvent(AndroidJavaObject jEvent)
    {
        try {
            Share = new MegacoolShare(jEvent.Call <AndroidJavaObject>("getShare"));
        } catch (Exception) {}
        string jType = jEvent.Get <AndroidJavaObject>("type").Call <string>("toString");

        if (jType == "LINK_CLICKED")
        {
            Type = MegacoolEventType.LinkClicked;
        }
        else if (jType == "SENT_SHARE_OPENED")
        {
            Type = MegacoolEventType.SentShareOpened;
        }
        else
        {
            Type = MegacoolEventType.ReceivedShareOpened;
        }
        FirstSession = jEvent.Call <bool>("isFirstSession");
        Data         = new Dictionary <string, object>();
        try {
            AndroidJavaObject jData = jEvent.Call <AndroidJavaObject>("getData");
            try {
                AndroidJavaObject jUrl = jData.Call <AndroidJavaObject>("get", "url");
                Data.Add("url", jUrl.Call <string>("toString"));
            } catch (Exception) {}
            try {
                AndroidJavaObject jReferralCode = jData.Call <AndroidJavaObject>("get", "referralCode");
                Data.Add("referralCode", new MegacoolReferralCode(jReferralCode));
            } catch (Exception) {}
            try {
                AndroidJavaObject jReceiverUserId = jData.Call <AndroidJavaObject>("get", "receiverUserId");
                Data.Add("receiverUserId", jReceiverUserId.Call <string>("toString"));
            } catch (Exception) {}
            try {
                AndroidJavaObject jSenderUserId = jData.Call <AndroidJavaObject>("get", "senderUserId");
                Data.Add("senderUserId", jSenderUserId.Call <string>("toString"));
            } catch (Exception) {}
        } catch (Exception) {}
    }
    private void OnRetrievedShare(IntPtr shares, int size)
    {
        long longPtr = shares.ToInt64();

        var shs = new List <MegacoolShare>(size);

        for (int i = 0; i < size; i++)
        {
            IntPtr   structPtr = new IntPtr(longPtr);
            MCLShare shareData = (MCLShare)Marshal.PtrToStructure(structPtr, typeof(MCLShare));
            longPtr += Marshal.SizeOf(typeof(MCLShare));
            MegacoolShare share = BuildShare(ref shareData);
            shs.Add(share);
        }

        Action <List <MegacoolShare> > handler = OnSharesRetrieved;

        if (handler != null)
        {
            handler(shs);
        }
    }
    bool accept(AndroidJavaObject jShare)
    {
        MegacoolShare share = MegacoolAndroidAgent.BuildShare(jShare);

        return(filter(share));
    }
    private static bool DeleteSharesFilter(MCLShare shareData)
    {
        MegacoolShare share = BuildShare(ref shareData);

        return(deleteSharesFilter(share));
    }
Esempio n. 11
0
 public MegacoolEvent(Megacool.MegacoolReceivedShareOpenedEvent e)
 {
     Share        = new MegacoolShare(e);
     Type         = MegacoolEventType.ReceivedShareOpened;
     FirstSession = e.isFirstSession != 0;
 }