Exemple #1
0
		public static bool DeletePostFromAllFeedsIfExists (Post post)
		{
			bool AtLeastOneArrayIsGraterThan0 = false;
			foreach (KeyValuePair<string, List<Post>> currentDict in Globe.SharedInstance.PostFeeds) { //loop all post feeds
				for (int i = 0; i < currentDict.Value.Count; i++) {
					if (currentDict.Value [i].idPost == post.idPost) {
						currentDict.Value [i] = post;
						currentDict.Value.Remove (post);
					}
					if (currentDict.Value.Count > 0) {
						AtLeastOneArrayIsGraterThan0 = true;
					}
				}
			}
			return !AtLeastOneArrayIsGraterThan0;
		}
Exemple #2
0
		public static void PassPostToAllFeedsIfExistsWithInclude (Post post, FeedTypeEnum.FeedType key)
		{
			if (post == null){
				return;
			}

			if (post.IsExpired () && (key != FeedTypeEnum.FeedType.MyProfileFeed || post.userReposter != null)) {
				return;
			}

			foreach (KeyValuePair<string, List<Post>> currentDict in Globe.SharedInstance.PostFeeds) { 
				bool foundIt = false;
				for (int i = 0; i < currentDict.Value.Count; i++) {
					if (currentDict.Value [i].idPost == post.idPost) {
						currentDict.Value [i] = post;
						foundIt = true;
					}
				}

				if (!foundIt && currentDict.Key == key.ToString ()) {
					post.feedType = (int)key;
					currentDict.Value.Add (post);
				}

				currentDict.Value.Sort ((x, y) => y.datestamp.Value.CompareTo (x.datestamp.Value));
			}


			foreach (KeyValuePair<string, List<Notification>> currentDict in Globe.SharedInstance.NotificationFeeds) {
				for (int i = 0; i < currentDict.Value.Count; i++) {
					if (currentDict.Value [i].post != null && currentDict.Value [i].post.idPost == post.idPost) {
						currentDict.Value [i].post = post;
					}
				}
			}
		}
		public static string GetTopTime(Post post)
		{
			if (post == null)
			{
				return "10m";
			}
			DateTime expiration = new DateTime(1970, 1, 1).AddMilliseconds(double.Parse(post.expiration.ToString()));
			DateTime datestamp = new DateTime(1970, 1, 1).AddMilliseconds(double.Parse(post.datestamp.ToString()));
			TimeSpan span = expiration.Subtract(datestamp);

			var sb = new StringBuilder();
			if (span.Days > 365)
				sb.AppendFormat("{0}y", span.Days - 365);
			else if (span.Days > 0)
				sb.AppendFormat("{0}d", span.Days);
			else if (span.Hours > 0)
				sb.AppendFormat("{0}h", span.Hours);
			else if (span.Minutes > 0)
			{
				sb.AppendFormat("{0}m", span.Minutes);
			}
			return sb.ToString();
		}
		public static string GetPostImageURL(Post post)
		{
			return Endpoint.BaseURL + "/post/" + post.idPost + "/image";
		}
		//Comments
		public static async Task<List<Comment>> GetComments (Post post, int offset, int count)
		{
			List<string> appendString = new List<string> () { "post", post.idPost.ToString (), "comment" };

			Dictionary<string, object> requestDictionary = new Dictionary<string, object>();
			requestDictionary.Add("offset", offset);
			requestDictionary.Add("count", count);



			RESTResult data = await RESTHelper.Async ("getcomments", requestDictionary, appendString);
			if (data.ReturnedData != null) {
				List<Comment> returnList = new List<Comment> ();
				JArray resultArray = (JArray)data.ReturnedData ["comments"];
				foreach (JToken token in resultArray) {
					returnList.Add (JsonConvert.DeserializeObject<Comment> (token.ToString ()));
				}
				return returnList;
			}
			throw data.Error;
		}
		//Comment
		public static async Task<Comment> AddComment (Post post, string text)
		{
			Dictionary<string, object> requestDictionary = new Dictionary<string, object> ();
			requestDictionary.Add ("text", text);

			List<string> appendString = new List<string> () { "post", post.idPost.ToString (), "comment" };

			RESTResult data = await RESTHelper.Async ("addcomment", requestDictionary, appendString);
			if (data.ReturnedData != null) {

				///todo get times from server
				/// this is wokring server side
				Comment CommentToTurn = (JsonConvert.DeserializeObject<Comment> (data.ReturnedData["comment"].ToString ()));
				CommentToTurn.user = Globe.SharedInstance.User;
				CommentToTurn.text = text;

				return CommentToTurn;
			}
			throw data.Error;
		}
		public static async Task<bool> DeleteComment (Comment comment, Post post)
		{

			List<string> appendString = new List<string> () {
				"post",
				post.idPost.ToString (),
				"comment",
				comment.idComment.ToString ()
			};

			RESTResult data = await RESTHelper.Async ("deletecomment", null, appendString);
			if (data.ReturnedData != null) {
				return ParseForBool (data.ReturnedData);
			}

			return false;
		}
		public static async Task<bool> RepostPost (Post post)
		{
			List<string> appendString = new List<string> () { "post", post.idPost.ToString (), "repost"  };

			RESTResult data = await RESTHelper.Async ("repost", null, appendString);
			if (data.ReturnedData != null) {
				return ParseForBool (data.ReturnedData);
			}
			return false;
		}
		public static async Task<bool> ReportPost(Post post)
		{
			List<string> appendString = new List<string>() { "services", "flagPost" };

			Dictionary<string, object> requestDictionary = new Dictionary<string, object>();
			requestDictionary.Add("postID", post.idPost.ToString());


			RESTResult data = await RESTHelper.Async("flagpost", requestDictionary, appendString);
			if (data.ReturnedData != null)
			{
				return ParseForBool(data.ReturnedData);
			}
			throw data.Error;
		}
		public static async Task<bool> DeletePost (Post post)
		{

			List<string> appendString = new List<string> () { "post", post.idPost.ToString () };

			RESTResult data = await RESTHelper.Async ("deletepost", null, appendString);
			if (data.ReturnedData != null) {
				return ParseForBool (data.ReturnedData);
			}
			throw data.Error;
		}
		//byte[]
		public static async Task<byte[]> GetPostImage (Post post)
		{
			List<string> appendString = new List<string> () { "post", post.idPost.ToString (), "image" };

			RESTResult data = await RESTHelper.Async ("getpostimage", null, appendString);
			if (data.ByteArray != null) {
				return data.ByteArray ;
			}
			throw data.Error;
		}