Exemplo n.º 1
0
		private async Task<bool> TrySetFieldValueId(FieldDescription fldDsc, string newVaalue)
		{
			if (fldDsc == null) return false;
			var bc = Briefcase.GetCurrentInstance();

			var availableFldVal = fldDsc.GetValueFromPossibleValues(newVaalue);
			if (availableFldVal != null)
			{
				FieldValueId = availableFldVal.Id;
				return true;
			}

			if (fldDsc.IsAnyValueAllowed && bc?.IsWantAndCannotUseOneDrive == false)
			{
				var mb = MetaBriefcase.OpenInstance;
				if (mb != null)
				{
					// LOLLO NOTE save metaBriefcase, in case there is a crash before the next Suspend.
					// This problem actually affects all XML-based stuff, because they only save on closing.
					// We only take extra care of MetaBriefcase because Briefcase and Binder do not save critical data.
					// The DB, instead, saves at once. If there is a crash between the DB and the XML being saved, the next startup will have corrupt data.
					var newFldVal = await mb.AddPossibleValueToFieldDescriptionAsync(fldDsc, newVaalue);
					if (newFldVal == null) return false;

					FieldValueId = newFldVal.Id;
					return true;
				}
			}
			return false;
		}