Unsubscribe from the folder before deleting it.

2001-09-17  Jeffrey Stedfast  <fejj@ximian.com>

	* component-factory.c (storage_remove_folder): Unsubscribe from
	the folder before deleting it.

	* mail-ops.c (remove_folder_get): If the store supports
	subscriptions, make sure to unsubscribe from the folder before
	deleting it.

svn path=/trunk/; revision=12921
This commit is contained in:
Jeffrey Stedfast
2001-09-17 23:26:36 +00:00
committed by Jeffrey Stedfast
parent 0e432a12de
commit 0d9c13bb37
3 changed files with 27 additions and 20 deletions

View File

@ -1,3 +1,12 @@
2001-09-17 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (storage_remove_folder): Unsubscribe from
the folder before deleting it.
* mail-ops.c (remove_folder_get): If the store supports
subscriptions, make sure to unsubscribe from the folder before
deleting it.
2001-09-17 <NotZed@Ximian.com>
* mail-local.c (storage_listener_startup): Setup global

View File

@ -940,17 +940,18 @@ storage_remove_folder (EvolutionStorage *storage,
camel_url_free (url);
if (camel_exception_is_set (&ex))
goto exception;
camel_store_delete_folder (store, fi->full_name, &ex);
#endif
camel_store_delete_folder (store, path+1, &ex);
if (camel_exception_is_set (&ex))
goto exception;
#endif
if (camel_store_supports_subscriptions (store))
/*camel_store_unsubscribe_folder (store, fi->full_name, NULL);*/
camel_store_unsubscribe_folder (store, path+1, NULL);
camel_store_delete_folder (store, path+1, &ex);
if (camel_exception_is_set (&ex))
goto exception;
evolution_storage_removed_folder (storage, path);
/*camel_store_free_folder_info (store, fi);*/

View File

@ -1427,34 +1427,31 @@ remove_folder_get (struct _mail_msg *mm)
CamelStore *store;
CamelFolder *folder;
GPtrArray *uids;
gchar *full_name;
int i;
m->removed = FALSE;
folder = mail_tool_uri_to_folder (m->uri, &mm->ex);
store = camel_folder_get_parent_store (folder);
if (!store)
if (!folder)
return;
camel_object_ref (CAMEL_OBJECT (store));
store = folder->parent_store;
/* Delete every message in this folder, then expunge it */
uids = camel_folder_get_uids (folder);
for (i = 0; i < uids->len; i++)
camel_folder_delete_message (folder, uids->pdata[i]);
camel_folder_sync (folder, TRUE, &mm->ex);
camel_folder_sync (folder, TRUE, NULL);
camel_folder_free_uids (folder, uids);
/* close the folder */
full_name = g_strdup (camel_folder_get_full_name (folder));
camel_object_unref (CAMEL_OBJECT (folder));
/* if the store supports subscriptions, unsubscribe from this folder... */
if (camel_store_supports_subscriptions (store))
camel_store_unsubscribe_folder (store, folder->full_name, NULL);
/* Then delete the folder from the store */
camel_store_delete_folder (store, full_name, &mm->ex);
g_free (full_name);
camel_store_delete_folder (store, folder->full_name, &mm->ex);
m->removed = !camel_exception_is_set (&mm->ex);
camel_object_unref (CAMEL_OBJECT (store));
camel_object_unref (CAMEL_OBJECT (folder));
}
static void