* {@inheritDoc}
*/
public override async Folks.Persona? add_persona_from_details (
- HashTable<string, string> details) throws Folks.PersonaStoreError
+ HashTable<string, Value?> details) throws Folks.PersonaStoreError
{
- var contact_id = details.lookup ("contact");
+ var contact_id = TelepathyGLib.asv_get_string (details, "contact");
if (contact_id == null)
{
throw new PersonaStoreError.INVALID_ARGUMENT (
m4_define([folks_major_version], [0])
m4_define([folks_minor_version], [1])
-m4_define([folks_micro_version], [8])
+m4_define([folks_micro_version], [9])
m4_define([folks_nano_version], [0])
dnl Display the nano_version only if it's not '0'
public async Persona? add_persona_from_details (Individual? parent,
string persona_store_type,
string persona_store_id,
- HashTable<string, string> details) throws IndividualAggregatorError
+ HashTable<string, Value?> details) throws IndividualAggregatorError
{
var full_id = this.get_store_full_id (persona_store_type,
persona_store_id);
Persona persona = null;
try
{
- persona = yield store.add_persona_from_details (details);
+ var details_copy = asv_copy (details);
+ persona = yield store.add_persona_from_details (details_copy);
}
catch (PersonaStoreError e)
{
return persona;
}
+ private HashTable<string, Value?> asv_copy (HashTable<string, Value?> asv)
+ {
+ var retval = new HashTable<string, Value?> (str_hash, str_equal);
+
+ asv.foreach ((k, v) =>
+ {
+ retval.insert ((string) k, (Value?) v);
+ });
+
+ return retval;
+ }
+
/**
* Completely remove the individual and all of its personas from their
* backing stores.
* @return the new {@link Persona}, or `null` on failure
*/
public abstract async Persona? add_persona_from_details (
- HashTable<string, string> details) throws Folks.PersonaStoreError;
+ HashTable<string, Value?> details) throws Folks.PersonaStoreError;
/**
* Remove a {@link Persona} from the PersonaStore.