private void PluginOnPluginDisabled(object sender, EventArgs e) { Plugin.PluginDisabled -= PluginOnPluginDisabled; if (IsInStore) { ConditionOperatorStore.Remove(this); } }
internal void Initialize() { ConditionOperatorStore.ConditionOperatorAdded += ConditionOperatorStoreOnConditionOperatorAdded; ConditionOperatorStore.ConditionOperatorRemoved += ConditionOperatorStoreOnConditionOperatorRemoved; InitializeLeftPath(); // Operator if (Entity.OperatorPluginGuid != null) { BaseConditionOperator?conditionOperator = ConditionOperatorStore.Get(Entity.OperatorPluginGuid.Value, Entity.OperatorType)?.ConditionOperator; if (conditionOperator != null) { UpdateOperator(conditionOperator); } } // Right side dynamic if (PredicateType == ProfileRightSideType.Dynamic) { InitializeRightPath(); } // Right side static else if (PredicateType == ProfileRightSideType.Static && Entity.RightStaticValue != null) { try { if (LeftPath != null && LeftPath.IsValid) { // Use the left side type so JSON.NET has a better idea what to do Type leftSideType = LeftPath.GetPropertyType() !; object?rightSideValue; try { rightSideValue = CoreJson.DeserializeObject(Entity.RightStaticValue, leftSideType); } // If deserialization fails, use the type's default catch (JsonSerializationException e) { DeserializationLogger.LogPredicateDeserializationFailure(this, e); rightSideValue = Activator.CreateInstance(leftSideType); } UpdateRightSideStatic(rightSideValue); } else { // Hope for the best... UpdateRightSideStatic(CoreJson.DeserializeObject(Entity.RightStaticValue)); } } catch (JsonReaderException e) { DeserializationLogger.LogPredicateDeserializationFailure(this, e); } } }
private void Initialize() { ConditionOperatorStore.ConditionOperatorAdded += ConditionOperatorStoreOnConditionOperatorAdded; ConditionOperatorStore.ConditionOperatorRemoved += ConditionOperatorStoreOnConditionOperatorRemoved; // Left side if (Entity.LeftPath != null) { LeftPath = DataModelConditionList.ListType != null ? new DataModelPath(ListPredicateWrapperDataModel.Create(DataModelConditionList.ListType), Entity.LeftPath) : null; } // Operator if (Entity.OperatorPluginGuid != null) { ConditionOperator?conditionOperator = ConditionOperatorStore.Get(Entity.OperatorPluginGuid.Value, Entity.OperatorType)?.ConditionOperator; if (conditionOperator != null) { UpdateOperator(conditionOperator); } } // Right side dynamic if (PredicateType == ProfileRightSideType.Dynamic && Entity.RightPath != null) { // Right side dynamic inside the list // TODO: Come up with a general wrapper solution because this will clash with events if (Entity.RightPath.DataModelGuid == Constants.CorePluginInfo.Guid) { RightPath = DataModelConditionList.ListType != null ? new DataModelPath(ListPredicateWrapperDataModel.Create(DataModelConditionList.ListType), Entity.RightPath) : null; } // Right side dynamic else { RightPath = new DataModelPath(null, Entity.RightPath); } } // Right side static else if (PredicateType == ProfileRightSideType.Static && Entity.RightStaticValue != null) { try { if (LeftPath != null && LeftPath.IsValid) { // Use the left side type so JSON.NET has a better idea what to do Type leftSideType = LeftPath.GetPropertyType() !; object?rightSideValue; try { rightSideValue = JsonConvert.DeserializeObject(Entity.RightStaticValue, leftSideType); } // If deserialization fails, use the type's default catch (JsonSerializationException e) { DeserializationLogger.LogListPredicateDeserializationFailure(this, e); rightSideValue = Activator.CreateInstance(leftSideType); } UpdateRightSideStatic(rightSideValue); } else { // Hope for the best... we must infer the type from JSON now UpdateRightSideStatic(JsonConvert.DeserializeObject(Entity.RightStaticValue)); } } catch (JsonException e) { DeserializationLogger.LogListPredicateDeserializationFailure(this, e); } } }